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) |
From: | "SLK Parsers" <parsersinc@earthlink.net> |
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.
The SLK parser generator: http://home.earthlink.net/~slkpg/
Return to the
comp.compilers page.
Search the
comp.compilers archives again.