]> git.saurik.com Git - bison.git/blobdiff - NEWS
skel: better aliasing of identifiers
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index a2ea735e8faac7bd3d533ec1044e2649f5f9a920..6e499aeeff8ed93292b011a6d6d106e05d813e3f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,10 +6,13 @@ GNU Bison NEWS
 
 *** Obsolete features
 
-  Support for YYFAIL is removed (deprecated in Bison 2.4.2).
-  Support for yystype and yyltype (instead of YYSTYPE and YYLTYPE)
-  is removed (deprecated in Bison 1.875).
-  Support for YYPARSE_PARAM is removed (deprecated in Bison 1.875).
+  Support for YYFAIL is removed (deprecated in Bison 2.4.2): use YYERROR.
+
+  Support for yystype and yyltype is removed (deprecated in Bison 1.875):
+  use YYSTYPE and YYLTYPE.
+
+  Support for YYLEX_PARAM and YYPARSE_PARAM is removed (deprecated in Bison
+  1.875): use %lex-param, %parse-param, or %param.
 
 ** Warnings
 
@@ -195,6 +198,28 @@ GNU Bison NEWS
   used by the scanner, or rejecting invalid combinations from a
   factory invoked by the user actions).
 
+*** The epilogue is no longer affected by internal #defines
+
+  The glr.c skeleton uses defines such as #define yylval (yystackp->yyval) in
+  generated code.  These weren't properly undefined before the inclusion of
+  the user epilogue, so functions such as the following were butchered by the
+  preprocessor expansion:
+
+    int yylex (yy::parser::semantic_type *yylval);
+
+  This is has been fixed: yylval, ynerrs, yychar, and yylloc are now valid
+  identifiers for user-provided variables.
+
+** Renamed %define variables
+
+  The following variables have been renamed for consistency.  Backward
+  compatibility is ensured, but upgrading is recommended.
+
+    lr.default-reductions      -> lr.default-reduction
+    lr.keep-unreachable-states -> lr.keep-unreachable-state
+    namespace                  -> api.namespace
+    stype                      -> api.value.type
+
 ** Variable api.token.prefix
 
   The variable api.token.prefix changes the way tokens are identified in
@@ -211,14 +236,7 @@ GNU Bison NEWS
   use these prefixed token names, although the grammar itself still
   uses the short names (as in the sample rule given above).
 
-** Renamed %define variables
 
-  The following variables have been renamed for consistency.  Backward
-  compatibility is ensured, but upgrading is recommended.
-
-    lr.default-reductions      -> lr.default-reduction
-    lr.keep-unreachable-states -> lr.keep-unreachable-state
-    namespace                  -> api.namespace
 
 ** Variable parse.error
 
@@ -240,28 +258,70 @@ GNU Bison NEWS
   It used to be an error only if used in non GLR mode, _and_ if there are
   reduce/reduce conflicts.
 
-* Noteworthy changes in release ?.? (????-??-??) [?]
+* Noteworthy changes in release 2.7 (2012-12-12) [stable]
 
-** Changes in the format of error messages
+** Bug fixes
+
+  Warnings about uninitialized yylloc in yyparse have been fixed.
+
+  Restored C90 compliance (yet no report was ever made).
+
+** Diagnostics are improved
+
+*** Changes in the format of error messages
 
   This used to be the format of many error reports:
 
-    foo.y:5.10-24: result type clash on merge function 'merge': <t3> != <t2>
-    foo.y:4.13-27: previous declaration
+    input.y:2.7-12: %type redeclaration for exp
+    input.y:1.7-12: previous declaration
 
   It is now:
 
-    foo.y:5.10-25: result type clash on merge function 'merge': <t3> != <t2>
-    foo.y:4.13-27:     previous declaration
+    input.y:2.7-12: error: %type redeclaration for exp
+    input.y:1.7-12:     previous declaration
 
-** Exception safety (lalr1.cc)
+*** New format for error reports: carets
 
-  The parse function now catches exceptions, uses the %destructors to
-  release memory (the lookahead symbol and the symbols pushed on the stack)
-  before re-throwing the exception.
+  Caret errors have been added to Bison:
 
