Lec 01
Lec 01
Preprocessor
Programa fonte modificado
Compiler
Programa em assembly
Assembler
Analisador Léxico
tokens
Analisador Sintático Análise
Árvore sintática frontend compiler
Analisador Semântico
Tabela de
Símbolos Árvore sintática
Gerador de Código
Intermediário
Representação Síntese
Intermediária backend compiler
Otimizador de Código
Representação
Intermediária
Gerador de Código
Código de máquina
alvo
A estrutura de um compilador
●
Tabela de Símbolos: É uma estrutura de dados para
armazenamento e recuperação de identificadores.
– Contém um registro (nome, atributo) para cada identificador.
posicao=inicial+taxa*60
Analisador Léxico
Tab. de Símbolos <id, 1> <=> <id, 2> <+> <id, 3> <*> <60>
1 posicao
2 inicial
Analisador Sintático
3 taxa
=
<id, 1> +
<id, 2> *
<id, 3> 60
Exemplom (cont.)
=
<id, 1> +
<id, 2> *
<id, 3> 60
Analisador semântico
=
<id, 1> +
<id, 2> *
<id, 3> inttofloat
60
Exemplo
=
(cont.)
<id, 1> +
<id, 2> *
<id, 3> inttofloat
60
Gerador de Código
Interm.
t1=inttofloat(60)
t2=id3*t1
t3=id2+t2
id1=t3
Otimizador de Código
t1=id3*60.0
id1=id2+t1
Exemplo (cont.)
t1=id3*60.0
id1=id2+t1
Gerador de Código