Difference between revisions of "Parsec"

From HaskellWiki
Jump to navigation Jump to search
(+ perl module)
Line 43: Line 43:
 
* Ruby Parsec, JParsec ported to Ruby http://jparsec.codehaus.org/Ruby+Parsec
 
* Ruby Parsec, JParsec ported to Ruby http://jparsec.codehaus.org/Ruby+Parsec
 
* FParsec for F# http://www.quanttec.com/fparsec/
 
* FParsec for F# http://www.quanttec.com/fparsec/
  +
* XParsec for F# http://corsis.github.com/XParsec/ is a stream-and-type-independent, generalized and extensible parsec implementation in F# 3.0 which supports domain-specific non-linear navigation combinators (such as for XML trees)
 
* 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, 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/)
 
* AliceParsec for Alice ML http://www.ps.uni-sb.de/alice/contribs.html
 
* AliceParsec for Alice ML http://www.ps.uni-sb.de/alice/contribs.html
Line 53: Line 54:
 
* Parse::RecDescent for Perl https://metacpan.org/module/Parse::RecDescent
 
* Parse::RecDescent for Perl https://metacpan.org/module/Parse::RecDescent
 
* Spirit for C++ http://spirit.sourceforge.net/documentation.html
 
* Spirit for C++ http://spirit.sourceforge.net/documentation.html
 
   
 
== Links ==
 
== Links ==

Revision as of 12:54, 16 September 2012


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 reverse dependencies for Parsec.

Parsec clones in other languages

Interesting non-Parsec parser combinator libraries:

Links

Docs

Blog articles

Other