i - noções dum compilador
DESCRIPTION
I - Noções dum compilador. DEI. Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: Apontamentos. Jorge Morais. LFA 1999/2000 - 1. Gramática. DEI. Uma gramática é um vector G = (V, , P, S) onde: - PowerPoint PPT PresentationTRANSCRIPT
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
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
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
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
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
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
Á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
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;
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
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
Exemplo 1 (cont.)
• Derivação de a2b2c2 = aabbcc:
• S aSBA aabABA aabBAA aabbAA aabbcA aabbcc
LFA 1999/2000 - 11Jorge Morais
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
Exemplo 2 (cont.)
• Derivação de a3cb3 = aaacbbb:
• S aSb aaSbb aaaSbbb aaaTbbb aaacbbb
LFA 1999/2000 - 13Jorge Morais
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
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
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
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
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
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
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
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