Parsec: Difference between revisions
(added a javascript Parsec clone) |
m (Culling two broken links) |
||
Line 11: | Line 11: | ||
* [http://legacy.cs.uu.nl/daan/parsec.html the Parsec site] | * [http://legacy.cs.uu.nl/daan/parsec.html the Parsec site] | ||
* [http://hackage.haskell.org/package/parsec hackage] | * [http://hackage.haskell.org/package/parsec hackage] | ||
* [http://code.haskell.org/parsec3/ darcs code repository] | * [http://code.haskell.org/parsec3/ darcs code repository] | ||
Line 42: | Line 41: | ||
Interesting non-Parsec parser combinator libraries: | Interesting non-Parsec parser combinator libraries: | ||
* Spirit for C++ http://spirit.sourceforge.net/documentation.html | * Spirit for C++ http://spirit.sourceforge.net/documentation.html | ||
Revision as of 19:15, 2 August 2010
Parsec
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.
For downloads and documentation see:
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.
Much more documentation can be found on the parsec site.
This article is a stub. You can help by expanding it.
Parsec clones in other languages
- PCL for O'Caml http://lprousnth.files.wordpress.com/2007/08/pcl.pdf
- JParsec for Java http://jparsec.codehaus.org/JParsec+Overview
- NParsec, JParsec ported to C# http://jparsec.codehaus.org/NParsec+Tutorial
- Ruby Parsec, JParsec ported to Ruby http://jparsec.codehaus.org/Ruby+Parsec
- FParsec for F# http://www.quanttec.com/fparsec/
- 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
- Parsnip for C++ http://parsnip-parser.sourceforge.net/
- Somewhere there is a Nemerle port
- Pysec for Python http://www.valuedlessons.com/2008/02/pysec-monadic-combinatoric-parsing-in.html
- JSParsec for JavaScript: http://code.google.com/p/jsparsec/
Interesting non-Parsec parser combinator libraries:
- Spirit for C++ http://spirit.sourceforge.net/documentation.html