]> git.saurik.com Git - bison.git/blobdiff - NEWS
* data/bison.m4: Update comments for rename to muscle-tab.h.
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 76d8f4b2f3a1ede1c8f2fe43654100c5c500cd20..d585139065ea643b3c6789215dce776993404682 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,7 +3,22 @@ Bison News
 
 * Changes in version ?.? (????-??-??):
 
 
 * Changes in version ?.? (????-??-??):
 
-** Java skeleton improvements:
+** Additional yylex/yyparse arguments
+
+  The new directive %param declare additional argument to both yylex
+  and yyparse.  The %lex-param, %parse-param, and %param directive
+  support one or more arguments.  Instead of
+
+      %lex-param   {arg1_type *arg1}
+      %lex-param   {arg2_type *arg2}
+      %parse-param {arg1_type *arg1}
+      %parse-param {arg2_type *arg2}
+
+  one may now declare
+
+      %param {arg1_type *arg1} {arg2_type *arg2}
+
+** Java skeleton improvements
 
   The constants for token names were moved to the Lexer interface.
   Also, it is possible to add code to the parser's constructors using
 
   The constants for token names were moved to the Lexer interface.
   Also, it is possible to add code to the parser's constructors using
@@ -25,8 +40,44 @@ Bison News
   use these prefixed token names, although the grammar itself still
   uses the short names (as in the sample rule given above).
 
   use these prefixed token names, although the grammar itself still
   uses the short names (as in the sample rule given above).
 
+** Variable api.namespace
+
+  The "namespace" variable is renamed "api.namespace".  Backward
+  compatibility is ensured, but upgrading is recommended.
+
+** Variable parse.error
+
+  The variable error controls the verbosity of error messages.  The
+  use of the %error-verbose directive is deprecated in favor of
+  %define parse.error "verbose".
+
 * Changes in version 2.5 (????-??-??):
 
 * Changes in version 2.5 (????-??-??):
 
+** Named References Support
+
+  Historically, Yacc and Bison have supported positional references
+  ($n, $$) to allow access to symbol values from inside of semantic
+  actions code.
+
+  Starting from this version, Bison can also accept named references.
+  When no ambiguity is possible, original symbol names may be used
+  as named references:
+
+    if_stmt : 'if' cond_expr 'then' then_stmt ';'
+    { $if_stmt = mk_if_stmt($cond_expr, $then_stmt); }
+
+  In the more common case, explicit names may be declared:
+
+    stmt[res] : 'if' expr[cond] 'then' stmt[then] 'else' stmt[else] ';'
+    { $res = mk_if_stmt($cond, $then, $else); }
+
+  Location information is also accessible using @name syntax.  When
+  accessing symbol names containing dots or dashes, explicit bracketing
+  ($[sym.1]) must be used.
+
+  These features are experimental in this version.  More user feedback
+  will help to stabilize them.
+
 ** IELR(1) and Canonical LR(1) Support
 
   IELR(1) is a minimal LR(1) parser table generation algorithm.  That
 ** IELR(1) and Canonical LR(1) Support
 
   IELR(1) is a minimal LR(1) parser table generation algorithm.  That
@@ -44,9 +95,9 @@ Bison News
   default.  You can specify the type of parser tables in the grammar
   file with these directives:
 
   default.  You can specify the type of parser tables in the grammar
   file with these directives:
 
-    %define lr.type "LALR"
-    %define lr.type "IELR"
-    %define lr.type "canonical LR"
+    %define lr.type lalr
+    %define lr.type ielr
+    %define lr.type canonical-lr
 
   The default reduction optimization in the parser tables can also be
   adjusted using `%define lr.default-reductions'.  See the documentation
 
   The default reduction optimization in the parser tables can also be
   adjusted using `%define lr.default-reductions'.  See the documentation
@@ -57,21 +108,34 @@ Bison News
   These features are experimental.  More user feedback will help to
   stabilize them.
 
   These features are experimental.  More user feedback will help to
   stabilize them.
 
