| Linha 94: | Linha 94: | ||
= Referências bibliográficas = | = Referências bibliográficas = | ||
<br> | <br> | ||
http://www.oocities.org/walterchagas/compiler.html | |||
https://pt.wikipedia.org/wiki/An%C3%A1lise_l%C3%A9xica | |||
www.cin.ufpe.br/~gaa/disciplinas/compiladores/Analise%20Lexica.ppt | |||
https://pt.wikipedia.org/wiki/An%C3%A1lise_sint%C3%A1tica_(computa%C3%A7%C3%A3o) | |||
http://www.cin.ufpe.br/~pftbm/apostila-LFeC-II.pdf | |||
https://pt.wikibooks.org/wiki/Constru%C3%A7%C3%A3o_de_compiladores/An%C3%A1lise_sem%C3%A2ntica | |||
https://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o#Lista_de_linguagens | |||
http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php | |||
Edição das 20h41min de 18 de abril de 2016
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 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.
Princípio de funcionamento
Análise Léxica
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.
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
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.
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
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.
Exemplos de compiladores
Existem vários tipos de linguagem de programação hoje em dia e de acordo com o índice TIOBI (que significa uma lista ordenada de linguagem de programação que é classificada de acordo com o índice de freqüência de pesquisa na web usando o nome da linguagem como a palavra-chave) tendo uma lista dos mais populares.
1. Java
2. C
3. C++
4. Python
5. C♯
6. PHP
7. Visual Basic .NET
8. JavaScript
9. Perl
10. Ruby
11. Assembly
12. Visual Basic
13. Delphi / Object Pascal
14. Swift
15. Objective-C
16. MATLAB
17. Pascal
18. R
19. PL/SQL
20. COBOL
Tendo como mais ultilizados atualmente C/C++ e Java porem para esses tipos de linguagem existem seus compiladores como por exemplo para:
C/C++
DEV -C++ -- Esse compilador é gratuito, esse compilador é um dos melhores para quem é iniciante tanto na linguagem quanto na programação porem facilita a vida do usuario contando com uma interface
GCC -- Gratuito, porem esse compilador é ultilizado pelo projeto GNU. É padrão ANSI C e nativo do sistema Linux, facilitando muito a vida de usuários Linux, pois não é preciso instalar compiladores de terceiros. Porem a sua desvantagem é para iniciantes pois ele não conta com uma interface gráfica.
C++ BUILDER – Esse é um dos melhores compiladores que tem, porem ele te dá uma vantagem de criar projetos extensos, porem a sua desvantagem é que esse é pago. Pois A Borland mantém no site da Code Gear duas versões: uma demo e outra paga. Existem outros exemplos a mais de compiladores para esse tipo de linguagem.
JAVA
JBUILDER -- JBuilder é uma IDE (Ambiente Integral de Desenvolvimento) para desenvolvimento de aplicações mais gráficas, a partir de JFames. O JBuilder foi desenvolvido pela Borland (a mesma que produz o C++ Builder) utilizando tecnologias da comunidade do Eclipse Europa.
ECLIPSE -- Eclipse é uma IDE (Ambiente Integral de Desenvolvimento) de código aberto desenvolvido inicialmente pela IBM e posteriormente doada para a comunidade do sofware livre.
JDEVELOPER -- IDE desenvolvido pela Oracle. Cobre todo processo de produção do software em Java, desde o desenvolvimento do código até a implantação do software. Dentre outros.
Referências bibliográficas
http://www.oocities.org/walterchagas/compiler.html
https://pt.wikipedia.org/wiki/An%C3%A1lise_l%C3%A9xica
www.cin.ufpe.br/~gaa/disciplinas/compiladores/Analise%20Lexica.ppt
https://pt.wikipedia.org/wiki/An%C3%A1lise_sint%C3%A1tica_(computa%C3%A7%C3%A3o)
http://www.cin.ufpe.br/~pftbm/apostila-LFeC-II.pdf
https://pt.wikibooks.org/wiki/Constru%C3%A7%C3%A3o_de_compiladores/An%C3%A1lise_sem%C3%A2ntica
https://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o#Lista_de_linguagens
http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php