i - noções dum compilador gramáticas Árvores de derivação hierarquia de chomsky autómatos de...

21
I - Noções dum compilador • Gramáticas • Árvores de derivação • Hierarquia de Chomsky • Autómatos de pilha • Bibliografia aconselhada: – Apontamentos LFA 1999/2000 - 1 Jorge Morais

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

I - Noções dum compilador

• Gramáticas

• Árvores de derivação

• Hierarquia de Chomsky

• Autómatos de pilha

• Bibliografia aconselhada:– Apontamentos

LFA 1999/2000 - 1Jorge Morais

Page 2: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Gramática

• Uma gramática é um vector G = (V, , P, S) onde:– V conjunto finito - variáveis (símbolos não

terminais) conjunto finito - alfabeto– P (V )+ x (V )* - conjunto de

produções – S V - símbolo inicial

LFA 1999/2000 - 2Jorge Morais

Page 3: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Produções duma gramática

• Uma produção representa-se habitualmente na forma

• Escrevemos que u v, se u=xy e v=xy, com x,y (V )* e P

• Escrevemos que u * v (v deriva de u), se u = v ou se u w1 w2 ... wn-1 v, onde w1, w2, ..., wn-1 (V )+

LFA 1999/2000 - 3Jorge Morais

Page 4: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Linguagem duma gramática

• Definimos a linguagem gerada pela gramática L(G) = {u *: S * u}

• BNF (Backus Naur Form):– Variáveis são iniciados com letra maíuscula– Símbolos do alfabeto com letra minúscula para representar produções 1 | 2 | ... | n (produções alternativas)

LFA 1999/2000 - 4Jorge Morais

Page 5: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Gramáticas sensíveis ao contexto

• Dizemos que uma gramática é sensível ao contexto se todas as produções são da forma:– S, ou; , onde:

• || ||;

• S cont()

LFA 1999/2000 - 5Jorge Morais

Page 6: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Gramáticas independentes de contexto

• Dizemos que uma gramática é independente de contexto se todas as produções são da forma:– A, onde:

• A V; (V )*

LFA 1999/2000 - 6Jorge Morais

Page 7: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Árvore de derivação

• Seja G = (V, , P, S) uma gramática independente de contexto e seja S * u uma derivação em G.

• Numa árvore de derivação tem-se:– o nó principal é o símbolo inicial S;– as variáveis são nós interiores; – os símbolos do alfabeto são folhas.

LFA 1999/2000 - 7Jorge Morais

Page 8: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Gramáticas regulares

• Dizemos que uma gramática é regular se for linear à esquerda ou à direita:

LFA 1999/2000 - 8Jorge Morais

Gramática linear à direita

•A •A •A B

•onde:

–A, B V;

Gramática linear à esquerda

•A •A •A B•onde:

–A, B V;

Page 9: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Hierarquia de Chomsky

LFA 1999/2000 - 9Jorge Morais

Tipo Linguagem Gramática

0 Recursivamente Enumeráveis

Sem restrições

1 Sensíveis ao contexto Sensíveis ao contexto

2 Independentes de contexto

Independentes de contexto

3 Regulares Regulares

Page 10: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Exemplo 1

• L(G) = {u *: u = anbncn, n 1},G= (V, , P, S), V = {S, A, B}, = {a,b,c}

• Produções:– S aSBA | abA

– AB BA

– bB bb

– bA bc

– cA cc

– aB ab

LFA 1999/2000 - 10Jorge Morais

Page 11: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Exemplo 1 (cont.)

• Derivação de a2b2c2 = aabbcc:

• S aSBA aabABA aabBAA aabbAA aabbcA aabbcc

LFA 1999/2000 - 11Jorge Morais

Page 12: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Exemplo 2

• L(G) = {u *: u = an(a+b+c)bn, n 1},G= (V, , P, S), V = {S, T}, = {a, b, c}

• Produções:– S aSb | T– T a | b | c

LFA 1999/2000 - 12Jorge Morais

Page 13: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Exemplo 2 (cont.)

• Derivação de a3cb3 = aaacbbb:

• S aSb aaSbb aaaSbbb aaaTbbb aaacbbb

LFA 1999/2000 - 13Jorge Morais

Page 14: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Autómato de Pilha

• Um autómato de pilha é um vectorA = (S, , , , i, z, F), onde:– S conjunto finito de estados conjunto finito - alfabeto de entrada conjunto finito - alfabeto da pilha : S x {} x S x *

– i S estado inicial

– z símbolo inicialmente no topo da pilha

– F S conjunto de estados finais

LFA 1999/2000 - 14Jorge Morais

Page 15: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Linguagem do Autómato de Pilha

• Num autómato de pilha a linguagem pode ser reconhecida de forma equivalente por estados finais ou por pilha vazia

• LF(A) = {u *: u é o rótulo de um caminho bem sucedido}

• LV(A) = {u *: u é o rótulo de um caminho que termina com a pilha vazia}

LFA 1999/2000 - 15Jorge Morais

Page 16: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Exemplo

• L(A) = {u *: u = x 3 xi, x é uma sequência de 1’s e 2’s e xi é a mesma sequência invertida }

• A = (S, , , , i, z, F)– S={i,m,f}, = {1, 2, 3}, = {a, b, z}– F ={f}

LFA 1999/2000 - 16Jorge Morais

Page 17: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Exemplo (cont.)

={

(i,1,z,i,az), (i,1,a,i,aa), (i,1,b,i,ab),

(i,2,z,i,bz), (i,2,a,i,ba), (i,2,b,i,bb),

(i,3,z,m,z), (i,3,a,m,a), (i,3,b,m,b),

(m,1,a,m, ), (m,2,b,m,), (m,,z,f,)}

LFA 1999/2000 - 17Jorge Morais

Page 18: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Equivalência entre linguagens

• As linguagens reconhecidas por autómatos finitos, expressões regulares e gramáticas regulares são todas do tipo 3, isto é, regulares.

• As linguagens reconhecidas por gramáticas independentes de contexto e autómatos de pilha são do tipo 2, isto é, independentes de contexto.

LFA 1999/2000 - 18Jorge Morais

Page 19: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Prova construtiva

• Para determinar que uma linguagem é do tipo 3 ou do tipo 2, basta usar uma das formas anteriores.

• Para provar que não é do tipo 3 ou 2, é preciso provar que não é possível encontrar nenhuma dessas formas.

LFA 1999/2000 - 19Jorge Morais

Page 20: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Lema de repetição para LR’s

• Se L é uma linguagem regular, existe um inteiro n tal que todo o x L com |x| n pode ser escrito na forma x = uvw com:

|uv| n

|v| 1

m 0 a palavra uvmw pertence a L

A constante n não excede o número de estados do menor autómato finito que reconhece L.

LFA 1999/2000 - 20Jorge Morais

Page 21: I - Noções dum compilador Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: –Apontamentos LFA 1999/2000

Lema de repetição para LIC’s

• Se L é uma linguagem independente de contexto, existe um inteiro n apenas dependente de L tal que, se z L e |z| n, z pode ser escrito da forma z = uvwxy onde:

|vx| 1

|vwx| n

i 0 a palavra uviwxiy pertence a L

LFA 1999/2000 - 21Jorge Morais