Você está na página 1de 13

Compiladores

Objectivos

• Um dos principais objectivos da cadeira é a apresentação


e estudo de metodologias, técnicas e ferramentas para o
desenvolvimento de compiladores.
Programa da Cadeira
1. Introdução à compilação
2. Analisador léxico
3. Analisador sintáctico descendente
4. Analisador sintáctico ascendente
5. Análise semântica
6. Geração de código intermediário
7. Ambientes de execução
8. Geração de código objecto
9. Aulas expositivas teórico-práticas
10. Exercícios práticos
11. Projectos em duplas
Compilador o que é . . .
• Introdução
• Compilação
• Fases da compilação
• Estrutura geral de um compilador
• Definição de linguagens de programação
• Classificação de compiladores
Introdução
• Definição: lê um programa em uma linguagem fonte e o traduz
em um programa em uma linguagem-alvo (objecto)
•O compilador traduz o programa de uma linguagem (fonte)
para outra (máquina)
• Esse processo demanda sua quebra em várias partes, o
entendimento de sua estrutura e significado.
•O front-end do compilador é responsável por esse tipo de
análise.
• Código-Fonte: criado em um editor de textos, contendo os comandos
da linguagem de programação (C, Pascal...). Serve como entrada para o
compilador.
• Código-Objeto: criado pela conversão do código-fonte em linguagem
de máquina. É gerado pelo compilador. Só é criado quando não há erros
no código-fonte.
Funcionalidades

vFacilitar programação;
vVerificar certos tipos de erros;
vVulnerabilidades;
vGerar código portável;
vOptimizar código;
vVelocidade, tamanho, etc.
Exemplos de Erros
História

• Antigamente a programação era feita em código de


máquina;
• Programação em linguagem máquina
• Rapidez execução versus desenvolvimento complicado
• Necessidade de um montador
• Finalmente, linguagens de mais alto nível
• Os primeiros compiladores começaram a surgir no início
dos anos 50.
• Trabalhos iniciais: tradução de fórmulas aritméticas em
código de máquina.
• Os compiladores eram considerados programas muito
difíceis de construir.
• O Primeiro compilador -: Fortran (permitia a declaração
de identificadores com até 6 caracteres )
• FORmulaTRANslation System
• Desde então, técnicas sistemáticas para
construção de compiladores foram
identificadas.
• Reconhecimento de cadeias, gramáticas,
geração de linguagem.
• Desenvolvimento de boas linguagens e
ambientes de programação.
• Exemplo: C, C++, linguagens visuais
Com isso, tornou-se uma área de grande importância
• 1957: Fortran – primeiros compiladores para processamento de
expressões aritméticas e fórmulas;
• 1960: Algol – primeira definição formal de linguagem, com
gramática na forma normal de Backus (BNF), estruturas de
blocos, recursão, etc.
• 1970: Pascal – tipos definidos pelos usuários;
• 1985: C++ – orientação a objetos, exceções
• 1995: Java – compilação instantânea (traduz bytecodes para
código de máquina e executa), melhorando o tempo e execução
do programa. Portabilidade
Próxima Aula. . .

• Organização de um Compilador. . .

• Compilador, interpretador e máquina virtual – Vantagens


versus desvantagens. . .

Você também pode gostar