Você está na página 1de 15

O Processo de Compilao

Divide-se nas seguintes fases:


- Anlise Lxica
- Anlise Sinttica
- Anlise Semntica
- Gerao de Cdigo Intermedirio
- Otimizao de Cdigo Intermedirio
- Gerao de Cdigo Objeto
- Otimizao de Cdigo Objeto
Viso Geral
Anlise lxica
Programa fonte
Programa destino
Anlise sinttica
Anlise semntica
Gerador de cdigo intermed.
Otimizador de cdigo
Gerador de cdigo
Tratamento
de erros
Gerenciador da
tabela
de smbolos
Compilao: Anlise e Sntese
Anlise: quebra o cdigo fonte em suas partes
constituintes e cria uma representao
intermediria do programa.
Sntese: Constroi o programa-destino a partir da
representao intermediria.
Anlise
Anlise lxica l a seqencia de caracteres e a
organiza em tokens seqencias de caracteres
com algum significado
Anlise sinttica agrupa os tokens em uma
estrutura hierrquica com algum significado
Anlise semntica verifica se os componentes de
um programa se encaixam de forma a ter um
significado adequado.
Tabela de Smbolos
Estrutura de dados usada para guardar tokens e
informaes sobre eles:
alocao de memria,
tipo do identificador,
escopo (onde vlido no programa)
(se procedimento ou funo) nmero e tipo dos
argumentos, forma de passagem dos parmetros
e tipo do resultado.
Passos
Um passo uma travessia do programa fonte, ou
de uma representao interna dele.
Um compilador de um passo atravessa o programa
uma nica vez.
Um compilador de mltiplos passos faz vrias
travessias
O projeto de um compilador diretamente
relacionado ao nmero de passos
Compilao em mltiplos passos
Mdulo principal (driver) chama cada um dos
passos, responsveis pela anlise sinttica, anlise
contextual e gerao de cdigo.
Driver do Compilador
Analisador Sinttico Analisador Contextual Gerador de Cdigo
Compilao em passo nico
Analisador sinttico vai realizando/chamando as
atividades de anlise semntica e gerao de cdigo,
medida que l e reconhece o programa
Anlise Lxica
Primeira fase de um compilador
Objetivo: ler o programa fonte, caracter por
caracter, e produzir como sada uma seqncia de
smbolos lxicos (tokens) que o parser vai usar
para anlise sinttica.
Pode ser implementada usando o formalismo:
autmato finito
Tambm denominado de scanner, porque varre o
arquivo de entrada eliminando comentrios e
caracteres indesejveis ao agrupar caracteres em
grupos com um papel bem definido
Anlise Lxica
A validade dos tokens verificada
Os tokens so classificados
Anlise Sinttica
Receber tokens do analisador lxico e verificar se a
posio dos mesmos vlida, de acordo com a
gramtica da LP.
A LP normalmente especificada por uma
gramtica livre de contexto.
Relatar e recuperar erros de sintaxe de forma clara
e precisa, prosseguindo a anlise sinttica at o
final, se possvel.
Tipos de analisadores sintticos: universais, top-
down e bottom-up
Anlise Semntica
Tem o objetivo de verificar se o programa est de
acordo com as restries contextuais da linguagem
fonte.
Geralmente verifica-se:
- regras de escopo;
- regras de tipos;
Gerao de Cdigo
Fase final do compilador
Transforma o cdigo da representao
intermediria no cdigo final
Independente de otimizaes
Cdigo deve estar correto e ser de alta qualidade,
fazendo uso eficiente dos recursos da mquina-
destino.
Gerao de Cdigo Intermedirio
Vantagens do uso de uma notao intermediria:
- possibilita otimizao do cdigo intermedirio
- simplifica a implementao do compilador
- pode-se traduzir o cdigo intermedirio para
vrias mquinas
Otimizao de cdigo
Realiza transformaes no cdigo visando
melhorar sua performance em aspectos de tempo
de execuo e tamanho do cdigo.