]> git.saurik.com Git - bison.git/blobdiff - NEWS
2007-11-08 Paolo Bonzini <bonzini@gnu.org>
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 854023ccd5bf91df0a37ba24213b3d79ca231efc..18e71b7d441d61694009d0cb3279505793f8045c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,17 +3,30 @@ Bison News
 
 Changes in version 2.3a+ (????-??-??):
 
 
 Changes in version 2.3a+ (????-??-??):
 
-* Previously, Bison sometimes generated parser tables with states that were
-  unreachable due to conflicts in predecessor states.  Bison now:
+* The quotes around NAME that used to be required in the following directive
+  are now deprecated:
 
 
-    1. Removes unreachable states.
+    %define NAME "VALUE"
 
 
-    2. Does not report any conflicts that appeared in unreachable states.
-       WARNING: As a result, you may need to update %expect and %expect-rr
-       directives in existing grammar files.
+* The directive `%pure-parser' is now deprecated in favor of:
 
 
-    3. For any rule used only in such states, Bison now reports the rule as
-       "never reduced because of conflicts".
+    %define api.pure
+
+  which has the same effect except that Bison is more careful to warn about
+  unreasonable usage in the latter case.
+
+* Push Parsing
+
+  Bison can now generate an LALR(1) parser in C with a push interface.  That
+  is, instead of invoking yyparse, which pulls tokens from `yylex', you can
+  push one token at a time to the parser using `yypush_parse', which will
+  return to the caller after processing each token.  By default, the push
+  interface is disabled.  Either of the following directives will enable it:
+
+    %define api.push_pull "push" // Just push; does not require yylex.
+    %define api.push_pull "both" // Push and pull; requires yylex.
+
+  See the new section `A Push Parser' in the Bison manual for details.
 
 * The -g and --graph options now output graphs in Graphviz DOT format,
   not VCG format.
 
 * The -g and --graph options now output graphs in Graphviz DOT format,
   not VCG format.
@@ -28,6 +41,39 @@ Changes in version 2.3a+ (????-??-??):
 
     %defines "parser.h"
 
 
     %defines "parser.h"
 
+* Unreachable State Removal
+
+  Previously, Bison sometimes generated parser tables containing unreachable
+  states.  A state can become unreachable during conflict resolution if Bison
+  disables a shift action leading to it from a predecessor state.  Bison now:
+
+    1. Removes unreachable states.
+
+    2. Does not report any conflicts that appeared in unreachable states.
+       WARNING: As a result, you may need to update %expect and %expect-rr
+       directives in existing grammar files.
+
+    3. For any rule used only in such states, Bison now reports the rule as
+       "never reduced because of conflicts".
+
+  This feature can be disabled with the following directive:
+
+    %define lr.keep_unreachable_states
+
+  See the %define entry in the `Bison Declaration Summary' in the Bison manual
+  for further discussion.
+
+* Lookahead Set Correction in the `.output' Report
+  
+  When instructed to generate a `.output' file including lookahead sets
+  (using `--report=lookahead', for example), Bison now prints each reduction's
+  lookahead set only next to the associated state's one item that (1) is
+  associated with the same rule as the reduction and (2) has its dot at the end
+  of its RHS.  Previously, Bison also erroneously printed the lookahead set
+  next to all of the state's other items associated with the same rule.  This
+  bug affected only the `.output' file and not the generated parser source
+  code.
+
 * The `=' that used to be required in the following directives is now
   deprecated:
 
 * The `=' that used to be required in the following directives is now
   deprecated:
 
@@ -35,12 +81,9 @@ Changes in version 2.3a+ (????-??-??):
     %name-prefix "c_"
     %output "parser.c"
 
     %name-prefix "c_"
     %output "parser.c"
 
-* The quotes around NAME that used to be required in the following directive
-  are now deprecated:
-
-    %define NAME "VALUE"
+* An Alternative to `%{...%}' -- `%code QUALIFIER {CODE}'
 
 
-* Bison 2.3a provided a new set of directives as a more flexible alternative to
+  Bison 2.3a provided a new set of directives as a more flexible alternative to
   the traditional Yacc prologue blocks.  Those have now been consolidated into
   a single %code directive with an optional qualifier field, which identifies
   the purpose of the code and thus the location(s) where Bison should generate
   the traditional Yacc prologue blocks.  Those have now been consolidated into
   a single %code directive with an optional qualifier field, which identifies
   the purpose of the code and thus the location(s) where Bison should generate
@@ -51,8 +94,8 @@ Changes in version 2.3a+ (????-??-??):
     3. `%code provides {CODE}' replaces `%end-header    {CODE}'
     4. `%code top      {CODE}' replaces `%before-header {CODE}'
 
     3. `%code provides {CODE}' replaces `%end-header    {CODE}'
     4. `%code top      {CODE}' replaces `%before-header {CODE}'
 
-  See the %code entries in `Appendix A Bison Symbols' in the Bison manual for a
-  summary of the new functionality.  See the new section `Prologue
+  See the %code entries in section `Bison Declaration Summary' in the Bison
+  manual for a summary of the new functionality.  See the new section `Prologue
   Alternatives' for a detailed discussion including the advantages of %code
   over the traditional Yacc prologues.
 
   Alternatives' for a detailed discussion including the advantages of %code
   over the traditional Yacc prologues.
 
@@ -79,7 +122,9 @@ Changes in version 2.3a+ (????-??-??):
   To enable these warnings, specify the flag `--warnings=midrule-values' or
   `-W', which is a synonym for `--warnings=all'.
 
   To enable these warnings, specify the flag `--warnings=midrule-values' or
   `-W', which is a synonym for `--warnings=all'.
 
-* Bison now recognizes two separate kinds of default %destructor's and
+* Default %destructor or %printer with `<*>' or `<>'
+
+  Bison now recognizes two separate kinds of default %destructor's and
   %printer's:
 
     1. Place `<*>' in a %destructor/%printer symbol list to define a default
   %printer's:
 
     1. Place `<*>' in a %destructor/%printer symbol list to define a default
@@ -930,17 +975,15 @@ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
 
 This file is part of Bison, the GNU Compiler Compiler.
 
 
 This file is part of Bison, the GNU Compiler Compiler.
 
-Bison is free software; you can redistribute it and/or modify
+This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
 
 
-Bison is distributed in the hope that it will be useful,
+This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with autoconf; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.