Post on 20-Feb-2020
Prof. Y
andre Maldonado -
1
Gramática Livre de Contexto
Prof. Yandre Maldonado e Gomes da Costayandre@din.uem.br
•Árvore de derivação•Ambigüidade•Simplificação de Gramática•Forma Normal de Chomsky (FNC)•Forma Normal de Greibach (FNG)
Prof. Y
andre Maldonado -
2
Árvore de Derivação
� 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 λ);
Prof. Y
andre Maldonado -
3
Árvore de Derivação
� Exemplo: árvore de derivação para a sentença “x+x*x” a partir da seguinte GLC;
1) E → E+E2) E → E*E3) E → (E)4) E → x
E
E E
E E
+
*x
x x
E ⇒ E+E ⇒ x+E ⇒ x+E*E ⇒ x+x*E ⇒ x+x*x1 4 2 4 4
Prof. Y
andre Maldonado -
4
Ambigüidade
� 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;
Prof. Y
andre Maldonado -
5
Ambigüidade
� Exemplo: dois caminhos para “x+x*x”
1) E → E+E2) E → E*E3) E → (E)4) E → x
E
E E
E E
+
*x
x x
E ⇒ E+E ⇒ x+E ⇒ x+E*E ⇒ x+x*E ⇒ x+x*x1 4 2 4 4
E
E E
E E
*
+ x
x x
E ⇒ E*E ⇒ E+E*E ⇒ x+E*E ⇒ x+x*E ⇒ x+x*x2 1 4 4 4
Prof. Y
andre Maldonado -
6
Simplificação de GLC
� É 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;
Prof. Y
andre Maldonado -
7
Simplificação de GLC
� Exclusão de símbolos inúteis:� 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;
Prof. Y
andre Maldonado -
8
Simplificação de GLC
� Exclusão de símbolos inúteis:� É 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.
Prof. Y
andre Maldonado -
9
Simplificação de GLC
1) S → AB | a2) B → b3) C → c
EXEMPLO: Seja a Gramática({S, A, B, C}, {a, b, c}, P,S} onde P contém as regras:
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}
Prof. Y
andre Maldonado -
10
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 G1(V1,T,P1,S);� Construção de V1:
� Conjunto P1: P menos as produções cujos não terminais não pertencem a V1;
V1 = ∅repita V1 = V1 ∪ {A | A → α e α ϵ (T ∪ V1 )*}até que o cardinal de V1 não aumente;
Prof. Y
andre Maldonado -
11
Simplificação de GLC
� Exemplo:1) S → aAa2) S → bBb3) A → a4) A → S5) C → c6) B → bB
V1 = ∅repita
V1 = V1 ∪ {A | A → α e α ϵ (T ∪ V1 )*}até que o cardinal de V1 não aumente;
{A, C, S}3
{A, C, S}2
{A, C}1
∅início
V1iteração
1) S → aAa2) A → a3) A → S4) C → c
Qqr não terminal
gera terminal
Prof. Y
andre Maldonado -
12
Simplificação de GLC
� Etapa 2: garante que qualquer símbolo éatingível a partir do símbolo inicial;
� Algoritmo: parte de G1(V1,T1,P1,S) e dáorigem a G2(V2,T2,P2,S);
� Conjunto P2: P1 menos as produções cujos símbolos não pertencem a V2 ou T2;
T2 = ∅; V2 = {S};
repita V2 = V2 ∪ {A | X → αAβ ϵ P1 , X ϵ V2};
T2 = T2 ∪ {a | X → αaβ ϵ P1 , X ϵ V2};até que os cardinais de V2 e T2 não aumentem;
Prof. Y
andre Maldonado -
13
Simplificação de GLC
� Exemplo:
1) S → aAa2) A → a3) A → S4) C → c
T2 = ∅; V2 = {S};
repita V2 = V2 ∪ {A | X → αAβ ϵ P1 , X ϵ V2};
T2 = T2 ∪ {a | X → αaβ ϵ P1 , X ϵ V2};até que os cardinais de V2 e T2 não aumentem;
{a}{S, A}2
{a}{S, A}1
∅{S}início
terminaisvariáveisiteração
1) S → aAa2) A → a3) A → S
Prof. Y
andre Maldonado -
14
Simplificação de GLC
� Exclusão de produções vazias:� 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;
Prof. Y
andre Maldonado -
15
Simplificação de GLC
� 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 → λ };
repitaVλ = Vλ ∪ { X | X→X1 …Xn ϵ P | X1, …, Xn ϵ Vλ }
até que o cardinal de Vλ não aumente;
Prof. Y
andre Maldonado -
16
Simplificação de GLC
� Exemplo:
1) S → aXa2) S → bXb3) S → λ4) X → a5) X → b6) X → Y7) Y → λ
{S, Y, X}2
{S, Y, X}1
{S, Y}início
Vλiteração
Vλ = { A | A → λ };
repitaVλ = Vλ ∪ { X | X→X1 …Xn ϵ P | X1, …, Xn ϵ Vλ }
até que o cardinal de Vλ não aumente;
Prof. Y
andre Maldonado -
17
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 G1(V,T,P1,S);
P1 = {A → α | α ≠ λ};
repitapara toda
A → α ϵ P1 e X ϵ Vλ | α = α1Xα2 e α1α2 ≠ λfaca
P1 = P1 ∪ { A → α1 α2 }
até que o cardinal de P1 não aumente;
Prof. Y
andre Maldonado -
18
Simplificação de GLC� Exemplo:1) S → aXa2) S → bXb3) S → λ4) X → a5) X → b6) X → Y7) Y → λ
{S → aXa | bXb | aa | bb, X → a | b | Y}2
{S → aXa | bXb | aa | bb, X → a | b | Y}1
{S → aXa | bXb, X → a | b | Y}inicial
produçõesiteração
Resultado da etapa 1: Vλ = {S, Y, X}
P1 = {A → α | α ≠ λ};
repitapara toda
A → α ϵ P1 e X ϵ Vλ | α = α1Xα2 e α1α2 ≠ λfaca
P1 = P1 ∪ { A → α1 α2 }
até que o cardinal de P1 não aumente;
1) S → aXa2) S → bXb3) S → aa4) S → bb5) X → a6) X → b7) X → Y
Prof. Y
andre Maldonado -
19
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;
Etapa 1:1) S → aXa2) S → bXb3) S → λ4) X → a5) X → b6) X → Y7) Y → λ
Resultado: V λλλλ = {S, Y, X}
Etapa 2:1) S → aXa2) S → bXb3) S → aa4) S → bb5) X → a6) X → b7) X → Y
Etapa 3:1) S → aXa2) S → bXb3) S → aa4) S → bb5) S → λ6) X → a7) X → b8) X → Y
Note que Y se tornou inútil
Prof. Y
andre Maldonado -
20
Simplificação de GLC
� Exemplo:1) P → APB | C2) A → AaaA | λ3) B → BBb | C4) C → cC | λ
1) P → APB | AB | AP | PB | A | B | C | λ2) A → AaaA | aaA | Aaa | aa3) B → BBb | Bb | b | C4) C → cC | c
{A, C, P, B}1
{A, C}início
Vλiteração
Prof. Y
andre Maldonado -
21
Simplificação de GLC
� Exemplo:1) P → BPA | A2) A → aA | λ3) B → Bba | λ
1) P → BPA | PA | BP | BA | B | A | λ2) A → aA | a 3) B → Bba | ba
{A, B, P}1
{A, B}início
Vλiteração
Prof. Y
andre Maldonado -
22
Simplificação de GLC
� Exclusão de produções da forma A → B:� 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;
Prof. Y
andre Maldonado -
23
Simplificação de GLC
� Etapa 1: construção do fecho de cada variável;
� Algoritmo:
para toda A ϵ V
faça FECHO-A = { B | A≠B e A ⇒*B} usandoexclusivamente produções da forma X → Y;
Prof. Y
andre Maldonado -
24
Simplificação de GLC
� Exemplo:
1) S → aXa2) S → bXb3) X → a4) X → b5) X → S6) X → λ {S}Fecho-X
∅Fecho-S
para toda A ϵ V
faça FECHO-A = { B | A≠B e A ⇒*B} usandoexclusivamente produções da forma X → Y;
Prof. Y
andre Maldonado -
25
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 G1(V,T,P1,S);
P1 = { A → α | α ∉ V };
para toda A ϵ V e B ϵ FECHO-A
faça se B → α ϵ P e α ∉ Ventão P1 = P1 ∪ {A → α};
Prof. Y
andre Maldonado -
26
Simplificação de GLC
� Exemplo:1) S → aXa2) S → bXb3) X → a4) X → b5) X → S6) X → λ
{S → aXa | bXb, X → a | b | λ | aXa | bXb}X
{S → aXa | bXb, X → a | b | λ}S
{S → aXa | bXb, X → a | b | λ}Inicial
produçõesiteração
Etapa 1: Fecho-S=∅ e Fecho-X={S}
P1 = { A → α | α ∉ V };
para toda A ϵ V e B ϵ FECHO-A
faça se B → α ϵ P e α ∉ Ventão P1 = P1 ∪ {A → α};
1) S → aXa2) S → bXb3) X → a4) X → b6) X → λ7) X → aXa8) X → bXb
Prof. Y
andre Maldonado -
27
Simplificação de GLC
� 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;
Prof. Y
andre Maldonado -
28
Formas Normais
� 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;
Prof. Y
andre Maldonado -
29
Formas Normais
� 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*
Prof. Y
andre Maldonado -
30
Forma Normal de Chomsky
� 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;
Chomsky, 1928
Prof. Y
andre Maldonado -
31
Forma Normal de Chomsky
� 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+E2) E → E*E3) E → (E)4) E → x
A gramática já está simplificada.
Prof. Y
andre Maldonado -
32
Forma Normal de Chomsky
� 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 G1(V1,T,P1,S) e dáorigem a G2(V2,T,P2,S);
V2 = V1;
P2 = P1;
Para toda A → X1X2..Xn ϵ P2 tal que n >= 2
faça se para r ϵ {1, .., n}, Xr é terminal
então (suponha Xr = a )
V2 = V2 ∪ {Ca};
susbstitui a por Ca em
A → X1X2 … Xn ϵ P2;
P2 = P2 ∪ {Ca → a};
1) E → E+E2) E → E*E3) E → (E)4) E → x
1) E → EC+E2) E → EC*E3) E → C(EC)
4) E → x5) C+ → +6) C* → *7) C( → (8) C) → )
Prof. Y
andre Maldonado -
33
Forma Normal de Chomsky
� 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 G2(V2,T,P2,S) e dáorigem a G3(V3,T,P3,S);
1) E → EC+E2) E → EC*E3) E → C(EC)4) E → x5) C+ → +6) C* → *7) C( → (8) C) → )
V3 = V2;
P3 = P2;
Para toda A → B1B2..Bn ϵ P3 tal que n >= 3
faça P3 = P3 – {A → B1B2 .. Bn};
V3 = V3 ∪ {D1, …, Dn-2};
P3 = P3 ∪ {A → B1D1, D1 → B2D2,…,
Dn-3 → Bn-2Dn-2, Dn-2 →Bn-1Dn-1};
1) E → ED12) E → ED23) E → C(D34) E → x5) C+ → +6) C* → *7) C( → (8) C) → )9) D1 → C+E10) D2 → C*E11) D3 → EC)
Prof. Y
andre Maldonado -
34
Forma Normal de Chomsky
� Exemplo:� Seja uma GLC G = ({L,S,E},{a, (,)}, P, L),
onde P consta das regras:1) L → (S)2) S → SE | λ3) E → a | L
Prof. Y
andre Maldonado -
35
Forma Normal de Chomsky
� Exemplo:1) L → (S)2) S → SE | λ3) E → a | LObservando-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 | E3) E → a | L
Prof. Y
andre Maldonado -
36
Forma Normal de Chomsky
� Exemplo:1) L → (S) | ( )2) S → SE | E3) E → a | LObtem-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}
Prof. Y
andre Maldonado -
37
Forma Normal de Chomsky
�Exemplo:1) L → (S) | ( )2) S → SE | a | (S) | ( )3) E → a | (S) | ( )
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) → )
Substituindo os terminais por variáveis nas regras cujo lado direito é maior ou igual a 2:
Prof. Y
andre Maldonado -
38
“Quebrando” as regras com lado direito maior que 2, obtem-se:
Forma Normal de Chomsky
�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(D1 | C(C)2) S → SE | a | C(D1 | C(C)3) E → a | C(D1 | C(C)4) C( → (5) C) → )6) D1 → SC)
Prof. Y
andre Maldonado -
39
Forma Normal de Chomsky
� Exercício:� Coloque a seguinte gramática na FNC:
G=(V, T, P, S), onde:V={S, A, B, C}T={a, b, c}P={ S → ASCA
S → ABCAA → aB → bBbB → λC → c }
Prof. Y
andre Maldonado -
40
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)*
� Greibach???
Sheila Greibach, 1939
A maioria dos autores definem α ∈ V*, o fato é que a transformação daquela forma para esta, mais restritiva, étrivial.
Prof. Y
andre Maldonado -
41
Forma Normal de Greibach
� 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: A1, A2, … An onde n é um cardinal de
V;• Diferentes critérios de renomeação podem
resultar em diferentes gramáticas na FNG;
Prof. Y
andre Maldonado -
42
Forma Normal de Greibach
� Nesta etapa, a partir de uma gramática G1=(V1, T1, P1, S), obtêm-se a gramática G2conforme descrito a seguir:
Gramática resultante: G2 = (V2, T1, P2, S)
Suponha que o cardinal de V1 é n
Construção de V2 e P2
V2 = { A1, A2, …, An } é V1 renomeando os elementos em uma
ordem qualquer
Inicialmente, P2 é P1 renomeando as variáveis na produção
Prof. Y
andre Maldonado -
43
Forma Normal de Greibach
� Exemplo:
1) S → AA2) S → a3) A → b4) A → SS
Renomeando as variáveis S e A para A 1 e A2respectivamente
1) A1 → A2A22) A1 → a3) A2 → b4) A2 → A1 A1
* Note que a gramática já está simplificada.
Prof. Y
andre Maldonado -
44
Forma Normal de Greibach
� Etapa 2: transformação das produções para a forma Ar → Asα 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;
• Ar → Asα onde r > s são modificadas;• Substitui a variável As pelas suas respectivas
produções;• O conjunto de variáveis é finito: existe um limite
para as produções crescentes;
Prof. Y
andre Maldonado -
45
Forma Normal de Greibach
� Exemplo:
1) A1 → A2A22) A1 → a3) A2 → b4) A2 → A1 A1
Substituindo A 1no lado direito da regra
1) A1 → A2A22) A1 → a3) A2 → b4) A2 → aA15) A2 → A2A2A1
Prof. Y
andre Maldonado -
46
Forma Normal de Greibach
� Etapa 3: exclusão das recursões da forma Ar→Arα;
• 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 (Br→αBr);
Prof. Y
andre Maldonado -
47
Forma Normal de Greibach
� Exemplo:
1) A1 → A2A22) A1 → a3) A2 → b4) A2 → aA15) A2 → A2A2A1
Introduzindo uma variável B 2 e incluindo recursão a direita
1) A1 → A2A22) A1 → a3) A2 → b4) A2 → aA15) A2 → bB26) A2 → aA1B28) B2 → A2A19) B2 → A2A1B2
Prof. Y
andre Maldonado -
48
Forma Normal de Greibach
� Etapa 4: garante que o lado direito das produções iniciem com um terminal;
• Todas as produções da forma Ar→Asα onde r<s;• Consequentemente, as produções da maior
variável An só podem iniciar por terminais no lado direito;
• Assim, se em An-1→Anα for substituído An pelas suas correspondentes produções (ex: An→aβ), o lado direito das produções de An-1 também iniciarápor terminal (ex: An-1→aβα);
• A repetição do algoritmo para An-2, …, A1 resultaráem produções exclusivamente da forma Ar→aα;
Prof. Y
andre Maldonado -
49
Forma Normal de Greibach
� Exemplo:
1) A1 → A2A22) A1 → a3) A2 → b4) A2 → aA15) A2 → bB26) A2 → aA1B28) B2 → A2A19) B2 → A2A1B2
A1 → bA2
A1 → aA1A2
A1 → bB2A2
A1 → aA1B2A2
A1 → aA2 → bA2 → aA1
A2 → bB2
A2 → aA1B2
B2 → bA1
B2 → aA1A1
B2 → bB2A1
B2 → aA1B2A1
B2 → bA1B2
B2 → aA1A1B2
B2 → bB2A1B2
B2 → aA1B2A1B2
1)2)3)4)5)6)7)8)9)
10)11)12)13)14)15)16)17)
Substituindo as variáveis no início dos lados direitos
Prof. Y
andre Maldonado -
50
Forma Normal de Greibach
� Algoritmo das etapas 2 e 3:Gramática resultante G3 = (V3, T1, P3, S)Suponha que o cardinal de V2 é nP3 = P2
para r variando de 1 até nfaça
para s variando de 1 até r-1faça para toda Ar → Asα ∈ P3
faça excluir Ar → Asα de P3;para toda As → β ∈ P3
faça P3 = P3 ∪ { Ar → βα}
para toda Ar → Arα ∈ P3
faça excluir Ar → Arα de P3;V3 = V3 ∪ {Br}P3 = P3 ∪ {Br → α} ∪ {Br → αBr}
para toda Ar → Φ ∈ P3 tq Φ não inicia por Ar e alguma Ar → Arα foi excluída
faça P3 = P3 ∪ { Ar → ΦBr};
Garante variável da esquerda menor ou igual a da direita
Elimina recursão a esquerda
Prof. Y
andre Maldonado -
51
Forma Normal de Greibach
� Algoritmo da etapa 4:Gramática resultante G4 = (V3, T1, P4, S)Construção de P4
P4 = P3;para r variando de n-1 até 1 e toda Ar → Asα ∈ P4faça excluir Ar → Asα de P4 ;
para toda As → β de P4faça P4 = P4 ∪ {Ar → βα};
para toda Br → Asβrfaça excluir Br → Asβr de P4
para toda As → aαfaça P4 = P4 ∪ { Br → aαβr};
Também é necessário garantirque as produções relativas àsvariáveis auxiliares Br iniciampor um terminal do lado direito.
Prof. Y
andre Maldonado -
52
Forma Normal de Greibach
� Exercício: transforme a seguinte GLC para FNG;
S → AB | SCB | SB | bB | bA → aA | a | cC | cB → bB | bC → cC | c
A1 → A2 A3 | A1A4A3 | A1A3 | bA3 | bA2 → aA2 | a | cA4 | cA3 → bA3 | bA4 → cA4 | c
Renomeando as variáveis (Etapa 1)
A produções já estão na forma Ar → Asαonde r ≤ s (Etapa 2)
Prof. Y
andre Maldonado -
53
Forma Normal de Greibach
� Exercício (continuação):
A1 → A2A3 | bA3 | b | A2A3B1 | bA3B1 | bB1A2 → aA2 | a | cA4 | cA3 → bA3 | bA4 → cA4 | cB1 → A4A3 | A3 | A4A3B1 | A3B1
A1 → A2 A3 | A1A4A3 | A1A3 | bA3 | bA2 → aA2 | a | cA4 | cA3 → bA3 | bA4 → cA4 | c Eliminando recursão a
esquerda: Ar → Arα(Etapa 3)
Prof. Y
andre Maldonado -
54
Forma Normal de Greibach
� Exercício (continuação):
A1 → aA2A3 | aA3 | cA4A3 | cA3 | bA3 | b | aA2A3B1 | aA3B1 | cA4A3B1 | cA3B1 | bA3B1 | bB1
A2 → aA2 | a | cA4 | cA3 → bA3 | bA4 → cA4 | cB1 → cA4 A3 | cA3 | bA3 | b | cA4 A3B1 | cA3B1 | bA3B1 | bB1
A1 → A2A3 | bA3 | b | A2A3B1 | bA3B1 | bB1A2 → aA2 | a | cA4 | cA3 → bA3 | bA4 → cA4 | cB1 → A4A3 | A3 | A4A3B1 | A3B1
Garantindo que todo lado direito inicie com terminal (Etapa 4)
Prof. Y
andre Maldonado -
55
Bibliografia
� 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.