-  This feature is somewhat experimental.  User feedback would be
-  appreciated.
+    input.y:2.7-12: error: %type redeclaration for exp
+     %type <sval> exp
+           ^^^^^^
+    input.y:1.7-12:     previous declaration
+     %type <ival> exp
+           ^^^^^^
+
+  or
+
+    input.y:3.20-23: error: ambiguous reference: '$exp'
+     exp: exp '+' exp { $exp = $1 + $3; };
+                        ^^^^
+    input.y:3.1-3:       refers to: $exp at $$
+     exp: exp '+' exp { $exp = $1 + $3; };
+     ^^^
+    input.y:3.6-8:       refers to: $exp at $1
+     exp: exp '+' exp { $exp = $1 + $3; };
+          ^^^
+    input.y:3.14-16:     refers to: $exp at $3
+     exp: exp '+' exp { $exp = $1 + $3; };
+                  ^^^
+
+  The default behaviour for now is still not to display these unless
+  explictly asked with -fcaret (or -fall). However, in a later release, it
+  will be made the default behavior (but may still be deactivated with
+  -fno-caret).
+
+** New value for %define variable: api.pure full
+
+  The %define variable api.pure requests a pure (reentrant) parser. However,
+  for historical reasons, using it in a location-tracking Yacc parser
+  resulted in a yyerror function that did not take a location as a
+  parameter. With this new value, the user may request a better pure parser,
+  where yyerror does take a location as a parameter (in location-tracking
+  parsers).
+
+  The use of "%define api.pure true" is deprecated in favor of this new
+  "%define api.pure full".
 
 ** New %define variable: api.location.type (glr.cc, lalr1.cc, lalr1.java)
 
@@ -282,7 +342,16 @@ GNU Bison NEWS
   position_type are deprecated in favor of api.location.type and
   api.position.type.
 
-** Graphviz improvements
+** Exception safety (lalr1.cc)
+
+  The parse function now catches exceptions, uses the %destructors to
+  release memory (the lookahead symbol and the symbols pushed on the stack)
+  before re-throwing the exception.
+
+  This feature is somewhat experimental.  User feedback would be
+  appreciated.
+
+** Graph improvements in DOT and XSLT
 
   The graphical presentation of the states is more readable: their shape is
   now rectangular, the state number is clearly displayed, and the items are
@@ -291,6 +360,43 @@ GNU Bison NEWS
   The reductions are now explicitly represented as transitions to other
   diamond shaped nodes.
 
+  These changes are present in both --graph output and xml2dot.xsl XSLT
+  processing, with minor (documented) differences.
+
+** %language is no longer an experimental feature.
+
+  The introduction of this feature, in 2.4, was four years ago. The
+  --language option and the %language directive are no longer experimental.
+
+** Documentation
+
+  The sections about shift/reduce and reduce/reduce conflicts resolution
+  have been fixed and extended.
+
+  Although introduced more than four years ago, XML and Graphviz reports
+  were not properly documented.
+
+  The translation of mid-rule actions is now described.
+
+* Noteworthy changes in release 2.6.5 (2012-11-07) [stable]
+
+  We consider compiler warnings about Bison generated parsers to be bugs.
+  Rather than working around them in your own project, please consider
+  reporting them to us.
+
+** Bug fixes
+
+  Warnings about uninitialized yylval and/or yylloc for push parsers with a
+  pure interface have been fixed for GCC 4.0 up to 4.8, and Clang 2.9 to
+  3.2.
+
+  Other issues in the test suite have been addressed.
+
+  Nul characters are correctly displayed in error messages.
+
+  When possible, yylloc is correctly initialized before calling yylex.  It
+  is no longer necessary to initialize it in the %initial-action.
+
 * Noteworthy changes in release 2.6.4 (2012-10-23) [stable]
 
   Bison 2.6.3's --version was incorrect.  This release fixes this issue.
@@ -657,6 +763,7 @@ GNU Bison NEWS
 
   These features are experimental in this version.  More user feedback
   will help to stabilize them.
+  Contributed by Alex Rozenman.
 
 ** IELR(1) and canonical LR(1):
 
@@ -1173,6 +1280,7 @@ GNU Bison NEWS
 
   The current Java interface is experimental and may evolve.  More user
   feedback will help to stabilize it.
+  Contributed by Paolo Bonzini.
 
 ** %language
 
@@ -1186,6 +1294,7 @@ GNU Bison NEWS
   Bison can now generate an XML report of the LALR(1) automaton using the new
   "--xml" option.  The current XML schema is experimental and may evolve.  More
   user feedback will help to stabilize it.
+  Contributed by Wojciech Polak.
 
 ** The grammar file may now specify the name of the parser header file using
   %defines.  For example: