Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente a Análise Preditiva Tabular da entrada nome;sexo\n"fulano";m sobre a gramática a seguir.

G = ({A, B, C, D, E, F, G, H}, {\n, ;, ", a, b, c, d, ..., w, x, y, z}, P, A)
P = {A → B
B → B \n C | C
C → D
D → D ; E | E
E → F | G
F → " G "
G → G H | H
H → a | b | c | d | ... | w | x | y | z}

Eliminação de Recursividade à Esquerda:

G = ({A, B, B1, C, D, D1, E, F, G, G1, H}, {\n, ;, ", a, b, c, d, ..., w, x, y, z}, P, A)
P = {A → B
B → C B1
B1 → \n C B1 | ε
C → D
D → E D1
D1 → ; E D1 | ε
E → F | G
F → " G "
G → H G1
G1 → H G1 | ε
H → a | b | c | d | ... | w | x | y | z}

Fatoração à Esquerda:

G = ({A, B, B1, C, D, D1, E, F, G, G1, H}, {\n, ;, ", a, b, c, d, ..., w, x, y, z}, P, A)
P = {A → B
B → C B1
B1 → \n C B1 | ε
C → D
D → E D1
D1 → ; E D1 | ε
E → F | G
F → " G "
G → H G1
G1 → H G1 | ε
H → a | b | c | d | ... | w | x | y | z}

Conjuntos FIRST(α) e FOLLOW(A):

FIRST(A)  = {", a, b, ..., y, z}
FIRST(B)  = {", a, b, ..., y, z}
FIRST(B1) = {\n, ε}
FIRST(C)  = {", a, b, ..., y, z}
FIRST(D)  = {", a, b, ..., y, z}
FIRST(D1) = {;, ε}
FIRST(E)  = {", a, b, ..., y, z}
FIRST(F)  = {"}
FIRST(G)  = {a, b, ..., y, z}
FIRST(G1) = {a, b, ..., y, z, ε}
FIRST(H)  = {a, b, ..., y, z}
FOLLOW(A)  = {$}
FOLLOW(B)  = {$}
FOLLOW(B1) = {$}
FOLLOW(C)  = {\n, $}
FOLLOW(D)  = {\n, $}
FOLLOW(D1) = {\n, $}
FOLLOW(E)  = {\n, ;, $}
FOLLOW(F)  = {\n, ;, $}
FOLLOW(G)  = {\n, ;, ", $}
FOLLOW(G1) = {\n, ;, ", $}
FOLLOW(H)  = {\n, ;, ", a, b, ..., y, z, $}

Tabela de Análise Preditiva:

Tabela de análise preditiva da gramática G
 \n;"a, b, ..., y, z$
A  A → BA → B 
B  B → C B1B → C B1 
B1B1 → \n C B1   B1 → ε
C  C → DC → D 
D  D → E D1D → E D1 
D1D1 → εD1 → ; E D1  D1 → ε
E  E → FE → G 
F  F → "G"  
G   G → H G1 
G1G1 → εG1 → εG1 → εG1 → H G1G1 → ε
H   H → a | b | ... | y | z 

Analisador Preditivo Tabular:

Movimentos do analisador preditivo tabular para nome;sexo\n"fulano";m
PilhaEntradaDerivação
$ Anome;sexo\n"fulano";m$A → B
$ Bnome;sexo\n"fulano";m$B → C B1
$ B1 Cnome;sexo\n"fulano";m$C → D
$ B1 Dnome;sexo\n"fulano";m$D → E D1
$ B1 D1 Enome;sexo\n"fulano";m$E → G
$ B1 D1 Gnome;sexo\n"fulano";m$G → H G1
$ B1 D1 G1 Hnome;sexo\n"fulano";m$H → n
$ B1 D1 G1 nnome;sexo\n"fulano";m$ 
$ B1 D1 G1ome;sexo\n"fulano";m$G1 → H G1
$ B1 D1 G1 Home;sexo\n"fulano";m$H → o
$ B1 D1 G1 oome;sexo\n"fulano";m$ 
$ B1 D1 G1me;sexo\n"fulano";m$G1 → H G1
$ B1 D1 G1 Hme;sexo\n"fulano";m$H → m
$ B1 D1 G1 mme;sexo\n"fulano";m$ 
$ B1 D1 G1e;sexo\n"fulano";m$G1 → H G1
$ B1 D1 G1 He;sexo\n"fulano";m$H → e
$ B1 D1 G1 ee;sexo\n"fulano";m$ 
$ B1 D1 G1;sexo\n"fulano";m$G1 → ε
$ B1 D1;sexo\n"fulano";m$D1 → ; E D1
$ B1 D1 E ;;sexo\n"fulano";m$ 
$ B1 D1 Esexo\n"fulano";m$E → G
$ B1 D1 Gsexo\n"fulano";m$G → H G1
$ B1 D1 G1 Hsexo\n"fulano";m$H → s
$ B1 D1 G1 ssexo\n"fulano";m$ 
$ B1 D1 G1exo\n"fulano";m$G1 → H G1
$ B1 D1 G1 Hexo\n"fulano";m$H → e
$ B1 D1 G1 eexo\n"fulano";m$ 
$ B1 D1 G1xo\n"fulano";m$G1 → H G1
$ B1 D1 G1 Hxo\n"fulano";m$H → x
$ B1 D1 G1 xxo\n"fulano";m$ 
$ B1 D1 G1o\n"fulano";m$G1 → H G1
$ B1 D1 G1 Ho\n"fulano";m$H → o
$ B1 D1 G1 oo\n"fulano";m$ 
$ B1 D1 G1\n"fulano";m$G1 → ε
$ B1 D1\n"fulano";m$D1 → ε
$ B1\n"fulano";m$B1 → \n C B1
$ B1 C \n\n"fulano";m$ 
$ B1 C"fulano";m$C → D
$ B1 D"fulano";m$D → E D1
$ B1 D1 E"fulano";m$E → F
$ B1 D1 F"fulano";m$F → " G "
$ B1 D1 " G ""fulano";m$ 
$ B1 D1 " Gfulano";m$G → H G1
$ B1 D1 " G1 Hfulano";m$H → f
$ B1 D1 " G1 ffulano";m$ 
$ B1 D1 " G1ulano";m$G1 → H G1
$ B1 D1 " G1 Hulano";m$H → u
$ B1 D1 " G1 uulano";m$ 
$ B1 D1 " G1lano";m$G1 → H G1
$ B1 D1 " G1 Hlano";m$H → l
$ B1 D1 " G1 llano";m$ 
$ B1 D1 " G1ano";m$G1 → H G1
$ B1 D1 " G1 Hano";m$H → a
$ B1 D1 " G1 aano";m$ 
$ B1 D1 " G1no";m$G1 → H G1
$ B1 D1 " G1 Hno";m$H → n
$ B1 D1 " G1 nno";m$ 
$ B1 D1 " G1o";m$G1 → H G1
$ B1 D1 " G1 Ho";m$H → o
$ B1 D1 " G1 oo";m$ 
$ B1 D1 " G1";m$G1 → ε
$ B1 D1 "";m$ 
$ B1 D1;m$D1 → ; E D1
$ B1 D1 E ;;m$ 
$ B1 D1 Em$E → G
$ B1 D1 Gm$G → H G1
$ B1 D1 G1 Hm$H → m
$ B1 D1 G1 mm$ 
$ B1 D1 G1$G1 → ε
$ B1 D1$D1 → ε
$ B1$B1 → ε
$$aceita