# Re: Why LL(1) Parsers do not support left recursion?

## "SLK Parsers" <parsersinc@earthlink.net>3 Aug 2006 11:04:31 -0400

From comp.compilers

Related articles
[28 earlier articles]
Re: Why LL(1) Parsers do not support left recursion? wyrmwif@tsoft.org (SM Ryan) (2006-07-29)
Re: Why LL(1) Parsers do not support left recursion? ajo@andrew.cmu.edu (Arthur J. O'Dwyer) (2006-07-29)
Re: Why LL(1) Parsers do not support left recursion? DrDiettrich1@aol.com (Hans-Peter Diettrich) (2006-07-29)
Re: Why LL(1) Parsers do not support left recursion? parsersinc@earthlink.net (SLK Parsers) (2006-07-31)
Re: Why LL(1) Parsers do not support left recursion? wyrmwif@tsoft.org (SM Ryan) (2006-08-01)
Re: Why LL(1) Parsers do not support left recursion? DrDiettrich1@aol.com (Hans-Peter Diettrich) (2006-08-03)
Re: Why LL(1) Parsers do not support left recursion? parsersinc@earthlink.net (SLK Parsers) (2006-08-03)
Re: Why LL(1) Parsers do not support left recursion? parsersinc@earthlink.net (SLK Parsers) (2006-08-04)
| List of all articles for this month |

 From: "SLK Parsers" Newsgroups: comp.compilers Date: 3 Aug 2006 11:04:31 -0400 Organization: Parsers Inc. References: 06-07-115 Keywords: parse Posted-Date: 03 Aug 2006 11:04:31 EDT

>How would I guess which one is that?

The technique is called "controlled ambiguity" in the Dragon book. You can
read about it there. I leave the LL solution as an exercise for the
interested reader, as if there are any.

Hint 1: We want to associate the ELSE with the closest IF, so use the
production that consumes the ELSE sooner.

Hint 2: There are only 2 possibilities, try them both and see which one
works.

The grammar solution is quite clever. If it were not so redundant, and
solved a problem that actually exists, it would be useful.

Forget about yacc for a minute. Assume you were creating the parse table by
hand. When you got to the shift-reduce conflict, you would say "Oh, I
remember this one from my first year compiler course. I will use the shift
as the entry in the parse table". This is what yacc does automatically.