]> git.saurik.com Git - bison.git/blobdiff - NEWS
Add comparison operators for C++ location classes. Discussed at
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 3dca4fe0919a92abdabb0e1d706df9ea4c3ba71e..d841db6f6fa6205e4b8cc1d648fe25f61c7ef180 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,72 @@
 Bison News
 ----------
 
+Changes in version 2.3+:
+
+* Except for LALR(1) parsers in C with POSIX Yacc emulation enabled (with `-y',
+  `--yacc', or `%yacc'), Bison no longer generates #define statements for
+  associating token numbers with token names.  Removing the #define statements
+  helps to sanitize the global namespace during preprocessing, but POSIX Yacc
+  requires them.  Bison still generates an enum for token names in all cases.
+
+* Handling of prologue blocks is now more consistent but potentially backward
+  incompatible.
+
+  As before, you declare prologue blocks in your grammar file with the
+  `%{ ... %}' syntax.  To generate the pre-prologue, Bison concatenates all
+  prologue blocks that you've declared before any %union.  If you've declared a
+  %union, Bison concatenates all prologue blocks that you've declared after it
+  to generate the post-prologue.  (The new %before-definitions and
+  %after-definitions have a similar effect as %union on the prologues.  See
+  below.)
+
+  Previous versions of Bison inserted the pre-prologue into both the header
+  file and the code file in all cases except for LALR(1) parsers in C.  In the
+  latter case, Bison inserted it only into the code file.  For parsers in C++,
+  the point of insertion was before any token definitions (which associate
+  token numbers with names).  For parsers in C, the point of insertion was
+  after the token definitions.
+
+  Now, Bison never inserts the pre-prologue into the header file.  In the code
+  file, it always inserts it before the token definitions.
+
+* Bison now provides the %before-definitions and %after-definitions directives.
+
+  For example, in your grammar file:
+
+    %{
+      /* A pre-prologue block.  For Yacc portability, Bison no longer puts this
+       * in the header file.  In the code file, Bison inserts it before any
+       * %before-definitions blocks.  */
+    %}
+    %before-definitions {
+      /* Bison inserts this into both the header file and code file.  In both
+       * files, the point of insertion is before any Bison-generated token,
+       * semantic type, location type, and class definitions.  This is a good
+       * place to define %union dependencies, for example.  */
+    }
+    %union {
+      /* With previous versions of Bison, the first %union in your grammar file
+       * separated the pre-prologue blocks from the post-prologue blocks.  Now,
+       * the first %union, %before-definitions, or %after-definitions does
+       * that.  */
+    }
+    %after-definitions {
+      /* If you want something in the header file and in the code file and it
+       * depends on any of the Bison-generated definitions in the header file,
+       * put it here.  */
+    }
+    %{
+      /* A post-prologue block.  If you want something in the code file but not
+       * in the header file and it depends on Bison-generated definitions, put
+       * it here.  In the code file, Bison inserts it after any
+       * %after-definitions blocks.  */
+    %}
+
+* The option `--report=look-ahead' has been changed to `--report=lookahead'.
+  The old spelling still works, but is not documented and may be removed
+  in a future release.
+
 Changes in version 2.3, 2006-06-05:
 
 * GLR grammars should now use `YYRECOVERING ()' instead of `YYRECOVERING',
@@ -159,8 +225,7 @@ Changes in version 2.0, 2004-12-25:
     This is a GNU extension.
 
   - The option `--report=lookahead' was changed to `--report=look-ahead'.
-    The old spelling still works, but is not documented and will be
-    removed.
+    [However, this was changed back after 2.3.]
 
   - Experimental %destructor support has been added to lalr1.cc.
 
@@ -427,8 +492,8 @@ Changes in version 1.50, 2002-10-04:
   produces additional information:
   - itemset
     complete the core item sets with their closure
-  - lookahead [changed to `look-ahead' in 1.875e and later]
-    explicitly associate look-ahead tokens to items
+  - lookahead [changed to `look-ahead' in 1.875e through 2.3, but changed back]
+    explicitly associate lookahead tokens to items
   - solved
     describe shift/reduce conflicts solving.
     Bison used to systematically output this information on top of