Gramática Livre de Contexto

Documentos relacionados
Linguagens Formais e Autômatos P. Blauth Menezes

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

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

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

Gramática. Gramática. Gramática

Linguagens Livres de Contexto

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

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

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

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

Análise Sintática. Fabiano Baldo

Linguagens Formais e Autômatos

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

Linguagens Formais e Autômatos P. Blauth Menezes

Gramáticas Livres de Contexto Parte 1

Apostila 03 Linguagens Livres de Contexto

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

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

Gramáticas e Linguagens independentes de contexto

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

Apostila 03 - Linguagens Livres de Contexto Exercícios

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

Linguagens Regulares. Prof. Daniel Oliveira

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

Hierarquia de Chomsky Exemplos de gramáticas

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

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Como construir um compilador utilizando ferramentas Java

Compiladores - Análise Ascendente

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Formais e Autômatos

Construção de Compiladores

LINGUAGENS FORMAIS E AUTÔMATOS

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

Analisadores Sintáticos LR

Alfabeto, Cadeias, Operações e Linguagens

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

LINGUAGENS FORMAIS: Teoria, Modelagem e Implementação. Material adicional, versão do dia 22 de novembro de 2017 às 17:24

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

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

Expressões Regulares e Gramáticas Regulares

Como construir um compilador utilizando ferramentas Java

Modelos de Computação Folha de trabalho n. 8

Capítulo 3: Gramáticas

Fundamentos da Teoria da Computação

Análise Sintática Introdução

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Linguagens Formais e Autômatos (LFA)

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Compiladores - Gramáticas

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Dedução Natural e Sistema Axiomático Pa(Capítulo 6)

Linguagens livres de contexto e autômatos de pilha

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

CAPÍTULO 6 SIMPLIFICAÇÃO DE GRAMÁTICAS LIVRES DE CONTEXTO E FORMAS NORMAIS

Análise Sintática II: Analisadores Descendentes Preditivos

Parsing Preditivo. Antes de ser abordado o Parsing Preditivo, será apresentado o Analisador Sintático Descendente Recursivo.

Teoria da Computação

Compiladores. A seção das regras. Especificação (F)lex. Plano da aula. Escolha das regras. Compilação típica com FLEX

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos

Expressões regulares

I.2 Introdução a Teoria da Computação

Linguagens Formais e Autômatos. Conceitos Básicos Prof. Anderson Belgamo

Autômato com Pilha. Autômato com Pilha. Autômato com Pilha

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

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

Construção de Compiladores Aula 3 - Analisador Sintático

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

LFA Aula 08. Minimização de AFD Autômatos Finitos com saídas 25/01/2017. Linguagens Formais e Autômatos. Celso Olivete Júnior.

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

Lista de Exercícios Definição de gramáticas e Autômatos Finitos Determinísticos

Definições Exemplos de gramáticas

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

a n Sistemas de Estados Finitos AF Determinísticos

Linguagens Formais e Autómatos

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

INE5317 Linguagens Formais e Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

Capítulo 1: Alfabetos, cadeias, linguagens

Introdução à Programação

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens e Programação Automátos Finitos. Paulo Proença

Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012

Linguagens Livres de Contexto e Autômatos a Pilha (Push- Down) Um Modelo de Computação de Força Intermediária. Gramática Livre de Contexto

Compiladores - Gramáticas

Aula 7: Autômatos com Pilha

Prova 1 de INF1626 Linguagens Formais e Autômatos

Transcrição:

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