1. Perhatikan CFG berikut
S ->S+A | S – A | A+S | A-S | B*A
B -> aB | B(a+B) | B*a | a(a+B)|b
A-> a
Tentukan first , follow & table dari produksi di atas
Jawab:
S -> A+SS’ | A – SS’ | B * AS’
S’ -> +AS’ | -AS’ | ε
S = > AF | B * AS’
F -> +SS’ | -SS’
S’ -> +AS’ | -AS’ | ε
B -> aBB’ | a(a+B)B’ | bB’
B’-> (a+B)B’ | *aB’
B -> aG | bB’
G -> BB’ | (a+B)B’
B’ -> (a+B)B’ | *aB’
A -> a
First S -> {a,b}
First F -> {+,-}
First S’ -> {+,-, ε}
First B -> {a,b}
First G -> {a,b,(}
First B’ -> {(,*}
Follow S -> {$,+,-}
Follow S’ -> {$}
Follow B -> {$,a,b,)}
Follow B’ -> {$}
Follow F -> {$,+,-}
Follow G -> {$,a,b,)}
a | b | + | – | * | ( | ) | $ | |
S | S -> AF | S -> B*AS’ | ||||||
S’ | S->+AS’ | S->-AS’ | S-> ε | |||||
B | B->aG | B->bB’ | ||||||
B’ | B->*aB’ | B’->(a +b)B’ |
||||||
F | F->+SS’ | F->-SS’ | ||||||
G | G->BB’ | G->BB’ |
|
G->(a+b)B’ |
2. S -> if E then S | if E then S else S | V:= E
S’->ε | else S
E-> TE’
E’-> TE’ | -TE’ | ε
T->FT’
T’-> FT’|/FT’|ε
F-> V|(E)|const
V-> id V’
V’-> ε|[E]
Tentukan first , follow & table dari produksi di atas
first(S) = {if, id}
first(S’) = {ε, else}
first(E) = { id, ( , const}
first(E’) = {+, -, ε}
first(T) = {id,(, const}
first(T’) = {*, /,ε }
first(F) = {id,(, const}
first(V) = {id}
first(V’) = {a b c}
follow(S) = {$}
follow(S’) = {$}
follow(E) = { then, $,),]}
follow(E’) = { then, $,),]}
follow(T) = {+, -}
follow(T’) = {+, -}
follow(F) = {*,/ }
follow(V) = {:}
follow(V’) = {:}
if | Id | else | ( | const | + | – | * | / | [ | $ | then | ) | ] | : | |
S | S-> if E then S S’ | S->V:=E | |||||||||||||
S’ | S->else S | ||||||||||||||
E | E->TE’ | E->TE’ | E->TE’ | ||||||||||||
E’ | E’->TE’ | E’->TE’ | E’->TE’ | E->ε | E->ε | E->ε | |||||||||
T | T->FT’ | T->FT’ | T->FT’ | ||||||||||||
T’ | T’->ε | T’->ε | T’->*FT’ | T’->/FT’ | |||||||||||
F | F->V | F->(E) | F->const | ||||||||||||
V | V->idV’ | ||||||||||||||
V’ | V’->[E] | V->ε |
3. Dari CFG berikut
S -> a=A
A ->a A’ | bA’
A’ -> +AA’ | ε
Tentukan first, follow & table dari produksi di atas
First (S) = {a} Follow (S) = {$}
First (A)={a,b} Follow(A)={$,+}
First(A’)={+,ε } Follow(A’)={$,+}
a | b | + | $ | |
S | S -> a=A | |||
A | A-> aA’ | A-> bA’ | ||
A’ | A’ -> +AA’ | A’ -> ε |
4. Diketahui Grammar:
be-> bt be’
be’ -> or bt be’
be’ -> e
bt-> bf bt’
bt’ -> and bf bt’
bt’-> ε
bf -> not bf
bf ->( be)
bf-> true
bf-> false
Perikas input sbb not(true or false) and true and false not(false) true
Jawab:
first (be) = not, (, true, false
first (be’) = or, ε
first (bt) = not, (, true, false
first (bt’) = and, ε
first (bf) = not, (, true, false
follow (be) = { $, )}
follow (be’) = { $, )}
follow (bt) = { or, $, )}
follow (bt’) = {or, $, )}
follow (bf) = {or, $, ), and}
or | not | ( | ) | true | false | and | $ | |
be | be-> bt be’ | be->bt be’ | be-> bt be’ | be->bt be’ | ||||
be’ | be’-> or bt be’ | be’-> ε | be’-> ε | |||||
bt | bt-> bf bt’ | bt->bf bt’ | bt->bf bt’ | bt->bf bt’ | ||||
bt’ | bt’-> ε | bt’-> ε | bt’-> and bf bt’ | bt’-> ε | ||||
bf | bf -> not bf | bf->(be) | bf->true | bf->false |
No |
Stack |
Input |
Output |
1. | be $ | not (true or false) and true and true and false not (false) true | be -> bt be’ |
2. | bt be’ $ | not (true or false) and true and true and false not (false) true | bt -> bf bt’ |
3. | bf bt’ be’ $ | not (true or false) and true and true and false not (false) true | bf -> not bf |
4. | not bf bt’ be’ $ | not (true or false) and true and true and false not (false) true | pop not |
5. | bf bt’ be’ $ | (true or false) and true and true and false not (false) true | bf -> (be) |
6. | (be) bt’ be’ $ | (true or false) and true and true and false not (false) true | pop ( |
7. | be) bt’ be’ $ | true or false) and true and true and false not (false) true | be -> bt be’ |
8. | bt be’) bt’ be’ $ | true or false) and true and true and false not (false) true | bt -> bf bt’ |
9. | bf bt’ be’) bt’ be’ $ | true or false) and true and true and false not (false) true | bf -> true |
10. | true bt’ be’) bt’ be’ $ | true or false) and true and true and false not (false) true | pop true |
11 | bt’ be’) bt’ be’ $ | or false) and true and true and false not (false) true | bt’ -> ε |
12 | be’) bt’ be’ $ | or false) and true and true and false not (false) true | be’ ->or bt be’ |
13. | or bt be’ ) bt’ be’ $ | or false) and true and true and false not (false) true | pop or |
14. | bt be’) bt’ be’ $ | false) and true and true and false not (false) true | bt -> bf bt’ |
15. | bf bt’ be’) bt’ be’ $ | false) and true and true and false not (false) true | bf -> false |
16. | false bt’ be’) bt’ be’ $ | false) and true and true and false not (false) true | pop false |
17. | bt’ be’) bt’ be’ $ | ) and true and true and false not (false) true | bt’ -> ε |
18. | be’) bt’ be’ $ | ) and true and true and false not (false) true | be’ -> ε |
19. | ) bt’ be’ $ | ) and true and true and false not (false) true | pop ) |
20. | bt’ be’ $ | and true and true and false not (false) true | bt’ -> and bf bt’ |
21. | and bf bt’ be’ $ | and true and true and false not (false) true | pop and |
22. | bf bt’ be’ $ | true and true and false not (false) true | bf -> true |
23. | true bt’ be’ $ | true and true and false not (false) true | pop true |
24. | bt’ be’ $ | and true and false not (false) true | bt’ -> and bf bt’ |
25. | and bf bt’ be’ $ | and true and false not (false) true | pop and |
26. | bf bt’ be’ $ | true and false not (false) true | bf -> true |
27. | true bt’ be’ $ | true and false not (false) true | pop true |
28. | bt’ be’ $ | and false not (false) true | bt’ -> and bf bt’ |
29. | and bf bt’ be’ $ | and false not (false) true | pop and |
30. | bf bt’ be’ $ | false not (false) true | bf -> false |
31. | false bt’ be’ $ | false not (false) true | pop false |
32. | bt’ be’ $ | not (false) true | ditolak |