Sei sulla pagina 1di 28

Compiladores

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Compiladores
e
Computabilidade
MSc. Helosman V. Figueiredo

19 de agosto de 2015
1 / 28

Compiladores

Introduo

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Prof. Helosman Figueiredo:

Engenheiro Mecatrnico - UEA 2010.

Msc. Sistemas Aeroespaciais e Mecatrnica - ITA 2012

2 / 28

Compiladores

Introduo

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Informaes iniciais:

Apresentar ementa.

3 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Introduo compilao:

O que Linguagens Compiladores e Computabilidade?

4 / 28

Compiladores

Break

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Figura : Tirinha sobre compiladores.


5 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Computabilidade:

Computabilidade uma propriedade fundamental das


mquinas ditas computveis.

Computadores possuem capacidade de receber como


entrada de dados uma sentena (um programa) escrito em
uma linguagem articial computvel (a linguagem
suportada pelo computador) e executar tarefas bem
denidas, baseadas na interpretao da sentena recebida.
O ato de interpretao desta sentena (isto , o programa)
corresponde execuo do programa.

6 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Compiladores:

Um compilador um programa de computador (ou um


grupo de programas) que, a partir de um cdigo fonte
escrito em uma linguagem compilada, cria um programa
semanticamente equivalente, porm escrito em outra
linguagem, cdigo objeto.

7 / 28

Compiladores

Introduo

e
Comp.
Helosman
Figueiredo

Processo de Compilao:

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Figura : Objetivo dos compiladores.

8 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Compiladores:

So ferramentas fundamentais no processo de


desenvolvimento de software.

Renem conhecimentos de vrias reas (linguagens


formais, estruturas de dados, algoritmos, arquitetura de
computadores) num nico produto.

Oferecem excelentes oportunidades de aplicao de


conceitos de engenharia de software como pro exemplo
orientao a objetos, design patterns.

Sua compreenso contribui para um uso melhor.

9 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Poque estudar?

Linguagem do computador digital.

Uma sequencia de instrues que descreve como executar


uma tarefa chamada de programa.

Para que programas possam ser executados, precisam ser


convertidos antes em instrues.

10 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

O que so instrues?

So tarefas simples que devem ser realizados pelo


computador.

As instrues simples so como o exemplo abaixo:

Some dois nmeros.


Verique um nmero para ver se ele zero.
Copie os dados de uma parte da memria para outra

11 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Compiladores

Tradutores.

Vericaes do cdigo fonte.

Linguagens fonte:

Pascal;
Fortran;
C;
etc...

Linguagens alvo:

Outras linguagens de programao;


linguagem de mquina ;
etc...

12 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Compiladores

Classicados:

Passagem;
Passagens mltiplas;
Carregar e executar;
Depuradores ou otimizantes;
etc...

Depende de como so construdos.

Sua essncia e sempre a mesma.

13 / 28

Compiladores
e

Introduo compilao:

Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Figura : Processo de Compilao


14 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Compilao:

Anlise:

Divide o programa fonte nas partes constituintes e cria

uma representao intermediria.

Sntese:

Constri o programa alvo.

15 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Anlise:

Editores de estruturas;

Pretty printers;

Vericadores Estticos;

Interpretadores.

16 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Anlise:
1

Anlise linear:

o uxo de caracteres lido da esquerda

para direita e agrupado em Tokens.

Anlise hierrquica:

os caracteres ou tokens so

agrupados hierarquicamente em colees aninhadas com


signicado coletivo.

Anlise semntica:

certas vericaes so realizadas a

m de se assegurar que os componentes de um programa


se combinam de forma signicativa.

17 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Anlise Lxica:

Num compilador a anlise linear chamada de anlise


lxica.

Nesta anlise os caracteres do enunciado:

montante := deposito_inicial + taxa_de_juros 60


poderiam gerar os seguintes tokens:

O identicador montente
O smbolo de atribuio :=
O identicador deposito_inicial
O sinal de adio
O identicador taxa_de_juros
O sinal de multiplicao
O nmero 60
Os espaos seriam normalmente eliminados.

