On Sunday, 24. February 2013 16:04:11 Tillmann Rendel wrote:
> Both approaches are essentially equivalent, of course: Before
> considering the very same nonterminal again, we should have consumed at
> least one token.
I see. Thanks
So for the laymen:
expr ::= expr "+" expr
is a problem, because the parser considers expr again without having consumed
any input.
expr ::= literal pluses
pluses ::= many ("+" expr)
is not a problem, because by the time the parser gets to the rightmost expr is
has consumes at least one "+".
Instead of literal we can put anything which promises not to be left-recursive
expr ::= exprNonLr "+" expr
exprNonLr := ...
As exprNonLr gets more complicated, we may end up with a whole set of nonLr
parsers.
I wonder if I can enforce the nonNr property somehow, i.e. enforce the rule
"will not consider the same nonterminal again without having consumed any
input".
--
Martin
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe