]> git.saurik.com Git - bison.git/blobdiff - NEWS
grammar: warn about unused precedence for symbols
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index d4f8a750283be5563c5c20bca956793ff18ccfdc..62f834b6390960c110c4d0d3804a075c834a97fa 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,21 @@ GNU Bison NEWS
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
-** Incompatible changes
+** WARNING: Future backward-incompatibilities!
+
+  Bison will stop adding a semicolon at the end of the actions (as announced
+  in the release 2.5):
+
+    foo.y:2.22: warning: a ';' might be needed at the end of action code
+     exp: "num" { $$ = $1 }
+                          ^
+    foo.y:2.22:     future versions of Bison will not add the ';'
+
+  Like other GNU packages, Bison will start using some of the C99 features
+  for its own code, especially the definition of variables after statements.
+  The generated C parsers still aim at C90.
+
+** Backward incompatible changes
 
 *** Obsolete features
 
@@ -14,7 +28,35 @@ GNU Bison NEWS
   Support for YYLEX_PARAM and YYPARSE_PARAM is removed (deprecated in Bison
   1.875): use %lex-param, %parse-param, or %param.
 
-** Warnings
+** Bug fixes
+
+*** 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 (YYSTYPE *yylval);
+
+  This is has been fixed: yylval, yynerrs, yychar, and yylloc are now valid
+  identifiers for user-provided variables.
+
+*** stdio.h is no longer needed when locations are enabled (yacc.c)
+
+  Changes in Bison 2.7 introduced a dependency on FILE and fprintf when
+  locations are enabled.  This is fixed.
+
+** Diagnostics reported by Bison
+
+  Most of these features were contributed by Théophile Ranquet and Victor
+  Santet.
+
+*** Carets
+
+  Version 2.7 introduced caret errors, for a prettier output.  These are now
+  activated by default.  The old format can still be used by invoking Bison
+  with -fno-caret (or -fnone).
 
 *** Enhancements of the -Werror option
 
@@ -156,6 +198,13 @@ GNU Bison NEWS
     bar.y: error: shift/reduce conflicts: 1 found, 0 expected
     bar.y: error: reduce/reduce conflicts: 2 found, 0 expected
 
+*** Useless precedence
+
+  Bison now warns about symbols with a declared precedence but no declared
+  associativity (i.e. declared with %precedence), and whose precedence is
+  never used.  In that case, the symbol can be safely declared with %token
+  instead, without modifying the parsing tables.
+
 ** Additional yylex/yyparse arguments
 
   The new directive %param declares additional arguments to both yylex and
@@ -173,6 +222,8 @@ GNU Bison NEWS
 
 ** Java skeleton improvements
 
+  Contributed by Paolo Bonzini.
+
   The constants for token names were moved to the Lexer interface.  Also, it
   is possible to add code to the parser's constructors using "%code init"
   and "%define init_throws".
@@ -198,6 +249,16 @@ GNU Bison NEWS
   used by the scanner, or rejecting invalid combinations from a
   factory invoked by the user actions).
 
+** 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
@@ -214,15 +275,6 @@ 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
 
   This variable controls the verbosity of error messages.  The use of the
@@ -231,6 +283,8 @@ GNU Bison NEWS
 
 ** Semantic predicates
 
+  Contributed by Paul Hilfinger.
+
   The new, experimental, semantic-predicate feature allows actions of the
   form "%?{ BOOLEAN-EXPRESSION }", which cause syntax errors (as for
   YYERROR) if the expression evaluates to 0, and are evaluated immediately
@@ -243,6 +297,12 @@ GNU Bison NEWS
   It used to be an error only if used in non GLR mode, _and_ if there are
   reduce/reduce conflicts.
 
+** Token numbering has changed to preserve the user-defined order
+
+  When declaring %token A B, the numbering for A is inferior to B. Up to now,
+  when declaring associativity at the same time, with %left (or %right,
+  %precedence, %nonassoc), B was inferior to A.
+
 * Noteworthy changes in release 2.7 (2012-12-12) [stable]
 
 ** Bug fixes
@@ -253,6 +313,8 @@ GNU Bison NEWS
 
 ** Diagnostics are improved
 
+  Contributed by Théophile Ranquet.
+
 *** Changes in the format of error messages
 
   This used to be the format of many error reports:
@@ -338,6 +400,8 @@ GNU Bison NEWS
 
 ** Graph improvements in DOT and XSLT
 
+  Contributed by Théophile Ranquet.
+
   The graphical presentation of the states is more readable: their shape is
   now rectangular, the state number is clearly displayed, and the items are
   numbered and left-justified.
@@ -779,7 +843,9 @@ GNU Bison NEWS
   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
+
+  Contributed by Joel E. Denny.
 
   Canonical LR, IELR, and LALR can suffer from a couple of problems
   upon encountering a syntax error.  First, the parser might perform
@@ -2256,7 +2322,7 @@ Output file does not redefine const for C++.
 
 -----
 
-Copyright (C) 1995-2012 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Parser Generator.