210 likes | 358 Views
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:
E N D
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: • 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 Jorge Morais LFA 1999/2000 - 2
Produções duma gramática DEI • 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 )+ Jorge Morais LFA 1999/2000 - 3
Linguagem duma gramática DEI • Definimos a linguagem gerada pela gramática L(G) = {u *: S * u} • BNF (Backus NaurForm): • 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) • Jorge Morais LFA 1999/2000 - 4
Gramáticas sensíveis ao contexto DEI • Dizemos que uma gramática é sensível ao contexto se todas as produções são da forma: • S, ou; • , onde: • || ||; • S cont() Jorge Morais LFA 1999/2000 - 5
Gramáticas independentes de contexto DEI • Dizemos que uma gramática é independente de contexto se todas as produções são da forma: • A, onde: • A V; • (V )* Jorge Morais LFA 1999/2000 - 6
Árvore de derivação DEI • 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. Jorge Morais LFA 1999/2000 - 7
Gramáticas regulares DEI • Dizemos que uma gramática é regular se for linear à esquerda ou à direita: Jorge Morais LFA 1999/2000 - 8
Hierarquia de Chomsky DEI Jorge Morais LFA 1999/2000 - 9
Exemplo 1 DEI • 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 Jorge Morais LFA 1999/2000 - 10
Exemplo 1 (cont.) DEI • Derivação de a2b2c2 = aabbcc: • S aSBA aabABA aabBAA aabbAA aabbcA aabbcc Jorge Morais LFA 1999/2000 - 11
Exemplo 2 DEI • 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 Jorge Morais LFA 1999/2000 - 12
Exemplo 2 (cont.) DEI • Derivação de a3cb3 = aaacbbb: • S aSb aaSbb aaaSbbb aaaTbbb aaacbbb Jorge Morais LFA 1999/2000 - 13
Autómato de Pilha DEI • 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 Jorge Morais LFA 1999/2000 - 14
Linguagem do Autómato de Pilha DEI • 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} Jorge Morais LFA 1999/2000 - 15
Exemplo DEI • 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} Jorge Morais LFA 1999/2000 - 16
Exemplo (cont.) DEI • ={ (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,)} Jorge Morais LFA 1999/2000 - 17
Equivalência entre linguagens DEI • 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. Jorge Morais LFA 1999/2000 - 18
Prova construtiva DEI • 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. Jorge Morais LFA 1999/2000 - 19
Lema de repetição para LR’s DEI • 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. Jorge Morais LFA 1999/2000 - 20
Lema de repetição para LIC’s DEI • 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 Jorge Morais LFA 1999/2000 - 21