Release notes


  • Add token support for Ocaml

  • New option parser: the options now follow the standard convention of using two dashes for long options (e.g. --haskell). Old options with a single dash (e.g. -haskell) are still accepted but all newly introduced options use only the new format.

  • Adds an optional argument to change Makefile name:

    bnfc -mMyMakefile

    should generate the Makefile in MyMakefile instead of the default (Makefile.) Add a long version of the option (--makefile)

  • Add a --ghc option to derive Data, Typeable, Generic in the Haskell backend

  • New online documentation (

  • Derive Read for newtype decls in Haskell backend. E.g.

    newtype Ident = Ident String deriving (Eq,Ord,Read,Show)

    This allows users to translate Ident‘s from one language to another, e.g:

    LangX.IdentExp ident -> LangY.IdentExp (read (show ident))
  • New option to get the version number: --version (the old one, --numeric-version still works).

  • Remove the F# backend

  • Remove the Java4 backend

  • New Applicative and Alternative instances to Err

  • Remove the coupling between building the parser and the pdf from latex: this was causing a lot of confusion in the course because it would fail to build the test program if the student didn’t have latex installed. Add a separate target for the latex document (--latex).

  • Improvement to the CNF Backend

  • Bug fixes in different backends: Ocaml (#92, #21), GADT (#34, #33), Latex (#90), XML (#30), Java (#60)

Thanks to everyone who has contributed to this release: Adam Sandberg Eriksson, Alex Rozenshteyn, Caleb Welton, Cubit, Grégoire Détrez, Jean-Philippe Bernardy, Jeff Chen, John Lato, Josef Svenningsson, Oliver Bunting, Rob Stewart, Wictor Lund, emptylambda, joe, runoshun