Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente a Análise Preditiva Tabular da entrada -1.2e3 sobre a gramática a seguir.

G = ({A, B, C, D, E, F}, {+, -, ., e, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, P, A)
P = {AF B
BD . D C | D . D | D . C | D . | . D C | . D | D C
C → e F D
DD E | E
E → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
F → + | - | ε}

Eliminação de Recursividade à Esquerda:

G = ({A, B, C, D, E, F, G}, {+, -, ., e, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, P, A)
P = {AF B
BD . D C | D . D | D . C | D . | . D C | . D | D C
C → e F D
DE G
E → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
F → + | - | ε
GE G | ε}

Fatoração à Esquerda:

G = ({A, B, C, D, E, F, G, H, I, J, K}, {+, -, ., e, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, P, A)
P = {AF B
BD H | . D I
C → e F D
DE G
E → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
F → + | - | ε
GE G | ε
H → . J | C
IC | ε
JD K | C | ε
KC | ε}

Conjuntos FIRST(α) e FOLLOW(A):

FIRST(A) = {+, -, ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FIRST(B) = {., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FIRST(C) = {e}
FIRST(D) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FIRST(E) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FIRST(F) = {+, -, ε}
FIRST(G) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ε}
FIRST(H) = {., e}
FIRST(I) = {e, ε}
FIRST(J) = {e, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ε}
FIRST(K) = {e, ε}
FOLLOW(A) = {$}
FOLLOW(B) = {$}
FOLLOW(C) = {$}
FOLLOW(D) = {., e, $}
FOLLOW(E) = {., e, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $}
FOLLOW(F) = {., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FOLLOW(G) = {., e, $}
FOLLOW(H) = {$}
FOLLOW(I) = {$}
FOLLOW(J) = {$}
FOLLOW(K) = {$}

Tabela de Análise Preditiva:

Tabela de análise preditiva da gramática G
 +-.e0 .. 9$
AAF BAF BAF B AF B 
B  B → . D I BD H 
C   C → e F D  
D    DE G 
E    E → 0 .. 9 
FF → +F → -F → ε F → ε 
G  G → εG → εGE GG → ε
H  H → . JHC  
I   IC I → ε
J   JCJD KJ → ε
K   KC K → ε

Analisador Preditivo Tabular:

Movimentos do analisador preditivo tabular para -1.2e3
PilhaEntradaDerivação
$ A-1.2e3 $AF B
$ B F-1.2e3 $F → -
$ B --1.2e3 $ 
$ B1.2e3 $BD H
$ H D1.2e3 $DE G
$ H G E1.2e3 $E → 1
$ H G 11.2e3 $ 
$ H G.2e3 $G → ε
$ H.2e3 $H → . J
$ J ..2e3 $ 
$ J2e3 $JD K
$ K D2e3 $DE G
$ K G E2e3 $E → 2
$ K G 22e3 $ 
$ K Ge3 $G → ε
$ Ke3 $KC
$ Ce3 $C → e F D
$ D F ee3 $ 
$ D F3 $F → ε
$ D3 $DE G
$ G E3 $E → 3
$ G 33 $ 
$ G$G → ε
$$aceita