JhonnyBn (discussão | contribs)
Sem resumo de edição
 
(18 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 6: Linha 6:
= Conceito =
= Conceito =
<br>
<br>
Compiladores nada mais é que um programa que recebe e converte uma linguagem de fácil escrita e leitura, feita por programadores em uma linguagem que possa ser conhecida e executada por máquina. Porém para ser passado por esse processo de reconhecimento de escrita na máquina o compilador tem 3 fases de processamento e analise chamadas: Análise Léxica, Análise Sintática e Análise Semântica.
 
Compiladores são programas que traduzem uma linguagem-fonte escrita em uma linguagem de programação para uma linguagem-alvo de baixo nível, como linguagem de montagem ou código de máquina.


= Princípio de funcionamento =
= Princípio de funcionamento =
<br>
<br>
O compilador primeiramente faz a análise do código fonte e então gera o código objeto. A análise é dividida em três partes: léxica, sintática e semântica.


= Análise Léxica =
= Análise Léxica =
<br>
<br>
O analisador Léxico faz a varredura do programa fonte, analisando caractere por caractere e traduz em uma sequência de símbolos léxicos ou tokens (“símbolos”). É nessa fase que são reconhecidas as palavras reservadas, constantes, identificadores e outras palavras que pertencem a linguagem de programação. O analisador léxico executa também outras tarefas como por exemplo o tratamento de espaços, eliminação de comentários, contagem do número de linhas que o programa possui e etc. A parte léxica é a primeira parte da compilação, tendo nessa parte dois estados de análise.
Na primeira fase do compilador, o analisador léxico, também denominado ''scanner'', lê o código fonte, caracter a caracter, buscando a separação e identificação dos elementos componentes do programa fonte, chamados símbolos léxicos ou ''tokens''. O que não é necessário para o programa é removido nessa fase, tais como espaços em branco e comentários.
A análise léxica ela e posta em dois estados. O Primeiro estado é o SCANNING onde ele remove os comentários os espaços desnecessários e etc. Já o segundo estado é a própria análise Léxica onde ela agrupa os caracteres em tokens (“símbolos”).
Tokens ou símbolos > São unidades logicas que representam um ou mais caracteres.


= Análise Sintática =
= Análise Sintática =
<br>
<br>
A análise sintática que é a segunda parte da compilação que é o processo de analisar uma sequência gramatical de entrada para determina sua estrutura gramatical segundo uma gramatica formal a parte de analise sintática pode ser também conhecida como “parsing” palavra em inglês.
O analisador sintático recebe do scanner o código-fonte em forma de ''tokens'' e determina a estrutura do programa. Os resultados da análise sintática são geralmente representados como uma árvore sintática.
Dada uma gramática livre do contexto G e uma sentença S, o objetivo do analisador sintático é verificar se a sentença S pertence à linguagem gerada por G.
O analisador sintático, recebe do analisador léxico a sequência de tokens (“símbolos”) que constitui a sentença S e produz como resultado uma árvore de derivação para S, se a sentença é válida, ou emite uma mensagem de erro, caso contrário.


= Análise Semântica =
= Análise Semântica =
<br>
<br>
A análise semântica é a terceira parte da compilação, essa é a parte onde se verifica os erros do código fonte. Essa parte tem como objetivo de trabalhar nesse nível de inter-relacionamento entre partes distintas do programa. As tarefas básicas desempenhada durante a análise semântica incluem a verificação de tipos, a verificação do fluxo de controle e a verificação da unicidade da declaração de variáveis. Dependendo da linguagem de programação, outros tipos de verificações podem ser necessários.
As principais tarefas da terceira fase da compilação são análise de contexto e verificação de erros em frases sintaticamente corretos (por exemplo, fazer a divisão de um número inteiro por outro número float, na linguagem C padrão ANSI).
 
= Geração de código objeto =
<br>
O código gerado nessa fase é expresso em alguma linguagem intermediária, próxima do ''assembly'' mas independente de processador, que depois pode ser mapeada para diversos processadores distintos.


= Exemplos de compiladores =
= Exemplos de compiladores =
<br>
<br>
*Para C e C++
**Dev-C++
**GCC
**C++ Builder
**Visual C++
<br>
*Para Java (todos são Ambientes de Desenvolvimento Integrado (IDE))
**Eclipse
**JBuilder
**JEdit
**JDeveloper
**NetBeans
<br>
*Para Python (todos são IDEs)
**Idle
**Eclipse
**Wing
**Komodo
<br>
*Para PHP:
**Roadsend
**Phalanger


= Referências bibliográficas =
= Referências bibliográficas =
<br>
<br>
*Louden, Kenneth C. Compiladores: princípios e práticas / Kenneth C. Louden ; [ tradução Flávio Soares Corrêa da Silva]. -- São Paulo : Pioneira Thomson Learning, 2004. Título original: Compiler construction : principles and practice.
<ISBN: 85-221-0422-0>
*Pulcinelli, Márcio. Princípios de um compilador.
<https://www.tiespecialistas.com.br/2014/02/principios-de-um-compilador/>. Acesso em 06/06/2017.
*Ricarte, Ivan. Compiladores.
<http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html>. Acesso em 06/06/2017.
*PythonBrasil. Ides Python.
<https://wiki.python.org.br/IdesPython>. Acesso em 06/06/2017.
*ROADSEND. Roadsend PHP.
<http://www.roadsend.com/>. Acesso em 06/06/2017.
*Phalanger. Phalanger - The PHP Language Compiler for the .NET Framework.
<https://phalanger.codeplex.com/>. Acesso em 06/06/2017.
*Wikipedia. Compilador.
<https://pt.wikipedia.org/wiki/Compilador#Refer.C3.AAncias>. Acesso em 06/06/2017.
*Xavier, Denys. Lista de compiladores de C e C++.
<http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php>. Acesso em 06/06/2017.
*Xavier, Denys. Lista de compiladores de Java.
<http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-java.php>. Acesso em 06/06/2017.

Edição atual tal como às 02h33min de 7 de junho de 2017

Esta pesquisa deve fornecer um conteúdo atualizado sobre o tema acima. Não esqueça de incluir as  
referëncias (fontes) no último item, reforçando que não deve ser um Copy/Paste e sim uma síntese 
das pesquisas que fizer.


Conceito


Compiladores são programas que traduzem uma linguagem-fonte escrita em uma linguagem de programação para uma linguagem-alvo de baixo nível, como linguagem de montagem ou código de máquina.

Princípio de funcionamento


O compilador primeiramente faz a análise do código fonte e então gera o código objeto. A análise é dividida em três partes: léxica, sintática e semântica.

Análise Léxica


Na primeira fase do compilador, o analisador léxico, também denominado scanner, lê o código fonte, caracter a caracter, buscando a separação e identificação dos elementos componentes do programa fonte, chamados símbolos léxicos ou tokens. O que não é necessário para o programa é removido nessa fase, tais como espaços em branco e comentários.

Análise Sintática


O analisador sintático recebe do scanner o código-fonte em forma de tokens e determina a estrutura do programa. Os resultados da análise sintática são geralmente representados como uma árvore sintática.

Análise Semântica


As principais tarefas da terceira fase da compilação são análise de contexto e verificação de erros em frases sintaticamente corretos (por exemplo, fazer a divisão de um número inteiro por outro número float, na linguagem C padrão ANSI).

Geração de código objeto


O código gerado nessa fase é expresso em alguma linguagem intermediária, próxima do assembly mas independente de processador, que depois pode ser mapeada para diversos processadores distintos.

Exemplos de compiladores


  • Para C e C++
    • Dev-C++
    • GCC
    • C++ Builder
    • Visual C++


  • Para Java (todos são Ambientes de Desenvolvimento Integrado (IDE))
    • Eclipse
    • JBuilder
    • JEdit
    • JDeveloper
    • NetBeans


  • Para Python (todos são IDEs)
    • Idle
    • Eclipse
    • Wing
    • Komodo


  • Para PHP:
    • Roadsend
    • Phalanger

Referências bibliográficas


  • Louden, Kenneth C. Compiladores: princípios e práticas / Kenneth C. Louden ; [ tradução Flávio Soares Corrêa da Silva]. -- São Paulo : Pioneira Thomson Learning, 2004. Título original: Compiler construction : principles and practice.
<ISBN: 85-221-0422-0>
  • Pulcinelli, Márcio. Princípios de um compilador.
<https://www.tiespecialistas.com.br/2014/02/principios-de-um-compilador/>. Acesso em 06/06/2017. 
  • Ricarte, Ivan. Compiladores.
<http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html>. Acesso em 06/06/2017. 
  • PythonBrasil. Ides Python.
<https://wiki.python.org.br/IdesPython>. Acesso em 06/06/2017. 
  • ROADSEND. Roadsend PHP.
<http://www.roadsend.com/>. Acesso em 06/06/2017. 
  • Phalanger. Phalanger - The PHP Language Compiler for the .NET Framework.
<https://phalanger.codeplex.com/>. Acesso em 06/06/2017.
  • Wikipedia. Compilador.
<https://pt.wikipedia.org/wiki/Compilador#Refer.C3.AAncias>. Acesso em 06/06/2017. 
  • Xavier, Denys. Lista de compiladores de C e C++.
<http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php>. Acesso em 06/06/2017. 
  • Xavier, Denys. Lista de compiladores de Java.
<http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-java.php>. Acesso em 06/06/2017.