TL;DR: replace "#define YYERROR_VERBOSE 1" by "%define parse.error verbose".
Bison 3.6 will no longer support the YYERROR_VERBOSE macro; the parsers
that still depend on it will produce Yacc-like error messages (just
"syntax error"). It was superseded by the "%error-verbose" directive in
Bison 1.875 (2003-01-01). Bison 2.6 (2012-07-19) clearly announced that
support for YYERROR_VERBOSE would be removed. Note that since Bison 3.0
(2013-07-25), "%error-verbose" is deprecated in favor of "%define
parse.error verbose".
Bison 3.5.4 fixes a few minor issues from Bison 3.5.
In Bison 3.5 Paul Eggert revised the use of integral types in both the
generator and the generated parsers. As a consequence small parsers
have a smaller footprint, and very large automata are now possible
with the default back-end (yacc.c). If you are interested in making
your parser smaller, have a look at api.token.raw.
Adrian Vogelsgesang contributed lookahead correction for C++.
The purpose of string literals has been clarified. Indeed, they are used
for two different purposes: freeing from having to implement the keyword
matching in the scanner, and improving error messages. Most of the time
both can be achieved at the same time, but on occasions, it does not work so
well. We promote their use for error messages. We still support the former
case (at least for historical skeletons), but it is _not_ a recommended
practice. The documentation now warns against this use. A new warning,
-Wdangling-alias, should help users who want to enforce the use of aliases
only for error messages.
An experimental back-end for the D programming language was added thanks to
Oliver Mangold and H. S. Teoh. It is looking for active support from the D
community.
Release announcement:
WARNING: Future backward-incompatibilities!
Bison 3.5.4 fixes a few minor issues from Bison 3.5.
In Bison 3.5 Paul Eggert revised the use of integral types in both the generator and the generated parsers. As a consequence small parsers have a smaller footprint, and very large automata are now possible with the default back-end (yacc.c). If you are interested in making your parser smaller, have a look at api.token.raw.
Adrian Vogelsgesang contributed lookahead correction for C++.
The purpose of string literals has been clarified. Indeed, they are used for two different purposes: freeing from having to implement the keyword matching in the scanner, and improving error messages. Most of the time both can be achieved at the same time, but on occasions, it does not work so well. We promote their use for error messages. We still support the former case (at least for historical skeletons), but it is _not_ a recommended practice. The documentation now warns against this use. A new warning, -Wdangling-alias, should help users who want to enforce the use of aliases only for error messages.
An experimental back-end for the D programming language was added thanks to Oliver Mangold and H. S. Teoh. It is looking for active support from the D community.
Happy parsing!