We are happy to announce the release of GNU Bison 3.0.5, a bug fix release.
Bison is a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables. Bison can also generate IELR(1) or canonical LR(1) parser tables. Once you are proficient with Bison, you can use it to develop a wide range of language parsers, from those used in simple desk calculators to complex programming languages. Bison is upward compatible with Yacc: all properly-written Yacc grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with little trouble. You need to be fluent in C or C++ programming in order to use Bison. Java is also supported. Here are the compressed sources: ftp://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.gz (4.1MB) ftp://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.xz (2.1MB) Here are the GPG detached signatures[*]: ftp://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.gz.sig ftp://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.xz.sig Use a mirror for higher download bandwidth: https://www.gnu.org/order/ftp.html [*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this: gpg --verify bison-3.0.5.tar.gz.sig If that command fails because you don't have the required public key, then run this command to import it: gpg --keyserver keys.gnupg.net --recv-keys 0DDCAA3278D5264E and rerun the 'gpg --verify' command. This release was bootstrapped with the following tools: Autoconf 2.69 Automake 1.16.1 Flex 2.6.4 Gettext 0.19.8.1 Gnulib v0.1-1882-g0d10473be NEWS * Noteworthy changes in release 3.0.5 (2018-05-27) [stable] ** Bug fixes *** C++: Fix support of 'syntax_error' One incorrect 'inline' resulted in linking errors about the constructor of the syntax_error exception. *** C++: Fix warnings GCC 7.3 (with -O1 or -O2 but not -O0 or -O3) issued null-dereference warnings about yyformat being possibly null. It also warned about the deprecated implicit definition of copy constructors when there's a user-defined (copy) assignment operator. *** Location of errors In C++ parsers, out-of-bounds errors can happen when a rule with an empty ride-hand side raises a syntax error. The behavior of the default parser (yacc.c) in such a condition was undefined. Now all the parsers match the behavior of glr.c: @$ is used as the location of the error. This handles gracefully rules with and without rhs. *** Portability fixes in the test suite On some platforms, some Java and/or C++ tests were failing.