]> git.saurik.com Git - bison.git/blobdiff - NEWS
lalr1.cc: fix the support of YYERROR with variants
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 60a62e1de44d8f3f590e41da06a724931f74803d..29cfe727001474d9526921e73a27e5550250ebd8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,40 @@ GNU Bison NEWS
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
+
+* Noteworthy changes in release 3.0.1 (2013-11-12) [stable]
+
+** Bug fixes
+
+*** Errors in caret diagnostics
+
+  On some platforms, some errors could result in endless diagnostics.
+
+*** Fixes of the -Werror option
+
+  Options such as "-Werror -Wno-error=foo" were still turning "foo"
+  diagnostics into errors instead of warnings.  This is fixed.
+
+  Actually, for consistency with GCC, "-Wno-error=foo -Werror" now also
+  leaves "foo" diagnostics as warnings.  Similarly, with "-Werror=foo
+  -Wno-error", "foo" diagnostics are now errors.
+
+*** GLR Predicates
+
+  As demonstrated in the documentation, one can now leave spaces between
+  "%?" and its "{".
+
+*** Installation
+
+  The yacc.1 man page is no longer installed if --disable-yacc was
+  specified.
+
+*** Fixes in the test suite
+
+  Bugs and portability issues.
+
+* Noteworthy changes in release 3.0 (2013-07-25) [stable]
+
 ** WARNING: Future backward-incompatibilities!
 
   Like other GNU packages, Bison will start using some of the C99 features
@@ -62,6 +96,8 @@ GNU Bison NEWS
   Changes in Bison 2.7 introduced a dependency on FILE and fprintf when
   locations are enabled.  This is fixed.
 
+*** Warnings about useless %pure-parser/%define api.pure are restored
+
 ** Diagnostics reported by Bison
 
   Most of these features were contributed by Théophile Ranquet and Victor
@@ -256,6 +292,23 @@ GNU Bison NEWS
 
     %param {arg1_type *arg1} {arg2_type *arg2}
 
+** Types of values for %define variables
+
+  Bison used to make no difference between '%define foo bar' and '%define
+  foo "bar"'.  The former is now called a 'keyword value', and the latter a
+  'string value'.  A third kind was added: 'code values', such as '%define
+  foo {bar}'.
+
+  Keyword variables are used for fixed value sets, e.g.,
+
+    %define lr.type lalr
+
+  Code variables are used for value in the target language, e.g.,
+
+    %define api.value.type {struct semantic_type}
+
+  String variables are used remaining cases, e.g. file names.
+
 ** Variable api.token.prefix
 
   The variable api.token.prefix changes the way tokens are identified in
@@ -263,7 +316,7 @@ GNU Bison NEWS
   with identifiers in the target language.  For instance
 
     %token FILE for ERROR
-    %define api.token.prefix "TOK_"
+    %define api.token.prefix {TOK_}
     %%
     start: FILE for ERROR;
 
@@ -294,12 +347,13 @@ GNU Bison NEWS
     yylval.ival = 42; return INT;
     yylval.sval = "42"; return STRING;
 
-  The %define variable api.value.type supports several special values.  The
-  value "union" means that the user provides genuine types, not union member
-  names such as "ival" and "sval" above (WARNING: will fail if
+  The %define variable api.value.type supports both keyword and code values.
+
+  The keyword value 'union' means that the user provides genuine types, not
+  union member names such as "ival" and "sval" above (WARNING: will fail if
   -y/--yacc/%yacc is enabled).
 
-    %define api.value.type "union"
+    %define api.value.type union
     %token <int> INT "integer"
     %token <char *> STRING "string"
     %printer { fprintf (yyo, "%d", $$); } <int>
@@ -309,15 +363,15 @@ GNU Bison NEWS
     yylval.INT = 42; return INT;
     yylval.STRING = "42"; return STRING;
 
-  The value "variant" is somewhat equivalent, but for C++ special provision
-  is made to allow classes to be used (more about this below).
+  The keyword value variant is somewhat equivalent, but for C++ special
+  provision is made to allow classes to be used (more about this below).
 
-    %define api.value.type "variant"
+    %define api.value.type variant
     %token <int> INT "integer"
     %token <std::string> STRING "string"
 
-  Any other name is a user type to use.  This is where YYSTYPE used to be
-  used.
+  Code values (in braces) denote user defined types.  This is where YYSTYPE
+  used to be used.
 
     %code requires
     {
@@ -334,7 +388,7 @@ GNU Bison NEWS
         } u;
       };
     }
-    %define api.value.type "struct my_value"
+    %define api.value.type {struct my_value}
     %token <u.ival> INT "integer"
     %token <u.sval> STRING "string"
     %printer { fprintf (yyo, "%d", $$); } <u.ival>
@@ -496,11 +550,13 @@ 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".
+  Contributed by Paolo Bonzini.
+
+  The Java skeleton now supports push parsing.
+  Contributed by Dennis Heimbigner.
 
 ** C++ skeletons improvements
 
@@ -569,6 +625,21 @@ GNU Bison NEWS
       ...
     }
 
+*** C++ locations
+
+  There are operator- and operator-= for 'location'.  Negative line/column
+  increments can no longer underflow the resulting value.
+
+* Noteworthy changes in release 2.7.1 (2013-04-15) [stable]
+
+** Bug fixes
+
+*** Fix compiler attribute portability (yacc.c)
+
+  With locations enabled, __attribute__ was used unprotected.
+
+*** Fix some compiler warnings (lalr1.cc)
+
 * Noteworthy changes in release 2.7 (2012-12-12) [stable]
 
 ** Bug fixes