[Haskell-cafe] Re: Proving my point

Achim Schneider barsoap at web.de
Fri May 16 18:17:38 EDT 2008

Philippa Cowderoy <flippa at flippac.org> wrote:

> On Fri, 16 May 2008, Achim Schneider wrote:
> > My problem is that realTopLevel = expr, and that I get into an
> > infinite recursion, never "closing" enough parens, never hitting
> > eof.
> Have you run into the left-recursion trap, by any chance?
> This doesn't work:
> expr = do expr; ...
expr =
    do {e <- parens expr; return $ Nest e}
    <|> lambda
    <|> _let
    <|> try app
    <|> atom

There's at least one token before any recursion, so I guess not. After
all, it terminates. It's my state that does not succeed in directing
the parser not to mess up, so I'm reimplementing the thing as a
two-pass but stateless parser now. Definitely the easier and clearer
thing to do: I can have an end of line token that carries the number of
trailing spaces, so I got perfect indent information without any pain
involved, at all, and don't have to make parsers fail based on state.

(c) this sig last receiving data processing entity. Inspect headers for
past copyright information. All rights reserved. Unauthorised copying,
hiring, renting, public performance and/or broadcasting of this
signature prohibited. 

More information about the Haskell-Cafe mailing list