Professional Documents
Culture Documents
Prepared by
Example
Build the LL(1) parse table for the following grammar. SL E T P S begin SL end {begin} id := E; {id} SL S {begin,id} * S {begin,id} E+T {(, id} * T {(, id} P*T {(, id} * P {(, id} (E) {(} * - not LL(1) id {id}
Example (contd)
Lemma: Left recursion always produces a non-LL(1) grammar (e.g., SL, E above) Proof: Consider A A
3. T P * T P
Solution to Problem 3
Change: T P * T P to: TPX X*T { (, id } { (, id } { (, id } {*} { +, ; , ) } Disjoint!
To:
to:
To:
Modified Grammar
S SL Z E Y T X P begin SL end id := E ; S Z S Z T Y + T Y P X * T (E) id {begin} {id} {begin,id} {begin,id} {end} (,id} {+} {;,)} {(,id} {*} {;,+,)} {(} {id}
Disjoint.
Grammar is LL(1)
LL(1) Parsing
Programming Language Principles Lecture 4
Prepared by