55
Prof. Yandre Maldonado - 1 Gramática Livre de Contexto Prof. Yandre Maldonado e Gomes da Costa [email protected] •Árvore de derivação •Ambigüidade •Simplificação de Gramática •Forma Normal de Chomsky (FNC) •Forma Normal de Greibach (FNG)

Gramática Livre de ContextoProf. Yandre Maldonado - 1 Gramática Livre de Contexto Prof. Yandre Maldonado e Gomes da Costa [email protected] •Árvore de derivação •Ambigüidade

  • Upload
    others

  • View
    34

  • Download
    1

Embed Size (px)

Citation preview

Prof. Y

andre Maldonado -

1

Gramática Livre de Contexto

Prof. Yandre Maldonado e Gomes da [email protected]

•Á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.