Vous êtes sur la page 1sur 15

Aula N01

Construo de Compiladores

Prof. Leonardo Pol


Turma: Cincias da Computao
leonardo.pol@uniceub.br
Introduo

O uso de linguagens de programao de


alto nvel possibilita enorme grau de
abstrao e independncia de plataforma
permitindo o desenvolvimento eficiente de
software.
Como conseqncia tornam-se necessrias
ferramentas de traduo da linguagem de
alto nvel para a linguagem de execuo.
Introduo

O estudo da tcnicas construtivas dos


compiladores no se limita apenas as
questes diretamente envolvidas com
linguagens de programao.
Aplicao de tais tcnicas se expande para
arquitetura de computadores, teoria das
linguagens, algoritmos e engenharia de
software.
Introduo

O uso de algumas poucas tcnicas de


projeto de compiladores pode ser utilizada
para construo de:
tradutores,
formatadores e processadores de texto,
interpretadores (de programas ou queries),
mquinas de estado,
alm de compiladores.
Definio

Compilador (sentido geral): aquele de


compila, isto , copia ou transcreve,
podendo ou no traduzir aquilo que
transcrito.
Compilador (software): programa que l um
texto escrito numa linguagem (fonte)
traduzindo-o num texto equivalente escrito
em outra linguagem (alvo).
Definio

Programa Programa
Fonte Alvo
Compilador
(linguagem (linguagem
(compiler)
fonte) alvo)

Mensagens
de erro
Definio

As linguagens fonte (source languages) podem


tanto ser linguagens de programao (C,
Pascal, Java, Fortran etc) como linguagens
especializadas (TEX, EQN etc).
As linguagens alvo (target languagens) so
tambm variadas tal como outra linguagem
de programao, uma linguagem de
mquina (assembly) ou uma outra
representao.
Tipos de Compiladores
Single-Pass: efetuam a compilao numa
nica leitura do programa fonte.
Multi-Pass: efetuam a compilao atravs
de vrias leituras do programa fonte.
Load-And-Go: efetuam a compilao e a
execuo do programa fonte.
Debugging: efetuam a compilao
permitindo a depurao do programa fonte.
Optimizing: efetuam a compilao e a
otimizao do programa alvo.
Modelo Anlise-
Anlise-Sntese

Compilao constitui-se de duas partes:


Anlise
Sntese
Compilador Programa
Alvo

Anlise Sntese
Programa
Fonte

Significado
Modelo Anlise-
Anlise-Sntese

Anlise:
Inclui possveis mecanismos de pr-
processamento.
Divide o programa fonte em suas partes
constituintes.
Cria uma representao intermediria do
programa fonte.
uma tarefa relativamente simples.
Modelo Anlise-
Anlise-Sntese

Sntese:
Constri o programa alvo a partir da
representao intermediria produzida pela
anlise.
uma tarefa relativamente complexa.
Utiliza a maior parte das tcnicas
especializadas.
Modelo Anlise-
Anlise-Sntese
Grande parte das tcnicas se aplicam a
maioria das linguagens fonte e alvo.
Existem vrias ferramentas que facilitam o
desenvolvimento de novos compiladores
ou softwares que usem as mesmas tcnicas.
D origem aos conceitos de:
front-end, relacionado com a linguagem a ser
processada;
back-end: relacionado com a linguagem a ser
produzida.
Sistema de Processamento
de Linguagem
Pr-processador
(preprocessor)
Mdulos
fonte
Compilador
Programa (compiler)
Fonte
Montador
Assembly (assembler)
Alvo
Loader/Link
Cdigo Editor
Relocvel

Cdigo
Absoluto
Fases da Compilao

Compiladores operam em fases, cada


qual realizando uma transformao no
programa fonte.
Algumas fases podem ser agrupadas.
Tipicamente a Anlise realizada em trs
fases: anlise lxica, sinttica e semntica.
Igualmente a Sntese realizada de uma a
trs fases conforme o tipo de compilador.
Fases da Compilao
Anlise
Programa Lxica
Fonte
Anlise
Sinttica

Anlise
Semntica
Tabela de Deteco
Smbolos de Erros
Gerao de
Pseudo-Cdigo

Otimizao
de Cdigo
Programa
Alvo
Gerao
de Cdigo