Apresente a Análise Preditiva Tabular da entrada + / x y * - + x y z x sobre a gramática a seguir.
G = ({A, B, C}, {+, -, *, /, x, y, z}, P, A)
P = {A → BAA | C
B → + | - | * | /
C → x | y | z}
Eliminação de Recursividade à Esquerda:
G = ({A, B, C}, {+, -, *, /, x, y, z}, P, A)
P = {A → BAA | C
B → + | - | * | /
C → x | y | z}
Fatoração à Esquerda:
G = ({A, B, C}, {+, -, *, /, x, y, z}, P, A)
P = {A → BAA | C
B → + | - | * | /
C → x | y | z}
Conjuntos FIRST(α) e FOLLOW(A):
FIRST(A) = {+, -, *, /, x, y, z}
FIRST(B) = {+, -, *, /}
FIRST(C) = {x, y, z}
FOLLOW(A) = {+, -, *, /, x, y, z, $}
FOLLOW(B) = {+, -, *, /, x, y, z}
FOLLOW(C) = {+, -, *, /, x, y, z, $}
Tabela de Análise Preditiva:
+ | - | * | / | x | y | z | $ | |
---|---|---|---|---|---|---|---|---|
A | A → BAA | A → BAA | A → BAA | A → BAA | A → C | A → C | A → C | |
B | B → + | B → - | B → * | B → / | ||||
C | C → x | C → y | C → z |
Analisador Preditivo Tabular:
Pilha | Entrada | Derivação |
---|---|---|
$ A | + / x y * - + x y z x $ | A → BAA |
$ A A B | + / x y * - + x y z x $ | B → + |
$ A A + | + / x y * - + x y z x $ | |
$ A A | / x y * - + x y z x $ | A → BAA |
$ A A A B | / x y * - + x y z x $ | B → / |
$ A A A / | / x y * - + x y z x $ | |
$ A A A | x y * - + x y z x $ | A → C |
$ A A C | x y * - + x y z x $ | C → x |
$ A A x | x y * - + x y z x $ | |
$ A A | y * - + x y z x $ | A → C |
$ A C | y * - + x y z x $ | C → y |
$ A y | y * - + x y z x $ | |
$ A | * - + x y z x $ | A → BAA |
$ A A B | * - + x y z x $ | B → * |
$ A A * | * - + x y z x $ | |
$ A A | - + x y z x $ | A → BAA |
$ A A A B | - + x y z x $ | B → - |
$ A A A - | - + x y z x $ | |
$ A A A | + x y z x $ | A → BAA |
$ A A A A B | + x y z x $ | B → + |
$ A A A A + | + x y z x $ | |
$ A A A A | x y z x $ | A → C |
$ A A A C | x y z x $ | C → x |
$ A A A x | x y z x $ | |
$ A A A | y z x $ | A → C |
$ A A C | y z x $ | C → y |
$ A A y | y z x $ | |
$ A A | z x $ | A → C |
$ A C | z x $ | C → z |
$ A z | z x $ | |
$ A | x $ | A → C |
$ C | x $ | C → x |
$ x | x $ | |
$ | $ | aceita |