[Haskell-cafe] Parsers (Parsec and Iteratee-based Parsers)

Jeff Zaroyko jeffzaroyko at gmail.com
Mon Jan 11 22:46:07 EST 2010


2010/1/12 Günther Schmidt <gue.schmidt at web.de>:
> Hi John,
>
> thanks for responding. As I said I've been using Parsec quite a lot, but
> wonder if there is a different approach possible/feasible to parsing. Parsec
> (2x) isn't an "online" parser, ie, it doesn't produce a result before the
> whole parse is completed.
>

This appears to be a common source of confusion.

You can produce a result by not trying to parse the entire input in
one go, instead parse as much as you want to consume, then return the
rest of the input with the tokens that you have collected.  For
example, in Parsec 2 a regular approach I use is something like:

get1 = do token <- parse1token
          remaining <- getInput
          return (remaining,token)

Jeff


More information about the Haskell-Cafe mailing list