[Haskell-cafe] Parsec question
Michael P Mossey
mpm at alumni.caltech.edu
Fri Apr 17 19:33:44 EDT 2009
I've just about got this parser working, but wondering about something. Turns
out I need "try" inside the "lookahead" here.
parseText :: Parser String
parseText = manyTill anyChar $ lookAhead (try (string "//"))
Without try, if I give it an input with a single slash, like
It stops with the error "unexpected t; expecting //"
I'm curious why that happens when lookAhead is used with manyTill like this. I
was under the impression that if the end parser given to manyTill failed, then
manyTill would just continue with the main parser. Apparently there are two ways
to fail: in some contexts, failing means that manyTill will just continue. In
other contexts, such as the one above, there is some sense in which 'string'
demands the entire string to be present. Can anyone explain?
More information about the Haskell-Cafe