1. Simplificação da gramática livre do contexto
1.1. Exclusão de Produções Vazias
1.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 |
{C} |
2 |
{C, S} |
3 |
{C, S, F} |
4 |
{C, S, F} |
1.1.2. Exclusão das produções vazias da gramática
G = ({S, A, B, C, D, E, F}, {w, x, y, z}, P, S)
P = {< S > -> < A > x < C > y
| < A > x y
| < C >
| z < B > < A > w
< A > -> < E > < S > w
| < E > w
| z < A > y < C >
| z < A > y
| x
< B > -> < C > w < E >
| w < E >
| < E > x y
| < B > < F > < A >
| < B > < A >
< C > -> y < A > x y
| < B > < D > w
< D > -> < S > y z < A >
| y z < A >
| x
| w < E > y
< E > -> < F > x z < B >
| x z < B >
| < D > < S > < E >
| < D > < E >
< F > -> < D > y
| < C > < S >
| < C >
| < S >
| < S > < B > z
| < B > z }
1.1.3. Inclusão da palavra vazia, caso pertença a linguagem gerada pela gramática
G = ({S, A, B, C, D, E, F}, {w, x, y, z}, P, S)
P = {< S > -> < A > x < C > y
| < A > x y
| < C >
| z < B > < A > w
| ε
< A > -> < E > < S > w
| < E > w
| z < A > y < C >
| z < A > y
| x
< B > -> < C > w < E >
| w < E >
| < E > x y
| < B > < F > < A >
| < B > < A >
< C > -> y < A > x y
| < B > < D > w
< D > -> < S > y z < A >
| y z < A >
| x
| w < E > y
< E > -> < F > x z < B >
| x z < B >
| < D > < S > < E >
| < D > < E >
< F > -> < D > y
| < C > < S >
| < C >
| < S >
| < S > < B > z
| < B > z }
1.2. Exclusão de Produções da Forma < A > -> < B >
1.2.1. Construção dos fechos das variáveis
Fecho(S) = {C}
Fecho(A) = ∅
Fecho(B) = ∅
Fecho(C) = ∅
Fecho(D) = ∅
Fecho(E) = ∅
Fecho(F) = {S, C}
1.2.2. Exclusão das produções da forma < A > -> < B >
G = ({S, A, B, C, D, E, F}, {w, x, y, z}, P, S)
P = {< S > -> < A > x < C > y
| < A > x y
| y < A > x y
| < B > < D > w
| z < B > < A > w
| ε
< A > -> < E > < S > w
| < E > w
| z < A > y < C >
| z < A > y
| x
< B > -> < C > w < E >
| w < E >
| < E > x y
| < B > < F > < A >
| < B > < A >
< C > -> y < A > x y
| < B > < D > w
< D > -> < S > y z < A >
| y z < A >
| x
| w < E > y
< E > -> < F > x z < B >
| x z < B >
| < D > < S > < E >
| < D > < E >
< F > -> < D > y
| < C > < S >
| < A > x < C > y
| < A > x y
| y < A > x y
| < B > < D > w
| z < B > < A > w
| < S > < B > z
| < B > z }
1.3. Exclusão de Símbolos Inúteis
1.3.1. Identificação das variáveis que constituem terminais
Conjunto de variáveis que constituem terminais
Iteração |
Variáveis |
0 |
∅ |
1 |
{A, D} |
2 |
{A, D, S, C, F} |
3 |
{A, D, S, C, F} |
G = ({S, A, C, D, F}, {w, x, y, z}, P, S)
P = {< S > -> < A > x < C > y
| < A > x y
| y < A > x y
| ε
< A > -> z < A > y < C >
| z < A > y
| x
< C > -> y < A > x y
< D > -> < S > y z < A >
| y z < A >
| x
< F > -> < D > y
| < C > < S >
| < A > x < C > y
| < A > x y
| y < A > x y }
1.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 |
{S} |
∅ |
1 |
{S, A, C} |
{x, y} |
2 |
{S, A, C} |
{x, y, z} |
G = ({S, A, C}, {x, y, z}, P, S)
P = {< S > -> < A > x < C > y
| < A > x y
| y < A > x y
| ε
< A > -> z < A > y < C >
| z < A > y
| x
< C > -> y < A > x y }