Changes in version 2.3+:
+* Instead of %union, you can define and use your own union type
+ YYSTYPE if your grammar contains at least one <type> 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 a default %destructor and %printer:
+
+ For example:
+
+ %union { char *string; }
+ %token <string> STRING1
+ %token <string> STRING2
+ %type <string> string1
+ %type <string> string2
+ %destructor { free ($$); } %symbol-default
+ %destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1
+
+ guarantees that, when the parser discards any user-defined symbol, 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
`%{ ... %}' 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