The sample solution is misleading. The final grammar given is LL(1), but to show this requires more work: Here is the final grammar L -> Ra L -> Qba R -> abaS R -> cabaS Q -> bT S -> bcS S -> epsilon T -> bc T -> c Following the sample solution, we compute first sets for all right-hand sides: FIRST (Ra) = {a,c} FIRST (Qba) = {b} FIRST (abaS) = {a} FIRST (cabaS) = {c} FIRST (bT) = {b} FIRST (bcS) = {b} FIRST (epsilon) = {epsilon} FIRST (bc) = {b} FIRST (c) = {c} Here's the LL(1) table: a b c $ L L->Ra L->Qba L->Ra R R->abaS R->cabaS Q Q->bT S S->epsilon S->bcS T T->bc T->c Since no table slot has more than one entry, the grammar is indeed LL(1). The interesting case not covered by the argument in the suggested solution is for S. Since the second rule for S has a righthand-side with FIRST = {epsilon}, we must add the entry "S->epsilon" to every column in the FOLLOW set of S. Since FOLLOW(S) = FOLLOW(R) = {a}, this added entry doesn't conflict with the other rule for S, which goes in column b.