@hackage BNFC-meta0.6.1
Deriving Parsers and Quasi-Quoters from BNF Grammars
Categories
License
GPL-2.0-only
Maintainer
Artem Pelenitsyn <artem.pelenitsyn@gmail.com>
Links
Versions
Installation
Dependencies (8)
- array >=0.4 && <0.6
- base >=4.2 && <5
- template-haskell >=2.12 && <3
- alex-meta >=0.3.0.5 && <0.4
- fail >=4.9 && <5
- happy-meta >=0.2.0.4 && <0.3 Show all…
Dependents (3)
@hackage/acme-everything, @hackage/uAgda, @hackage/nanoAgda
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