-** %define can now be invoked via the command line.
+** Unrecognized %code qualifiers are now an error not a warning.
+
+** %define improvements.
+
+*** Unrecognized variables are now an error not a warning.
 
 
-  Each of these bison command-line options
+*** Multiple invocations for any variable is now an error not a warning.
 
 
-    -D NAME=VALUE
-    --define=NAME=VALUE
+*** Can now be invoked via the command line.
+
+  Each of these command-line options
+
+    -D NAME[=VALUE]
+    --define=NAME[=VALUE]
+
+    -F NAME[=VALUE]
+    --force-define=NAME[=VALUE]
 
   is equivalent to this grammar file declaration
 
 
   is equivalent to this grammar file declaration
 
-    %define NAME "VALUE"
+    %define NAME ["VALUE"]
 
 
-  for any NAME and VALUE.  Omitting `=VALUE' on the command line is
-  equivalent to omitting `"VALUE"' in the declaration.
+  except that the manner in which Bison processes multiple definitions
+  for the same NAME differs.  Most importantly, -F and --force-define
+  quietly override %define, but -D and --define do not.  For further
+  details, see the section "Bison Options" in the Bison manual.
 
 
-** %define variables renamed.
+*** Variables renamed.
 
   The following %define variables
 
 
   The following %define variables
 
@@ -86,7 +150,18 @@ Bison News
   The old names are now deprecated but will be maintained indefinitely
   for backward compatibility.
 
   The old names are now deprecated but will be maintained indefinitely
   for backward compatibility.
 
-** Symbols names
+*** Values no longer need to be quoted in grammar file.
+
+  If a %define value is an identifier, it no longer needs to be placed
+  within quotations marks.  For example,
+
+    %define api.push-pull "push"
+
+  can be rewritten as
+
+    %define api.push-pull push
+
+** Symbol names.
 
   Consistently with directives (such as %error-verbose) and variables
   (e.g. push-pull), symbol names may include dashes in any position,
 
   Consistently with directives (such as %error-verbose) and variables
   (e.g. push-pull), symbol names may include dashes in any position,
@@ -115,8 +190,32 @@ Bison News
   about a missing semicolon where it did not before.  Future releases of
   Bison will cease to append semicolons entirely.
 
   about a missing semicolon where it did not before.  Future releases of
   Bison will cease to append semicolons entirely.
 
+** Character literals not of length one.
+
+  Previously, Bison quietly converted all character literals to length
+  one.  For example, without warning, Bison interpreted the operators in
+  the following grammar to be the same token:
+
+    exp: exp '++'
+       | exp '+' exp
+       ;
+
+  Bison now warns when a character literal is not of length one.  In
+  some future release, Bison will report an error instead.
+
+** Verbose error messages fixed for nonassociative tokens.
+
+  When %error-verbose is specified, syntax error messages produced by
+  the generated parser include the unexpected token as well as a list of
+  expected tokens.  Previously, this list erroneously included tokens
+  that would actually induce a syntax error because conflicts for them
+  were resolved with %nonassoc.  Such tokens are now properly omitted
+  from the list.
+
 * Changes in version 2.4.2 (????-??-??):
 
 * Changes in version 2.4.2 (????-??-??):
 
+** Detection of GNU M4 1.4.6 or newer during configure is improved.
+
 ** %code is now a permanent feature.
 
   A traditional Yacc prologue directive is written in the form:
 ** %code is now a permanent feature.
 
   A traditional Yacc prologue directive is written in the form:
@@ -140,6 +239,12 @@ Bison News
   Bison's Java feature as a whole including its current usage of %code
   is still considered experimental.
 
   Bison's Java feature as a whole including its current usage of %code
   is still considered experimental.
 
+** Internationalization.
+
+  Fix a regression introduced in Bison 2.4: Under some circumstances,
+  message translations were not installed although supported by the
+  host system.
+
 * Changes in version 2.4.1 (2008-12-11):
 
 ** In the GLR defines file, unexpanded M4 macros in the yylval and yylloc
 * Changes in version 2.4.1 (2008-12-11):
 
 ** In the GLR defines file, unexpanded M4 macros in the yylval and yylloc