gll: GLL parser with simple combinator interface

[ bsd3, compilers, library ] [ Propose Tags ]

The package gll provides generalised top-down parsing according to the GLL parsing algorithm [Scott and Johnstone 2010,2013].

The user can either invoke the GLL parser directly by importing GLL.Parser and providing a value of the Grammar datatype in (exported by GLL.Parser). Alternatively, the user can import GLL.Combinators to write combinator expressions from which a grammar of the required form is extracted. The combinators enable applying arbitrary semantic actions to parse results. The documentation of the respective packages provides more information.

The main motivation for this package is the development of Domain Specific Languages (DSLs). More specifically: designing DSLs with minimal differences between between abstract and concrete syntax (abstract syntax is often ambiguous).

Please email any questions, comments and suggestions to the maintainer.

Versions [faq],,,,,,,,,,,,,,,,, (info)
Change log changelog.txt
Dependencies array, base (>= && <=, containers (>=0.4), pretty, regex-applicative (>=0.3), text, TypeCompose [details]
License BSD-3-Clause
Copyright Copyright (C) 2015 L. Thomas van Binsbergen
Author L. Thomas van Binsbergen
Maintainer L. Thomas van Binsbergen <>
Revised Revision 1 made by ltvanbinsbergen at Sat Apr 2 11:32:36 UTC 2016
Category Compilers
Uploaded by ltvanbinsbergen at Sat Apr 2 07:24:10 UTC 2016
Distributions NixOS:
Downloads 5204 total (341 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-11-27 [all 3 reports]


  • GLL
    • GLL.Combinators
      • GLL.Combinators.Interface
      • Test
        • GLL.Combinators.Test.Interface
    • Parseable
      • GLL.Parseable.Char
    • GLL.Parser


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees