I Noes dum compilador Gramticas rvores de derivao

  • Slides: 21
Download presentation
I - Noções dum compilador • • • Gramáticas Árvores de derivação Hierarquia de

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

Gramática • Uma gramática é um vector G = (V, , P, S) onde:

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 Jorge Morais LFA 1999/2000 -

Produções duma gramática • Uma produção representa-se habitualmente na forma • Escrevemos que u

Produções duma gramática • Uma produção representa-se habitualmente na forma • Escrevemos que u v, se u=x y e v=x y, com x, y (V )* e P • Escrevemos que u * v (v deriva de u), se u = v ou se u w 1 w 2 . . . wn-1 v, onde w 1, w 2, . . . , wn-1 (V )+ Jorge Morais LFA 1999/2000 -

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

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) – Jorge Morais LFA 1999/2000 -

Gramáticas sensíveis ao contexto • Dizemos que uma gramática é sensível ao contexto se

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( ) Jorge Morais LFA 1999/2000 -

Gramáticas independentes de contexto • Dizemos que uma gramática é independente de contexto se

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 )* Jorge Morais LFA 1999/2000 -

Árvore de derivação • Seja G = (V, , P, S) uma gramática independente

Á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. Jorge Morais LFA 1999/2000 -

Gramáticas regulares • Dizemos que uma gramática é regular se for linear à esquerda

Gramáticas regulares • Dizemos que uma gramática é regular se for linear à esquerda ou à direita: Gramática linear à direita • A • A B • onde: –A, B V; – Jorge Morais Gramática linear à esquerda • A • A B • onde: –A, B V; – LFA 1999/2000 -

Hierarquia de Chomsky Tipo Linguagem Gramática 0 Recursivamente Enumeráveis Sem restrições 1 Sensíveis ao

Hierarquia de Chomsky Tipo Linguagem Gramática 0 Recursivamente Enumeráveis Sem restrições 1 Sensíveis ao contexto 2 3 Jorge Morais Independentes de contexto Regulares LFA 1999/2000 -

Exemplo 1 • L(G) = {u *: u = anbncn, n 1}, G= (V,

Exemplo 1 • L(G) = {u *: u = anbncn, n 1}, G= (V, , P, S), V = {S, A, B}, = {a, b, c} • Produções: – – – S a. SBA | ab. A AB BA b. B bb b. A bc c. A cc a. B ab Jorge Morais LFA 1999/2000 -

Exemplo 1 (cont. ) • Derivação de a 2 b 2 c 2 =

Exemplo 1 (cont. ) • Derivação de a 2 b 2 c 2 = aabbcc: • S a. SBA aab. ABA aab. BAA aabb. AA aabbcc Jorge Morais LFA 1999/2000 -

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

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 a. Sb | T –T a|b|c Jorge Morais LFA 1999/2000 -

Exemplo 2 (cont. ) • Derivação de a 3 cb 3 = aaacbbb: •

Exemplo 2 (cont. ) • Derivação de a 3 cb 3 = aaacbbb: • S a. Sb aa. Sbb aaa. Sbbb aaa. Tbbb aaacbbb Jorge Morais LFA 1999/2000 -

Autómato de Pilha • Um autómato de pilha é um vector A = (S,

Autómato de Pilha • Um autómato de pilha é um vector A = (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 -

Linguagem do Autómato de Pilha • Num autómato de pilha a linguagem pode ser

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} Jorge Morais LFA 1999/2000 -

Exemplo • L(A) = {u *: u = x 3 xi, x é uma

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} Jorge Morais LFA 1999/2000 -

Exemplo (cont. ) • ={ (i, 1, z, i, az), (i, 1, a, i,

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, )} Jorge Morais LFA 1999/2000 -

Equivalência entre linguagens • As linguagens reconhecidas por autómatos finitos, expressões regulares e gramáticas

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. Jorge Morais LFA 1999/2000 -

Prova construtiva • Para determinar que uma linguagem é do tipo 3 ou do

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. Jorge Morais LFA 1999/2000 -

Lema de repetição para LR’s • Se L é uma linguagem regular, existe um

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. Jorge Morais LFA 1999/2000 -

Lema de repetição para LIC’s • Se L é uma linguagem independente de contexto,

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 Jorge Morais LFA 1999/2000 -