-
Notifications
You must be signed in to change notification settings - Fork 134
Description
Bison 3.7.5 was released:
Noteworthy changes in release 3.7.5 (2021-01-24) [stable]
** Bug fixes
*** Counterexample Generation
In some cases counterexample generation could crash. This is fixed.
*** Fix Table Generation
In some very rare conditions, when there are many useless tokens, it was
possible to generate incorrect parsers.*** GLR parsers now support %merge together with api.value.type=union.
*** C++ parsers use noexcept in more places.
*** Generated parsers avoid some warnings about signedness issues.
*** C-language parsers now avoid warnings from pedantic clang.
*** C-language parsers now work around quirks of HP-UX 11.23 (2003).
** Changes
*** C++ value_type
Prefer value_type to semantic_type to denote the semantic value type,
specified by theapi.value.type
%define variable.*** GLR traces
There were not debug traces for deferred calls to user actions. They are
logged now.** New features
*** 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 generated C++ GLR parser was added as "glr2.cc". It
is forked from the existing glr.c/cc parser, with the objective of making
it a more modern, truly C++ parser (instead of a C++ wrapper around a C
parser). Down the line, the goal is to support%define api.value.type variant
and maybe share code with lalr1.cc.The current parser should be identical in terms of interface, functionality
and performance to "glr.cc". To try it out, simply use%skeleton "glr2.cc"
*** Counterexamples
Counterexamples now show the rule numbers, and always show ε for rules
with an empty right-hand side. For instanceexp ↳ 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)
The user actions may now use YYNOMEM to abort the current parse with
memory exhaustion.