[Haskell-cafe] Parselib sample

Stephen Tetley stephen.tetley at gmail.com
Wed Jun 2 13:10:32 EDT 2010

Hi Kashyap

They are very close - Parsec has most of the parsers in ParseLib in
either the Parsec.Char or Parsec.Combinator modules, if you import the
Parsec top level, you will get them, e.g:

> import Text.ParserCombinators.Parsec

ParseLib has - ident, nat, int - which have analogues in Parsec but
are in the Parsec.Token module and need the qualified import trick:

> import Text.ParserCombinators.Parsec.Language
> import qualified Text.ParserCombinators.Parsec.Token as P

> myLex     :: P.TokenParser st
> myLex     = P.makeTokenParser emptyDef

> integer   :: Parser Integer
> integer   = P.integer myLex

> ident     :: Parser String
> ident     = P.identifier myLex

Handling trailing white-space is probably another difference that I
haven't looked at yet (the variations - identifier, integer, natural -
in ParseLib). Type signatures are slightly different, of course, as
Parsec has more powerful "internal machinery".

Best wishes


More information about the Haskell-Cafe mailing list