Вы находитесь на странице: 1из 19

Ncleo de Sistema de Informao

Andr Luis Meneses Silva


andreluis.ms@gmail.com
2010

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

esqueleto do programa fonte


montador
pre-processador

cdigo de mquina relocvel

programa fonte
COMPILADOR
programa alvo em assembler

carregador

bibliotecas,
arquivos,
objetos
relocveis

cdigo de mquina absoluto

Anlise e Sntese
:=
Anlise
Divide o programa
fonte em partes
cria uma
representao
intermediria (rvores
sintticas)
Sntese
constri o programa
alvo

+
dp

*
tp

60

Ferramentas que fazem anlise:


Editores de estruturas
Pretty printers
Verificadores estticos
Interpretadores
Formatadores de texto
Interpretadores de consultas
4

Anlise do programa
fonte
Anlise lxica (linear ou scanning)
Anlise sinttica (hierrquica ou gramatical)
Anlise semntica (restries sensveis ao

contexto: tipos, coeres, ... )

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

Definio da Sintaxe dos


programas
A estrutura gramatical dos programas

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)

Formalismo usado: GLCs.


10

Qual diviso entre lxico e


sinttico?
Construes lxicas requerem somente de

algum mecanismo de repetio


Em geral, tudo o que se pode descrever com

expresses regulares

Construes sintticas requerem

recursividade

11

Anlise Semntica
Verifica erros semnticos detectveis

estaticamente
verificao de tipos, resoluo de sobrecarga,

coero, variveis inicializadas antes de serem


usadas, ...:=
montante

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

O agrupamento das fases

front-end (vanguarda)
as fases que dependem mais do programa fonte

anlise lxica, sinttica e semntica e gerao de


cdigo intermedirio.

back-end (retaguarda)
as fases que dependem mais do programa alvo

gerao e otimizao de cdigo

Interface entre vanguarda e retaguarda


Cdigo intermedirio

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

Referncias: Captulos 1 do Drago e do Tigre

19

Вам также может понравиться