Gramática Livre de Contexto

Documentos relacionados
Gramática Livre de Contexto

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

Linguagens Formais e Autômatos P. Blauth Menezes

Transformação de AP para GLC

Aula 8: Gramáticas Livres de Contexto

IV Gramáticas Livres de Contexto

Linguagens Livres de Contexto

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramática. Gramática. Gramática

Gramá3ca Livre de Contexto (GLC)

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

Linguagens Formais e Autômatos P. Blauth Menezes

Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268

Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Transformações úteis para GLC: (1) eliminação de produções nulas; (2) eliminação de produções unitárias; (3) Eliminação de símbolos estéreis e

Gramáticas Livres de Contexto

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

Teoria da Computação Aula 02 Introdução

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

Automata e Linguagens Formais

Compiladores Aula 4. Celso Olivete Júnior.

Gramáticas Livres de Contexto Parte 1

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos

Linguagens Livres de Contexto

Marcos Castilho. DInf/UFPR. 5 de abril de 2018

Gramáticas e Linguagens independentes de contexto

Análise Sintática. Fabiano Baldo

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Construção de Compiladores Aula 17 - Análise Sintática Descendente

Linguagens Formais e Autômatos P. Blauth Menezes

Matemática Discreta para Ciência da Computação

Apostila 03 - Linguagens Livres de Contexto Exercícios

Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto

Conceitos básicos de Teoria da Computação

Construção de Compiladores Aula 16 - Análise Sintática

Segunda Lista de Exercícios 2004/2...

Apostila 03 Linguagens Livres de Contexto

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Linguagens e Programação Gramáticas. Paulo Proença

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha

Como construir um compilador utilizando ferramentas Java

IBM1088 Linguagens Formais e Teoria da

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Hierarquia de Chomsky Exemplos de gramáticas

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Linguagens Regulares. Prof. Daniel Oliveira

SCC-5832: II. Ling. Livres de Contexto e Autômatos de Pilha

Gramáticas e Linguagens Independentes de Contexto

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

Faculdade de Computação

Compiladores - Análise Ascendente

Linguagens Formais e Autômatos

Compiladores - Análise Ascendente

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes

Gramáticas ( [HMU00], Cap. 5.1)

Autómatos de pilha e GIC

Transcrição:

Gramática Livre de Contexto Prof. Yandre Maldonado - 1 Árvore de derivação Ambigüidade Simplificação de Gramática Forma Normal de Chomsky (FNC) Forma Normal de Greibach (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; Em 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 Exemplo: árvore de derivação para a sentença x+x*x a partir da seguinte GLC; 1) E E+E 2) E E*E 3) E (E) 4) E x 1 4 2 4 4 E E+E x+e x+e*e x+x*e x+x*x E x E + E x E * E x

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) E E+E 2) E E*E 3) E (E) 4) E x Exemplo: dois caminhos para x+x*x E E E + E E * E Prof. Yandre Maldonado - 5 x E x * E x 1 4 2 4 4 E E+E x+e x+e*e x+x*e x+x*x E x + E x 2 1 4 4 4 E E*E E+E*E x+e*e x+x*e x+x*x x

Simplificação de GLC 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: Exclusão de símbolos inúteis; Exclusão de produções vazias; Exclusão de produções da forma A B;

Simplificação de GLC Exclusão de símbolos inúteis: Prof. Yandre Maldonado - 7 Variáveis (não-terminais) ou terminais que não contribuem com a produção de sentenças; Etapas: Exclusão de símbolos improdutivos; Exclusão de símbolos inacessíveis;

Simplificação de GLC Exclusão de símbolos inúteis: Prof. Yandre Maldonado - 8 É importante por vários motivos Em 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.

Simplificação de GLC EXEMPLO: 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) Eliminando-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}

Simplificação de GLC Etapa 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 ;

Simplificação de GLC Prof. Yandre Maldonado - 11 Qqr não terminal gera terminal Exemplo: 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}

