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