Thank you! Geoff Knauth (mobile)
> On Sep 11, 2021, at 16:39, Akim Demaille <[email protected]> wrote: > > Hi, > > I'm very pleased to announce the release of Bison 3.8(.1), whose main > novelty is the D backend for deterministic parsers, contributed by > Adela Vais. It supports all the bells and whistles of Bison's other > deterministic parsers, which include: pull/push interfaces, verbose > and custom error messages, lookahead correction, LALR(1), IELR(1), > canonical LR(1), token constructors, internationalization, locations, > printers, token and symbol prefixes, and more. > > There are several other notable changes. Please see the detailed NEWS > below for more details. > > Cheers! > > ================================================================== > > Here are the compressed sources: > https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.gz (6.1MB) > https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.lz (3.1MB) > https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.xz (3.1MB) > > Here are the GPG detached signatures[*]: > https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.gz.sig > https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.lz.sig > https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.xz.sig > > Use a mirror for higher download bandwidth: > https://www.gnu.org/order/ftp.html > > Here are the SHA1 and SHA256 checksums: > > 79e97c868475c0e20286d62021f2a7cfd20610f7 bison-3.8.1.tar.gz > zjGKRxlhVft8JpErUTEC89DhR1fC5JXjRgh1e2EznFw bison-3.8.1.tar.gz > e7fe4142c22ac5353ec4416652a56e9da951ffa5 bison-3.8.1.tar.lz > AJ2nWoBj4aO9IVRrN+UkISBWiR/CySr6EanzlphoIbg bison-3.8.1.tar.lz > 9772ea3130d6cbddaefe29a659698775a5701394 bison-3.8.1.tar.xz > MfxgJIiq1r3s8MzFVuD8cvxXzcWVz5I5jwIODPSYDxU bison-3.8.1.tar.xz > > The SHA256 checksum is base64 encoded, instead of the > hexadecimal encoding that most checksum tools default to. > > [*] 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.8.1.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.71 > Automake 1.16b > Flex 2.6.4 > Gettext 0.20.1.153-6c39c > Gnulib v0.1-4853-g964ce0a92 > > ================================================================== > > GNU 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 > 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, C++, D or Java > programming in order to use Bison. > > Bison and the parsers it generates are portable, they do not require any > specific compilers. > > GNU Bison's home page is https://gnu.org/software/bison/. > > ================================================================== > > NEWS > > * Noteworthy changes in release 3.8.1 (2021-09-11) [stable] > > The generation of prototypes for yylex and yyerror in Yacc mode is > breaking existing grammar files. To avoid breaking too many grammars, the > prototypes are now generated when `-y/--yacc` is used *and* the > `POSIXLY_CORRECT` environment variable is defined. > > Avoid using `-y`/`--yacc` simply to comply with Yacc's file name > conventions, rather, use `-o y.tab.c`. Autoconf's AC_PROG_YACC macro uses > `-y`. Avoid it if possible, for instance by using gnulib's gl_PROG_BISON. > > > * Noteworthy changes in release 3.8 (2021-09-07) [stable] > > ** Backward incompatible changes > > In conformance with the recommendations of the Graphviz team > (https://marc.info/?l=graphviz-devel&m=129418103126092), `-g`/`--graph` > now generates a *.gv file by default, instead of *.dot. A transition > started in Bison 3.4. > > To comply with the latest POSIX standard, in Yacc compatibility mode > (options `-y`/`--yacc`) Bison now generates prototypes for yyerror and > yylex. In some situations, this is breaking compatibility: if the user > has already declared these functions but with some differences (e.g., to > declare them as static, or to use specific attributes), the generated > parser will fail to compile. To disable these prototypes, #define yyerror > (to `yyerror`), and likewise for yylex. > > ** Deprecated features > > Support for the YYPRINT macro is removed. It worked only with yacc.c and > only for tokens. It was obsoleted by %printer, introduced in Bison 1.50 > (November 2002). > > It has always been recommended to prefer `%define api.value.type foo` to > `#define YYSTYPE foo`. The latter is supported in C for compatibility > with Yacc, but not in C++. Warnings are now issued if `#define YYSTYPE` > is used in C++, and eventually support will be removed. > > In C++ code, prefer value_type to semantic_type to denote the semantic > value type, which is specified by the `api.value.type` %define variable. > > ** New features > > *** A skeleton for the D programming language > > The "lalr1.d" skeleton is now officially part of Bison. > > It was originally contributed by Oliver Mangold, based on Paolo Bonzini's > lalr1.java, and was improved by H. S. Teoh. Adela Vais then took over > maintenance and invested a lot of efforts to complete, test and document > it. > > It now supports all the bells and whistles of the other deterministic > parsers, which include: pull/push interfaces, verbose and custom error > messages, lookahead correction, token constructors, internationalization, > locations, printers, token and symbol prefixes, etc. > > Two examples demonstrate the D parsers: a basic one (examples/d/simple), > and an advanced one (examples/d/calc). > > *** Option -H, --header and directive %header > > The option `-H`/`--header` supersedes the option `--defines`, and the > directive %header supersedes %defines. Both `--defines` and `%defines` > are, of course, maintained for backward compatibility. > > *** Option --html > > Since version 2.4 Bison can be used to generate HTML reports. However it > was a two-step process: first bison must be invoked with option `--xml`, > and then xsltproc must be run to the convert the XML reports into HTML. > > The new option `--html` combines these steps. The xsltproc program must > be available. > > *** A C++ native GLR parser > > A new version of the C++ GLR parser was added: "glr2.cc". It generates > "true C++11", instead of a C++ wrapper around a C parser as does the > existing "glr.cc" parser. As a first significant consequence, it supports > `%define api.value.type variant`, contrary to glr.cc. > > It should be upward compatible in terms of interface, feature and > performance to "glr.cc". To try it out, simply use > > %skeleton "glr2.cc" > > It will eventually replace "glr.cc". However we need user feedback on > this skeleton. _Please_ report your results and comments about it. > > *** Counterexamples > > Counterexamples now show the rule numbers, and always show ε for rules > with an empty right-hand side. For instance > > exp > ↳ 1: e1 e2 "a" > ↳ 3: ε • ↳ 1: ε > > instead of > > exp > ↳ e1 e2 "a" > ↳ • ↳ ε > > *** Lookahead correction in Java > > The Java skeleton (lalr1.java) now supports LAC, via the `parse.lac` > %define variable. > > *** Abort parsing for memory exhaustion (C) > > User actions may now use `YYNOMEM` (similar to `YYACCEPT` and `YYABORT`) > to abort the current parse with memory exhaustion. > > *** Printing locations in debug traces (C) > > The `YYLOCATION_PRINT(File, Loc)` macro prints a location. It is defined > when (i) locations are enabled, (ii) the default type for locations is > used, (iii) debug traces are enabled, and (iv) `YYLOCATION_PRINT` is not > already defined. > > Users may define `YYLOCATION_PRINT` to cover other cases. > > *** GLR traces > > There were no debug traces for deferred calls to user actions. They are > logged now. > > > -- > If you have a working or partly working program that you'd like > to offer to the GNU project as a GNU package, > see https://www.gnu.org/help/evaluation.html.
