Sem resumo de edição |
|||
| (12 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 11: | Linha 11: | ||
= 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> | ||
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 = | = Análise Sintática = | ||
<br> | <br> | ||
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 = | = Análise Semântica = | ||
<br> | <br> | ||
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.