2025-08-14
| Linux64 | bnfc-2.9.6.1-linux-x86_64.binary |
|---|---|
| Mac | bnfc-2.9.6.1-mac.pkg |
| Source | BNFC-2.9.6.1.tar.gz |
| Win | bnfc-2.9.6.1-win.exe |
LANGUAGE DeriveDataTypeable in generated Abs.hs;
fixes regression in 2.9.6 [#507]Builds with GHC versions:
cabal, GHC 8.0 - 9.12stack, GHC 8.4 - 9.122025-08-10
| Linux64 | bnfc-2.9.6-linux-x86_64.binary |
|---|---|
| Mac | bnfc-2.9.6-mac.pkg |
| Source | BNFC-2.9.6.tar.gz |
| Win | bnfc-2.9.6-win.exe |
EInt now is union member eInt_ rather than eint_
[#479]Typeable (obsolete since GHC 7.10)
[#503]Builds with GHC versions:
cabal, GHC 8.0 - 9.12stack, GHC 8.4 - 9.122023-07-26
| Linux64 | bnfc-2.9.5-linux-x86_64.binary |
|---|---|
| Mac | BNFC-2.9.5-mac.pkg |
| Source | BNFC-2.9.5.tar.gz |
| Win | bnfc-2.9.5-win.exe |
String and Char literals [#449]String and Char literals in parser (needs Java ≥ 15) [#451]C [#455]jflex ≥ 1.8 [#453]ComposOp.hs no longer needs mtl library [#438]} [#439]Char [#452]let rec in the printers for token categoriesTested GHC versions:
cabal, GHC 7.10 - 9.6stack, GHC 8.2 - 9.62022-12-17
| Linux64 | bnfc-2.9.4.1-linux-x86_64.binary |
|---|---|
| Mac | BNFC-2.9.4.1-mac.pkg |
| Source | BNFC-2.9.4.1.tar.gz |
| Win | bnfc-2.9.4.1-win.exe |
2022-02-17
| Linux64 | bnfc-2.9.4-linux-x86_64.binary |
|---|---|
| Mac | BNFC-2.9.4-mac.pkg |
| Source | BNFC-2.9.4.tar.gz |
| Win | bnfc-2.9.4-win.exe |
--functor [#405]size_t and -Wsign-conversion [#391]--line-numbers [#390], regression in 2.9.2 by [#349].valueOf() instead of deprecated new L() for literal classes L [#402]defineContributors:
2021-10-01
| Linux64 | bnfc-2.9.3-linux-x86_64.binary |
|---|---|
| Mac | BNFC-2.9.3-mac.pkg |
| Source | BNFC-2.9.3.tar.gz |
| Win | bnfc-2.9.3-win.exe |
stdio.h in parser header files [#381]#include <algorithm> [#377]2021-06-13
| Mac | BNFC-2.9.2-mac.pkg |
|---|---|
| Source | BNFC-2.9.2.tar.gz |
| Win | bnfc-2.9.2-win.exe |
Major improvements:
free_* and clone_* to deallocate and clone syntax trees [#348]Bug fixes and small improvements:
[Char] correctly, removed method prtList [#359]defined constructors from Skeleton.cdefined constructors now reside in Absyn [#287]defined constructor now reside in AbsynDef.java [#287]defined constructorsdefined constructors involving list expressions work now [#363]Cosmetical changes:
_SYMB_nnn, more readable token names in lexer & parser2021-03-01
| Mac | BNFC-2.9.1-mac.pkg |
|---|---|
| Source | BNFC-2.9.1.tar.gz |
| Win | bnfc-2.9.1-win.exe |
Main new feature:
Bug fixes and small improvements:
Makefile and test parser for --glr mode [#340]Prelude explicitly, compatible with {-# LANGUAGE NoImplicitPrelude #-}define expressions [#338]2020-12-28
| Mac | BNFC-2.9.0-mac.pkg |
|---|---|
| Source | BNFC-2.9.0.tar.gz |
| Win | bnfc-2.9.0-win.exe |
Major changes:
delimiters pragma [#308]--alex1, --alex2, --sharestrings, --profile, and --cnf [#265]Bug fixes:
entrypoints pragma [#306]strdup is not part of C89 standard, _POSIX_C_SOURCE required [#318]String literal lexer [#316]2020-10-10
| Mac | BNFC-2.8.4-mac.pkg |
|---|---|
| Source | BNFC-2.8.4.tar.gz |
| Win | bnfc-2.8.4-win.exe |
This release adds the OCaml/Menhir backend, a variant of the OCaml backend that uses parser generator menhir instead of ocamlyacc. Beyond that, the focus of this release has been increased robustness and predictability of the BNFC tool:
--check that only performs sanity checks on the given LBNF grammar file, without calling any backend (#286).define now supported by all maintained backends (Agda, Haskell, Haskell/GADT, C, C++, Java).position token now supported by all maintained backends with the exception of C++/NoSTL.The Haskell backend has seen the following improvements:
--text-token to use Data.Text instead of String in the generated lexer (#167).IsString instances for Ident-like token types (#192).Err monad is now defined as Either String. Module ErrM is only generated for backwards compatibility. Imports of ErrM with an explicit import list may have to modified slightly, see a migration guide at the Haskell backend documentation.The C-family backends have been improved as follows:
Further bug fixes: #163, #169, #196, #212, #235, #256, #264, #269, #274, #276, #277, #279, #282, #283, #290.
Building of BNFC 2.8.4 requires GHC ≥ 7.10 and has been tested up to GHC 8.10.2. BNFC can be build using cabal or stack (using one of the enclosed stack-x.y.z.yaml files).
/usr/local/bin/bnfc compiled under Mac OS X Mojave, x86 64bit processor2019-08-27
| Mac | BNFC-2.8.3-mac.pkg |
|---|---|
| Source | BNFC-2.8.3.tar.gz |
| Win | bnfc-2.8.3-win.exe |
Main new feature:
Backend-independent features:
.yaml files [#198]\r (carriage return) and \f (form feed) in token declaration [#257]Foo2) independent of coercions [#210]C backend:
-l option to give error locations [#238]Haskell backend:
Makefile that invokes bnfc on changed .cf fileOverlappingInstances [#233]--cnf: fixed problem with Any type in generated code [#216]--cnf: generated test program now same name (Test) as without --cnf--glr: correct module header in .y file [#252]Binaries:
/usr/local/bin/bnfc compiled under Mac OS X Mojave, x86 64bit processor2018-11-04
| Source | BNFC-2.8.2.tar.gz |
|---|
%name-prefix with %define api.prefix in bison files [#181]2016-10-04
| Source | BNFC-2.8.1.tar.gz |
|---|
2015-05-24
| Linux32 | bnfc-2.8-linux32.tar.gz |
|---|---|
| Linux64 | bnfc-2.8-linux64.tar.gz |
| Mac | BNFC-2.8-mac.pkg |
| Source | BNFC-2.8.tar.gz |
| Win | bnfc-2.8-win.exe |
2014-10-09
| Linux32 | BNFC-2.7.1-linux-i386.tar.gz |
|---|---|
| Linux64 | BNFC-2.7.1-linux-x86_64.tar.gz |
| Mac | BNFC-2.7.1-mac.pkg |
| Source | BNFC-2.7.1.tar.gz |
| Win | bnfc-2.7.1-win.exe |
2014-09-26
| Linux32 | BNFC-2.7.0.1-linux-i386.tar.gz |
|---|---|
| Linux64 | BNFC-2.7.0.1-linux-x86_64.tar.gz |
| Mac | BNFC-2.7.0.1-mac.pkg |
| Source | BNFC-2.7.0.1.tar.gz |
| Win | bnfc-2.7.0.1-win.exe |
2014-09-26
| Linux32 | BNFC-2.7.0.0-linux-i386.tar.gz |
|---|---|
| Linux64 | BNFC-2.7.0.0-linux-x86_64.tar.gz |
| Mac | BNFC-2.7.0.0-mac.pkg |
| Source | BNFC-2.7.0.0.tar.gz |
| Win | bnfc-2.7.0.0-win.exe |
Read for newtype decls in HaskellErr2013-03-18
| Linux32 | bnfc-2.5.0-linux-i386.gz |
|---|---|
| Linux64 | bnfc-2.5.0-linux-amd64.gz |
| Mac | bnfc-2.5.0-mac.gz |
| Win | bnfc-2.5.0-win.exe |
| Source | bnfc-2.5.0-src.tar.gz |