Name: BNFC-meta
version: 0.6
cabal-Version: >= 1.6
build-type: Simple
license: GPL-2
license-file: LICENSE
author: Jonas Duregård
maintainer: Jonas Duregård (jonas.duregard@chalmers.se)
category: Development
synopsis: Deriving Parsers and Quasi-Quoters from BNF Grammars
description: 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:
.
This library and the additions it makes to LBNF is described in a
2011 Haskell Symposium paper titled \"Embedded Parser Generators\":
extra-source-files:
examples/jll/JavaletteLight.hs
examples/jll/UseJll.hs
examples/typesafe/Example.hs
examples/typesafe/Typesafe.hs
Bootstrap/Bootstrap.hs
source-repository head
type: git
location: https://github.com/JonasDuregard/BNFC-meta
Library
Build-Depends:
base>=4.2&&<5
, array>=0.4&&<0.6
, template-haskell >=2.12 && < 2.13
, haskell-src-meta >= 0.5 && < 1.0
, happy-meta >= 0.2.0.4 && < 0.3
, alex-meta >= 0.3.0.5 && < 0.4
, syb >= 0.2 && <1.0
Exposed-modules:
Language.LBNF
, Language.LBNF.Runtime
, Language.LBNF.Compiletime
, Language.LBNF.Grammar
Other-modules:
Language.LBNF.CF
, Language.LBNF.CFtoAbstract
, Language.LBNF.CFtoAlex2
, Language.LBNF.CFtoHappy
, Language.LBNF.CFtoLayout
, Language.LBNF.CFtoPrinter
, Language.LBNF.CFtoQQ
, Language.LBNF.GetCF
, Language.LBNF.TypeChecker
, Language.LBNF.Utils
, Language.Haskell.TH.Hide