Tutorial 2
Tutorial 2
Tutorial 2 and 3
AAα| β is changed to
A βA’
A’ αA’ | ε
S→ aAbAX | aAbcX
X->cAX | ε
A → aAbab
S->aAbY
Y->AX|cX
X->cAX | ε
A → aAbab
NT First Follow
S {a} {$}
A {a} {b,c,$}
Y {a,c} {$}
ii. S → 0 S 1 | 0 1
S→0X
X->S1|1
NT First Follow
S {0} {1,$}
X {0,1} {1,$}
Predictive parsing table for the grammar
NT/input symbol
0 1 $
S S → 0X
X X->S1 X->1
iii. S → + S S | * S S | a
Solution: Yes
NT First Follow
S {+,*,a} {+,+,a,$}
NT/input symbol
+ * a $
S S → +SS S → *SS S→a
iv. S → S ( S ) S | ε
Solution: No
S->X
NT First Follow
S {(, ε } {$,),(}
X {(, ε } {$,),(}
NT/input symbol
( ) $
S S→X S→X S→X
X X → (S)S X X→ε X→ε
X→ε
Not LL(1)
v. S → S + S | S S | ( S ) | S* |a
New G: S->(S)X | aX
X->+SX|SX|*X| ε
NT First Follow
S {(, a } {$,+,*,a,(,)}
X {+,*,a,(, ε } {$,+,*,a,(,)}
Predictive parsing table for the grammar
NT/input
symbol ( ) + * a $
S S->(S)X S->aX
X X->SX X->ε X->+SX X->*X X->SX X->ε
X->ε X->ε X->ε X->ε
vi. S → a S b S | b S a S |ε
Solution: Yes
NT First Follow
S { a, b, ε } {$,a,b}
Predictive parsing table for the grammar
NT/input symbol
a b $
S S → aSbS S → bSaS S→ε
S→ε S→ε
vii. S → A A → BC | DBC B → Bb | ε
C→c|ε D→a|d
New G:
S→A A → BC | DBC
B->X
X->bX | ε
C→c|ε D →a|d
NT First Follow
S { b,c,a,d,ε } {$}
A { b,c,a,d,ε } {$}
B { b,ε } {$,c}
C { c,ε } {$}
D { a,d } {b,c,$}
X { b,ε } {$,c}
New G: S → ( ) | a | ( A )
replaced by A( ) | a | ( A )
A ( )X | aX | ( A )X
X->,SX | ε
S→()|a|(A)
A ( )X | aX | ( A )X
X->,SX | ε
New G:
S → (Y | a
Y->)| A)
A → ( X’ | aX
X’ )X | A)X
X->,SX | ε
NT First Follow
S { (,a } {$,),,}
A {(,a } {)}
X {,ε } {)}
Y { ),(,a} { $,),, }
X’ { ),(, a} {)}
viii. S → A B e A → d B | aS | c B→AS|b
NT First Follow
S { d,a,c} {$,b,d,a,c,e}
A {d,a,c} {b,d,a,c}
B {d,a,c,b} {b,d,a,c,e}
ix. S → CC C → cC | d
Solution: Yes
NT First Follow
S { d,c} {$}
C {d,c} {d,c,$}
Solution: Yes
NT First Follow
S {a,b,s} {$}
A {ε} {a,b}
B { ε} {a,b}
C C
c C
c C
Backtracking
C C
c C c C
d Backtracking
C C