18 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Anlise Sinttica:

Num compilador a anlise hierrquica chamada de anlise


gramatical ou anlise sinttica.

Envolve o agrupamento dos tokens do programa fonte em


frases gramaticais

Figura : rvore gramatical


19 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Anlise Sinttica:

Ex: para a sequncia abaixo, em Pascal:

if a > b then
a:=a-b
else
b:=b-a

A anlise sinttica deve idenc-la como um comando


condicional, para a qual a condio a > b e ao qual
esto associados os comandos a := a-b e b := b-a.

20 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes

Anlise Semntica:

as informaes de tipo para a fase subsequente de gerao

Introduo

Compiladores
Compilao
Anlise
Linguagens

Verica os erros semnticos no programa fonte e captura


de cdigo.

Utiliza a estrutura hierrquica determinada pela fase de


anlise sinttica, a m de identicar os operadores e
operandos das expresses e enunciados.

Figura : Anlise Semntica.


21 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Anlise Semntica:

Ex: em Pascal existe uma regra dizendo que todas as


variveis de um programa devem ser declaradas antes do
seu uso. funo da anlise semntica vericar se as
variveis usadas no programa foram devidamente
declaradas.

22 / 28

Compiladores

Break

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Figura : Programador Binrio.


23 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Denies Iniciais:

Alfabeto:conjunto nito no vazio de smbolos.


Ex: V = a, b, c,...,z
V = 0, 1
V = a, e, i, o ,u

Sentenas:

uma sentena sobre um alfabeto V, uma

sequncia (ou cadeia) nita de smbolos do alfabeto.


Ex: V = {a,b}: a, b, aa, ab, bb, aaa, aab, aba, baa, ...

24 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Denies Iniciais:

Tamanho de uma sentena:

Seja w uma sentena

tamanho da sentena w, denotado por

|w|,

. O

denido pelo

nmero de smbolos (elementos do alfabeto) que compem


w.
Ex: Seja V = {a,b,c}
se x = aba, ento |x| = 3
se x = c, ento |x| = 1

Sentena vazia:

uma sentena constituda de nenhum

smbolo; isto , uma sentena de tamanho 0 (zero).


Ex: Representaremos a sentena vazia por
Por denio,

||

(psolon).

= 0

25 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Denies Iniciais:

Potncia de uma sentena:

Seja w uma sentena

n
n-sima potncia de w, representada por w , signica w
repetido n vezes.
Ex: se x = ab,ento
Para

0
x, x =

x3

= ababab

Concatenao:

produto de duas cadeias

.
Ex: Se = x1 x2 ...xn e = y1 y2 ...ym
Ento = x1 x2 ...xn y1 y2 ...ym
denotado por

a concatenao de cadeias associativa:

() = ()

26 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Compiladores
Compilao
Anlise
Linguagens

Linguagens:

Uma linguagem L sobre um alfabeto V, um subconjunto


de

; isto :

LV

Representaes de Linguagens:

O estudo de linguagens

est intimamente relacionado ao estudo das formas de


representao dessas linguagens. O problema de
representao de uma linguagem, por sua vez, est
relacionado com o fato dela ser nita ou innita.

27 / 28

Compiladores

Introduo compilao:

e
Comp.
Helosman
Figueiredo

Informaes
Introduo

Linguagens:

Compiladores
Compilao
Anlise
Linguagens

Linguagem Finita:

uma Linguagem que pode ser

representada por enumerao.


Exemplo: A linguagem denida como sendo o conjunto dos
inteiros positivos pares maiores que 0 e menores que 20,
pode ser representado por:
L = 2, 4, 6, 8, 10, 12, 14, 16, 18.

Linguagem Innita:

Neste caso, na impossibilidade de

usarmos enumerao, precisamos encontrar uma


representao nita para estas linguagens.
Exemplo: A linguagem denida como sendo o conjunto dos
inteiros pares poderia ser representada por:
V =2, 4, 6, 8, 10,...
que, que apesar de intuitiva, no nita e nem precisa.

28 / 28