Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente a Análise Preditiva Tabular da entrada abcdac sobre a gramática a seguir.

G = ({S, A, B, C}, {a, b, c, d}, P, S)
P = {SABC
A → aA | ε
B → bB | CdA
C → cC | ε}

 

Eliminação de Recursividade à Esquerda:

G = ({S, A, B, C}, {a, b, c, d}, P, S)
P = {SABC
A → aA | ε
B → bB | CdA
C → cC | ε}

Fatoração à Esquerda:

G = ({S, A, B, C}, {a, b, c, d}, P, S)
P = {SABC
A → aA | ε
B → bB | CdA
C → cC | ε}

Conjuntos FIRST(α) e FOLLOW(A):

FIRST(S) = {a, b, c, d}
FIRST(A) = {a, ε}
FIRST(B) = {b, c, d}
FIRST(C) = {c, ε}
FOLLOW(S) = {$}
FOLLOW(A) = {b, c, d, $}
FOLLOW(B) = {c, $}
FOLLOW(C) = {d, $}

Tabela de Análise Preditiva:

Tabela de análise preditiva da gramática G
 abcd$
SSABCSABCSABCSABC 
AA → aAA → εA → εA → εA → ε
B B → bBBCdABCdA 
C  C → cCC → εC → ε

Analisador Preditivo Tabular:

Movimentos do analisador preditivo tabular para abcdac
PilhaEntradaDerivação
$ Sa b c d a c $SABC
$ C B Aa b c d a c $A → aA
$ C B A aa b c d a c $ 
$ C B Ab c d a c $A → ε
$ C Bb c d a c $B → bB
$ C B bb c d a c $ 
$ C Bc d a c $BCdA
$ C A d Cc d a c $C → cC
$ C A d C cc d a c $ 
$ C A d Cd a c $C → ε
$ C A dd a c $ 
$ C Aa c $A → aA
$ C A aa c $ 
$ C Ac $A → ε
$ Cc $C → cC
$ C cc $ 
$ C$C → ε
$$aceita