Simplificação de GLC Etapa 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 ;

Simplificação de GLC Prof. Yandre Maldonado - 13 Exemplo: 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}

Simplificação de GLC Exclusão de produções vazias: Prof. Yandre Maldonado - 14 Produções vazias são produções da forma A λ; Etapas: Variáveis que constituem produções vazias; Exclusão das produções vazias; Inclusão da geração da palavra vazia, se necessário;

Simplificação de GLC Prof. Yandre Maldonado - 15 Etapa 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;

Simplificação de GLC Prof. Yandre Maldonado - 16 Exemplo: 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}

Simplificação de GLC Etapa 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;

Simplificação de GLC Prof. Yandre Maldonado - 18 Exemplo: 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;

Simplificação de GLC Etapa 3: quando a palavra vazia pertencer à linguagem gerada pela gramática, uma regra do tipo S λ deve ser incluída em P; Prof. Yandre Maldonado - 19 Etapa 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} Etapa 2: 1) S axa 2) S bxb 3) S aa 4) S bb 5) X a 6) X b 7) X Y Etapa 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

Simplificação de GLC Exemplo: 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

Simplificação de GLC Exemplo: 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

Simplificação de GLC Exclusão de produções da forma A B: Prof. Yandre Maldonado - 22 Produções da forma A B não adicionam informação sintática alguma; Etapas: Construção do fecho de cada variável; Exclusão das produções da forma A B;

Simplificação de GLC Etapa 1: construção do fecho de cada variável; Algoritmo: para toda A ϵ V Prof. Yandre Maldonado - 23 faça FECHO-A = { B A B e A *B} usando exclusivamente produções da forma X Y;

Simplificação de GLC Exemplo: 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} FECHO-A = { B A B e A *B} usando exclusivamente produções da forma X Y;

Simplificação de GLC Etapa 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 ϵ FECHO-A se B αϵ P e α V então P 1 = P 1 {A α};

Simplificação de GLC Prof. Yandre Maldonado - 26 Exemplo: 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 Etapa 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 ϵ FECHO-A se B αϵ P e α V então P 1 = P 1 {A α};

Simplificação de GLC 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: Exclusão de Produções Vazias; Exclusão de Produções Unitárias; Exclusão de Símbolos Inúteis;

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); Forma Normal de Greibach (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;

Forma Normal de Chomsky Prof. Yandre Maldonado - 31 Etapa 1: simplificação da gramática; Excluir produções vazias; Excluir produções unitárias; Excluir símbolos inúteis (opcional); Exemplo: 1) E E+E 2) E E*E 3) E (E) 4) E x A gramática já está simplificada.

Forma Normal de Chomsky Prof. Yandre Maldonado - 32 Etapa 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 1) E E+E 2) E E*E 3) E (E) 4) E x para r ϵ {1,.., n}, X r é terminal então (suponha Xr = a ) V 2 = V 2 {C a }; susbstitui a por C a em A X 1 X 2 X n ϵ P 2 ; P 2 = P 2 {C a a}; 1) E EC + E 2) E EC * E 3) E C ( EC ) 4) E x 5) C + + 6) C * * 7) C ( ( 8) C ) )

Forma Normal de Chomsky Prof. Yandre Maldonado - 33 Etapa 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) E EC + E 2) E EC * E 3) E C ( EC ) 4) E x 5) C + + 6) C * * 7) C ( ( 8) C ) ) 1) E ED 1 2) E ED 2 3) E C ( D 3 4) E x 5) C + + 6) C * * 7) C ( ( 8) C ) ) 9) D 1 C + E 10) D 2 C * E 11) D 3 EC )

Forma Normal de Chomsky Exemplo: Seja uma GLC G = ({L,S,E},{a, (,)}, P, L), onde P consta das regras: 1) L (S) Prof. Yandre Maldonado - 34 2) S SE λ 3) E a L

