Академический Документы
Профессиональный Документы
Культура Документы
Compiladores
Um compilador um programa que traduz um programa
escrito numa linguagem fonte para outro equivalente escrito
numa linguagem alvo.
programa
fonte
Compilador
programa
alvo
mensagens
de erro
programa fonte
COMPILADOR
programa alvo em assembler
carregador
bibliotecas,
arquivos,
objetos
relocveis
Anlise e Sntese
:=
Anlise
Divide o programa
fonte em partes
cria uma
representao
intermediria (rvores
sintticas)
Sntese
constri o programa
alvo
+
dp
*
tp
60
Anlise do programa
fonte
Anlise lxica (linear ou scanning)
Anlise sinttica (hierrquica ou gramatical)
Anlise semntica (restries sensveis ao
Anlise
Lxica
Caracteres so agrupados em Tokens
montante := deposito_inicial +
taxa_de_juros * 60
decomposto nos seguintes tokens:
Identificador montante
Smbolo de atribuio :=
Identificador deposito_inicial
Sinal de adio
Identificador taxa_de_juros
Sinal de multiplicao
Nmero 60
6
Anlise Sinttica
Agrupa os tokens do programa fonte em
frases gramaticais.
Reconhece a estrutura gramatical do
programa fonte a qual representada por
uma rvore gramatical.
(rvore gramatical = rvore de parser =
rvore de derivao)
Devolve uma rvore sinttica (sintaxe
abstrata)
7
enunciado de
atribuio
identificador
:=
montante
expresso
identificador
deposito_inicial
expresso
+
expresso
expresso
identificador
taxa_de_juros
expresso
nmero
60
8
rvore sinttica
Uma rvore sinttica (ou sintaxe abstrata) uma
representao condensada da rvore gramatical
:=
+
montante
deposito_inicial
*
taxa_de_juros
60
expressa recursivamente
Por exemplo, podemos definir expresses
pelas regras:
Qualquer identificador uma expresso.
Qualquer nmero uma expresso.
Se expresso1 e expresso2 so expresses,
ento tambm o so
expresso1 + expresso2
expresso1 * expresso2
(expresso1)
expresses regulares
recursividade
11
Anlise Semntica
Verifica erros semnticos detectveis
estaticamente
verificao de tipos, resoluo de sobrecarga,
REAL-ADD
deposito_inicial
REAL-MULT
taxa_de_juros
inttoreal
60
12
programa fonte
analisador lxico
analisador sinttico
analisador semntico
gerenciador da
tabela de
smbolos
gerador de cdigo
intermedirio
otimizador de cdigo
gerador de cdigo
programa alvo
tratador de
erros
Passagens
Por eficincia, comum que vrias fases sejam
agrupadas numa nica passagem
14
front-end (vanguarda)
as fases que dependem mais do programa fonte
back-end (retaguarda)
as fases que dependem mais do programa alvo
15
Portabilidade e
vanguardas
Modularidade
Java
Sparc
retaguardas
Java
ML
MIPS
Pascal
Pentium
C
C++
ML
Pascal
Sparc
MIPS
Cdigo
Intermedirio
Pentium
C
Alpha
C++
Alpha
16
Os
primos
do
compilador
Pr-processadores
processadores de macros,
incluso de arquivos,
extenses de linguagens (p.e. linguagens de
consulta embutidas)
Lings. de Marcao com pginas dinmicas
(JSP, ASP, ....)
Montadores (Ensambladores)
produzem cdigo de mquina relocvel
17
Ferramentas
Geradores de analisadores gramaticais
Geradores de analisadores lxicos
Dispositivos de traduo dirigida pela sintaxe
Dispositivos de fluxo de dados
Geradores de tradutores dirigidos por
semntica
18
Resumo
O que um compilador
Anlise sinttica, anlise semntica e sntese
O contexto de um compilador
As fases de um compilador
Ferramentas
19