Ybadoo - Soluções em Software Livre
Tutoriais
Linguagens Formais e Autômatos

Simplifique a gramática livre de contexto a seguir:

Notação Algébrica:

G = ({A, B, C, D, E, F}, {x, y, z}, P, A)
P = {AExy | zD
     BDF | xCy
     C → xEB | FCz
     D → yCA | AFA | ε
     EAzC | BEyz
     F → zAy | D | ACB}

Notação de Backus-Naur (BNF):

G = ({A, B, C, D, E, F}, {x, y, z}, P, A)
P = {<A> ::= <E>xy | z<D>
     <B> ::= <D><F> | x<C>y
     <C> ::= x<E><B> | <F><C>z
     <D> ::= y<C><A> | <A><F><A> | ε
     <E> ::= <A>z<C> | <B><E>yz
     <F> ::= z<A>y | <D> | <A><C><B>}

1. Exclusão de Produções Vazias

1.1. Identificação das variáveis que constituem produções vazias

Conjunto de variáveis que constituem produções vazias
Iteração Variáveis
0
1 {D}
2 {D, F}
3 {D, F, B}
4 {D, F, B}

1.2. Exclusão das produções vazias da gramática

G = ({A, B, C, D, E, F}, {x, y, z}, P, A)
P = {AExy | zD | z
     BDF | D | F | xCy
     C → xEB | xE | FCz | Cz
     D → yCA | AFA | AA
     EAzC | BEyz | Eyz
     F → zAy | D | ACB | AC}

1.3. Inclusão da palavra vazia, caso pertença a linguagem gerada pela gramática

G = ({A, B, C, D, E, F}, {x, y, z}, P, A)
P = {AExy | zD | z
     BDF | D | F | xCy
     C → xEB | xE | FCz | Cz
     D → yCA | AFA | AA
     EAzC | BEyz | Eyz
     F → zAy | D | ACB | AC}

 

2. Exclusão de Produções da Forma AB

2.1. Construção dos fechos das variáveis

Fecho(A) = ∅
Fecho(B) = {D, F}
Fecho(C) = ∅
Fecho(D) = ∅
Fecho(E) = ∅
Fecho(F) = {D}

2.2. Exclusão das produções da forma AB

G = ({A, B, C, D, E, F}, {x, y, z}, P, A)
P = {AExy | zD | z
     BDF | zAy | yCA | AFA | AA | ACB | AC | xCy
     C → xEB | xE | FCz | Cz
     D → yCA | AFA | AA
     EAzC | BEyz | Eyz
     F → zAy | yCA | AFA | AA | ACB | AC}

 

3. Exclusão de Símbolos Inúteis

3.1. Identificação das variáveis que constituem terminais

Conjunto de variáveis que constituem terminais
Iteração Variáveis
0
1 {A}
2 {A, B, D, F}
3 {A, B, D, F}
G = ({A, B, D, F}, {x, y, z}, P, A)
P = {A → zD | z
     BDF | zAy | AFA | AA
     DAFA | AA
     F → zAy | AFA | AA}

3.2. Identificação dos símbolos alcançáveis a partir do símbolo inicial

Conjunto de símbolos alcançáveis a partir do símbolo inicial
Iteração Variáveis Terminais
0 {A}
1 {A, D} {z}
2 {A, D, F} {z}
3 {A, D, F} {z, y}
G = ({A, D, F}, {y, z}, P, A)
P = {A → zD | z
     DAFA | AA
     F → zAy | AFA | AA}