Skip to content

Update to Bison 3.8.1 #74

@GitMensch

Description

@GitMensch

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 the api.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 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)

The user actions may now use YYNOMEM to abort the current parse with
memory exhaustion.

Metadata

Metadata

Assignees

Labels

BisonIssues related to Bison

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions