]> git.saurik.com Git - bison.git/blobdiff - NEWS
Fix test failure reported by Tom Lane in
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index d133f1937b0cee20c3cdd3611a7561b4692b20fe..a970b34ef6ac631f6f5898fec1d0c2271794491c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,7 @@
 Bison News
 ----------
 
-Changes in version 2.3+:
+Changes in version 2.3a, 2006-09-13:
 
 * Instead of %union, you can define and use your own union type
   YYSTYPE if your grammar contains at least one <type> tag.
@@ -12,6 +12,28 @@ Changes in version 2.3+:
 * Locations columns and lines start at 1.
   In accordance with the GNU Coding Standards and Emacs.
 
+* You may now declare per-type and default %destructor's and %printer's:
+
+  For example:
+
+    %union { char *string; }
+    %token <string> STRING1
+    %token <string> STRING2
+    %type  <string> string1
+    %type  <string> string2
+    %union { char character; }
+    %token <character> CHR
+    %type  <character> chr
+    %destructor { free ($$); } %symbol-default
+    %destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1
+    %destructor { } <character>
+
+  guarantees that, when the parser discards any user-defined symbol that has a
+  semantic type tag other than `<character>', it passes its semantic value to
+  `free'.  However, when the parser discards a `STRING1' or a `string1', it
+  also prints its line number to `stdout'.  It performs only the second
+  `%destructor' in this case, so it invokes `free' only once.
+
 * 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