Parsec is an industrial strength, monadic parser combinator library for

Parsec is an industrial strength, monadic parser combinator library for

Haskell. It can parse context-sensitive, infinite look-ahead grammars

Haskell. It can parse context-sensitive, infinite look-ahead grammars

but it performs best on predictive (LL[1]) grammars.

but it performs best on predictive (LL[1]) grammars.

−

For downloads and documentation see:

+

The latest stable release with Haddock documentation is available on [http://hackage.haskell.org/package/parsec Hackage] and development versions are [http://code.haskell.org/parsec3/ available via the Darcs repository].

* [http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours/Parsing Write Yourself a Scheme in 48 Hours/Parsing]. Note, that where the example uses the read function, the Token module of Parsec could have been used, to handle numbers.

−

* Parsec-Erlang, http://bitbucket.org/dmercer/parsec-erlang/ is a faithful reproduction of Parsec in Erlang (there is also an older toy Parsec-like parser that isn't monadic, nor does it give error messages: http://www.engr.uconn.edu/~jeffm/Source/Erlang/)

* Parsec-Erlang [https://bitbucket.org/dmercer/parsec-erlang/], is a faithful reproduction of Parsec in Erlang (there is also an older toy Parsec-like parser that isn't monadic, nor does it give error messages: [http://www.engr.uconn.edu/~jeffm/Source/Erlang/])

2 Usage

Parsec lets you construct parsers by combining higher-order
Combinators to create larger expressions. Combinator parsers are
written and used within the same programming language as the rest of the
program. The parsers are first-class citizens of the language , unlike
Happy parsers, which must be generated via a preprocessor.

An example for parsing a simple grammar of expressions can be found here.