doc: cleanup.

* NEWS (2.5): Try to sort entries according to how interesting
users might find them.
This commit is contained in:
Joel E. Denny
2010-12-19 22:15:57 -05:00
parent f1b238df18
commit d397d9f08c
2 changed files with 86 additions and 80 deletions

160
NEWS
View File

@@ -157,14 +157,16 @@ Bison News
LAC is an experimental feature. More user feedback will help to
stabilize it.
** Unrecognized %code qualifiers are now errors not warnings.
** 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:
*** Unrecognized variables are now errors not warnings.
*** Multiple invocations for any variable is now an error not a warning.
*** Can now be invoked via the command line:
Each of these command-line options
@@ -210,45 +212,11 @@ Bison News
%define api.push-pull push
** Grammar symbol names can now contain dashes:
*** Unrecognized variables are now errors not warnings.
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).
*** Multiple invocations for any variable is now an error not a warning.
** YYFAIL now produces warnings and Java parsers no longer implement it:
YYFAIL has existed for many years as an undocumented feature of
deterministic parsers in C generated by Bison. More recently, it was
a documented feature of Bison's experimental Java parsers. As
promised in Bison 2.4.2's NEWS entry, any appearance of YYFAIL in a
semantic action now produces a deprecation warning, and Java parsers
no longer implement YYFAIL at all. For further details, including a
discussion of how to suppress C preprocessor warnings about YYFAIL
being unused, see the Bison 2.4.2 NEWS entry.
** Temporary hack for adding a semicolon to the user action:
Previously, Bison appended a semicolon to every user action for
reductions when the output language defaulted to C (specifically, when
neither %yacc, %language, %skeleton, or equivalent command-line
options were specified). This allowed actions such as
exp: exp "+" exp { $$ = $1 + $3 };
instead of
exp: exp "+" exp { $$ = $1 + $3; };
As a first step in removing this misfeature, Bison now issues a
warning when it appends a semicolon. Moreover, in cases where Bison
cannot easily determine whether a semicolon is needed (for example, an
action ending with a cpp directive or a braced compound initializer),
it no longer appends one. Thus, the C compiler might now complain
about a missing semicolon where it did not before. Future releases of
Bison will cease to append semicolons entirely.
** Unrecognized %code qualifiers are now errors not warnings.
** Character literals not of length one:
@@ -263,44 +231,6 @@ Bison News
Bison now warns when a character literal is not of length one. In
some future release, Bison will start reporting an error instead.
** 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 %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
invalid tokens 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. Bison's new LAC implementation,
described above, eliminates this problem and the need for
canonical LR. However, LAC is still experimental and is disabled
by default.
** Destructor calls fixed for lookaheads altered in semantic actions:
Previously for deterministic parsers in C, if a user semantic action
@@ -350,6 +280,76 @@ Bison News
the user %code sections so that its #ifndef guard does not try to
override the user's YYLLOC_DEFAULT if provided.
** YYFAIL now produces warnings and Java parsers no longer implement it:
YYFAIL has existed for many years as an undocumented feature of
deterministic parsers in C generated by Bison. More recently, it was
a documented feature of Bison's experimental Java parsers. As
promised in Bison 2.4.2's NEWS entry, any appearance of YYFAIL in a
semantic action now produces a deprecation warning, and Java parsers
no longer implement YYFAIL at all. For further details, including a
discussion of how to suppress C preprocessor warnings about YYFAIL
being unused, see the Bison 2.4.2 NEWS entry.
** Temporary hack for adding a semicolon to the user action:
Previously, Bison appended a semicolon to every user action for
reductions when the output language defaulted to C (specifically, when
neither %yacc, %language, %skeleton, or equivalent command-line
options were specified). This allowed actions such as
exp: exp "+" exp { $$ = $1 + $3 };
instead of
exp: exp "+" exp { $$ = $1 + $3; };
As a first step in removing this misfeature, Bison now issues a
warning when it appends a semicolon. Moreover, in cases where Bison
cannot easily determine whether a semicolon is needed (for example, an
action ending with a cpp directive or a braced compound initializer),
it no longer appends one. Thus, the C compiler might now complain
about a missing semicolon where it did not before. Future releases of
Bison will cease to append semicolons entirely.
** 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 %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
invalid tokens 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. Bison's new LAC implementation,
described above, eliminates this problem and the need for
canonical LR. However, LAC is still experimental and is disabled
by default.
* Changes in version 2.4.3 (2010-08-05):
** Bison now obeys -Werror and --warnings=error for warnings about