Difference between revisions of "Parsec"

From HaskellWiki
Jump to navigation Jump to search
(adding link to parsec example page)
(Changed division in (sub)sections, added section "Examples")
Line 1: Line 1:
== Parsec ==
 
 
 
[[Category:Compiler tools]]
 
[[Category:Compiler tools]]
 
[[Category:Combinators]]
 
[[Category:Combinators]]
   
  +
== Introduction ==
 
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
Line 10: Line 9:
 
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].
 
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].
   
  +
=== Usage ===
 
 
== Usage ==
   
 
Parsec lets you construct parsers by combining higher-order
 
Parsec lets you construct parsers by combining higher-order
Line 24: Line 24:
 
{{Template:Stub}}
 
{{Template:Stub}}
   
  +
=== Parsec clones in other languages ===
 
  +
== Examples ==
  +
* [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.
  +
  +
See also the [http://bifunctor.homelinux.net/~roel/cgi-bin/hackage-scripts/revdeps/parsec-3.1.0#direct list of reversed dependencies for Parsec].
  +
  +
 
== Parsec clones in other languages ==
   
 
* PCL for O'Caml http://lprousnth.files.wordpress.com/2007/08/pcl.pdf
 
* PCL for O'Caml http://lprousnth.files.wordpress.com/2007/08/pcl.pdf

Revision as of 07:45, 25 September 2010


Introduction

Parsec is an industrial strength, monadic parser combinator library for Haskell. It can parse context-sensitive, infinite look-ahead grammars but it performs best on predictive (LL[1]) grammars.

The latest stable release with Haddock documentation is available on Hackage and development versions are available via the darcs repository.


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.

Much more documentation can be found on the parsec website.

This article is a stub. You can help by expanding it.


Examples

See also the list of reversed dependencies for Parsec.


Parsec clones in other languages

Interesting non-Parsec parser combinator libraries: