Apresente a Análise Preditiva Tabular da entrada r1: se a_zero então vá_para r4 senão vá_para r2;r2:faça subtrair_a vá_para r3;r3:faça adicionar_b vá_para r1; sobre a gramática a seguir.
G = ({S, C, D, I, A, N, G}, {:, ;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, r, faça, subtrair_a, adicionar_b, vá_para, se, a_zero, então, senão}, P, S)
P = { S → C | S C
C → A : D ; | A : I ;
D → faça subtrair_a vá_para A | faça adicionar_b vá_para A
I → se a_zero então vá_para A senão vá_para A
A → r N
N → G | N G
G → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
G = ({S, C, D, I, A, N, G}, {:, ;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, r, faça, subtrair_a, adicionar_b, vá_para, se, a_zero, então, senão}, P, S)
P = { S → A : D ; | A : I ; | S C
C → A : D ; | A : I ;
D → faça subtrair_a vá_para A | faça adicionar_b vá_para A
I → se a_zero então vá_para A senão vá_para A
A → r N
N → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | N G
G → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
G = ({A, B, C, D, E, F, G}, {:, ;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, r, faça, subtrair_a, adicionar_b, vá_para, se, a_zero, então, senão}, P, A)
P = { A → E : C ; | E : D ; | A B
B → E : C ; | E : D ;
C → faça subtrair_a vá_para E | faça adicionar_b vá_para E
D → se a_zero então vá_para E senão vá_para E
E → r F
F → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | F G
G → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
G = ({A, B, C, D, E, F, G}, {:, ;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, r, faça, subtrair_a, adicionar_b, vá_para, se, a_zero, então, senão}, P, A)
P = { A → E : C ; | E : D ; | A B
B → E : C ; | E : D ;
C → faça subtrair_a vá_para E | faça adicionar_b vá_para E
D → se a_zero então vá_para E senão vá_para E
E → r F
F → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | F G
G → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
G = ({A, A1, B, C, D, E, F, F1, G}, {:, ;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, r, faça, subtrair_a, adicionar_b, vá_para, se, a_zero, então, senão}, P, A)
P = { A → E : C ; A1 | E : D ; A1
A1 → B A1 | ε
B → E : C ; | E : D ;
C → faça subtrair_a vá_para E | faça adicionar_b vá_para E
D → se a_zero então vá_para E senão vá_para E
E → r F
F → 0 F1 | 1 F1 | 2 F1 | 3 F1 | 4 F1 | 5 F1 | 6 F1 | 7 F1 | 8 F1 | 9 F1
F1 → G F1 | ε
G → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
G = ({A, A1, A2, B, B1, C, C1, D, E, F, F1, G}, {:, ;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, r, faça, subtrair_a, adicionar_b, vá_para, se, a_zero, então, senão}, P, A)
P = { A → E : A2
A1 → B A1 | ε
A2 → C ; A1 | D ; A1
B → E : B1
B1 → C ; | D ;
C → faça C1
C1 → subtrair_a vá_para E | adicionar_b vá_para E
D → se a_zero então vá_para E senão vá_para E
E → r F
F → 0 F1 | 1 F1 | 2 F1 | 3 F1 | 4 F1 | 5 F1 | 6 F1 | 7 F1 | 8 F1 | 9 F1
F1 → G F1 | ε
G → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
FIRST(A) = {r}
FIRST(A1) = {r, ε}
FIRST(A2) = {faça, se}
FIRST(B) = {r}
FIRST(B1) = {faça, se}
FIRST(C) = {faça}
FIRST(C1) = {subtrair_a, adicionar_b}
FIRST(D) = {se}
FIRST(E) = {r}
FIRST(F) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FIRST(F1) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ε}
FIRST(G) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
FOLLOW(A) = {$}
FOLLOW(A1) = {$}
FOLLOW(A2) = {$}
FOLLOW(B) = {r, $}
FOLLOW(B1) = {r, $}
FOLLOW(C) = {;}
FOLLOW(C1) = {;}
FOLLOW(D) = {;}
FOLLOW(E) = {:, ;, senão}
FOLLOW(F) = {:, ;, senão}
FOLLOW(F1) = {:, ;, senão}
FOLLOW(G) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ;, senão}
: | ; | 0..9 | r | faça | subtrair_a | adicionar_b | vá_para | se | a_zero | então | senão | $ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | E : A2 | ||||||||||||
A1 | B A1 | ε | |||||||||||
A2 | C ; A1 | D ; A1 | |||||||||||
B | E : B1 | ||||||||||||
B1 | C ; | D ; | |||||||||||
C | faça C1 | ||||||||||||
C1 | subtrair_a vá_para E | adicionar_b vá_para E | |||||||||||
D | se a_zero então vá_para E senão vá_para E | ||||||||||||
E | r F | ||||||||||||
F | 0..9 F1 | ||||||||||||
F1 | ε | ε | G F1 | ε | |||||||||
G | 0..9 |
Pilha | Entrada | Derivação |
---|---|---|
$ A | r1: se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | A → E : A2 |
$ A2 : E | r1: se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | E → r F |
$ A2 : F r | r1: se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A2 : F | 1: se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F → 1 F1 |
$ A2 : F1 1 | 1: se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A2 : F1 | : se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F1 → ε |
$ A2 : | : se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A2 | se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | A2 → D ; A1 |
$ A1 ; D | se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | D → se a_zero então vá_para E senão vá_para E |
$ A1 ; E vá_para senão E vá_para então a_zero se | se a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para senão E vá_para então a_zero | a_zero então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para senão E vá_para então | então vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para senão E vá_para | vá_para r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para senão E | r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | E → r F |
$ A1 ; E vá_para senão F r | r4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para senão F | 4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F → 4 F1 |
$ A1 ; E vá_para senão F1 4 | 4 senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para senão F1 | senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F1 → ε |
$ A1 ; E vá_para senão | senão vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para | vá_para r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E | r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | E → r F |
$ A1 ; F r | r2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; F | 2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F → 2 F1 |
$ A1 ; F1 2 | 2; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; F1 | ; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F1 → ε |
$ A1 ; | ; r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 | r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | A1 → B A1 |
$ A1 B | r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | B → E : B1 |
$ A1 B1 : E | r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | E → r F |
$ A1 B1 : F r | r2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 B1 : F | 2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F → 2 F1 |
$ A1 B1 : F1 2 | 2: faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 B1 : F1 | : faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | F1 → ε |
$ A1 B1 : | : faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 B1 | faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | B1 → C ; |
$ A1 ; C | faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | C → faça C1 |
$ A1 ; C1 faça | faça subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; C1 | subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | C1 → subtrair_a vá_para E |
$ A1 ; E vá_para subtrair_a | subtrair_a vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para | vá_para r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; E | r3; r3: faça adicionar_b vá_para r1; $ | E → r F |
$ A1 ; F r | r3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; F | 3; r3: faça adicionar_b vá_para r1; $ | F → 3 F1 |
$ A1 ; F1 3 | 3; r3: faça adicionar_b vá_para r1; $ | |
$ A1 ; F1 | ; r3: faça adicionar_b vá_para r1; $ | F1 → ε |
$ A1 ; | ; r3: faça adicionar_b vá_para r1; $ | |
$ A1 | r3: faça adicionar_b vá_para r1; $ | A1 → B A1 |
$ A1 B | r3: faça adicionar_b vá_para r1; $ | B → E : B1 |
$ A1 B1 : E | r3: faça adicionar_b vá_para r1; $ | E → r F |
$ A1 B1 : F r | r3: faça adicionar_b vá_para r1; $ | |
$ A1 B1 : F | 3: faça adicionar_b vá_para r1; $ | F → 3 F1 |
$ A1 B1 : F1 3 | 3: faça adicionar_b vá_para r1; $ | |
$ A1 B1 : F1 | : faça adicionar_b vá_para r1; $ | F1 → ε |
$ A1 B1 : | : faça adicionar_b vá_para r1; $ | |
$ A1 B1 | faça adicionar_b vá_para r1; $ | B1 → C ; |
$ A1 ; C | faça adicionar_b vá_para r1; $ | C → faça C1 |
$ A1 ; C1 faça | faça adicionar_b vá_para r1; $ | |
$ A1 ; C1 | adicionar_b vá_para r1; $ | C1 → adicionar_b vá_para E |
$ A1 ; E vá_para adicionar_b | adicionar_b vá_para r1; $ | |
$ A1 ; E vá_para | vá_para r1; $ | |
$ A1 ; E | r1; $ | E → r F |
$ A1 ; F r | r1; $ | |
$ A1 ; F | 1; $ | F → 1 F1 |
$ A1 ; F1 1 | 1; $ | |
$ A1 ; F1 | ; $ | F1 → ε |
$ A1 ; | ; $ | |
$ A1 | $ | A1 → ε |
$ | $ | sucesso |