Prof. Yandre Maldonado - 1 Gramática Livre de Contexto Árvore de derivação Ambigüidade Simplificação de Gramática Forma Normal de Chomsky (FNC) (FNG) Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Árvore de Derivação Prof. Yandre Maldonado - 2 Uma maneira de representar a derivação de uma sentença a partir de uma GLC; Particularmente útil em algumas aplicações, como compiladores; m uma árvore de derivação: A raiz é o símbolo de partida da GLC; Os nós internos são símbolos de V; Os nós folha são símbolos de T (ou λ); Árvore de Derivação Prof. Yandre Maldonado - 3 árvore de derivação para a sentença x+x*x a partir da seguinte GLC; 1) + 2) * 3) () 4) x 1 4 2 4 4 + x+ x+* x+x* x+x*x x + x * x 1
Ambigüidade Prof. Yandre Maldonado - 4 Uma sentença é dita ambígua, quando existir pelo menos dois caminhos de derivação para ela; Assim, existe mais do que uma árvore de derivação associada a uma sentença ambígua; Uma gramática é dita ambígua, se ela produzir pelo menos uma sentença de forma ambígua; Ambigüidade 1) + 2) * 3) () 4) x dois caminhos para x+x*x + * Prof. Yandre Maldonado - 5 x x * x 1 4 2 4 4 + x+ x+* x+x* x+x*x x + x 2 1 4 4 4 * +* x+* x+x* x+x*x x Prof. Yandre Maldonado - 6 É possível simplificar algumas produções de uma GLC sem reduzir o seu poder de geração; Tipos de simplificação: xclusão de símbolos inúteis; xclusão de produções vazias; xclusão de produções da forma A B; 2
Prof. Yandre Maldonado - 7 xclusão de símbolos inúteis: Variáveis (não-terminais) ou terminais que não contribuem com a produção de sentenças; tapas: xclusão de símbolos improdutivos; xclusão de símbolos inacessíveis; Prof. Yandre Maldonado - 8 xclusão de símbolos inúteis: É importante por vários motivos m gramáticas grandes, como gramáticas de linguagens de programação, pode acontecer de se esquecer de definir regras relativas a alguma variável, ou então, uma variável, apesar de ter suas regras já definidas, pode não ter sido utilizada na formação de novas regras. XMPLO: Seja a Gramática ({S, A, B, C}, {a, b, c}, P,S} onde P contém as regras: Prof. Yandre Maldonado - 9 1) S AB a 2) B b 3) C c 1) S a C é inútil (não é acessível) A é inútil (não está definido) B é inútil (não usado em palavras da linguagem) liminando-se as variáveis inúteis e as regras que as referenciam, além dos terminais b e c que não ocorrem em nenhuma regra (não são usados para formar palavras da linguagem gerada) tem-se esta regra A Gramática equivalente é dada por ({S}, {a}, S a, S} 3
tapa 1: garante que qualquer não terminal gera terminais; Algoritmo: parte de G(V,T,P,S) e dá origem a G 1 (V 1,T,P 1,S); Construção de V 1 : Prof. Yandre Maldonado - 10 V 1 = repita V 1 = V 1 {A A α e α ϵ (T V 1 ) * } até que o cardinal de V 1 não aumente; Conjunto P 1 : P menos as produções cujos não terminais não pertencem a V 1 ; Prof. Yandre Maldonado - 11 Qqr não terminal gera terminal 1) S aaa 2) S bbb 3) A a 4) A S 5) C c 6) B bb 1) S aaa 2) A a 3) A S 4) C c V 1 = repita V 1 = V 1 {A A α e α ϵ (T V 1 ) * } até que o cardinal de V 1 não aumente; iteração início 1 2 3 V 1 {A, C} {A, C, S} {A, C, S} tapa 2: garante que qualquer símbolo é atingível a partir do símbolo inicial; Algoritmo: parte de G 1 (V 1,T 1,P 1,S) e dá origem a G 2 (V 2,T 2,P 2,S); Prof. Yandre Maldonado - 12 T 2 = ; V 2 = {S}; repita V 2 = V 2 {A X αaβ ϵ P 1, X ϵ V 2 }; T 2 = T 2 {a X αaβ ϵ P 1, X ϵ V 2 }; até que os cardinais de V 2 e T 2 não aumentem; Conjunto P 2 : P 1 menos as produções cujos símbolos não pertencem a V 2 ou T 2 ; 4
Prof. Yandre Maldonado - 13 1) S aaa 2) A a 3) A S 4) C c 1) S aaa 2) A a 3) A S T 2 = ; V 2 = {S}; repita V 2 = V 2 {A X αaβ ϵ P 1, X ϵ V 2 }; T 2 = T 2 {a X αaβ ϵ P 1, X ϵ V 2 }; até que os cardinais de V 2 e T 2 não aumentem; iteração início 1 2 variáveis {S} {S, A} {S, A} terminais {a} {a} Prof. Yandre Maldonado - 14 xclusão de produções vazias: Produções vazias são produções da forma A λ; tapas: Variáveis que constituem produções vazias; xclusão das produções vazias; Inclusão da geração da palavra vazia, se necessário; Prof. Yandre Maldonado - 15 tapa 1: conjunto de variáveis que constituem produções vazias; Considera inicialmente todas as variáveis que geram diretamente λ; A seguir, sucessivamente são determinadas as variáveis que indiretamente geram λ; Algoritmo: V λ = { A A λ }; repita V λ = V λ { X X X 1 X n ϵ P X 1,, X n ϵ V λ } até que o cardinal de V λ não aumente; 5
Prof. Yandre Maldonado - 16 1) S axa 2) S bxb 3) S λ 4) X a 5) X b 6) X Y 7) Y λ V λ = { A A λ }; repita V λ = V λ { X X X 1 X n ϵ P X 1,, X n ϵ V λ } até que o cardinal de V λ não aumente; iteração início 1 2 V λ {S, Y} {S, Y, X} {S, Y, X} tapa 2: conjunto de produções sem produções vazias; Algoritmo: parte de G(V,T,P,S) e dá origem a G 1 (V,T,P 1,S); Prof. Yandre Maldonado - 17 P 1 = {A α α λ}; repita até para toda A αϵp 1 e X ϵ V λ α =α 1 Xα 2 e α 1 α 2 λ faca P 1 = P 1 { A α1α2 } que o cardinal de P 1 não aumente; Prof. Yandre Maldonado - 18 1) S axa 2) S bxb 3) S λ 4) X a 5) X b 6) X Y 7) Y λ 1) S axa 2) S bxb 3) S aa 4) S bb 5) X a 6) X b 7) X Y Resultado da etapa 1: V λ = {S, Y, X} iteração inicial 1 2 P 1 = {A α α λ}; repita até produções {S axa bxb, X a b Y} {S axa bxb aa bb, X a b Y} {S axa bxb aa bb, X a b Y} para toda A αϵp 1 e X ϵ V λ α =α 1 Xα 2 e α 1 α 2 λ faca P 1 = P 1 { A α1α2 } que o cardinal de P 1 não aumente; 6
Prof. Yandre Maldonado - 19 tapa 3: quando a palavra vazia pertencer à linguagem gerada pela gramática, uma regra do tipo S λ deve ser incluída em P; tapa 1: 1) S axa 2) S bxb 3) S λ 4) X a 5) X b 6) X Y 7) Y λ Resultado: V λ = {S, Y, X} tapa 2: 1) S axa 2) S bxb 3) S aa 4) S bb 5) X a 6) X b 7) X Y tapa 3: 1) S axa 2) S bxb 3) S aa 4) S bb 5) S λ 6) X a 7) X b 8) X Y Note que Y se tornou inútil 1) P APB C 2) A AaaA λ 3) B BBb C 4) C cc λ iteração início 1 V λ {A, C} {A, C, P, B} Prof. Yandre Maldonado - 20 1) P APB AB AP PB A B C λ 2) A AaaA aaa Aaa aa 3) B BBb Bb b C 4) C cc c 1) P BPA A 2) A aa λ 3) B Bba λ iteração início 1 V λ {A, B} {A, B, P} Prof. Yandre Maldonado - 21 1) P BPA PA BP BA B A λ 2) A aa a 3) B Bba ba 7
Prof. Yandre Maldonado - 22 xclusão de produções da forma A B: Produções da forma A B não adicionam informação sintática alguma; tapas: Construção do fecho de cada variável; xclusão das produções da forma A B; tapa 1: construção do fecho de cada variável; Algoritmo: para toda A ϵ V Prof. Yandre Maldonado - 23 faça FCHO-A = { B A B e A *B} usando exclusivamente produções da forma X Y; Prof. Yandre Maldonado - 24 1) S axa 2) S bxb 3) X a 4) X b 5) X S 6) X λ para toda A ϵ V faça Fecho-S Fecho-X {S} FCHO-A = { B A B e A *B} usando exclusivamente produções da forma X Y; 8
tapa 2: exclusão das produções da forma A B; Algoritmo: parte de G(V,T,P,S) e dá origem a G 1 (V,T,P 1,S); Prof. Yandre Maldonado - 25 P 1 = { A α α V }; para faça toda A ϵ V e B ϵ FCHO-A se B αϵ P e α V então P 1 = P 1 {A α}; Prof. Yandre Maldonado - 26 1) S axa 2) S bxb 3) X a 4) X b 5) X S 6) X λ 1) S axa 2) S bxb 3) X a 4) X b 6) X λ 7) X axa 8) X bxb iteração Inicial S X tapa 1: Fecho-S= e Fecho-X={S} produções {S axa bxb, X a b λ} {S axa bxb, X a b λ} {S axa bxb, X a b λ axa bxb} P 1 = { A α α V }; para faça toda A ϵ V e B ϵ FCHO-A se B αϵ P e α V então P 1 = P 1 {A α}; Prof. Yandre Maldonado - 27 Simplificações combinadas: A eliminação de produções vazias pode gerar símbolos inúteis; A eliminação de produções unitárias (X Y) também pode gerar símbolos inúteis; Por isso, em simplificações combinadas recomenda-se a seguinte seqüência: xclusão de Produções Vazias; xclusão de Produções Unitárias; xclusão de Símbolos Inúteis; 9
Formas Normais Prof. Yandre Maldonado - 28 As formas normais estabelecem restrições rígidas a formação das regras em uma GLC sem diminuir o poder de representação deste tipo de gramática; Muito utilizadas em algoritmos de reconhecimento, transformações e prova de teoremas; Formas Normais Prof. Yandre Maldonado - 29 As mais conhecidas são: Forma Normal de Chomsky (FNC); (FNG); Na FNC, as regras devem ser da forma: A BC ou A a Na FNG, as regras devem ser da forma: A aα Sendo A, B e C V, a T e α V* Forma Normal de Chomsky Prof. Yandre Maldonado - 30 Chomsky, 1928 As regras devem ser da forma: A BC ou A a O algoritmo é dividido em três etapas: Simplificação da gramática: exclusão de produções vazias e de produções unitárias, opcionalmente pode-se excluir símbolos inúteis; Transformação do lado direito de regras que tenham um comprimento maior ou igual a 2; Transformação do lado direito de regras que tenham um comprimento maior ou igual a 2 em produções com exatamente 2 variáveis; 10
Forma Normal de Chomsky Prof. Yandre Maldonado - 31 tapa 1: simplificação da gramática; xcluir produções vazias; xcluir produções unitárias; xcluir símbolos inúteis (opcional); 1) + 2) * 3) () 4) x A gramática já está simplificada. Forma Normal de Chomsky Prof. Yandre Maldonado - 32 tapa 2: transformação do lado direito de regras com tamanho maior ou igual a 2; Faz com que esses lados direitos apresentem apenas não terminais; Algoritmo: parte de G 1 (V 1,T,P 1,S) e dá origem a G 2 (V 2,T,P 2,S); V 2 = V 1 ; P 2 = P 1 ; Para toda A X 1 X 2..X n ϵ P 2 tal que n >= 2 faça se para r ϵ {1,.., n}, X r é terminal então (suponha Xr = a ) V 2 = V 2 {C a }; susbstitui a por C a em 1) + 2) * 3) () 4) x A X 1 X 2 X n ϵ P 2 ; P 2 = P 2 {C a a}; 1) C + 2) C * 3) C ( C ) 4) x 5) C + + 6) C * * 7) C ( ( 8) C ) ) Forma Normal de Chomsky Prof. Yandre Maldonado - 33 tapa 3: transformação do lado direito das produções com tamanho maior ou igual a 3 em produções com exatamente 2 variáveis; Faz com que esses lados direitos apresentem exatamente 2 variáveis; Algoritmo: parte de G 2 (V 2,T,P 2,S) e dá origem a G 3 (V 3,T,P 3,S); V 3 = V 2; P 3 = P 2; Para toda A B 1 B 2..B n ϵ P 3 tal que n >= 3 faça P 3 = P 3 {A B 1 B 2.. B n }; V 3 = V 3 {D 1,, D n-2 }; P 3 = P 3 {A B 1 D 1, D 1 B 2 D 2,, D n-3 B n-2 D n-2, D n-2 B n-1 D n-1 }; 1) C + 2) C * 3) C ( C ) 4) x 5) C + + 6) C * * 7) C ( ( 8) C ) ) 1) D 1 2) D 2 3) C ( D 3 4) x 5) C + + 6) C * * 7) C ( ( 8) C ) ) 9) D 1 C + 10) D 2 C * 11) D 3 C ) 11
Forma Normal de Chomsky Prof. Yandre Maldonado - 34 Seja uma GLC G = ({L,S,},{a, (,)}, P, L), onde P consta das regras: 1) L (S) 2) S S λ 3) a L Forma Normal de Chomsky Prof. Yandre Maldonado - 35 1) L (S) 2) S S λ 3) a L Observando-se que S é a única variável anulável, tem-se as seguintes regras após a eliminação de regra λ 1) L (S) ( ) 2) S S 3) a L Forma Normal de Chomsky Prof. Yandre Maldonado - 36 1) L (S) ( ) 2) S S 3) a L Observando-se os fechos Fecho(L)={} Fecho(S)={,L} Fecho()={L} Obtem-se as seguintes regras após a eliminação de regras unitárias: 1) L (S) ( ) 2) S S a (S) ( ) 3) a (S) ( ) 12
Forma Normal de Chomsky 1) L (S) ( ) 2) S S a (S) ( ) 3) a (S) ( ) Substituindo os terminais por variáveis nas regras cujo lado direito é maior ou igual a 2: Prof. Yandre Maldonado - 37 1) L C ( SC ) C ( C ) 2) S S a C ( SC ) C ( C ) 3) a C ( SC ) C ( C ) 4) C ( ( 5) C ) ) Forma Normal de Chomsky Prof. Yandre Maldonado - 38 1) L C ( SC ) C ( C ) 2) S S a C ( SC ) C ( C ) 3) a C ( SC ) C ( C ) 4) C ( ( 5) C ) ) 1) L C ( D 1 C ( C ) 2) S S a C ( D 1 C ( C ) 3) a C ( D 1 C ( C ) 4) C ( ( 5) C ) ) 6) D 1 SC ) Quebrando as regras com lado direito maior que 2, obtem-se: Forma Normal de Chomsky xercício: Coloque a seguinte gramática na FNC: Prof. Yandre Maldonado - 39 G=(V, T, P, S), onde: V={S, A, B, C} T={a, b, c} P={ S ASCA S ABCA A a B bbb B λ C c } 13
Uma GLC G = (V, T, P, S) é dita estar na (FNG) se todas as suas regras são da forma: A aα Sendo A V, a T e α (V T) * Prof. Yandre Maldonado - 40 Greibach??? A maioria dos autores definem α V*, o fato é que a transformação daquela forma para esta, mais restritiva, é trivial. Sheila Greibach, 1939 Prof. Yandre Maldonado - 41 Depois de simplificada, a transformação de uma GLC para FNG envolve as etapas que serão descritas na seqüência: tapa 1: renomeação das variáveis para uma ordem crescente qualquer; As variáveis da gramática são renomeadas em uma ordem crescente qualquer; xemplo: A 1, A 2, A n onde n é um cardinal de V; Diferentes critérios de renomeação podem resultar em diferentes gramáticas na FNG; Nesta etapa, a partir de uma gramática G 1 =(V 1, T 1, P 1, S), obtêm-se a gramática G 2 conforme descrito a seguir: Gramática resultante: G 2 = (V 2, T 1, P 2, S) Prof. Yandre Maldonado - 42 Suponha que o cardinal de V 1 é n Construção de V 2 e P 2 V 2 = { A 1, A 2,, A n } é V 1 renomeando os elementos em uma ordem qualquer Inicialmente, P 2 é P 1 renomeando as variáveis na produção 14
Prof. Yandre Maldonado - 43 1) S AA 2) S a 3) A b 4) A SS Renomeando as variáveis S e A para A 1 e A 2 respectivamente * Note que a gramática já está simplificada. 1) A 1 A 2 A 2 2) A 1 a 3) A 2 b 4) A 2 A 1 A 1 Prof. Yandre Maldonado - 44 tapa 2: transformação das produções para a forma A r A s α onde r s; Produções são modificadas garantindo que a primeira variável do lado direito é maior ou igual que a do lado esquerdo; A r A s α onde r > s são modificadas; Substitui a variável A s pelas suas respectivas produções; O conjunto de variáveis é finito: existe um limite para as produções crescentes; Prof. Yandre Maldonado - 45 1) A 1 A 2 A 2 2) A 1 a 3) A 2 b 4) A 2 A 1 A 1 Substituindo A 1 no lado direito da regra 1) A 1 A 2 A 2 2) A 1 a 3) A 2 b 4) A 2 aa 1 5) A 2 A 2 A 2 A 1 15
Prof. Yandre Maldonado - 46 tapa 3: exclusão das recursões da forma A r A r α; Podem existir originalmente na gramática ou serem geradas pela etapa anterior; liminação da recursão à esquerda: introduzindo variáveis auxiliares e incluindo recursão à direita (B r αb r ); Prof. Yandre Maldonado - 47 1) A 1 A 2 A 2 2) A 1 a 3) A 2 b 4) A 2 aa 1 5) A 2 A 2 A 2 A 1 1) A 1 A 2 A 2 2) A Introduzindo uma 1 a variável B 2 e incluindo 3) A 2 b recursão a direita 4) A 2 aa 1 5) A 2 bb 2 6) A 2 aa 1 B 2 8) B 2 A 2 A 1 9) B 2 A 2 A 1 B 2 Prof. Yandre Maldonado - 48 tapa 4: garante que o lado direito das produções iniciem com um terminal; Todas as produções da forma A r A s α onde r<s; Consequentemente, as produções da maior variável A n só podem iniciar por terminais no lado direito; Assim, se em A n-1 A n α for substituído A n pelas suas correspondentes produções (ex: A n aβ), o lado direito das produções de A n-1 também iniciará por terminal (ex: A n-1 aβα); A repetição do algoritmo para A n-2,, A 1 resultará em produções exclusivamente da forma A r aα; 16
Prof. Yandre Maldonado - 49 1) A 1 A 2 A 2 2) A 1 a 3) A 2 b 4) A 2 aa 1 5) A 2 bb 2 6) A 2 aa 1 B 2 8) B 2 A 2 A 1 9) B 2 A 2 A 1 B 2 Substituindo as variáveis no início dos lados direitos 1) A 1 ba 2 2) A 1 aa 1 A 2 3) A 1 bb 2 A 2 4) A 1 aa 1 B 2 A 2 5) A 1 a 6) A 2 b 7) A 2 aa 1 8) A 2 bb 2 9) A 2 aa 1 B 2 10) B 2 ba 1 11) B 2 aa 1 A 1 12) B 2 bb 2 A 1 13) B 2 aa 1 B 2 A 1 14) B 2 ba 1 B 2 15) B 2 aa 1 A 1 B 2 16) B 2 bb 2 A 1 B 2 17) B 2 aa 1 B 2 A 1 B 2 Prof. Yandre Maldonado - 50 Algoritmo das etapas 2 e 3: Gramática resultante G 3 = (V 3, T 1, P 3, S) Suponha que o cardinal de V 2 é n P 3 = P 2 para r variando de 1 até n faça para s variando de 1 até r-1 faça para toda A r A s α P 3 faça excluir A r A s α de P 3 ; para toda A s β P 3 faça P 3 = P 3 { A r βα} para toda A r A r α P 3 faça excluir A r A r α de P 3 ; V 3 = V 3 {B r } P 3 = P 3 {B r α} {B r αb r } para toda A r Φ P 3 tq Φ não inicia por A r e alguma A r A r α foi excluída faça P 3 = P 3 { A r ΦB r }; Garante variável da esquerda menor ou igual a da direita limina recursão a esquerda Algoritmo da etapa 4: Gramática resultante G 4 = (V 3, T 1, P 4, S) Construção de P 4 Prof. Yandre Maldonado - 51 P 4 = P 3 ; para r variando de n-1 até 1 e toda A r A s α P 4 faça excluir A r A s α de P 4 ; para toda A s β de P 4 faça P 4 = P 4 {A r βα}; para toda B r A s β r faça excluir B r A s β r de P 4 para toda A s aα faça P 4 = P 4 { B r aαβ r }; Também é necessário garantir que as produções relativas às variáveis auxiliares B r iniciam por um terminal do lado direito. 17
xercício: transforme a seguinte GLC para FNG; Prof. Yandre Maldonado - 52 S AB SCB SB bb b A aa a cc c B bb b C cc c A 1 A 2 A 3 A 1 A 4 A 3 A 1 A 3 ba 3 b A 2 aa 2 a ca 4 c A 3 ba 3 b A 4 ca 4 c Renomeando as variáveis (tapa 1) A produções já estão na forma A r A s α onde r s (tapa 2) xercício (continuação): Prof. Yandre Maldonado - 53 A 1 A 2 A 3 A 1 A 4 A 3 A 1 A 3 ba 3 b A 2 aa 2 a ca 4 c A 3 ba 3 b A 4 ca 4 c A 1 A 2 A 3 ba 3 b A 2 A 3 B 1 ba 3 B 1 bb 1 A 2 aa 2 a ca 4 c A 3 ba 3 b A 4 ca 4 c B 1 A 4 A 3 A 3 A 4 A 3 B 1 A 3 B 1 liminando recursão a esquerda: A r A r α (tapa 3) xercício (continuação): Prof. Yandre Maldonado - 54 A 1 A 2 A 3 ba 3 b A 2 A 3 B 1 ba 3 B 1 bb 1 A 2 aa 2 a ca 4 c A 3 ba 3 b A 4 ca 4 c B 1 A 4 A 3 A 3 A 4 A 3 B 1 A 3 B 1 Garantindo que todo lado direito inicie com terminal (tapa 4) A 1 aa 2 A 3 aa 3 ca 4 A 3 ca 3 ba 3 b aa 2 A 3 B 1 aa 3 B 1 ca 4 A 3 B 1 ca 3 B 1 ba 3 B 1 bb 1 A 2 aa 2 a ca 4 c A 3 ba 3 b A 4 ca 4 c B 1 ca 4 A 3 ca 3 ba 3 b ca 4 A 3 B 1 ca 3 B 1 ba 3 B 1 bb 1 18
Bibliografia Prof. Yandre Maldonado - 55 MNZS, Paulo Blauth. Linguagens Formais e Autômatos. Porto Alegre: ditora Sagra-Luzzatto, 1998; DLAMARO, Márcio duardo. Linguagens Formais e Autômatos. UM, 1998; VIIRA, Newton José. Introdução aos Fundamentos da Computação. São Paulo: ditora Thomson Learning, 2006. 19