Gramáticas ( [HMU00], Cap. 5.1) Vimos que a seguinte linguagem não é regular L = {0 n 1 n n 0} Contudo podemos fácilmente dar uma definição indutiva das suas palavras: 1. ɛ L 2. Se x L então 0x1 L L é a linguagem de {0, 1} obtida por aplicação, uma ou mais vezes, da seguintes regras: (1) P ɛ (2) P 0P 1 que definem a categoria sintáctica P, que representa as palavras de L. Por exemplo, 0011 L pois P 0P 1 00P 11 0011 Departamento de Ciência de Computadores da FCUP MC Aula 12 1
Gramática para o Português f rase f rase nominal f rase verbal f rase nominal determinante f rase nominal1 f rase nominal1 nome c adjs f rase nominal1 nome p adjs adj adjs adjs ɛ f rase verbal verbo i f rase verbal verbo t f rase nominal nome c gato nome c rato nome p joana verbo i dorme verbo t comeu determinante o adj preto Departamento de Ciência de Computadores da FCUP MC Aula 12 2
Esta gramática deriva a frase o gato preto comeu o rato, mas não a frase gato rato comeu o. Departamento de Ciência de Computadores da FCUP MC Aula 12 3
f rase f rase nominal f rase verbal determinante f rase nominal1 f rase verbal o f rase nominal1 f rase verbal o nome c adjs f rase verbal o gato adjs f rase verbal o gato adj adjs f rase verbal o gato preto frase verbal o gato preto verbo t f rase nominal o gato preto comeu frase nominal o gato preto comeu determinante f rase nominal1 o gato preto comeu o frase nominal1 o gato preto comeu o nome c o gato preto comeu o rato Departamento de Ciência de Computadores da FCUP MC Aula 12 4
Gramática para expressões aritméticas E E E E E+E E (E) E I I D I DI Uma derivação para 5 (6 + 19) D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 8 D 9 E E E I E D E 5 E 5 (E) 5 (E + E) 5 (I + E) 5 (D + E) 5 (6 + E) 5 (6 + I) 5 (6 + DI) 5 (6 + 1I) 5 (6 + 1D) 5 (6 + 19) Departamento de Ciência de Computadores da FCUP MC Aula 12 5
A linguagem L sobre {a,b} descrita pela expressão regular a(a +b )b pode ser descrita pela gramática seguinte: S at b T A T B A aa A ɛ B bb B ɛ abbb L, porque:s at b abb abbb abbbb abbɛb abbb ab L, porque:s at b abb aɛb ab aaaab L, porque:s at b aab aaab aaaab aaaaab aaaaɛb aaaab Departamento de Ciência de Computadores da FCUP MC Aula 12 6
aaabbb L porque depois do segundo a a palavra só pode ter um único b no fim. Depois de aplicada a regra para A, só podem ser derivados a. Departamento de Ciência de Computadores da FCUP MC Aula 12 7
Gramáticas Independentes de Contexto Uma gramática independente de contexto é um quádruplo G = (V, Σ, P, S) V é um conjunto finito não vazio de variáveis ou não terminais (ou categorias sintáticas) Σ é um conjunto finito não vazio, disjunto de V, alfabeto ou conjunto de terminais S V é o símbolo inicial de G P é uma relação binária finita de V em (V Σ). Os elementos de P denominam-se produções ou regras.se (X, w) P escreve-se X w Se existirem várias regras para um mesmo não terminal X podemos abreviar numa, separando-as com do lado direito X α 1, X α 2, X α 3 fica X α 1 α 2 α 3 Departamento de Ciência de Computadores da FCUP MC Aula 12 8
Porquê Independentes de contexto? Porque as regras que definem um não terminal X não estão restritas a um contexto. Para gramáticas mais gerais podemos ter regras do tipo α β com α, β (V Σ), α ε e no caso das GIC tem de se ter α V! Aplicações As GICs permitem descrever conjuntos infinitos de um modo finito.são especialmente utilizadas para a descrição da sintaxe de linguagens programação. Departamento de Ciência de Computadores da FCUP MC Aula 12 9
Exemplos de GIC G 1 = ({E, D, I}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,, +, (, )}, {E E E E + E (E) I, I D DI, D 0 1 2 3 4 5 6 7 8 9}, E) G 2 = ({S}, {0, 1}, {S 0S1 ε}, S) G 4 = ({S}, {(, )}, {S (S) SS ɛ}, S) G 3 = ({S, A, B}, {a, b}, {S ab ba, A a as baa, B b bs abb}, S) A linguagem que uma gramática gera é constituída pelas palavras que podem ser derivadas a partir do símbolo inicial (usando as regras). Departamento de Ciência de Computadores da FCUP MC Aula 12 10
Derivação num passo Seja G = (V, Σ, P, S) e α, β (V Σ). β é derivável de α num passo α 1 G β se β resulta de α substituindo uma ocorrência dum não terminal A em α por γ, onde A γ P. Isto é, se existem α 1, α 2 (V Σ) tal que α = α 1 Aα 2 e β = α 1 γα 2 1 G é uma relação binária em (V Σ) Sendo G = ({S, A, B}, {a, b}, {S ab ba, A a as baa, B b bs abb}, S) aaab 1 G aaasb com α 1 = aa, α 2 = b e a regra A as. Departamento de Ciência de Computadores da FCUP MC Aula 12 11
Derivação em n passos Define-se a relação n G, derivação em n passos por indução para n 0: α 0 G α 1 G α, para α (V Σ) β, derivação num passo α n+1 G β, se existe γ tal que α n G γ e γ 1 G β Derivação A relação de derivação G é o fecho reflexivo e transitivo da relação derivação num passo 1 G, isto é G= n 0 n G Se α (V Σ) diz-se que é uma forma sentencial.uma forma sentencial α é uma frase se consiste apenas em símbolos terminais (α Σ ). Departamento de Ciência de Computadores da FCUP MC Aula 12 12
Linguagem gerada por uma GIC A linguagem gerada por G = (V, Σ, P, S), L(G) é o conjunto L(G) = {x Σ S G x} Uma linguagem A Σ é independente de contexto, se A = L(G) para alguma gramática independente de contexto G. Duas gramáticas G 1 e G 2 são equivalentes se L(G 1 ) = L(G 2 ). Departamento de Ciência de Computadores da FCUP MC Aula 12 13
A linguagem L = {0 n 1 n n 0 } é IC Temos que mostrar que existe uma GIC G tal que L = L(G). Seja a gramática G 2 = ({S}, {0, 1}, {S 0S1 ε}, S) Por exemplo, 0 3 1 3 L(G 2 )porque: S 1 G 2 0S1 1 G 2 00S11 1 G 2 000S111 1 G 2 000ɛ111 = 000111i.e, Lema 12.1. n 0, S n+1 G 2 Dem. Por indução em n. S 4 G 2 000111. 0 n 1 n Vamos mostrar que L(G 2 ) = L ( ) Pelo lema 12.1 se x L então x L(G 2 ). ( ) Inversamente, se x L(G 2 ) então x é da forma 0 n 1 n, o que pode ser mostrado por indução no número de passos de derivação: Departamento de Ciência de Computadores da FCUP MC Aula 12 14
Base. Se n = 1 então x = ɛ Indução. Se S n+1 x então S 1 0S1 n 0y1 = x e por hipótese de indução y é da forma 0 m 1 m. Donde x = 0 m+1 1 m+1 L Departamento de Ciência de Computadores da FCUP MC Aula 12 15
Leituras [HMU00] (Cap. 5.1) Referências [HMU00] John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to Automata Theory, Languages and Computation. Addison Wesley, 2nd edition, 2000. [Tom99] Ana Paula Tomás. Apontamentos de modelos de computação. Technical report, Departamento de Ciência de Computadores, FCUP, 1999. Departamento de Ciência de Computadores da FCUP MC Aula 12 16