JhonnyBn (discussão | contribs)
JhonnyBn (discussão | contribs)
Sem resumo de edição
 
(10 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>
Basicamente, o compilador realiza alguns processos:
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 Sintática
*Análise Semântica


= Análise Léxica =
= Análise Léxica =
<br>
<br>
Texto
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>
Texto
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>
Texto
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 =
Linha 55: Linha 56:
= 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
*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.
*Wikipedia. Compilador. <https://pt.wikipedia.org/wiki/Compilador#Refer.C3.AAncias>. Acesso em 06/06/2017.
<ISBN: 85-221-0422-0>
*Wikipedia. Linguagem Compilada.
<https://pt.wikipedia.org/wiki/Linguagem_compilada>. Acesso em 06/06/2017.
*Pulcinelli, Márcio. Princípios de um compilador.
*Pulcinelli, Márcio. Princípios de um compilador.
  <https://www.tiespecialistas.com.br/2014/02/principios-de-um-compilador/>. Acesso em 06/06/2017.  
  <https://www.tiespecialistas.com.br/2014/02/principios-de-um-compilador/>. Acesso em 06/06/2017.  
*Ricarte, Ivan.
*Ricarte, Ivan. Compiladores.
Compiladores.
  <http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html>. Acesso em 06/06/2017.  
  <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++.
*Xavier, Denys. Lista de compiladores de C e C++.
  <http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php>. Acesso em 06/06/2017.  
  <http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php>. Acesso em 06/06/2017.  
*Xavier, Denys. Lista de compiladores de Java.
*Xavier, Denys. Lista de compiladores de Java.
  <http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-java.php>. Acesso em 06/06/2017.
  <http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-java.php>. 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.

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.