Home | History | Annotate | Download | only in bison
      1 GNU Bison NEWS
      2 
      3 * Noteworthy changes in release 2.7 (2012-12-12) [stable]
      4 
      5 ** Bug fixes
      6 
      7   Warnings about uninitialized yylloc in yyparse have been fixed.
      8 
      9   Restored C90 compliance (yet no report was ever made).
     10 
     11 ** Diagnostics are improved
     12 
     13 *** Changes in the format of error messages
     14 
     15   This used to be the format of many error reports:
     16 
     17     input.y:2.7-12: %type redeclaration for exp
     18     input.y:1.7-12: previous declaration
     19 
     20   It is now:
     21 
     22     input.y:2.7-12: error: %type redeclaration for exp
     23     input.y:1.7-12:     previous declaration
     24 
     25 *** New format for error reports: carets
     26 
     27   Caret errors have been added to Bison:
     28 
     29     input.y:2.7-12: error: %type redeclaration for exp
     30      %type <sval> exp
     31            ^^^^^^
     32     input.y:1.7-12:     previous declaration
     33      %type <ival> exp
     34            ^^^^^^
     35 
     36   or
     37 
     38     input.y:3.20-23: error: ambiguous reference: '$exp'
     39      exp: exp '+' exp { $exp = $1 + $3; };
     40                         ^^^^
     41     input.y:3.1-3:       refers to: $exp at $$
     42      exp: exp '+' exp { $exp = $1 + $3; };
     43      ^^^
     44     input.y:3.6-8:       refers to: $exp at $1
     45      exp: exp '+' exp { $exp = $1 + $3; };
     46           ^^^
     47     input.y:3.14-16:     refers to: $exp at $3
     48      exp: exp '+' exp { $exp = $1 + $3; };
     49                   ^^^
     50 
     51   The default behaviour for now is still not to display these unless
     52   explictly asked with -fcaret (or -fall). However, in a later release, it
     53   will be made the default behavior (but may still be deactivated with
     54   -fno-caret).
     55 
     56 ** New value for %define variable: api.pure full
     57 
     58   The %define variable api.pure requests a pure (reentrant) parser. However,
     59   for historical reasons, using it in a location-tracking Yacc parser
     60   resulted in a yyerror function that did not take a location as a
     61   parameter. With this new value, the user may request a better pure parser,
     62   where yyerror does take a location as a parameter (in location-tracking
     63   parsers).
     64 
     65   The use of "%define api.pure true" is deprecated in favor of this new
     66   "%define api.pure full".
     67 
     68 ** New %define variable: api.location.type (glr.cc, lalr1.cc, lalr1.java)
     69 
     70   The %define variable api.location.type defines the name of the type to use
     71   for locations.  When defined, Bison no longer generates the position.hh
     72   and location.hh files, nor does the parser will include them: the user is
     73   then responsible to define her type.
     74 
     75   This can be used in programs with several parsers to factor their location
     76   and position files: let one of them generate them, and the others just use
     77   them.
     78 
     79   This feature was actually introduced, but not documented, in Bison 2.5,
     80   under the name "location_type" (which is maintained for backward
     81   compatibility).
     82 
     83   For consistency, lalr1.java's %define variables location_type and
     84   position_type are deprecated in favor of api.location.type and
     85   api.position.type.
     86 
     87 ** Exception safety (lalr1.cc)
     88 
     89   The parse function now catches exceptions, uses the %destructors to
     90   release memory (the lookahead symbol and the symbols pushed on the stack)
     91   before re-throwing the exception.
     92 
     93   This feature is somewhat experimental.  User feedback would be
     94   appreciated.
     95 
     96 ** Graph improvements in DOT and XSLT
     97 
     98   The graphical presentation of the states is more readable: their shape is
     99   now rectangular, the state number is clearly displayed, and the items are
    100   numbered and left-justified.
    101 
    102   The reductions are now explicitly represented as transitions to other
    103   diamond shaped nodes.
    104 
    105   These changes are present in both --graph output and xml2dot.xsl XSLT
    106   processing, with minor (documented) differences.
    107 
    108 ** %language is no longer an experimental feature.
    109 
    110   The introduction of this feature, in 2.4, was four years ago. The
    111   --language option and the %language directive are no longer experimental.
    112 
    113 ** Documentation
    114 
    115   The sections about shift/reduce and reduce/reduce conflicts resolution
    116   have been fixed and extended.
    117 
    118   Although introduced more than four years ago, XML and Graphviz reports
    119   were not properly documented.
    120 
    121   The translation of mid-rule actions is now described.
    122 
    123 * Noteworthy changes in release 2.6.5 (2012-11-07) [stable]
    124 
    125   We consider compiler warnings about Bison generated parsers to be bugs.
    126   Rather than working around them in your own project, please consider
    127   reporting them to us.
    128 
    129 ** Bug fixes
    130 
    131   Warnings about uninitialized yylval and/or yylloc for push parsers with a
    132   pure interface have been fixed for GCC 4.0 up to 4.8, and Clang 2.9 to
    133   3.2.
    134 
    135   Other issues in the test suite have been addressed.
    136 
    137   Nul characters are correctly displayed in error messages.
    138 
    139   When possible, yylloc is correctly initialized before calling yylex.  It
    140   is no longer necessary to initialize it in the %initial-action.
    141 
    142 * Noteworthy changes in release 2.6.4 (2012-10-23) [stable]
    143 
    144   Bison 2.6.3's --version was incorrect.  This release fixes this issue.
    145 
    146 * Noteworthy changes in release 2.6.3 (2012-10-22) [stable]
    147 
    148 ** Bug fixes
    149 
    150   Bugs and portability issues in the test suite have been fixed.
    151 
    152   Some errors in translations have been addressed, and --help now directs
    153   users to the appropriate place to report them.
    154 
    155   Stray Info files shipped by accident are removed.
    156 
    157   Incorrect definitions of YY_, issued by yacc.c when no parser header is
    158   generated, are removed.
    159 
    160   All the generated headers are self-contained.
    161 
    162 ** Header guards (yacc.c, glr.c, glr.cc)
    163 
    164   In order to avoid collisions, the header guards are now
    165   YY_<PREFIX>_<FILE>_INCLUDED, instead of merely <PREFIX>_<FILE>.
    166   For instance the header generated from
    167 
    168     %define api.prefix "calc"
    169     %defines "lib/parse.h"
    170 
    171   will use YY_CALC_LIB_PARSE_H_INCLUDED as guard.
    172 
    173 ** Fix compiler warnings in the generated parser (yacc.c, glr.c)
    174 
    175   The compilation of pure parsers (%define api.pure) can trigger GCC
    176   warnings such as:
    177 
    178     input.c: In function 'yyparse':
    179     input.c:1503:12: warning: 'yylval' may be used uninitialized in this
    180                               function [-Wmaybe-uninitialized]
    181        *++yyvsp = yylval;
    182                 ^
    183 
    184   This is now fixed; pragmas to avoid these warnings are no longer needed.
    185 
    186   Warnings from clang ("equality comparison with extraneous parentheses" and
    187   "function declared 'noreturn' should not return") have also been
    188   addressed.
    189 
    190 * Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
    191 
    192 ** Bug fixes
    193 
    194   Buffer overruns, complaints from Flex, and portability issues in the test
    195   suite have been fixed.
    196 
    197 ** Spaces in %lex- and %parse-param (lalr1.cc, glr.cc)
    198 
    199   Trailing end-of-lines in %parse-param or %lex-param would result in
    200   invalid C++.  This is fixed.
    201 
    202 ** Spurious spaces and end-of-lines
    203 
    204   The generated files no longer end (nor start) with empty lines.
    205 
    206 * Noteworthy changes in release 2.6.1 (2012-07-30) [stable]
    207 
    208   Bison no longer executes user-specified M4 code when processing a grammar.
    209 
    210 ** Future Changes
    211 
    212   In addition to the removal of the features announced in Bison 2.6, the
    213   next major release will remove the "Temporary hack for adding a semicolon
    214   to the user action", as announced in the release 2.5.  Instead of:
    215 
    216     exp: exp "+" exp { $$ = $1 + $3 };
    217 
    218   write:
    219 
    220     exp: exp "+" exp { $$ = $1 + $3; };
    221 
    222 ** Bug fixes
    223 
    224 *** Type names are now properly escaped.
    225 
    226 *** glr.cc: set_debug_level and debug_level work as expected.
    227 
    228 *** Stray @ or $ in actions
    229 
    230   While Bison used to warn about stray $ or @ in action rules, it did not
    231   for other actions such as printers, destructors, or initial actions.  It
    232   now does.
    233 
    234 ** Type names in actions
    235 
    236   For consistency with rule actions, it is now possible to qualify $$ by a
    237   type-name in destructors, printers, and initial actions.  For instance:
    238 
    239     %printer { fprintf (yyo, "(%d, %f)", $<ival>$, $<fval>$); } <*> <>;
    240 
    241   will display two values for each typed and untyped symbol (provided
    242   that YYSTYPE has both "ival" and "fval" fields).
    243 
    244 * Noteworthy changes in release 2.6 (2012-07-19) [stable]
    245 
    246 ** Future Changes
    247 
    248   The next major release of Bison will drop support for the following
    249   deprecated features.  Please report disagreements to bug-bison (a] gnu.org.
    250 
    251 *** K&R C parsers
    252 
    253   Support for generating parsers in K&R C will be removed.  Parsers
    254   generated for C support ISO C90, and are tested with ISO C99 and ISO C11
    255   compilers.
    256 
    257 *** Features deprecated since Bison 1.875
    258 
    259   The definitions of yystype and yyltype will be removed; use YYSTYPE and
    260   YYLTYPE.
    261 
    262   YYPARSE_PARAM and YYLEX_PARAM, deprecated in favor of %parse-param and
    263   %lex-param, will no longer be supported.
    264 
    265   Support for the preprocessor symbol YYERROR_VERBOSE will be removed, use
    266   %error-verbose.
    267 
    268 *** The generated header will be included (yacc.c)
    269 
    270   Instead of duplicating the content of the generated header (definition of
    271   YYSTYPE, yyparse declaration etc.), the generated parser will include it,
    272   as is already the case for GLR or C++ parsers.  This change is deferred
    273   because existing versions of ylwrap (e.g., Automake 1.12.1) do not support
    274   it.
    275 
    276 ** Generated Parser Headers
    277 
    278 *** Guards (yacc.c, glr.c, glr.cc)
    279 
    280   The generated headers are now guarded, as is already the case for C++
    281   parsers (lalr1.cc).  For instance, with --defines=foo.h:
    282 
    283     #ifndef YY_FOO_H
    284     # define YY_FOO_H
    285     ...
    286     #endif /* !YY_FOO_H  */
    287 
    288 *** New declarations (yacc.c, glr.c)
    289 
    290   The generated header now declares yydebug and yyparse.  Both honor
    291   --name-prefix=bar_, and yield
    292 
    293     int bar_parse (void);
    294 
    295   rather than
    296 
    297     #define yyparse bar_parse
    298     int yyparse (void);
    299 
    300   in order to facilitate the inclusion of several parser headers inside a
    301   single compilation unit.
    302 
    303 *** Exported symbols in C++
    304 
    305   The symbols YYTOKEN_TABLE and YYERROR_VERBOSE, which were defined in the
    306   header, are removed, as they prevent the possibility of including several
    307   generated headers from a single compilation unit.
    308 
    309 *** YYLSP_NEEDED
    310 
    311   For the same reasons, the undocumented and unused macro YYLSP_NEEDED is no
    312   longer defined.
    313 
    314 ** New %define variable: api.prefix
    315 
    316   Now that the generated headers are more complete and properly protected
    317   against multiple inclusions, constant names, such as YYSTYPE are a
    318   problem.  While yyparse and others are properly renamed by %name-prefix,
    319   YYSTYPE, YYDEBUG and others have never been affected by it.  Because it
    320   would introduce backward compatibility issues in projects not expecting
    321   YYSTYPE to be renamed, instead of changing the behavior of %name-prefix,
    322   it is deprecated in favor of a new %define variable: api.prefix.
    323 
    324   The following examples compares both:
    325 
    326     %name-prefix "bar_"               | %define api.prefix "bar_"
    327     %token <ival> FOO                   %token <ival> FOO
    328     %union { int ival; }                %union { int ival; }
    329     %%                                  %%
    330     exp: 'a';                           exp: 'a';
    331 
    332   bison generates:
    333 
    334     #ifndef BAR_FOO_H                   #ifndef BAR_FOO_H
    335     # define BAR_FOO_H                  # define BAR_FOO_H
    336 
    337     /* Enabling traces.  */             /* Enabling traces.  */
    338     # ifndef YYDEBUG                  | # ifndef BAR_DEBUG
    339                                       > #  if defined YYDEBUG
    340                                       > #   if YYDEBUG
    341                                       > #    define BAR_DEBUG 1
    342                                       > #   else
    343                                       > #    define BAR_DEBUG 0
    344                                       > #   endif
    345                                       > #  else
    346     #  define YYDEBUG 0               | #   define BAR_DEBUG 0
    347                                       > #  endif
    348     # endif                           | # endif
    349 
    350     # if YYDEBUG                      | # if BAR_DEBUG
    351     extern int bar_debug;               extern int bar_debug;
    352     # endif                             # endif
    353 
    354     /* Tokens.  */                      /* Tokens.  */
    355     # ifndef YYTOKENTYPE              | # ifndef BAR_TOKENTYPE
    356     #  define YYTOKENTYPE             | #  define BAR_TOKENTYPE
    357        enum yytokentype {             |    enum bar_tokentype {
    358          FOO = 258                           FOO = 258
    359        };                                  };
    360     # endif                             # endif
    361 
    362     #if ! defined YYSTYPE \           | #if ! defined BAR_STYPE \
    363      && ! defined YYSTYPE_IS_DECLARED |  && ! defined BAR_STYPE_IS_DECLARED
    364     typedef union YYSTYPE             | typedef union BAR_STYPE
    365     {                                   {
    366      int ival;                           int ival;
    367     } YYSTYPE;                        | } BAR_STYPE;
    368     # define YYSTYPE_IS_DECLARED 1    | # define BAR_STYPE_IS_DECLARED 1
    369     #endif                              #endif
    370 
    371     extern YYSTYPE bar_lval;          | extern BAR_STYPE bar_lval;
    372 
    373     int bar_parse (void);               int bar_parse (void);
    374 
    375     #endif /* !BAR_FOO_H  */            #endif /* !BAR_FOO_H  */
    376 
    377 * Noteworthy changes in release 2.5.1 (2012-06-05) [stable]
    378 
    379 ** Future changes:
    380 
    381   The next major release will drop support for generating parsers in K&R C.
    382 
    383 ** yacc.c: YYBACKUP works as expected.
    384 
    385 ** glr.c improvements:
    386 
    387 *** Location support is eliminated when not requested:
    388 
    389   GLR parsers used to include location-related code even when locations were
    390   not requested, and therefore not even usable.
    391 
    392 *** __attribute__ is preserved:
    393 
    394   __attribute__ is no longer disabled when __STRICT_ANSI__ is defined (i.e.,
    395   when -std is passed to GCC).
    396 
    397 ** lalr1.java: several fixes:
    398 
    399   The Java parser no longer throws ArrayIndexOutOfBoundsException if the
    400   first token leads to a syntax error.  Some minor clean ups.
    401 
    402 ** Changes for C++:
    403 
    404 *** C++11 compatibility:
    405 
    406   C and C++ parsers use "nullptr" instead of "0" when __cplusplus is 201103L
    407   or higher.
    408 
    409 *** Header guards
    410 
    411   The header files such as "parser.hh", "location.hh", etc. used a constant
    412   name for preprocessor guards, for instance:
    413 
    414     #ifndef BISON_LOCATION_HH
    415     # define BISON_LOCATION_HH
    416     ...
    417     #endif // !BISON_LOCATION_HH
    418 
    419   The inclusion guard is now computed from "PREFIX/FILE-NAME", where lower
    420   case characters are converted to upper case, and series of
    421   non-alphanumerical characters are converted to an underscore.
    422 
    423   With "bison -o lang++/parser.cc", "location.hh" would now include:
    424 
    425     #ifndef YY_LANG_LOCATION_HH
    426     # define YY_LANG_LOCATION_HH
    427     ...
    428     #endif // !YY_LANG_LOCATION_HH
    429 
    430 *** C++ locations:
    431 
    432   The position and location constructors (and their initialize methods)
    433   accept new arguments for line and column.  Several issues in the
    434   documentation were fixed.
    435 
    436 ** liby is no longer asking for "rpl_fprintf" on some platforms.
    437 
    438 ** Changes in the manual:
    439 
    440 *** %printer is documented
    441 
    442   The "%printer" directive, supported since at least Bison 1.50, is finally
    443   documented.  The "mfcalc" example is extended to demonstrate it.
    444 
    445   For consistency with the C skeletons, the C++ parsers now also support
    446   "yyoutput" (as an alias to "debug_stream ()").
    447 
    448 *** Several improvements have been made:
    449 
    450   The layout for grammar excerpts was changed to a more compact scheme.
    451   Named references are motivated.  The description of the automaton
    452   description file (*.output) is updated to the current format.  Incorrect
    453   index entries were fixed.  Some other errors were fixed.
    454 
    455 ** Building bison:
    456 
    457 *** Conflicting prototypes with recent/modified Flex.
    458 
    459   Fixed build problems with the current, unreleased, version of Flex, and
    460   some modified versions of 2.5.35, which have modified function prototypes.
    461 
    462 *** Warnings during the build procedure have been eliminated.
    463 
    464 *** Several portability problems in the test suite have been fixed:
    465 
    466   This includes warnings with some compilers, unexpected behavior of tools
    467   such as diff, warning messages from the test suite itself, etc.
    468 
    469 *** The install-pdf target works properly:
    470 
    471   Running "make install-pdf" (or -dvi, -html, -info, and -ps) no longer
    472   halts in the middle of its course.
    473 
    474 * Changes in version 2.5 (2011-05-14):
    475 
    476 ** Grammar symbol names can now contain non-initial dashes:
    477 
    478   Consistently with directives (such as %error-verbose) and with
    479   %define variables (e.g. push-pull), grammar symbol names may contain
    480   dashes in any position except the beginning.  This is a GNU
    481   extension over POSIX Yacc.  Thus, use of this extension is reported
    482   by -Wyacc and rejected in Yacc mode (--yacc).
    483 
    484 ** Named references:
    485 
    486   Historically, Yacc and Bison have supported positional references
    487   ($n, $$) to allow access to symbol values from inside of semantic
    488   actions code.
    489 
    490   Starting from this version, Bison can also accept named references.
    491   When no ambiguity is possible, original symbol names may be used
    492   as named references:
    493 
    494     if_stmt : "if" cond_expr "then" then_stmt ';'
    495     { $if_stmt = mk_if_stmt($cond_expr, $then_stmt); }
    496 
    497   In the more common case, explicit names may be declared:
    498 
    499     stmt[res] : "if" expr[cond] "then" stmt[then] "else" stmt[else] ';'
    500     { $res = mk_if_stmt($cond, $then, $else); }
    501 
    502   Location information is also accessible using @name syntax.  When
    503   accessing symbol names containing dots or dashes, explicit bracketing
    504   ($[sym.1]) must be used.
    505 
    506   These features are experimental in this version.  More user feedback
    507   will help to stabilize them.
    508 
    509 ** IELR(1) and canonical LR(1):
    510 
    511   IELR(1) is a minimal LR(1) parser table generation algorithm.  That
    512   is, given any context-free grammar, IELR(1) generates parser tables
    513   with the full language-recognition power of canonical LR(1) but with
    514   nearly the same number of parser states as LALR(1).  This reduction
    515   in parser states is often an order of magnitude.  More importantly,
    516   because canonical LR(1)'s extra parser states may contain duplicate
    517   conflicts in the case of non-LR(1) grammars, the number of conflicts
    518   for IELR(1) is often an order of magnitude less as well.  This can
    519   significantly reduce the complexity of developing of a grammar.
    520 
    521   Bison can now generate IELR(1) and canonical LR(1) parser tables in
    522   place of its traditional LALR(1) parser tables, which remain the
    523   default.  You can specify the type of parser tables in the grammar
    524   file with these directives:
    525 
    526     %define lr.type lalr
    527     %define lr.type ielr
    528     %define lr.type canonical-lr
    529 
    530   The default-reduction optimization in the parser tables can also be
    531   adjusted using "%define lr.default-reductions".  For details on both
    532   of these features, see the new section "Tuning LR" in the Bison
    533   manual.
    534 
    535   These features are experimental.  More user feedback will help to
    536   stabilize them.
    537 
    538 ** LAC (Lookahead Correction) for syntax error handling:
    539 
    540   Canonical LR, IELR, and LALR can suffer from a couple of problems
    541   upon encountering a syntax error.  First, the parser might perform
    542   additional parser stack reductions before discovering the syntax
    543   error.  Such reductions can perform user semantic actions that are
    544   unexpected because they are based on an invalid token, and they
    545   cause error recovery to begin in a different syntactic context than
    546   the one in which the invalid token was encountered.  Second, when
    547   verbose error messages are enabled (with %error-verbose or the
    548   obsolete "#define YYERROR_VERBOSE"), the expected token list in the
    549   syntax error message can both contain invalid tokens and omit valid
    550   tokens.
    551 
    552   The culprits for the above problems are %nonassoc, default
    553   reductions in inconsistent states, and parser state merging.  Thus,
    554   IELR and LALR suffer the most.  Canonical LR can suffer only if
    555   %nonassoc is used or if default reductions are enabled for
    556   inconsistent states.
    557 
    558   LAC is a new mechanism within the parsing algorithm that solves
    559   these problems for canonical LR, IELR, and LALR without sacrificing
    560   %nonassoc, default reductions, or state merging.  When LAC is in
    561   use, canonical LR and IELR behave almost exactly the same for both
    562   syntactically acceptable and syntactically unacceptable input.
    563   While LALR still does not support the full language-recognition
    564   power of canonical LR and IELR, LAC at least enables LALR's syntax
    565   error handling to correctly reflect LALR's language-recognition
    566   power.
    567 
    568   Currently, LAC is only supported for deterministic parsers in C.
    569   You can enable LAC with the following directive:
    570 
    571     %define parse.lac full
    572 
    573   See the new section "LAC" in the Bison manual for additional
    574   details including a few caveats.
    575 
    576   LAC is an experimental feature.  More user feedback will help to
    577   stabilize it.
    578 
    579 ** %define improvements:
    580 
    581 *** Can now be invoked via the command line:
    582 
    583   Each of these command-line options
    584 
    585     -D NAME[=VALUE]
    586     --define=NAME[=VALUE]
    587 
    588     -F NAME[=VALUE]
    589     --force-define=NAME[=VALUE]
    590 
    591   is equivalent to this grammar file declaration
    592 
    593     %define NAME ["VALUE"]
    594 
    595   except that the manner in which Bison processes multiple definitions
    596   for the same NAME differs.  Most importantly, -F and --force-define
    597   quietly override %define, but -D and --define do not.  For further
    598   details, see the section "Bison Options" in the Bison manual.
    599 
    600 *** Variables renamed:
    601 
    602   The following %define variables
    603 
    604     api.push_pull
    605     lr.keep_unreachable_states
    606 
    607   have been renamed to
    608 
    609     api.push-pull
    610     lr.keep-unreachable-states
    611 
    612   The old names are now deprecated but will be maintained indefinitely
    613   for backward compatibility.
    614 
    615 *** Values no longer need to be quoted in the grammar file:
    616 
    617   If a %define value is an identifier, it no longer needs to be placed
    618   within quotations marks.  For example,
    619 
    620     %define api.push-pull "push"
    621 
    622   can be rewritten as
    623 
    624     %define api.push-pull push
    625 
    626 *** Unrecognized variables are now errors not warnings.
    627 
    628 *** Multiple invocations for any variable is now an error not a warning.
    629 
    630 ** Unrecognized %code qualifiers are now errors not warnings.
    631 
    632 ** Character literals not of length one:
    633 
    634   Previously, Bison quietly converted all character literals to length
    635   one.  For example, without warning, Bison interpreted the operators in
    636   the following grammar to be the same token:
    637 
    638     exp: exp '++'
    639        | exp '+' exp
    640        ;
    641 
    642   Bison now warns when a character literal is not of length one.  In
    643   some future release, Bison will start reporting an error instead.
    644 
    645 ** Destructor calls fixed for lookaheads altered in semantic actions:
    646 
    647   Previously for deterministic parsers in C, if a user semantic action
    648   altered yychar, the parser in some cases used the old yychar value to
    649   determine which destructor to call for the lookahead upon a syntax
    650   error or upon parser return.  This bug has been fixed.
    651 
    652 ** C++ parsers use YYRHSLOC:
    653 
    654   Similarly to the C parsers, the C++ parsers now define the YYRHSLOC
    655   macro and use it in the default YYLLOC_DEFAULT.  You are encouraged
    656   to use it.  If, for instance, your location structure has "first"
    657   and "last" members, instead of
    658 
    659     # define YYLLOC_DEFAULT(Current, Rhs, N)                             \
    660       do                                                                 \
    661         if (N)                                                           \
    662           {                                                              \
    663             (Current).first = (Rhs)[1].location.first;                   \
    664             (Current).last  = (Rhs)[N].location.last;                    \
    665           }                                                              \
    666         else                                                             \
    667           {                                                              \
    668             (Current).first = (Current).last = (Rhs)[0].location.last;   \
    669           }                                                              \
    670       while (false)
    671 
    672   use:
    673 
    674     # define YYLLOC_DEFAULT(Current, Rhs, N)                             \
    675       do                                                                 \
    676         if (N)                                                           \
    677           {                                                              \
    678             (Current).first = YYRHSLOC (Rhs, 1).first;                   \
    679             (Current).last  = YYRHSLOC (Rhs, N).last;                    \
    680           }                                                              \
    681         else                                                             \
    682           {                                                              \
    683             (Current).first = (Current).last = YYRHSLOC (Rhs, 0).last;   \
    684           }                                                              \
    685       while (false)
    686 
    687 ** YYLLOC_DEFAULT in C++:
    688 
    689   The default implementation of YYLLOC_DEFAULT used to be issued in
    690   the header file.  It is now output in the implementation file, after
    691   the user %code sections so that its #ifndef guard does not try to
    692   override the user's YYLLOC_DEFAULT if provided.
    693 
    694 ** YYFAIL now produces warnings and Java parsers no longer implement it:
    695 
    696   YYFAIL has existed for many years as an undocumented feature of
    697   deterministic parsers in C generated by Bison.  More recently, it was
    698   a documented feature of Bison's experimental Java parsers.  As
    699   promised in Bison 2.4.2's NEWS entry, any appearance of YYFAIL in a
    700   semantic action now produces a deprecation warning, and Java parsers
    701   no longer implement YYFAIL at all.  For further details, including a
    702   discussion of how to suppress C preprocessor warnings about YYFAIL
    703   being unused, see the Bison 2.4.2 NEWS entry.
    704 
    705 ** Temporary hack for adding a semicolon to the user action:
    706 
    707   Previously, Bison appended a semicolon to every user action for
    708   reductions when the output language defaulted to C (specifically, when
    709   neither %yacc, %language, %skeleton, or equivalent command-line
    710   options were specified).  This allowed actions such as
    711 
    712     exp: exp "+" exp { $$ = $1 + $3 };
    713 
    714   instead of
    715 
    716     exp: exp "+" exp { $$ = $1 + $3; };
    717 
    718   As a first step in removing this misfeature, Bison now issues a
    719   warning when it appends a semicolon.  Moreover, in cases where Bison
    720   cannot easily determine whether a semicolon is needed (for example, an
    721   action ending with a cpp directive or a braced compound initializer),
    722   it no longer appends one.  Thus, the C compiler might now complain
    723   about a missing semicolon where it did not before.  Future releases of
    724   Bison will cease to append semicolons entirely.
    725 
    726 ** Verbose syntax error message fixes:
    727 
    728   When %error-verbose or the obsolete "#define YYERROR_VERBOSE" is
    729   specified, syntax error messages produced by the generated parser
    730   include the unexpected token as well as a list of expected tokens.
    731   The effect of %nonassoc on these verbose messages has been corrected
    732   in two ways, but a more complete fix requires LAC, described above:
    733 
    734 *** When %nonassoc is used, there can exist parser states that accept no
    735     tokens, and so the parser does not always require a lookahead token
    736     in order to detect a syntax error.  Because no unexpected token or
    737     expected tokens can then be reported, the verbose syntax error
    738     message described above is suppressed, and the parser instead
    739     reports the simpler message, "syntax error".  Previously, this
    740     suppression was sometimes erroneously triggered by %nonassoc when a
    741     lookahead was actually required.  Now verbose messages are
    742     suppressed only when all previous lookaheads have already been
    743     shifted or discarded.
    744 
    745 *** Previously, the list of expected tokens erroneously included tokens
    746     that would actually induce a syntax error because conflicts for them
    747     were resolved with %nonassoc in the current parser state.  Such
    748     tokens are now properly omitted from the list.
    749 
    750 *** Expected token lists are still often wrong due to state merging
    751     (from LALR or IELR) and default reductions, which can both add
    752     invalid tokens and subtract valid tokens.  Canonical LR almost
    753     completely fixes this problem by eliminating state merging and
    754     default reductions.  However, there is one minor problem left even
    755     when using canonical LR and even after the fixes above.  That is,
    756     if the resolution of a conflict with %nonassoc appears in a later
    757     parser state than the one at which some syntax error is
    758     discovered, the conflicted token is still erroneously included in
    759     the expected token list.  Bison's new LAC implementation,
    760     described above, eliminates this problem and the need for
    761     canonical LR.  However, LAC is still experimental and is disabled
    762     by default.
    763 
    764 ** Java skeleton fixes:
    765 
    766 *** A location handling bug has been fixed.
    767 
    768 *** The top element of each of the value stack and location stack is now
    769     cleared when popped so that it can be garbage collected.
    770 
    771 *** Parser traces now print the top element of the stack.
    772 
    773 ** -W/--warnings fixes:
    774 
    775 *** Bison now properly recognizes the "no-" versions of categories:
    776 
    777   For example, given the following command line, Bison now enables all
    778   warnings except warnings for incompatibilities with POSIX Yacc:
    779 
    780     bison -Wall,no-yacc gram.y
    781 
    782 *** Bison now treats S/R and R/R conflicts like other warnings:
    783 
    784   Previously, conflict reports were independent of Bison's normal
    785   warning system.  Now, Bison recognizes the warning categories
    786   "conflicts-sr" and "conflicts-rr".  This change has important
    787   consequences for the -W and --warnings command-line options.  For
    788   example:
    789 
    790     bison -Wno-conflicts-sr gram.y  # S/R conflicts not reported
    791     bison -Wno-conflicts-rr gram.y  # R/R conflicts not reported
    792     bison -Wnone            gram.y  # no conflicts are reported
    793     bison -Werror           gram.y  # any conflict is an error
    794 
    795   However, as before, if the %expect or %expect-rr directive is
    796   specified, an unexpected number of conflicts is an error, and an
    797   expected number of conflicts is not reported, so -W and --warning
    798   then have no effect on the conflict report.
    799 
    800 *** The "none" category no longer disables a preceding "error":
    801 
    802   For example, for the following command line, Bison now reports
    803   errors instead of warnings for incompatibilities with POSIX Yacc:
    804 
    805     bison -Werror,none,yacc gram.y
    806 
    807 *** The "none" category now disables all Bison warnings:
    808 
    809   Previously, the "none" category disabled only Bison warnings for
    810   which there existed a specific -W/--warning category.  However,
    811   given the following command line, Bison is now guaranteed to
    812   suppress all warnings:
    813 
    814     bison -Wnone gram.y
    815 
    816 ** Precedence directives can now assign token number 0:
    817 
    818   Since Bison 2.3b, which restored the ability of precedence
    819   directives to assign token numbers, doing so for token number 0 has
    820   produced an assertion failure.  For example:
    821 
    822     %left END 0
    823 
    824   This bug has been fixed.
    825 
    826 * Changes in version 2.4.3 (2010-08-05):
    827 
    828 ** Bison now obeys -Werror and --warnings=error for warnings about
    829    grammar rules that are useless in the parser due to conflicts.
    830 
    831 ** Problems with spawning M4 on at least FreeBSD 8 and FreeBSD 9 have
    832    been fixed.
    833 
    834 ** Failures in the test suite for GCC 4.5 have been fixed.
    835 
    836 ** Failures in the test suite for some versions of Sun Studio C++ have
    837    been fixed.
    838 
    839 ** Contrary to Bison 2.4.2's NEWS entry, it has been decided that
    840    warnings about undefined %prec identifiers will not be converted to
    841    errors in Bison 2.5.  They will remain warnings, which should be
    842    sufficient for POSIX while avoiding backward compatibility issues.
    843 
    844 ** Minor documentation fixes.
    845 
    846 * Changes in version 2.4.2 (2010-03-20):
    847 
    848 ** Some portability problems that resulted in failures and livelocks
    849    in the test suite on some versions of at least Solaris, AIX, HP-UX,
    850    RHEL4, and Tru64 have been addressed.  As a result, fatal Bison
    851    errors should no longer cause M4 to report a broken pipe on the
    852    affected platforms.
    853 
    854 ** "%prec IDENTIFIER" requires IDENTIFIER to be defined separately.
    855 
    856   POSIX specifies that an error be reported for any identifier that does
    857   not appear on the LHS of a grammar rule and that is not defined by
    858   %token, %left, %right, or %nonassoc.  Bison 2.3b and later lost this
    859   error report for the case when an identifier appears only after a
    860   %prec directive.  It is now restored.  However, for backward
    861   compatibility with recent Bison releases, it is only a warning for
    862   now.  In Bison 2.5 and later, it will return to being an error.
    863   [Between the 2.4.2 and 2.4.3 releases, it was decided that this
    864   warning will not be converted to an error in Bison 2.5.]
    865 
    866 ** Detection of GNU M4 1.4.6 or newer during configure is improved.
    867 
    868 ** Warnings from gcc's -Wundef option about undefined YYENABLE_NLS,
    869    YYLTYPE_IS_TRIVIAL, and __STRICT_ANSI__ in C/C++ parsers are now
    870    avoided.
    871 
    872 ** %code is now a permanent feature.
    873 
    874   A traditional Yacc prologue directive is written in the form:
    875 
    876     %{CODE%}
    877 
    878   To provide a more flexible alternative, Bison 2.3b introduced the
    879   %code directive with the following forms for C/C++:
    880 
    881     %code          {CODE}
    882     %code requires {CODE}
    883     %code provides {CODE}
    884     %code top      {CODE}
    885 
    886   These forms are now considered permanent features of Bison.  See the
    887   %code entries in the section "Bison Declaration Summary" in the Bison
    888   manual for a summary of their functionality.  See the section
    889   "Prologue Alternatives" for a detailed discussion including the
    890   advantages of %code over the traditional Yacc prologue directive.
    891 
    892   Bison's Java feature as a whole including its current usage of %code
    893   is still considered experimental.
    894 
    895 ** YYFAIL is deprecated and will eventually be removed.
    896 
    897   YYFAIL has existed for many years as an undocumented feature of
    898   deterministic parsers in C generated by Bison.  Previously, it was
    899   documented for Bison's experimental Java parsers.  YYFAIL is no longer
    900   documented for Java parsers and is formally deprecated in both cases.
    901   Users are strongly encouraged to migrate to YYERROR, which is
    902   specified by POSIX.
    903 
    904   Like YYERROR, you can invoke YYFAIL from a semantic action in order to
    905   induce a syntax error.  The most obvious difference from YYERROR is
    906   that YYFAIL will automatically invoke yyerror to report the syntax
    907   error so that you don't have to.  However, there are several other
    908   subtle differences between YYERROR and YYFAIL, and YYFAIL suffers from
    909   inherent flaws when %error-verbose or "#define YYERROR_VERBOSE" is
    910   used.  For a more detailed discussion, see:
    911 
    912     http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html
    913 
    914   The upcoming Bison 2.5 will remove YYFAIL from Java parsers, but
    915   deterministic parsers in C will continue to implement it.  However,
    916   because YYFAIL is already flawed, it seems futile to try to make new
    917   Bison features compatible with it.  Thus, during parser generation,
    918   Bison 2.5 will produce a warning whenever it discovers YYFAIL in a
    919   rule action.  In a later release, YYFAIL will be disabled for
    920   %error-verbose and "#define YYERROR_VERBOSE".  Eventually, YYFAIL will
    921   be removed altogether.
    922 
    923   There exists at least one case where Bison 2.5's YYFAIL warning will
    924   be a false positive.  Some projects add phony uses of YYFAIL and other
    925   Bison-defined macros for the sole purpose of suppressing C
    926   preprocessor warnings (from GCC cpp's -Wunused-macros, for example).
    927   To avoid Bison's future warning, such YYFAIL uses can be moved to the
    928   epilogue (that is, after the second "%%") in the Bison input file.  In
    929   this release (2.4.2), Bison already generates its own code to suppress
    930   C preprocessor warnings for YYFAIL, so projects can remove their own
    931   phony uses of YYFAIL if compatibility with Bison releases prior to
    932   2.4.2 is not necessary.
    933 
    934 ** Internationalization.
    935 
    936   Fix a regression introduced in Bison 2.4: Under some circumstances,
    937   message translations were not installed although supported by the
    938   host system.
    939 
    940 * Changes in version 2.4.1 (2008-12-11):
    941 
    942 ** In the GLR defines file, unexpanded M4 macros in the yylval and yylloc
    943    declarations have been fixed.
    944 
    945 ** Temporary hack for adding a semicolon to the user action.
    946 
    947   Bison used to prepend a trailing semicolon at the end of the user
    948   action for reductions.  This allowed actions such as
    949 
    950     exp: exp "+" exp { $$ = $1 + $3 };
    951 
    952   instead of
    953 
    954     exp: exp "+" exp { $$ = $1 + $3; };
    955 
    956   Some grammars still depend on this "feature".  Bison 2.4.1 restores
    957   the previous behavior in the case of C output (specifically, when
    958   neither %language or %skeleton or equivalent command-line options
    959   are used) to leave more time for grammars depending on the old
    960   behavior to be adjusted.  Future releases of Bison will disable this
    961   feature.
    962 
    963 ** A few minor improvements to the Bison manual.
    964 
    965 * Changes in version 2.4 (2008-11-02):
    966 
    967 ** %language is an experimental feature.
    968 
    969   We first introduced this feature in test release 2.3b as a cleaner
    970   alternative to %skeleton.  Since then, we have discussed the possibility of
    971   modifying its effect on Bison's output file names.  Thus, in this release,
    972   we consider %language to be an experimental feature that will likely evolve
    973   in future releases.
    974 
    975 ** Forward compatibility with GNU M4 has been improved.
    976 
    977 ** Several bugs in the C++ skeleton and the experimental Java skeleton have been
    978   fixed.
    979 
    980 * Changes in version 2.3b (2008-05-27):
    981 
    982 ** The quotes around NAME that used to be required in the following directive
    983   are now deprecated:
    984 
    985     %define NAME "VALUE"
    986 
    987 ** The directive "%pure-parser" is now deprecated in favor of:
    988 
    989     %define api.pure
    990 
    991   which has the same effect except that Bison is more careful to warn about
    992   unreasonable usage in the latter case.
    993 
    994 ** Push Parsing
    995 
    996   Bison can now generate an LALR(1) parser in C with a push interface.  That
    997   is, instead of invoking "yyparse", which pulls tokens from "yylex", you can
    998   push one token at a time to the parser using "yypush_parse", which will
    999   return to the caller after processing each token.  By default, the push
   1000   interface is disabled.  Either of the following directives will enable it:
   1001 
   1002     %define api.push_pull "push" // Just push; does not require yylex.
   1003     %define api.push_pull "both" // Push and pull; requires yylex.
   1004 
   1005   See the new section "A Push Parser" in the Bison manual for details.
   1006 
   1007   The current push parsing interface is experimental and may evolve.  More user
   1008   feedback will help to stabilize it.
   1009 
   1010 ** The -g and --graph options now output graphs in Graphviz DOT format,
   1011   not VCG format.  Like --graph, -g now also takes an optional FILE argument
   1012   and thus cannot be bundled with other short options.
   1013 
   1014 ** Java
   1015 
   1016   Bison can now generate an LALR(1) parser in Java.  The skeleton is
   1017   "data/lalr1.java".  Consider using the new %language directive instead of
   1018   %skeleton to select it.
   1019 
   1020   See the new section "Java Parsers" in the Bison manual for details.
   1021 
   1022   The current Java interface is experimental and may evolve.  More user
   1023   feedback will help to stabilize it.
   1024 
   1025 ** %language
   1026 
   1027   This new directive specifies the programming language of the generated
   1028   parser, which can be C (the default), C++, or Java.  Besides the skeleton
   1029   that Bison uses, the directive affects the names of the generated files if
   1030   the grammar file's name ends in ".y".
   1031 
   1032 ** XML Automaton Report
   1033 
   1034   Bison can now generate an XML report of the LALR(1) automaton using the new
   1035   "--xml" option.  The current XML schema is experimental and may evolve.  More
   1036   user feedback will help to stabilize it.
   1037 
   1038 ** The grammar file may now specify the name of the parser header file using
   1039   %defines.  For example:
   1040 
   1041     %defines "parser.h"
   1042 
   1043 ** When reporting useless rules, useless nonterminals, and unused terminals,
   1044   Bison now employs the terms "useless in grammar" instead of "useless",
   1045   "useless in parser" instead of "never reduced", and "unused in grammar"
   1046   instead of "unused".
   1047 
   1048 ** Unreachable State Removal
   1049 
   1050   Previously, Bison sometimes generated parser tables containing unreachable
   1051   states.  A state can become unreachable during conflict resolution if Bison
   1052   disables a shift action leading to it from a predecessor state.  Bison now:
   1053 
   1054     1. Removes unreachable states.
   1055 
   1056     2. Does not report any conflicts that appeared in unreachable states.
   1057        WARNING: As a result, you may need to update %expect and %expect-rr
   1058        directives in existing grammar files.
   1059 
   1060     3. For any rule used only in such states, Bison now reports the rule as
   1061        "useless in parser due to conflicts".
   1062 
   1063   This feature can be disabled with the following directive:
   1064 
   1065     %define lr.keep_unreachable_states
   1066 
   1067   See the %define entry in the "Bison Declaration Summary" in the Bison manual
   1068   for further discussion.
   1069 
   1070 ** Lookahead Set Correction in the ".output" Report
   1071 
   1072   When instructed to generate a ".output" file including lookahead sets
   1073   (using "--report=lookahead", for example), Bison now prints each reduction's
   1074   lookahead set only next to the associated state's one item that (1) is
   1075   associated with the same rule as the reduction and (2) has its dot at the end
   1076   of its RHS.  Previously, Bison also erroneously printed the lookahead set
   1077   next to all of the state's other items associated with the same rule.  This
   1078   bug affected only the ".output" file and not the generated parser source
   1079   code.
   1080 
   1081 ** --report-file=FILE is a new option to override the default ".output" file
   1082   name.
   1083 
   1084 ** The "=" that used to be required in the following directives is now
   1085   deprecated:
   1086 
   1087     %file-prefix "parser"
   1088     %name-prefix "c_"
   1089     %output "parser.c"
   1090 
   1091 ** An Alternative to "%{...%}" -- "%code QUALIFIER {CODE}"
   1092 
   1093   Bison 2.3a provided a new set of directives as a more flexible alternative to
   1094   the traditional Yacc prologue blocks.  Those have now been consolidated into
   1095   a single %code directive with an optional qualifier field, which identifies
   1096   the purpose of the code and thus the location(s) where Bison should generate
   1097   it:
   1098 
   1099     1. "%code          {CODE}" replaces "%after-header  {CODE}"
   1100     2. "%code requires {CODE}" replaces "%start-header  {CODE}"
   1101     3. "%code provides {CODE}" replaces "%end-header    {CODE}"
   1102     4. "%code top      {CODE}" replaces "%before-header {CODE}"
   1103 
   1104   See the %code entries in section "Bison Declaration Summary" in the Bison
   1105   manual for a summary of the new functionality.  See the new section "Prologue
   1106   Alternatives" for a detailed discussion including the advantages of %code
   1107   over the traditional Yacc prologues.
   1108 
   1109   The prologue alternatives are experimental.  More user feedback will help to
   1110   determine whether they should become permanent features.
   1111 
   1112 ** Revised warning: unset or unused mid-rule values
   1113 
   1114   Since Bison 2.2, Bison has warned about mid-rule values that are set but not
   1115   used within any of the actions of the parent rule.  For example, Bison warns
   1116   about unused $2 in:
   1117 
   1118     exp: '1' { $$ = 1; } '+' exp { $$ = $1 + $4; };
   1119 
   1120   Now, Bison also warns about mid-rule values that are used but not set.  For
   1121   example, Bison warns about unset $$ in the mid-rule action in:
   1122 
   1123     exp: '1' { $1 = 1; } '+' exp { $$ = $2 + $4; };
   1124 
   1125   However, Bison now disables both of these warnings by default since they
   1126   sometimes prove to be false alarms in existing grammars employing the Yacc
   1127   constructs $0 or $-N (where N is some positive integer).
   1128 
   1129   To enable these warnings, specify the option "--warnings=midrule-values" or
   1130   "-W", which is a synonym for "--warnings=all".
   1131 
   1132 ** Default %destructor or %printer with "<*>" or "<>"
   1133 
   1134   Bison now recognizes two separate kinds of default %destructor's and
   1135   %printer's:
   1136 
   1137     1. Place "<*>" in a %destructor/%printer symbol list to define a default
   1138        %destructor/%printer for all grammar symbols for which you have formally
   1139        declared semantic type tags.
   1140 
   1141     2. Place "<>" in a %destructor/%printer symbol list to define a default
   1142        %destructor/%printer for all grammar symbols without declared semantic
   1143        type tags.
   1144 
   1145   Bison no longer supports the "%symbol-default" notation from Bison 2.3a.
   1146   "<*>" and "<>" combined achieve the same effect with one exception: Bison no
   1147   longer applies any %destructor to a mid-rule value if that mid-rule value is
   1148   not actually ever referenced using either $$ or $n in a semantic action.
   1149 
   1150   The default %destructor's and %printer's are experimental.  More user
   1151   feedback will help to determine whether they should become permanent
   1152   features.
   1153 
   1154   See the section "Freeing Discarded Symbols" in the Bison manual for further
   1155   details.
   1156 
   1157 ** %left, %right, and %nonassoc can now declare token numbers.  This is required
   1158   by POSIX.  However, see the end of section "Operator Precedence" in the Bison
   1159   manual for a caveat concerning the treatment of literal strings.
   1160 
   1161 ** The nonfunctional --no-parser, -n, and %no-parser options have been
   1162   completely removed from Bison.
   1163 
   1164 * Changes in version 2.3a, 2006-09-13:
   1165 
   1166 ** Instead of %union, you can define and use your own union type
   1167   YYSTYPE if your grammar contains at least one <type> tag.
   1168   Your YYSTYPE need not be a macro; it can be a typedef.
   1169   This change is for compatibility with other Yacc implementations,
   1170   and is required by POSIX.
   1171 
   1172 ** Locations columns and lines start at 1.
   1173   In accordance with the GNU Coding Standards and Emacs.
   1174 
   1175 ** You may now declare per-type and default %destructor's and %printer's:
   1176 
   1177   For example:
   1178 
   1179     %union { char *string; }
   1180     %token <string> STRING1
   1181     %token <string> STRING2
   1182     %type  <string> string1
   1183     %type  <string> string2
   1184     %union { char character; }
   1185     %token <character> CHR
   1186     %type  <character> chr
   1187     %destructor { free ($$); } %symbol-default
   1188     %destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1
   1189     %destructor { } <character>
   1190 
   1191   guarantees that, when the parser discards any user-defined symbol that has a
   1192   semantic type tag other than "<character>", it passes its semantic value to
   1193   "free".  However, when the parser discards a "STRING1" or a "string1", it
   1194   also prints its line number to "stdout".  It performs only the second
   1195   "%destructor" in this case, so it invokes "free" only once.
   1196 
   1197   [Although we failed to mention this here in the 2.3a release, the default
   1198   %destructor's and %printer's were experimental, and they were rewritten in
   1199   future versions.]
   1200 
   1201 ** Except for LALR(1) parsers in C with POSIX Yacc emulation enabled (with "-y",
   1202   "--yacc", or "%yacc"), Bison no longer generates #define statements for
   1203   associating token numbers with token names.  Removing the #define statements
   1204   helps to sanitize the global namespace during preprocessing, but POSIX Yacc
   1205   requires them.  Bison still generates an enum for token names in all cases.
   1206 
   1207 ** Handling of traditional Yacc prologue blocks is now more consistent but
   1208   potentially incompatible with previous releases of Bison.
   1209 
   1210   As before, you declare prologue blocks in your grammar file with the
   1211   "%{ ... %}" syntax.  To generate the pre-prologue, Bison concatenates all
   1212   prologue blocks that you've declared before the first %union.  To generate
   1213   the post-prologue, Bison concatenates all prologue blocks that you've
   1214   declared after the first %union.
   1215 
   1216   Previous releases of Bison inserted the pre-prologue into both the header
   1217   file and the code file in all cases except for LALR(1) parsers in C.  In the
   1218   latter case, Bison inserted it only into the code file.  For parsers in C++,
   1219   the point of insertion was before any token definitions (which associate
   1220   token numbers with names).  For parsers in C, the point of insertion was
   1221   after the token definitions.
   1222 
   1223   Now, Bison never inserts the pre-prologue into the header file.  In the code
   1224   file, it always inserts it before the token definitions.
   1225 
   1226 ** Bison now provides a more flexible alternative to the traditional Yacc
   1227   prologue blocks: %before-header, %start-header, %end-header, and
   1228   %after-header.
   1229 
   1230   For example, the following declaration order in the grammar file reflects the
   1231   order in which Bison will output these code blocks.  However, you are free to
   1232   declare these code blocks in your grammar file in whatever order is most
   1233   convenient for you:
   1234 
   1235     %before-header {
   1236       /* Bison treats this block like a pre-prologue block: it inserts it into
   1237        * the code file before the contents of the header file.  It does *not*
   1238        * insert it into the header file.  This is a good place to put
   1239        * #include's that you want at the top of your code file.  A common
   1240        * example is '#include "system.h"'.  */
   1241     }
   1242     %start-header {
   1243       /* Bison inserts this block into both the header file and the code file.
   1244        * In both files, the point of insertion is before any Bison-generated
   1245        * token, semantic type, location type, and class definitions.  This is a
   1246        * good place to define %union dependencies, for example.  */
   1247     }
   1248     %union {
   1249       /* Unlike the traditional Yacc prologue blocks, the output order for the
   1250        * new %*-header blocks is not affected by their declaration position
   1251        * relative to any %union in the grammar file.  */
   1252     }
   1253     %end-header {
   1254       /* Bison inserts this block into both the header file and the code file.
   1255        * In both files, the point of insertion is after the Bison-generated
   1256        * definitions.  This is a good place to declare or define public
   1257        * functions or data structures that depend on the Bison-generated
   1258        * definitions.  */
   1259     }
   1260     %after-header {
   1261       /* Bison treats this block like a post-prologue block: it inserts it into
   1262        * the code file after the contents of the header file.  It does *not*
   1263        * insert it into the header file.  This is a good place to declare or
   1264        * define internal functions or data structures that depend on the
   1265        * Bison-generated definitions.  */
   1266     }
   1267 
   1268   If you have multiple occurrences of any one of the above declarations, Bison
   1269   will concatenate the contents in declaration order.
   1270 
   1271   [Although we failed to mention this here in the 2.3a release, the prologue
   1272   alternatives were experimental, and they were rewritten in future versions.]
   1273 
   1274 ** The option "--report=look-ahead" has been changed to "--report=lookahead".
   1275   The old spelling still works, but is not documented and may be removed
   1276   in a future release.
   1277 
   1278 * Changes in version 2.3, 2006-06-05:
   1279 
   1280 ** GLR grammars should now use "YYRECOVERING ()" instead of "YYRECOVERING",
   1281   for compatibility with LALR(1) grammars.
   1282 
   1283 ** It is now documented that any definition of YYSTYPE or YYLTYPE should
   1284   be to a type name that does not contain parentheses or brackets.
   1285 
   1286 * Changes in version 2.2, 2006-05-19:
   1287 
   1288 ** The distribution terms for all Bison-generated parsers now permit
   1289   using the parsers in nonfree programs.  Previously, this permission
   1290   was granted only for Bison-generated LALR(1) parsers in C.
   1291 
   1292 ** %name-prefix changes the namespace name in C++ outputs.
   1293 
   1294 ** The C++ parsers export their token_type.
   1295 
   1296 ** Bison now allows multiple %union declarations, and concatenates
   1297   their contents together.
   1298 
   1299 ** New warning: unused values
   1300   Right-hand side symbols whose values are not used are reported,
   1301   if the symbols have destructors.  For instance:
   1302 
   1303      exp: exp "?" exp ":" exp { $1 ? $1 : $3; }
   1304         | exp "+" exp
   1305         ;
   1306 
   1307   will trigger a warning about $$ and $5 in the first rule, and $3 in
   1308   the second ($1 is copied to $$ by the default rule).  This example
   1309   most likely contains three errors, and could be rewritten as:
   1310 
   1311      exp: exp "?" exp ":" exp
   1312             { $$ = $1 ? $3 : $5; free ($1 ? $5 : $3); free ($1); }
   1313         | exp "+" exp
   1314             { $$ = $1 ? $1 : $3; if ($1) free ($3); }
   1315         ;
   1316 
   1317   However, if the original actions were really intended, memory leaks
   1318   and all, the warnings can be suppressed by letting Bison believe the
   1319   values are used, e.g.:
   1320 
   1321      exp: exp "?" exp ":" exp { $1 ? $1 : $3; (void) ($$, $5); }
   1322         | exp "+" exp         { $$ = $1; (void) $3; }
   1323         ;
   1324 
   1325   If there are mid-rule actions, the warning is issued if no action
   1326   uses it.  The following triggers no warning: $1 and $3 are used.
   1327 
   1328      exp: exp { push ($1); } '+' exp { push ($3); sum (); };
   1329 
   1330   The warning is intended to help catching lost values and memory leaks.
   1331   If a value is ignored, its associated memory typically is not reclaimed.
   1332 
   1333 ** %destructor vs. YYABORT, YYACCEPT, and YYERROR.
   1334   Destructors are now called when user code invokes YYABORT, YYACCEPT,
   1335   and YYERROR, for all objects on the stack, other than objects
   1336   corresponding to the right-hand side of the current rule.
   1337 
   1338 ** %expect, %expect-rr
   1339   Incorrect numbers of expected conflicts are now actual errors,
   1340   instead of warnings.
   1341 
   1342 ** GLR, YACC parsers.
   1343   The %parse-params are available in the destructors (and the
   1344   experimental printers) as per the documentation.
   1345 
   1346 ** Bison now warns if it finds a stray "$" or "@" in an action.
   1347 
   1348 ** %require "VERSION"
   1349   This specifies that the grammar file depends on features implemented
   1350   in Bison version VERSION or higher.
   1351 
   1352 ** lalr1.cc: The token and value types are now class members.
   1353   The tokens were defined as free form enums and cpp macros.  YYSTYPE
   1354   was defined as a free form union.  They are now class members:
   1355   tokens are enumerations of the "yy::parser::token" struct, and the
   1356   semantic values have the "yy::parser::semantic_type" type.
   1357 
   1358   If you do not want or can update to this scheme, the directive
   1359   '%define "global_tokens_and_yystype" "1"' triggers the global
   1360   definition of tokens and YYSTYPE.  This change is suitable both
   1361   for previous releases of Bison, and this one.
   1362 
   1363   If you wish to update, then make sure older version of Bison will
   1364   fail using '%require "2.2"'.
   1365 
   1366 ** DJGPP support added.
   1367 
   1369 * Changes in version 2.1, 2005-09-16:
   1370 
   1371 ** The C++ lalr1.cc skeleton supports %lex-param.
   1372 
   1373 ** Bison-generated parsers now support the translation of diagnostics like
   1374   "syntax error" into languages other than English.  The default
   1375   language is still English.  For details, please see the new
   1376   Internationalization section of the Bison manual.  Software
   1377   distributors should also see the new PACKAGING file.  Thanks to
   1378   Bruno Haible for this new feature.
   1379 
   1380 ** Wording in the Bison-generated parsers has been changed slightly to
   1381   simplify translation.  In particular, the message "memory exhausted"
   1382   has replaced "parser stack overflow", as the old message was not
   1383   always accurate for modern Bison-generated parsers.
   1384 
   1385 ** Destructors are now called when the parser aborts, for all symbols left
   1386   behind on the stack.  Also, the start symbol is now destroyed after a
   1387   successful parse.  In both cases, the behavior was formerly inconsistent.
   1388 
   1389 ** When generating verbose diagnostics, Bison-generated parsers no longer
   1390   quote the literal strings associated with tokens.  For example, for
   1391   a syntax error associated with '%token NUM "number"' they might
   1392   print 'syntax error, unexpected number' instead of 'syntax error,
   1393   unexpected "number"'.
   1394 
   1396 * Changes in version 2.0, 2004-12-25:
   1397 
   1398 ** Possibly-incompatible changes
   1399 
   1400   - Bison-generated parsers no longer default to using the alloca function
   1401     (when available) to extend the parser stack, due to widespread
   1402     problems in unchecked stack-overflow detection.  You can "#define
   1403     YYSTACK_USE_ALLOCA 1" to require the use of alloca, but please read
   1404     the manual to determine safe values for YYMAXDEPTH in that case.
   1405 
   1406   - Error token location.
   1407     During error recovery, the location of the syntax error is updated
   1408     to cover the whole sequence covered by the error token: it includes
   1409     the shifted symbols thrown away during the first part of the error
   1410     recovery, and the lookahead rejected during the second part.
   1411 
   1412   - Semicolon changes:
   1413     . Stray semicolons are no longer allowed at the start of a grammar.
   1414     . Semicolons are now required after in-grammar declarations.
   1415 
   1416   - Unescaped newlines are no longer allowed in character constants or
   1417     string literals.  They were never portable, and GCC 3.4.0 has
   1418     dropped support for them.  Better diagnostics are now generated if
   1419     forget a closing quote.
   1420 
   1421   - NUL bytes are no longer allowed in Bison string literals, unfortunately.
   1422 
   1423 ** New features
   1424 
   1425   - GLR grammars now support locations.
   1426 
   1427   - New directive: %initial-action.
   1428     This directive allows the user to run arbitrary code (including
   1429     initializing @$) from yyparse before parsing starts.
   1430 
   1431   - A new directive "%expect-rr N" specifies the expected number of
   1432     reduce/reduce conflicts in GLR parsers.
   1433 
   1434   - %token numbers can now be hexadecimal integers, e.g., "%token FOO 0x12d".
   1435     This is a GNU extension.
   1436 
   1437   - The option "--report=lookahead" was changed to "--report=look-ahead".
   1438     [However, this was changed back after 2.3.]
   1439 
   1440   - Experimental %destructor support has been added to lalr1.cc.
   1441 
   1442   - New configure option --disable-yacc, to disable installation of the
   1443     yacc command and -ly library introduced in 1.875 for POSIX conformance.
   1444 
   1445 ** Bug fixes
   1446 
   1447   - For now, %expect-count violations are now just warnings, not errors.
   1448     This is for compatibility with Bison 1.75 and earlier (when there are
   1449     reduce/reduce conflicts) and with Bison 1.30 and earlier (when there
   1450     are too many or too few shift/reduce conflicts).  However, in future
   1451     versions of Bison we plan to improve the %expect machinery so that
   1452     these violations will become errors again.
   1453 
   1454   - Within Bison itself, numbers (e.g., goto numbers) are no longer
   1455     arbitrarily limited to 16-bit counts.
   1456 
   1457   - Semicolons are now allowed before "|" in grammar rules, as POSIX requires.
   1458 
   1460 * Changes in version 1.875, 2003-01-01:
   1461 
   1462 ** The documentation license has been upgraded to version 1.2
   1463   of the GNU Free Documentation License.
   1464 
   1465 ** syntax error processing
   1466 
   1467   - In Yacc-style parsers YYLLOC_DEFAULT is now used to compute error
   1468     locations too.  This fixes bugs in error-location computation.
   1469 
   1470   - %destructor
   1471     It is now possible to reclaim the memory associated to symbols
   1472     discarded during error recovery.  This feature is still experimental.
   1473 
   1474   - %error-verbose
   1475     This new directive is preferred over YYERROR_VERBOSE.
   1476 
   1477   - #defining yyerror to steal internal variables is discouraged.
   1478     It is not guaranteed to work forever.
   1479 
   1480 ** POSIX conformance
   1481 
   1482   - Semicolons are once again optional at the end of grammar rules.
   1483     This reverts to the behavior of Bison 1.33 and earlier, and improves
   1484     compatibility with Yacc.
   1485 
   1486   - "parse error" -> "syntax error"
   1487     Bison now uniformly uses the term "syntax error"; formerly, the code
   1488     and manual sometimes used the term "parse error" instead.  POSIX
   1489     requires "syntax error" in diagnostics, and it was thought better to
   1490     be consistent.
   1491 
   1492   - The documentation now emphasizes that yylex and yyerror must be
   1493     declared before use.  C99 requires this.
   1494 
   1495   - Bison now parses C99 lexical constructs like UCNs and
   1496     backslash-newline within C escape sequences, as POSIX 1003.1-2001 requires.
   1497 
   1498   - File names are properly escaped in C output.  E.g., foo\bar.y is
   1499     output as "foo\\bar.y".
   1500 
   1501   - Yacc command and library now available
   1502     The Bison distribution now installs a "yacc" command, as POSIX requires.
   1503     Also, Bison now installs a small library liby.a containing
   1504     implementations of Yacc-compatible yyerror and main functions.
   1505     This library is normally not useful, but POSIX requires it.
   1506 
   1507   - Type clashes now generate warnings, not errors.
   1508 
   1509   - If the user does not define YYSTYPE as a macro, Bison now declares it
   1510     using typedef instead of defining it as a macro.
   1511     For consistency, YYLTYPE is also declared instead of defined.
   1512 
   1513 ** Other compatibility issues
   1514 
   1515   - %union directives can now have a tag before the "{", e.g., the
   1516     directive "%union foo {...}" now generates the C code
   1517     "typedef union foo { ... } YYSTYPE;"; this is for Yacc compatibility.
   1518     The default union tag is "YYSTYPE", for compatibility with Solaris 9 Yacc.
   1519     For consistency, YYLTYPE's struct tag is now "YYLTYPE" not "yyltype".
   1520     This is for compatibility with both Yacc and Bison 1.35.
   1521 
   1522   - ";" is output before the terminating "}" of an action, for
   1523     compatibility with Bison 1.35.
   1524 
   1525   - Bison now uses a Yacc-style format for conflict reports, e.g.,
   1526     "conflicts: 2 shift/reduce, 1 reduce/reduce".
   1527 
   1528   - "yystype" and "yyltype" are now obsolescent macros instead of being
   1529     typedefs or tags; they are no longer documented and are planned to be
   1530     withdrawn in a future release.
   1531 
   1532 ** GLR parser notes
   1533 
   1534   - GLR and inline
   1535     Users of Bison have to decide how they handle the portability of the
   1536     C keyword "inline".
   1537 
   1538   - "parsing stack overflow..." -> "parser stack overflow"
   1539     GLR parsers now report "parser stack overflow" as per the Bison manual.
   1540 
   1541 ** %parse-param and %lex-param
   1542   The macros YYPARSE_PARAM and YYLEX_PARAM provide a means to pass
   1543   additional context to yyparse and yylex.  They suffer from several
   1544   shortcomings:
   1545 
   1546   - a single argument only can be added,
   1547   - their types are weak (void *),
   1548   - this context is not passed to ancillary functions such as yyerror,
   1549   - only yacc.c parsers support them.
   1550 
   1551   The new %parse-param/%lex-param directives provide a more precise control.
   1552   For instance:
   1553 
   1554     %parse-param {int *nastiness}
   1555     %lex-param   {int *nastiness}
   1556     %parse-param {int *randomness}
   1557 
   1558   results in the following signatures:
   1559 
   1560     int yylex   (int *nastiness);
   1561     int yyparse (int *nastiness, int *randomness);
   1562 
   1563   or, if both %pure-parser and %locations are used:
   1564 
   1565     int yylex   (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
   1566     int yyparse (int *nastiness, int *randomness);
   1567 
   1568 ** Bison now warns if it detects conflicting outputs to the same file,
   1569   e.g., it generates a warning for "bison -d -o foo.h foo.y" since
   1570   that command outputs both code and header to foo.h.
   1571 
   1572 ** #line in output files
   1573   - --no-line works properly.
   1574 
   1575 ** Bison can no longer be built by a K&R C compiler; it requires C89 or
   1576   later to be built.  This change originally took place a few versions
   1577   ago, but nobody noticed until we recently asked someone to try
   1578   building Bison with a K&R C compiler.
   1579 
   1581 * Changes in version 1.75, 2002-10-14:
   1582 
   1583 ** Bison should now work on 64-bit hosts.
   1584 
   1585 ** Indonesian translation thanks to Tedi Heriyanto.
   1586 
   1587 ** GLR parsers
   1588   Fix spurious parse errors.
   1589 
   1590 ** Pure parsers
   1591   Some people redefine yyerror to steal yyparse' private variables.
   1592   Reenable this trick until an official feature replaces it.
   1593 
   1594 ** Type Clashes
   1595   In agreement with POSIX and with other Yaccs, leaving a default
   1596   action is valid when $$ is untyped, and $1 typed:
   1597 
   1598         untyped: ... typed;
   1599 
   1600   but the converse remains an error:
   1601 
   1602         typed: ... untyped;
   1603 
   1604 ** Values of mid-rule actions
   1605   The following code:
   1606 
   1607         foo: { ... } { $$ = $1; } ...
   1608 
   1609   was incorrectly rejected: $1 is defined in the second mid-rule
   1610   action, and is equal to the $$ of the first mid-rule action.
   1611 
   1613 * Changes in version 1.50, 2002-10-04:
   1614 
   1615 ** GLR parsing
   1616   The declaration
   1617      %glr-parser
   1618   causes Bison to produce a Generalized LR (GLR) parser, capable of handling
   1619   almost any context-free grammar, ambiguous or not.  The new declarations
   1620   %dprec and %merge on grammar rules allow parse-time resolution of
   1621   ambiguities.  Contributed by Paul Hilfinger.
   1622 
   1623   Unfortunately Bison 1.50 does not work properly on 64-bit hosts
   1624   like the Alpha, so please stick to 32-bit hosts for now.
   1625 
   1626 ** Output Directory
   1627   When not in Yacc compatibility mode, when the output file was not
   1628   specified, running "bison foo/bar.y" created "foo/bar.c".  It
   1629   now creates "bar.c".
   1630 
   1631 ** Undefined token
   1632   The undefined token was systematically mapped to 2 which prevented
   1633   the use of 2 by the user.  This is no longer the case.
   1634 
   1635 ** Unknown token numbers
   1636   If yylex returned an out of range value, yyparse could die.  This is
   1637   no longer the case.
   1638 
   1639 ** Error token
   1640   According to POSIX, the error token must be 256.
   1641   Bison extends this requirement by making it a preference: *if* the
   1642   user specified that one of her tokens is numbered 256, then error
   1643   will be mapped onto another number.
   1644 
   1645 ** Verbose error messages
   1646   They no longer report "..., expecting error or..." for states where
   1647   error recovery is possible.
   1648 
   1649 ** End token
   1650   Defaults to "$end" instead of "$".
   1651 
   1652 ** Error recovery now conforms to documentation and to POSIX
   1653   When a Bison-generated parser encounters a syntax error, it now pops
   1654   the stack until it finds a state that allows shifting the error
   1655   token.  Formerly, it popped the stack until it found a state that
   1656   allowed some non-error action other than a default reduction on the
   1657   error token.  The new behavior has long been the documented behavior,
   1658   and has long been required by POSIX.  For more details, please see
   1659   Paul Eggert, "Reductions during Bison error handling" (2002-05-20)
   1660   <http://lists.gnu.org/archive/html/bug-bison/2002-05/msg00038.html>.
   1661 
   1662 ** Traces
   1663   Popped tokens and nonterminals are now reported.
   1664 
   1665 ** Larger grammars
   1666   Larger grammars are now supported (larger token numbers, larger grammar
   1667   size (= sum of the LHS and RHS lengths), larger LALR tables).
   1668   Formerly, many of these numbers ran afoul of 16-bit limits;
   1669   now these limits are 32 bits on most hosts.
   1670 
   1671 ** Explicit initial rule
   1672   Bison used to play hacks with the initial rule, which the user does
   1673   not write.  It is now explicit, and visible in the reports and
   1674   graphs as rule 0.
   1675 
   1676 ** Useless rules
   1677   Before, Bison reported the useless rules, but, although not used,
   1678   included them in the parsers.  They are now actually removed.
   1679 
   1680 ** Useless rules, useless nonterminals
   1681   They are now reported, as a warning, with their locations.
   1682 
   1683 ** Rules never reduced
   1684   Rules that can never be reduced because of conflicts are now
   1685   reported.
   1686 
   1687 ** Incorrect "Token not used"
   1688   On a grammar such as
   1689 
   1690     %token useless useful
   1691     %%
   1692     exp: '0' %prec useful;
   1693 
   1694   where a token was used to set the precedence of the last rule,
   1695   bison reported both "useful" and "useless" as useless tokens.
   1696 
   1697 ** Revert the C++ namespace changes introduced in 1.31
   1698   as they caused too many portability hassles.
   1699 
   1700 ** Default locations
   1701   By an accident of design, the default computation of @$ was
   1702   performed after another default computation was performed: @$ = @1.
   1703   The latter is now removed: YYLLOC_DEFAULT is fully responsible of
   1704   the computation of @$.
   1705 
   1706 ** Token end-of-file
   1707   The token end of file may be specified by the user, in which case,
   1708   the user symbol is used in the reports, the graphs, and the verbose
   1709   error messages instead of "$end", which remains being the default.
   1710   For instance
   1711     %token MYEOF 0
   1712   or
   1713     %token MYEOF 0 "end of file"
   1714 
   1715 ** Semantic parser
   1716   This old option, which has been broken for ages, is removed.
   1717 
   1718 ** New translations
   1719   Brazilian Portuguese, thanks to Alexandre Folle de Menezes.
   1720   Croatian, thanks to Denis Lackovic.
   1721 
   1722 ** Incorrect token definitions
   1723   When given
   1724     %token 'a' "A"
   1725   bison used to output
   1726     #define 'a' 65
   1727 
   1728 ** Token definitions as enums
   1729   Tokens are output both as the traditional #define's, and, provided
   1730   the compiler supports ANSI C or is a C++ compiler, as enums.
   1731   This lets debuggers display names instead of integers.
   1732 
   1733 ** Reports
   1734   In addition to --verbose, bison supports --report=THINGS, which
   1735   produces additional information:
   1736   - itemset
   1737     complete the core item sets with their closure
   1738   - lookahead [changed to "look-ahead" in 1.875e through 2.3, but changed back]
   1739     explicitly associate lookahead tokens to items
   1740   - solved
   1741     describe shift/reduce conflicts solving.
   1742     Bison used to systematically output this information on top of
   1743     the report.  Solved conflicts are now attached to their states.
   1744 
   1745 ** Type clashes
   1746   Previous versions don't complain when there is a type clash on
   1747   the default action if the rule has a mid-rule action, such as in:
   1748 
   1749     %type <foo> bar
   1750     %%
   1751     bar: '0' {} '0';
   1752 
   1753   This is fixed.
   1754 
   1755 ** GNU M4 is now required when using Bison.
   1756 
   1758 * Changes in version 1.35, 2002-03-25:
   1759 
   1760 ** C Skeleton
   1761   Some projects use Bison's C parser with C++ compilers, and define
   1762   YYSTYPE as a class.  The recent adjustment of C parsers for data
   1763   alignment and 64 bit architectures made this impossible.
   1764 
   1765   Because for the time being no real solution for C++ parser
   1766   generation exists, kludges were implemented in the parser to
   1767   maintain this use.  In the future, when Bison has C++ parsers, this
   1768   kludge will be disabled.
   1769 
   1770   This kludge also addresses some C++ problems when the stack was
   1771   extended.
   1772 
   1774 * Changes in version 1.34, 2002-03-12:
   1775 
   1776 ** File name clashes are detected
   1777   $ bison foo.y -d -o foo.x
   1778   fatal error: header and parser would both be named "foo.x"
   1779 
   1780 ** A missing ";" at the end of a rule triggers a warning
   1781   In accordance with POSIX, and in agreement with other
   1782   Yacc implementations, Bison will mandate this semicolon in the near
   1783   future.  This eases the implementation of a Bison parser of Bison
   1784   grammars by making this grammar LALR(1) instead of LR(2).  To
   1785   facilitate the transition, this release introduces a warning.
   1786 
   1787 ** Revert the C++ namespace changes introduced in 1.31, as they caused too
   1788   many portability hassles.
   1789 
   1790 ** DJGPP support added.
   1791 
   1792 ** Fix test suite portability problems.
   1793 
   1795 * Changes in version 1.33, 2002-02-07:
   1796 
   1797 ** Fix C++ issues
   1798   Groff could not be compiled for the definition of size_t was lacking
   1799   under some conditions.
   1800 
   1801 ** Catch invalid @n
   1802   As is done with $n.
   1803 
   1805 * Changes in version 1.32, 2002-01-23:
   1806 
   1807 ** Fix Yacc output file names
   1808 
   1809 ** Portability fixes
   1810 
   1811 ** Italian, Dutch translations
   1812 
   1814 * Changes in version 1.31, 2002-01-14:
   1815 
   1816 ** Many Bug Fixes
   1817 
   1818 ** GNU Gettext and %expect
   1819   GNU Gettext asserts 10 s/r conflicts, but there are 7.  Now that
   1820   Bison dies on incorrect %expectations, we fear there will be
   1821   too many bug reports for Gettext, so _for the time being_, %expect
   1822   does not trigger an error when the input file is named "plural.y".
   1823 
   1824 ** Use of alloca in parsers
   1825   If YYSTACK_USE_ALLOCA is defined to 0, then the parsers will use
   1826   malloc exclusively.  Since 1.29, but was not NEWS'ed.
   1827 
   1828   alloca is used only when compiled with GCC, to avoid portability
   1829   problems as on AIX.
   1830 
   1831 ** yyparse now returns 2 if memory is exhausted; formerly it dumped core.
   1832 
   1833 ** When the generated parser lacks debugging code, YYDEBUG is now 0
   1834   (as POSIX requires) instead of being undefined.
   1835 
   1836 ** User Actions
   1837   Bison has always permitted actions such as { $$ = $1 }: it adds the
   1838   ending semicolon.  Now if in Yacc compatibility mode, the semicolon
   1839   is no longer output: one has to write { $$ = $1; }.
   1840 
   1841 ** Better C++ compliance
   1842   The output parsers try to respect C++ namespaces.
   1843   [This turned out to be a failed experiment, and it was reverted later.]
   1844 
   1845 ** Reduced Grammars
   1846   Fixed bugs when reporting useless nonterminals.
   1847 
   1848 ** 64 bit hosts
   1849   The parsers work properly on 64 bit hosts.
   1850 
   1851 ** Error messages
   1852   Some calls to strerror resulted in scrambled or missing error messages.
   1853 
   1854 ** %expect
   1855   When the number of shift/reduce conflicts is correct, don't issue
   1856   any warning.
   1857 
   1858 ** The verbose report includes the rule line numbers.
   1859 
   1860 ** Rule line numbers are fixed in traces.
   1861 
   1862 ** Swedish translation
   1863 
   1864 ** Parse errors
   1865   Verbose parse error messages from the parsers are better looking.
   1866   Before: parse error: unexpected `'/'', expecting `"number"' or `'-'' or `'(''
   1867      Now: parse error: unexpected '/', expecting "number" or '-' or '('
   1868 
   1869 ** Fixed parser memory leaks.
   1870   When the generated parser was using malloc to extend its stacks, the
   1871   previous allocations were not freed.
   1872 
   1873 ** Fixed verbose output file.
   1874   Some newlines were missing.
   1875   Some conflicts in state descriptions were missing.
   1876 
   1877 ** Fixed conflict report.
   1878   Option -v was needed to get the result.
   1879 
   1880 ** %expect
   1881   Was not used.
   1882   Mismatches are errors, not warnings.
   1883 
   1884 ** Fixed incorrect processing of some invalid input.
   1885 
   1886 ** Fixed CPP guards: 9foo.h uses BISON_9FOO_H instead of 9FOO_H.
   1887 
   1888 ** Fixed some typos in the documentation.
   1889 
   1890 ** %token MY_EOF 0 is supported.
   1891   Before, MY_EOF was silently renumbered as 257.
   1892 
   1893 ** doc/refcard.tex is updated.
   1894 
   1895 ** %output, %file-prefix, %name-prefix.
   1896   New.
   1897 
   1898 ** --output
   1899   New, aliasing "--output-file".
   1900 
   1902 * Changes in version 1.30, 2001-10-26:
   1903 
   1904 ** "--defines" and "--graph" have now an optional argument which is the
   1905   output file name. "-d" and "-g" do not change; they do not take any
   1906   argument.
   1907 
   1908 ** "%source_extension" and "%header_extension" are removed, failed
   1909   experiment.
   1910 
   1911 ** Portability fixes.
   1912 
   1914 * Changes in version 1.29, 2001-09-07:
   1915 
   1916 ** The output file does not define const, as this caused problems when used
   1917   with common autoconfiguration schemes.  If you still use ancient compilers
   1918   that lack const, compile with the equivalent of the C compiler option
   1919   "-Dconst=".  Autoconf's AC_C_CONST macro provides one way to do this.
   1920 
   1921 ** Added "-g" and "--graph".
   1922 
   1923 ** The Bison manual is now distributed under the terms of the GNU FDL.
   1924 
   1925 ** The input and the output files has automatically a similar extension.
   1926 
   1927 ** Russian translation added.
   1928 
   1929 ** NLS support updated; should hopefully be less troublesome.
   1930 
   1931 ** Added the old Bison reference card.
   1932 
   1933 ** Added "--locations" and "%locations".
   1934 
   1935 ** Added "-S" and "--skeleton".
   1936 
   1937 ** "%raw", "-r", "--raw" is disabled.
   1938 
   1939 ** Special characters are escaped when output.  This solves the problems
   1940   of the #line lines with path names including backslashes.
   1941 
   1942 ** New directives.
   1943   "%yacc", "%fixed_output_files", "%defines", "%no_parser", "%verbose",
   1944   "%debug", "%source_extension" and "%header_extension".
   1945 
   1946 ** @$
   1947   Automatic location tracking.
   1948 
   1950 * Changes in version 1.28, 1999-07-06:
   1951 
   1952 ** Should compile better now with K&R compilers.
   1953 
   1954 ** Added NLS.
   1955 
   1956 ** Fixed a problem with escaping the double quote character.
   1957 
   1958 ** There is now a FAQ.
   1959 
   1961 * Changes in version 1.27:
   1962 
   1963 ** The make rule which prevented bison.simple from being created on
   1964   some systems has been fixed.
   1965 
   1967 * Changes in version 1.26:
   1968 
   1969 ** Bison now uses Automake.
   1970 
   1971 ** New mailing lists: <bug-bison (a] gnu.org> and <help-bison (a] gnu.org>.
   1972 
   1973 ** Token numbers now start at 257 as previously documented, not 258.
   1974 
   1975 ** Bison honors the TMPDIR environment variable.
   1976 
   1977 ** A couple of buffer overruns have been fixed.
   1978 
   1979 ** Problems when closing files should now be reported.
   1980 
   1981 ** Generated parsers should now work even on operating systems which do
   1982   not provide alloca().
   1983 
   1985 * Changes in version 1.25, 1995-10-16:
   1986 
   1987 ** Errors in the input grammar are not fatal; Bison keeps reading
   1988 the grammar file, and reports all the errors found in it.
   1989 
   1990 ** Tokens can now be specified as multiple-character strings: for
   1991 example, you could use "<=" for a token which looks like <=, instead
   1992 of choosing a name like LESSEQ.
   1993 
   1994 ** The %token_table declaration says to write a table of tokens (names
   1995 and numbers) into the parser file.  The yylex function can use this
   1996 table to recognize multiple-character string tokens, or for other
   1997 purposes.
   1998 
   1999 ** The %no_lines declaration says not to generate any #line preprocessor
   2000 directives in the parser file.
   2001 
   2002 ** The %raw declaration says to use internal Bison token numbers, not
   2003 Yacc-compatible token numbers, when token names are defined as macros.
   2004 
   2005 ** The --no-parser option produces the parser tables without including
   2006 the parser engine; a project can now use its own parser engine.
   2007 The actions go into a separate file called NAME.act, in the form of
   2008 a switch statement body.
   2009 
   2011 * Changes in version 1.23:
   2012 
   2013 The user can define YYPARSE_PARAM as the name of an argument to be
   2014 passed into yyparse.  The argument should have type void *.  It should
   2015 actually point to an object.  Grammar actions can access the variable
   2016 by casting it to the proper pointer type.
   2017 
   2018 Line numbers in output file corrected.
   2019 
   2021 * Changes in version 1.22:
   2022 
   2023 --help option added.
   2024 
   2026 * Changes in version 1.20:
   2027 
   2028 Output file does not redefine const for C++.
   2029 
   2030 -----
   2031 
   2032 Copyright (C) 1995-2012 Free Software Foundation, Inc.
   2033 
   2034 This file is part of Bison, the GNU Parser Generator.
   2035 
   2036 This program is free software: you can redistribute it and/or modify
   2037 it under the terms of the GNU General Public License as published by
   2038 the Free Software Foundation, either version 3 of the License, or
   2039 (at your option) any later version.
   2040 
   2041 This program is distributed in the hope that it will be useful,
   2042 but WITHOUT ANY WARRANTY; without even the implied warranty of
   2043 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   2044 GNU General Public License for more details.
   2045 
   2046 You should have received a copy of the GNU General Public License
   2047 along with this program.  If not, see <http://www.gnu.org/licenses/>.
   2048 
   2049  LocalWords:  yacc YYBACKUP glr GCC lalr ArrayIndexOutOfBoundsException nullptr
   2050  LocalWords:  cplusplus liby rpl fprintf mfcalc Wyacc stmt cond expr mk sym lr
   2051  LocalWords:  IELR ielr Lookahead YYERROR nonassoc LALR's api lookaheads yychar
   2052  LocalWords:  destructor lookahead YYRHSLOC YYLLOC Rhs ifndef YYFAIL cpp sr rr
   2053  LocalWords:  preprocessor initializer Wno Wnone Werror FreeBSD prec livelocks
   2054  LocalWords:  Solaris AIX UX RHEL Tru LHS gcc's Wundef YYENABLE NLS YYLTYPE VCG
   2055  LocalWords:  yyerror cpp's Wunused yylval yylloc prepend yyparse yylex yypush
   2056  LocalWords:  Graphviz xml nonterminals midrule destructor's YYSTYPE typedef ly
   2057  LocalWords:  CHR chr printf stdout namespace preprocessing enum pre include's
   2058  LocalWords:  YYRECOVERING nonfree destructors YYABORT YYACCEPT params enums de
   2059  LocalWords:  struct yystype DJGPP lex param Haible NUM alloca YYSTACK NUL goto
   2060  LocalWords:  YYMAXDEPTH Unescaped UCNs YYLTYPE's yyltype typedefs inline Yaccs
   2061  LocalWords:  Heriyanto Reenable dprec Hilfinger Eggert MYEOF Folle Menezes EOF
   2062  LocalWords:  Lackovic define's itemset Groff Gettext malloc NEWS'ed YYDEBUG YY
   2063  LocalWords:  namespaces strerror const autoconfiguration Dconst Autoconf's FDL
   2064  LocalWords:  Automake TMPDIR LESSEQ ylwrap endif yydebug YYTOKEN YYLSP ival hh
   2065  LocalWords:  extern YYTOKENTYPE TOKENTYPE yytokentype tokentype STYPE lval pdf
   2066  LocalWords:  lang yyoutput dvi html ps POSIX lvalp llocp calc yyo fval Wmaybe
   2067  LocalWords:  yyvsp pragmas noreturn java's
   2068 
   2069 Local Variables:
   2070 mode: outline
   2071 fill-column: 76
   2072 End:
   2073