Grempa: Embedded grammar DSL and LALR parser generator

[ bsd3, library, parsing ] [ Propose Tags ]

A library for expressing programming language grammars in a form similar to BNF, which is extended with the semantic actions to take when a production has been parsed. The grammars are typed and are to be be used with the LALR(1) parser generator, also part of the library, which can generate a parser for the language either at compile time using Template Haskell, producing fast parsers with no initial runtime overhead, or dynamically, which has the initial overhead of generating the parser, but can be used for example when the grammar depends on an input.

[Skip to Readme]


Automatic Flags

Build the module for generating random inputs and the expected output for your grammars. Default: False


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.2.0, 0.2.1, 0.2.2
Dependencies array (>=0.3), base (>=4.2 && <5), containers (>=0.3), mtl (>=2), QuickCheck (>=2.4), template-haskell (>=2.4), th-lift (>=0.5) [details]
License BSD-3-Clause
Copyright (c) 2011 Olle Fredriksson
Author Olle Fredriksson
Category Parsing
Uploaded by OlleFredriksson at 2013-02-07T21:14:50Z
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 6405 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for Grempa-0.2.2

[back to package description]
Embedded grammar DSL and LALR parser generator
Author: Olle Fredriksson

* Building

    Use Cabal. Example:

    > cabal configure
    > cabal build
    > cabal install

* Documentation

    To generate the documentation for the different modules, use Cabal.

    > cabal configure
    > cabal haddock

    Also refer to the examples.

* Examples

    The examples directory contains examples of varying complexity which can be
    used as an introduction to the usage of the library.

    The examples are numbered, which serves as a suggested reading order.

* Testing

    To also compile the module for generating random inputs and their expected
    outputs for your grammar, and testing a generated parser against that, use the
    test flag. Example:

    > cabal configure -ftest
    > cabal build
    > cabal install

* Bugs

    If you find a bug, please send a bug report to

* License

    Refer to the file LICENSE in this directory.