Bison now warns when a character literal is not of length one. In
some future release, Bison will report an error instead.
-** Verbose error messages fixed for nonassociative tokens.
-
- When %error-verbose is specified, syntax error messages produced by
- the generated parser include the unexpected token as well as a list of
- expected tokens. Previously, this list erroneously included tokens
- that would actually induce a syntax error because conflicts for them
- were resolved with %nonassoc. Such tokens are now properly omitted
- from the list.
+** 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
+ additional fixes are still being implemented:
+
+*** When %nonassoc is used, there can exist parser states that accept no
+ tokens, and so the parser does not always require a lookahead token
+ in order to detect a syntax error. Because no unexpected token or
+ expected tokens can then be reported, the verbose syntax error
+ message described above is suppressed, and the parser instead
+ reports the simpler message, "syntax error". Previously, this
+ suppression was sometimes erroneously triggered by %nonassoc when a
+ lookahead was actually required. Now verbose messages are
+ suppressed only when all previous lookaheads have already been
+ shifted or discarded.
+
+*** Previously, the list of expected tokens erroneously included tokens
+ that would actually induce a syntax error because conflicts for them
+ were resolved with %nonassoc in the current parser state. Such
+ tokens are now properly omitted from the list.
+
+*** Expected token lists are still often wrong due to state merging
+ (from LALR or IELR) and default reductions, which can both add and
+ subtract valid tokens. Canonical LR almost completely fixes this
+ problem by eliminating state merging and default reductions.
+ However, there is one minor problem left even when using canonical
+ LR and even after the fixes above. That is, if the resolution of a
+ conflict with %nonassoc appears in a later parser state than the one
+ at which some syntax error is discovered, the conflicted token is
+ still erroneously included in the expected token list. We are
+ currently working on a fix to eliminate this problem and to
+ eliminate the need for canonical LR.
** Destructor calls fixed for lookaheads altered in semantic actions.
the user %code sections so that its #ifndef guard does not try to
override the user's YYLLOC_DEFAULT if provided.
-* Changes in version 2.4.3 (????-??-??):
+* Changes in version 2.4.3 (2010-08-05):
** Bison now obeys -Werror and --warnings=error for warnings about
grammar rules that are useless in the parser due to conflicts.
errors in Bison 2.5. They will remain warnings, which should be
sufficient for POSIX while avoiding backward compatibility issues.
+** Minor documentation fixes.
+
* Changes in version 2.4.2 (2010-03-20):
** Some portability problems that resulted in failures and livelocks