This package provides a very simple way of defining a compiler
front-end for a language by embedding a BNF grammar directly into a Haskell
source file.
Specifically, given a quasi-quoted LBNF grammar (as used by the BNF Converter)
it generates (using Template Haskell) a LALR parser and pretty pretty printer
for the language. The parser is then used to automatically define a
quasi-quoter for the defined language so it can also be seamlessly embedded
in Haskell source code. With a
simple addition to the gramwmar, the user can define a universal syntax for
anti-quoting. This
means that any grammar non-terminal can be replaced by a quoted Haskell
expression of the appropriate type. A few example languages are included in
the source tarball.
The LBNF grammar formalism is described thoroughly in the BNF Converter
documentation: http://bnfc.digitalgrammars.com/
This library and the additions it makes to LBNF is described in a
2011 Haskell Symposium paper titled "Embedded Parser Generators":
http://wiki.portal.chalmers.se/cse/pmwiki.php/FP/EmbeddedParserGenerators