* Noteworthy changes in release ?.? (????-??-??) [?]
+** Bug fixes
+
+*** Named %union support
+
+ Bison 3.0 introduced a regression on named %union such as
+
+ %union foo { int ival; };
+
+ The possibility to use a name was introduced ``for Yacc compatibility''.
+ It is however not required by POSIX Yacc, and its usefulness is not clear.
+
+*** %define api.value.type union with %defines
+
+ The yacc.c and glr.c parsers were broken when %defines was used
+ together with "%define api.value.type union".
+
+*** Redeclarations are reported in proper order
+
+ On
+
+ %token FOO "foo"
+ %printer {} "foo"
+ %printer {} FOO
+
+ bison used to report:
+
+ /tmp/foo.yy:2.10-11: error: %printer redeclaration for FOO
+ %printer {} "foo"
+ ^^
+ /tmp/foo.yy:3.10-11: previous declaration
+ %printer {} FOO
+ ^^
+
+ Now, the "previous" declaration is always the first one.
+
+
+** Documentation
+
+ Bison now installs various files in its docdir (which defaults to
+ '/usr/local/share/doc/bison'), including the three fully blown examples
+ extracted from the documentation:
+
+ - rpcalc
+ Reverse polish calculator, a simple introductory example.
+ - mfcalc
+ Multi-function Calc, a calculator with memory and functions and located
+ error messages.
+ - calc++
+ a calculator in C++ using variant support and token constructors.
+
+* Noteworthy changes in release 3.0.2 (2013-12-05) [stable]
+
+** Bug fixes
+
+*** Generated source files when errors are reported
+
+ When warnings are issued and -Werror is set, bison would still generate
+ the source files (*.c, *.h...). As a consequence, some runs of "make"
+ could fail the first time, but not the second (as the files were generated
+ anyway).
+
+ This is fixed: bison no longer generates this source files, but, of
+ course, still produces the various reports (*.output, *.xml, etc.).
+
+*** %empty is used in reports
+
+ Empty right-hand sides are denoted by '%empty' in all the reports (text,
+ dot, XML and formats derived from it).
+
+*** YYERROR and variants
+
+ When C++ variant support is enabled, an error triggered via YYERROR, but
+ not caught via error recovery, resulted in a double deletion.
+
+* Noteworthy changes in release 3.0.1 (2013-11-12) [stable]
+
+** Bug fixes
+
+*** Errors in caret diagnostics
+
+ On some platforms, some errors could result in endless diagnostics.
+
+*** Fixes of the -Werror option
+
+ Options such as "-Werror -Wno-error=foo" were still turning "foo"
+ diagnostics into errors instead of warnings. This is fixed.
+
+ Actually, for consistency with GCC, "-Wno-error=foo -Werror" now also
+ leaves "foo" diagnostics as warnings. Similarly, with "-Werror=foo
+ -Wno-error", "foo" diagnostics are now errors.
+
+*** GLR Predicates
+
+ As demonstrated in the documentation, one can now leave spaces between
+ "%?" and its "{".
+
+*** Installation
+
+ The yacc.1 man page is no longer installed if --disable-yacc was
+ specified.
+
+*** Fixes in the test suite
+
+ Bugs and portability issues.
+
+* Noteworthy changes in release 3.0 (2013-07-25) [stable]
+
** WARNING: Future backward-incompatibilities!
Like other GNU packages, Bison will start using some of the C99 features
Changes in Bison 2.7 introduced a dependency on FILE and fprintf when
locations are enabled. This is fixed.
+*** Warnings about useless %pure-parser/%define api.pure are restored
+
** Diagnostics reported by Bison
Most of these features were contributed by Théophile Ranquet and Victor
%param {arg1_type *arg1} {arg2_type *arg2}
+** Types of values for %define variables
+
+ Bison used to make no difference between '%define foo bar' and '%define
+ foo "bar"'. The former is now called a 'keyword value', and the latter a
+ 'string value'. A third kind was added: 'code values', such as '%define
+ foo {bar}'.
+
+ Keyword variables are used for fixed value sets, e.g.,
+
+ %define lr.type lalr
+
+ Code variables are used for value in the target language, e.g.,
+
+ %define api.value.type {struct semantic_type}
+
+ String variables are used remaining cases, e.g. file names.
+
** Variable api.token.prefix
The variable api.token.prefix changes the way tokens are identified in
with identifiers in the target language. For instance
%token FILE for ERROR
- %define api.token.prefix "TOK_"
+ %define api.token.prefix {TOK_}
%%
start: FILE for ERROR;
yylval.ival = 42; return INT;
yylval.sval = "42"; return STRING;
- The %define variable api.value.type supports several special values. The
- keyword value 'union' means that the user provides genuine types, not
+ The %define variable api.value.type supports both keyword and code values.
+
+ The keyword value 'union' means that the user provides genuine types, not
union member names such as "ival" and "sval" above (WARNING: will fail if
-y/--yacc/%yacc is enabled).
%token <int> INT "integer"
%token <std::string> STRING "string"
- Values between braces denote user defined types. This is where YYSTYPE
+ Code values (in braces) denote user defined types. This is where YYSTYPE
used to be used.
%code requires
** Java skeleton improvements
- Contributed by Paolo Bonzini.
-
The constants for token names were moved to the Lexer interface. Also, it
is possible to add code to the parser's constructors using "%code init"
and "%define init_throws".
+ Contributed by Paolo Bonzini.
+
+ The Java skeleton now supports push parsing.
+ Contributed by Dennis Heimbigner.
** C++ skeletons improvements
...
}
+*** C++ locations
+
+ There are operator- and operator-= for 'location'. Negative line/column
+ increments can no longer underflow the resulting value.
+
+* Noteworthy changes in release 2.7.1 (2013-04-15) [stable]
+
+** Bug fixes
+
+*** Fix compiler attribute portability (yacc.c)
+
+ With locations enabled, __attribute__ was used unprotected.
+
+*** Fix some compiler warnings (lalr1.cc)
+
* Noteworthy changes in release 2.7 (2012-12-12) [stable]
** Bug fixes
-----
-Copyright (C) 1995-2013 Free Software Foundation, Inc.
+Copyright (C) 1995-2015 Free Software Foundation, Inc.
This file is part of Bison, the GNU Parser Generator.