X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/cd48d21d944380129d7a2ce68617ea31bf939aab..01e972b3f529991ad22e68f0f8cc142543ac5d45:/NEWS diff --git a/NEWS b/NEWS index 0b6b2341..a970b34e 100644 --- a/NEWS +++ b/NEWS @@ -1,11 +1,39 @@ 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 tag. + Your YYSTYPE need not be a macro; it can be a typedef. + This change is for compatibility with other Yacc implementations, + and is required by POSIX. * 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 STRING1 + %token STRING2 + %type string1 + %type string2 + %union { char character; } + %token CHR + %type chr + %destructor { free ($$); } %symbol-default + %destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1 + %destructor { } + + guarantees that, when the parser discards any user-defined symbol that has a + semantic type tag other than `', 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 @@ -19,7 +47,7 @@ Changes in version 2.3+: `%{ ... %}' syntax. To generate the pre-prologue, Bison concatenates all prologue blocks that you've declared before the first %union. To generate the post-prologue, Bison concatenates all prologue blocks that you've - declared after the first %union. + declared after the first %union. Previous releases 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