Parsec (parser)

Parsec
Original author(s)Daan Leijen, Paolo Martini, Antoine Latter
Developer(s)Herbert Valerio Riedel, Derek Elkins, Antoine Latter, Roman Cheplyaka, Ryan Scott
Initial releaseNovember 2, 2006; 18 years ago (2006-11-02)[1]
Stable release
3.1.17.0 / April 5, 2024; 7 months ago (2024-04-05)[2]
Repositorygithub.com/haskell/parsec
Written inHaskell
Operating systemLinux, macOS, Windows
PlatformHaskell Platform
Available inEnglish
TypeParser combinator, library
LicenseBSD-2-clause
Websitehackage.haskell.org/package/parsec

Parsec is a library for writing parsers written in the programming language Haskell.[3] It is based on higher-order parser combinators, so a complicated parser can be made out of many smaller ones.[4] It has been reimplemented in many other languages, including Erlang,[5] Elixir,[6] OCaml,[7] Racket,[8] F#,[9][10] and the imperative programming languages C#,[11] and Java.[12]

Because a parser combinator-based program is generally slower than a parser generator-based program,[citation needed] Parsec is normally used for small domain-specific languages, while Happy is used for compilers such as the Glasgow Haskell Compiler (GHC).[13]

Other Haskell parser combinator libraries that have been derived from Parsec include Megaparsec[14] and Attoparsec.[15]

Parsec is free software released under the BSD-3-Clause license.[16]

  1. ^ "parsec 2.0". Hackage. Retrieved 3 September 2019.
  2. ^ "Releases". Github. Retrieved 22 September 2024.
  3. ^ "Parsec on Haskell wiki". Haskell Wiki. Retrieved 29 May 2017.
  4. ^ Leijen, Daan; Meijer, Erik (July 2001). "Parsec: Direct Style Monadic Parser Combinators For The Real World" (PDF). Microsoft Research. Retrieved 22 November 2014.
  5. ^ "Parsec Erlang". BitBucket. Retrieved 23 November 2014.
  6. ^ "Nimble Parsec". Github. Retrieved 18 December 2018.
  7. ^ "Parsec OCaml" (PDF). The OCaml Summer Project. Retrieved 23 November 2014.
  8. ^ "Megaparsack: Practical Parser Combinators".
  9. ^ "XParsec by corsis". XParsec. Retrieved 29 May 2017.
  10. ^ "FParsec". Quanttec. Retrieved 29 May 2017.
  11. ^ "CSharp monad". Github. Retrieved 10 December 2014.
  12. ^ "JParsec". Github. Retrieved 14 October 2016.
  13. ^ "The Glasgow Haskell Compiler (AOSA Vol. 2)". The Architecture of Open Source Applications. Retrieved 23 November 2014.
  14. ^ "megaparsec: Monadic parser combinators". Hackage. Retrieved 2018-09-10.
  15. ^ "attoparsec: Fast combinator parsing for bytestrings and text". Hackage. Retrieved 2018-09-10.
  16. ^ "Parsec". 25 October 2021.