Forma Normal de Chomsky Exemplo: Prof. Yandre Maldonado - 35 1) L (S) 2) S SE λ 3) E 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 SE E 3) E a L

Forma Normal de Chomsky Prof. Yandre Maldonado - 36 Exemplo: 1) L (S) ( ) 2) S SE E 3) E a L Obtem-se as seguintes regras após a eliminação de regras unitárias: 1) L (S) ( ) 2) S SE a (S) ( ) 3) E a (S) ( ) Observando-se os fechos Fecho(L)={} Fecho(S)={E,L} Fecho(E)={L}

Forma Normal de Chomsky Exemplo: 1) L (S) ( ) 2) S SE a (S) ( ) 3) E 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 SE a C ( SC ) C ( C ) 3) E a C ( SC ) C ( C ) 4) C ( ( 5) C ) )

Forma Normal de Chomsky Prof. Yandre Maldonado - 38 Exemplo: 1) L C ( SC ) C ( C ) 2) S SE a C ( SC ) C ( C ) 3) E a C ( SC ) C ( C ) 4) C ( ( 5) C ) ) 1) L C ( D 1 C ( C ) 2) S SE a C ( D 1 C ( C ) 3) E 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 Exercí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 }

Forma Normal de Greibach Uma GLC G = (V, T, P, S) é dita estar na Forma Normal de Greibach (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

Forma Normal de Greibach 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: Etapa 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; Exemplo: A 1, A 2, A n V; onde n é um cardinal de Diferentes critérios de renomeação podem resultar em diferentes gramáticas na FNG;

Forma Normal de Greibach 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

Forma Normal de Greibach Exemplo: 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

Forma Normal de Greibach Prof. Yandre Maldonado - 44 Etapa 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;

Forma Normal de Greibach Exemplo: 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

Forma Normal de Greibach Prof. Yandre Maldonado - 46 Etapa 3: exclusão das recursões da forma A r A r α; Podem existir originalmente na gramática ou serem geradas pela etapa anterior; Eliminação da recursão à esquerda: introduzindo variáveis auxiliares e incluindo recursão à direita (B r αb r );

Forma Normal de Greibach Exemplo: 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 Introduzindo uma variável B 2 e incluindo recursão a direita 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

Forma Normal de Greibach Prof. Yandre Maldonado - 48 Etapa 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α;

Forma Normal de Greibach Prof. Yandre Maldonado - 49 Exemplo: 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) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14) 15) 16) 17) A 1 ba 2 A 1 aa 1 A 2 A 1 bb 2 A 2 A 1 aa 1 B 2 A 2 A 1 a A 2 b A 2 aa 1 A 2 bb 2 A 2 aa 1 B 2 B 2 ba 1 B 2 aa 1 A 1 B 2 bb 2 A 1 B 2 aa 1 B 2 A 1 B 2 ba 1 B 2 B 2 aa 1 A 1 B 2 B 2 bb 2 A 1 B 2 B 2 aa 1 B 2 A 1 B 2

Forma Normal de Greibach 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 Elimina recursão a esquerda

Forma Normal de Greibach 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.

Forma Normal de Greibach Exercí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 (Etapa 1) A produções já estão na forma A r A s α onde r s (Etapa 2)

Forma Normal de Greibach Exercí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 Eliminando recursão a esquerda: A r A r α (Etapa 3)

Forma Normal de Greibach Exercí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 (Etapa 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

Bibliografia Prof. Yandre Maldonado - 55 MENEZES, Paulo Blauth. Linguagens Formais e Autômatos. Porto Alegre: Editora Sagra-Luzzatto, 1998; DELAMARO, Márcio Eduardo. Linguagens Formais e Autômatos. UEM, 1998; VIEIRA, Newton José. Introdução aos Fundamentos da Computação. São Paulo: Editora Thomson Learning, 2006.