* Changes in version 2.5 (????-??-??):
+** Grammar symbol names can now contain non-initial dashes:
+
+ Consistently with directives (such as %error-verbose) and with
+ %define variables (e.g. push-pull), grammar symbol names may contain
+ dashes in any position except the beginning. This is a GNU
+ extension over POSIX Yacc. Thus, use of this extension is reported
+ by -Wyacc and rejected in Yacc mode (--yacc).
+
** Named references:
Historically, Yacc and Bison have supported positional references
%define lr.type ielr
%define lr.type canonical-lr
- The default reduction optimization in the parser tables can also be
- adjusted using `%define lr.default-reductions'. See the documentation
- for `%define lr.type' and `%define lr.default-reductions' in the
- section `Bison Declaration Summary' in the Bison manual for the
- details.
+ The default-reduction optimization in the parser tables can also be
+ adjusted using `%define lr.default-reductions'. For details on both
+ of these features, see the new section `Tuning LR' in the Bison
+ manual.
These features are experimental. More user feedback will help to
stabilize them.
-** LAC (lookahead correction) for syntax error handling:
+** LAC (Lookahead Correction) for syntax error handling:
Canonical LR, IELR, and LALR can suffer from a couple of problems
upon encountering a syntax error. First, the parser might perform
additional parser stack reductions before discovering the syntax
- error. Such reductions perform user semantic actions that are
+ error. Such reductions can perform user semantic actions that are
unexpected because they are based on an invalid token, and they
cause error recovery to begin in a different syntactic context than
the one in which the invalid token was encountered. Second, when
- verbose error messages are enabled (with %error-verbose or `#define
- YYERROR_VERBOSE'), the expected token list in the syntax error
- message can both contain invalid tokens and omit valid tokens.
+ verbose error messages are enabled (with %error-verbose or the
+ obsolete `#define YYERROR_VERBOSE'), the expected token list in the
+ syntax error message can both contain invalid tokens and omit valid
+ tokens.
The culprits for the above problems are %nonassoc, default
reductions in inconsistent states, and parser state merging. Thus,
%nonassoc is used or if default reductions are enabled for
inconsistent states.
- LAC is a new mechanism within the parsing algorithm that completely
- solves these problems for canonical LR, IELR, and LALR without
- sacrificing %nonassoc, default reductions, or state mering. When
- LAC is in use, canonical LR and IELR behave exactly the same for
- both syntactically acceptable and syntactically unacceptable input.
+ LAC is a new mechanism within the parsing algorithm that solves
+ these problems for canonical LR, IELR, and LALR without sacrificing
+ %nonassoc, default reductions, or state merging. When LAC is in
+ use, canonical LR and IELR behave almost exactly the same for both
+ syntactically acceptable and syntactically unacceptable input.
While LALR still does not support the full language-recognition
power of canonical LR and IELR, LAC at least enables LALR's syntax
error handling to correctly reflect LALR's language-recognition
%define parse.lac full
- See the documentation for `%define parse.lac' in the section `Bison
- Declaration Summary' in the Bison manual for additional details.
+ See the new section `LAC' in the Bison manual for additional
+ details including a few caveats.
LAC is an experimental feature. More user feedback will help to
stabilize it.
-** Grammar symbol names can now contain dashes:
-
- Consistently with directives (such as %error-verbose) and variables
- (e.g. push-pull), grammar symbol names may include dashes in any
- position, similarly to periods and underscores. This is GNU
- extension over POSIX Yacc whose use is reported by -Wyacc, and
- rejected in Yacc mode (--yacc).
-
** %define improvements:
*** Can now be invoked via the command line:
** Verbose syntax error message fixes:
- When %error-verbose or `#define YYERROR_VERBOSE' is specified,
- syntax error messages produced by the generated parser include the
- unexpected token as well as a list of expected tokens. The effect
- of %nonassoc on these verbose messages has been corrected in two
- ways, but a complete fix requires LAC, described above:
+ When %error-verbose or the obsolete `#define YYERROR_VERBOSE' is
+ specified, syntax error messages produced by the generated parser
+ include the unexpected token as well as a list of expected tokens.
+ The effect of %nonassoc on these verbose messages has been corrected
+ in two ways, but a more complete fix requires LAC, described above:
*** When %nonassoc is used, there can exist parser states that accept no
tokens, and so the parser does not always require a lookahead token
canonical LR. However, LAC is still experimental and is disabled
by default.
+** Java skeleton fixes:
+
+*** A location handling bug has been fixed.
+
+*** The top element of each of the value stack and location stack is now
+ cleared when popped so that it can be garbage collected.
+
+*** Parser traces now print the top element of the stack.
+
+** -W/--warnings fixes:
+
+*** Bison now properly recognizes the "no-" versions of categories:
+
+ For example, given the following command line, Bison now enables all
+ warnings except warnings for incompatibilities with POSIX Yacc:
+
+ bison -Wall,no-yacc gram.y
+
+*** Bison now treats S/R and R/R conflicts like other warnings:
+
+ Previously, conflict reports were independent of Bison's normal
+ warning system. Now, Bison recognizes the warning categories
+ "conflicts-sr" and "conflicts-rr". This change has important
+ consequences for the -W and --warnings command-line options. For
+ example:
+
+ bison -Wno-conflicts-sr gram.y # S/R conflicts not reported
+ bison -Wno-conflicts-rr gram.y # R/R conflicts not reported
+ bison -Wnone gram.y # no conflicts are reported
+ bison -Werror gram.y # any conflict is an error
+
+ However, as before, if the %expect or %expect-rr directive is
+ specified, an unexpected number of conflicts is an error, and an
+ expected number of conflicts is not reported, so -W and --warning
+ then have no effect on the conflict report.
+
+*** The "none" category no longer disables a preceding "error":
+
+ For example, for the following command line, Bison now reports
+ errors instead of warnings for incompatibilities with POSIX Yacc:
+
+ bison -Werror,none,yacc gram.y
+
+*** The "none" category now disables all Bison warnings.
+
+ Previously, the "none" category disabled only Bison warnings for
+ which there existed a specific -W/--warning category. However,
+ given the following command line, Bison is now guaranteed to
+ suppress all warnings:
+
+ bison -Wnone gram.y
+
* Changes in version 2.4.3 (2010-08-05):
** Bison now obeys -Werror and --warnings=error for warnings about
-----
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-Inc.
+Copyright (C) 1995-2011 Free Software Foundation, Inc.
This file is part of Bison, the GNU Parser Generator.