JhonnyBn (discussão | contribs)
Sem resumo de edição
 
(19 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>
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.