Compiladores
1
Introdução à Teoria dos Compiladores
⇒ barreira de comunicação HOMEM linguagem natural abstrações operações abstratas MÁQUINA linguagem de máquina registradores, memória,... operações primitivas
⇒ solução: introdução de linguagens de programação ♦ linguagens de montagem (assembly language) ♦ linguagens de alto nível ⇒ contrapartida (1) processo de tradução: eficiência * compiladores, interpretadores * montadores (assemblers) (2) especificação e formalização de linguagens Visão Geral do Processo de Compilação ⇒ Compilador: é um programa que lê um programa escrito numa linguagem FONTE e traduz num programa equivalente numa outra linguagem, a linguagem ALVO. A linguagem ALVO pode ser: ♦ Outra linguagem de programação ♦ A linguagem de máquina ⇒ divisão em fases de compilação
programa fonte análise síntese
programa objeto
mensagens de erro
(1) análise do programa fonte # análise léxica # análise sintática # análise semântica (2) síntese do programa objeto # geração de código intermediário # otimização de código # geração de código objeto
Compiladores Fases do Compilador programa fonte
2
anal. léxico
an. sintático
an. semântico tratamento TS gerador de cód. interm. de erros
otimiz. de código
gerador de código programa objeto Fases Típicas do Processo de Compilação.
⇒ cada fase corresponde à transformação de uma representação do programa fonte em outra. ⇒ gerência de tabela de símbolos e tratamento de erros são atividades que, normalmente, interagem com todas as fases do processo de compilação. As Fases de Análise do Programa Fonte (1) Análise Léxica Fase do processo de compilação onde a seqüência de caracteres que compõem o programa fonte é lida seqüencialmente da esquerda para a direita e agrupada em uma seqüência de tokens., que são sequencias de caracteres com um significado. Ex.: x := y + z * 100;
× id cod_atrib id cod_mais id cod_vezes ctenum pt_virg := '+' '*' ';'
Compiladores
3
(2)