Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente a Análise Preditiva Tabular, com recuperação de erros em modo pânico, da entrada z z y x / * - + sobre a gramática a seguir.

G = ({A, B, C}, {+, -, *, /, x, y, z}, P, A)
P = {AAAB | C
B → + | - | * | /
C → x | y | z}

 

Eliminação de Recursividade à Esquerda:

G = ({A, B, C, D}, {+, -, *, /, x, y, z}, P, A)
P = {ACD
DABD | ε
B → + | - | * | /
C → x | y | z}

Fatoração à Esquerda:

G = ({A, B, C, D}, {+, -, *, /, x, y, z}, P, A)
P = {ACD
DABD | ε
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:

Tabela de análise preditiva da gramática G
 +-*/xyz$
AsincsincsincsincACDACDACDsinc
DD → εD → εD → εD → εDABDDABDDABDD → ε
BB → +B → -B → *B → /sincsincsincsinc
CsincsincsincsincC → xC → yC → zsinc

Analisador Preditivo Tabular:

Movimentos do analisador preditivo tabular para z z y x / * - +
PilhaEntradaDerivação
$ Az z y x / * - + $ACD
$ D Cz z y x / * - + $C → z
$ D zz z y x / * - + $ 
$ Dz y x / * - + $DABD
$ D B Az y x / * - + $ACD
$ D B D Cz y x / * - + $C → z
$ D B D zz y x / * - + $ 
$ D B Dy x / * - + $DABD
$ D B D B Ay x / * - + $ACD
$ D B D B D Cy x / * - + $C → y
$ D B D B D yy x / * - + $ 
$ D B D B Dx / * - + $DABD
$ D B D B D B Ax / * - + $ACD
$ D B D B D B D Cx / * - + $C → x
$ D B D B D B D xx / * - + $ 
$ D B D B D B D/ * - + $D → ε
$ D B D B D B/ * - + $B → /
$ D B D B D // * - + $ 
$ D B D B D* - + $D → ε
$ D B D B* - + $B → *
$ D B D ** - + $ 
$ D B D- + $D → ε
$ D B- + $B → -
$ D -- + $ 
$ D+ $D → ε
$+ $erro
$$aceita