X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/34f98f46ee16dd3719d19e002dc27b2665a2514f..dd4bf078276e0ee7fac19a347ca13a7f078a2d3f:/NEWS?ds=sidebyside diff --git a/NEWS b/NEWS index dd36e633..a970b34e 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,38 @@ 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 @@ -16,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