]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Require default %destructor/%printer to be declared using
[bison.git] / ChangeLog
index e523509792fc7b2b18a676c62f4a037a4a19bf73..d582940b7027bb6b84f56af385d37c3631306cfe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2006-09-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Require default %destructor/%printer to be declared using
+       %symbol-default instead of an empty symbol list, and start working on
+       new per-type %destructor/%printer.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
+       * NEWS (2.3+): Add %symbol-default to example.
+       * bison.texinfo (Freeing Discarded Symbols): Likewise.
+       (Bison Symbols): Add entry for %symbol-default.
+       * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token.
+       (generic_symlist, generic_symlist_item): New nonterminals for creating
+       a list in which each item is a symbol, semantic type, or
+       %symbol-default.
+       (grammar_declaration): Use generic_symlist in %destructor and %printer
+       declarations instead of symbols.1 or an empty list.
+       (symbol_declaration, precedence_declaration, symbols.1): Update actions
+       for changes to symbol_list.
+       * src/reader.c: Update for changes to symbol_list.
+       * src/scan-code.l: Likewise.
+       * src/scan-gram.l: Scan new PERCENT_SYMBOL_DEFAULT token.
+       * src/symlist.c, src/symlist.h: Extend such that a list node may
+       represent a semantic type or a %symbol-default in addition to just an
+       ordinary symbol.  Add switched functions for setting %destructor's and
+       %printer's.
+       * tests/actions.at, tests/input.at: Add %symbol-default to all default
+       %destructor/%printer declarations.
+
+2006-08-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Whether the default %destructor/%printer applies to a particular symbol
+       isn't a question of whether the user *declares* that symbol (in %token,
+       for example).  It's a question of whether the user by any means
+       *defines* the symbol at all (by simply using a char token, for
+       example).  $end is defined by Bison whereas any other token with token
+       number 0 is defined by the user.  The error token is always defined by
+       Bison regardless of whether the user declares it with %token, but we
+       may one day let the user define error as a nonterminal instead.
+       * NEWS (2.3+): Say "user-defined" instead of "user-declared".
+       * doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
+       the meaning of "user-defined".
+       * tests/actions.at (Default %printer and %destructor for user-declared
+       end token): Rename to...
+       (Default %printer and %destructor for user-defined end token): ...
+       this.
+
+       * src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
+       computation of whether to apply the default, don't maintain a list of
+       every Bison-defined symbol.  Instead, just check for a first character
+       of '$', which a user symbol cannot have, and check for the error token.
+
+2006-08-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't apply the default %destructor or %printer to the error token,
+       $undefined, or $accept.  This change fits the general rule that the
+       default %destructor and %printer are only for user-declared symbols,
+       and it solves several difficulties that are described in the new test
+       cases listed below.
+       * src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
+       * tests/actions.at (Default %printer and %destructor are not for error
+       or $undefined, Default %printer and %destructor are not for $accept):
+       New test cases.
+
+2006-08-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Allow %start after the first rule.
+       * src/reader.c (grammar_current_rule_begin): Don't set the start symbol
+       when parsing the first rule.
+       (check_and_convert_grammar): Search for it here after all grammar
+       declarations have been parsed.  Skip midrules, which have dummy LHS
+       nonterminals.
+       * src/symtab.c (symbol_is_dummy): New function.
+       * src/symtab.h (symbol_is_dummy): Declare it.
+       * tests/input.at (%start after first rule): New test.
+
+2006-08-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Redo some of the previous commit: add back the ability to use
+       non-aliased/undeclared string literals since it might be useful to
+       those declaring %token-table.
+       * src/reader.c (check_and_convert_grammar): Undo changes in previous
+       commit: don't worry about complaints from symbols_pack.
+       * src/symtab.c (symbol_new, symbol_class_set,
+       symbol_check_alias_consistency): Undo changes in previous commit: count
+       each string literal as a new symbol and token, assign it a symbol
+       number, and don't complain about non-aliased string literals.
+       (symbols_pack): Since symbol_make_alias still does not decrement symbol
+       and token counts but does still set aliased tokens to the same number,
+       symbol_pack_processor now leaves empty slots in the symbols array.
+       Remove those slots.
+       * tests/regression.at (Undeclared string literal): Remove test case
+       added in previous commit since non-aliased string literals are allowed
+       again.
+       (Characters Escapes, Web2c Actions): Undo changes in previous commit:
+       remove unnecessary string literal declarations.
+       * tests/sets.at (Firsts): Likewise.
+
+2006-08-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't allow an undeclared string literal, but allow a string literal to
+       be used before its declaration.
+       * src/reader.c (check_and_convert_grammar): Don't invoke packgram if
+       symbols_pack complained.
+       * src/symtab.c (symbol_new): Don't count a string literal as a new
+       symbol.
+       (symbol_class_set): Don't count a string literal as a new token, and
+       don't assign it a symbol number since symbol_make_alias does that.
+       (symbol_make_alias): It's not necessary to decrement the symbol and
+       token counts anymore.  Don't assume that an alias declaration occurs
+       before any uses of the identifier or string, and thus don't assert that
+       one of them has the highest symbol number so far.
+       (symbol_check_alias_consistency): Complain if there's a string literal
+       that wasn't declared as an alias.
+       (symbols_pack): Bail if symbol_check_alias_consistency failed since
+       symbol_pack asserts that every token has been assigned a symbol number
+       although undeclared string literals have not.
+       * tests/regression.at (String alias declared after use, Undeclared
+       string literal): New test cases.
+       (Characters Escapes, Web2c Actions): Declare string literals as
+       aliases.
+       * tests/sets.at (Firsts): Likewise.
+
+2006-08-14  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In the grammar scanner, STRING_FINISH unclosed constructs and return
+       them to the parser in order to improve error messages.
+       * src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER,
+       SC_BRACED_CODE, SC_PROLOGUE): Implement.
+       * tests/input.at (Unclosed constructs): New test case.
+       * tests/regression.at (Invalid inputs): Update now that unclosed %{ is
+       seen.
+
+       * src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove
+       unused global.
+
+2006-08-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Handle string aliases for character tokens correctly.
+       * src/symtab.c (symbol_user_token_number_set): If the token has an
+       alias, check and set its alias's user token number instead of its own,
+       which is set to indicate the alias.  Previously, every occurrence of
+       the character token in the grammar overwrote that alias indicator with
+       the character code.
+       * tests/input.at (String aliases for character tokens): New test.
+
+2006-08-12  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.
+
+2006-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
+       to prevent failures when building on older platforms.
+       Check for autopoint failure.
+       Set XGETTEXT_OPTIONS to values that check for C format strings,
+       so that translators are warned about them (this also helps
+       prevent core dumps).
+
+       * lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
+       function, since it simplifies our code a bit.
+
+       * configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
+       rather than -W, so we don't get bogus warnings about sign comparisons.
+       Add -Wpointer-arith, since that warning is useful (it reports code
+       that does not conform to C89 and that some compilers reject).
+       * data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change,
+       since it's no longer needed.
+
+2006-08-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up scanners a bit.
+       * src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack
+       definitions so gcc won't warn when obstack_for_string is unused.
+       * src/scan-code.l: config.h and system.h are already #include'd by
+       scan-code-c.c, so get rid of them here.
+       * src/scan-gram.l: Likewise.
+       * src/scan-skel.l: Likewise, and use flex-scanner.h without obstack
+       definitions rather than duplicating the rest of it.
+       * src/scan-gram-c.c, scan-skel-c.c: #include "system.h".
+
+2006-08-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Suppress signed/unsigned comparison warnings for yycheck.
+       * data/c.m4 (b4_safest_int_type): New macro.
+       * data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against
+       a signed int type, cast it to b4_safest_int_type first.
+       * data/yacc.c: Likewise.
+       (b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is
+       also overwritten.
+
+2006-08-09  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>  (tiny change)
+
+       * doc/bison.texinfo: Fix some typos.
+
+2006-08-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
+       po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4.
+
+       * bootstrap (gnulib_tool): Stop using --assume-autoconf;
+       the latest gnulib does this a different way.
+       (get_translations): Sharuzzaman Ahmat Raslan reported that the ms
+       translation was patched, so stop omitting it.
+
+2006-07-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Enable declaration of default %printer/%destructor.  Make the parser
+       use these for all user-declared grammar symbols for which the user does
+       not declare a specific %printer/%destructor.  Thus, the parser uses it
+       for token 0 if the user declares it but not if Bison generates it as
+       $end.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
+       * NEWS (2.3+): Mention.
+       * doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to
+       declare a %destructor for a mid-rule's semantic value.  It's just
+       impossible to declare one specific to it.
+       (Freeing Discarded Symbols): Mention that @$ can be used in %destructor
+       code.  Describe default %destructor form.
+       * src/parse-gram.y (grammar_declaration): Parse default
+       %printer/%destructor declarations.
+       * src/output.c (symbol_destructors_output): Use symbol_destructor_get
+       and symbol_destructor_location_get rather than accessing the destructor
+       and destructor_location members of struct symbol.
+       (symbol_printers_output): Likewise but for %printer's.
+       * src/reader.c (symbol_should_be_used): Likewise but for %destructor's
+       again.
+       * src/symtab.c (default_destructor, default_destructor_location,
+       default_printer, default_printer_location): New static global
+       variables to record the default %destructor and %printer.
+       (symbol_destructor_get, symbol_destructor_location_get,
+       symbol_printer_get, symbol_printer_location_get): New functions to
+       compute the appropriate %destructor and %printer for a symbol.
+       (default_destructor_set, default_printer_set): New functions to set the
+       default %destructor and %printer.
+       * src/symtab.h: Prototype all those new functions.
+       * tests/actions.at (Default %printer and %destructor): New test to
+       check that the right %printer and %destructor are called, that they're
+       not called for $end, and that $$ and @$ work correctly.
+       (Default %printer and %destructor for user-declared end token): New
+       test to check that the default %printer and %destructor are called for
+       a user-declared end token.
+       * tests/input.at (Default %printer and %destructor redeclared, Unused
+       values with default %destructor): New tests to check related grammar
+       warnings and errors.
+
+2006-07-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up handling of %destructor for the end token (token 0).
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
+       and
+       <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.
+
+       Make the skeletons consistent in how they pop the end token and invoke
+       its %destructor.
+       * data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start
+       state, which has token number 0, since this would invoke the
+       %destructor for the end token.
+       * data/lalr1.cc (yy::parser::parse): Don't check for the final state
+       until after shifting the end token, or else it won't be popped.
+       * data/yacc.c (yyparse): Likewise.
+
+       * data/glr.c (yyparse): Clear the lookahead after shifting it even when
+       it's the end token.  Upon termination, destroy an unshifted lookahead
+       even when it's the end token.
+       * data/lalr1.cc (yy::parser::parse): Likewise.
+       * data/yacc.c (yyparse): Likewise.
+
+       * src/reader.c (packgram): Don't check rule 0.  This suppresses unused
+       value warnings for the end token when the user gives the end token a
+       %destructor.
+
+       * tests/actions.at (Printers and Destructors): Test all the above.
+
+2006-07-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Update to latest gnulib and gettext versions.
+       * bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
+       Add fopen-safer.
+       (gnulib_files): Add m4/warning.m4.  Don't worry about files
+       overwritten by autopoint.
+       Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
+       Suppress "id", "ms", "tr" translations for now, since gettext 0.15
+       rejects them.
+       Don't use autoreconf; instead, invoke autopoint etc. by hand,
+       so that we can remove the intl files at a better time.
+       (intl_files_to_remove): Remove aclocal.m4, since it gets
+       rebuilt anyway.  Remove m4/inttypes_h.m4, m4/inttypes.m4,
+       m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
+       m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
+       Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
+       Remove datarootdir hack; no longer needed.
+       * configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
+       (AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
+       * lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
+       strdup.h.
+       * m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
+       * m4/warning.m4: Remove from CVS, since we now use gnulib's version.
+
+2006-07-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap: Adjust to today's change to gnulib-tool by invoking
+       it with --assume-autoconf='latest-stable'.
+
+2006-07-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
+       least 1.4.7 and 1.4.4) by putting a #line between `typedef union
+       YYSTYPE' and `{'.
+       * src/muscle_tab.h (muscle_grow): Replace the header comments with
+       those from muscle_tab.c since the old ones are misleading.
+
+2006-07-13  Akim Demaille  <akim@epita.fr>
+
+       Support %define "KEY" {VALUE}.
+       * src/scan-code.h, src/scan-code.l (translate_action)
+       (translate_rule_action, translate_symbol_action, translate_code):
+       Return char *, not const char *.
+       * src/parse-gram.y (declaration): Rename as...
+       (prologue_declaration): this.
+       (string_content): Remove this nonterminal, use STRING.
+       (braceless, content, content.opt): New nonterminal.
+       Use them.
+       (%define): Now accept content.opt, i.e., accept also BRACED_CODE
+       as value.
+       * src/scan-gram.l (getargs.h): Don't include it.
+
+2006-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
+       rather than a for-loop that declares a local bool variable.  This
+       should work around a compatibility problem with a Cray x1e C++
+       compiler reported by Hung Nguyen in
+       <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00022.html>.
+       The for-loop was introduced in the 2004-11-17 change but I don't
+       know why it was needed.
+
+2006-07-12  Akim Demaille  <akim@epita.fr>
+
+       * data/c.m4: Comment changes.
+
+2006-07-10  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/complain.c (error_message, ERROR_MESSAGE): New.
+       To factor...
+       (fatal_at, fatal, warn_at, warn, complain_at, complain): these.
+       * src/complain.h, src/complain.c (warning_issued): Remove, unused.
+
+2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Instead of %union, you can define and use your own union type
+       YYSTYPE if your grammar contains at least one <type> tag.
+       Your YYSTYPE need not be a macro; it can be a typedef.
+       * doc/bison.texinfo (Value Type, Multiple Types, Location Type):
+       (Union Decl, Decl Summary): Document this.
+       * data/glr.c (YYSTYPE): Implement this.
+       * data/glr.cc (YYSTYPE): Likewise.
+       * data/lalr1.cc (YYSTYPE): Likewise.
+       * data/yacc.c (YYSTYPE): Likewise.
+       * src/output.c (prepare): Output tag_seen_flag.
+       * src/parse-gram.y (declaration, grammar_declaration):
+       Use 'union_seen' rather than 'typed' to determine whether
+       %union has been seen, since grammars can now be typed without
+       %union.
+       (symbol_declaration, type.opt, symbol_def):
+       Keep track of whether a tag has been seen.
+       * src/reader.c (union_seen, tag_seen): New vars.
+       (typed): remove.
+       * src/reader.h (union_seen, tag_seen, typed): Likewise.
+       * src/scan-code.l (untyped_var_seen): New variable.
+       (handle_action_dollar): Adjust to above changes.
+       (handle_action_dollar, handle_action_at):
+       Improve overflow checking for outlandish numbers.
+       * tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
+       avoid new diagnostics generated by above changes.
+       * tests/regression.at (YYSTYPE typedef): Add test to check
+       for type tags without %union.
+
+       * src/symlist.c (symbol_list_length): Return int, not unsigned
+       int, since callers expect int.  This may need to get revisited
+       once we have proper integer overflow checking.
+
+       * src/scan-gram.h (gram_scanner_cursor): Remove decl, since this
+       object is now static.
+
+       * src/getargs.c (flags_argmatch): Return void, not int,
+       to pacify ./configure --enable-gcc-warnings.
+
+       * src/flex-scanner.h (STRING_FREE): Don't use FLEX_PREFIX (last_string)
+       since last_string is already defined to FLEX_PREFIX (last_string).
+
+2006-07-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       Implement --warnings/-W.
+       * src/getargs.c (report_argmatch, trace_argmatch): Remove,
+       replaced by...
+       (flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
+       Adjust callers.
+       * src/getargs.h, src/getargs.c (warnings, warnings_flags)
+       (warnings_args, warnings_types): New.
+       (getargs, short_options, long_options): Accept -W/--warnings.
+       Sort the options by alphabetical order, upper case letter right
+       before its lower case.
+
+2006-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Change %merge result type clash warnings to errors.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
+       * src/reader.c (record_merge_function_type): Use complain_at.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): Update test case results.
+
+2006-07-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/getargs.h, src/getargs.c: Swap --report and --trace handling
+       to be in alphabetical order.
+       (trace_args): Spelling fixes.
+
+2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
+       so they don't collide with user-defined macros.
+       (yy_stack_print): Don't assume that yytype_int16 promotes to int;
+       this was never guaranteed, and now that we're using gnulib stdint,
+       which defines int_fast16_t to long int, the problem is exposed.
+
+2006-07-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/c.m4 (b4_basename): Simplify a bit, since we don't
+       need the full POSIX semantics (and weren't implementing them
+       anyway).
+
+       Adjust to Autoconf 2.60 and today's gnulib.
+       * bootstrap (gnulib_modules): Add stdint.
+       Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
+       no longer copies it.
+       (intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
+       since stdint needs the former and wcwidth (which is now required
+       by mbswidth) needs the latter.
+       Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
+       work around a compatibility glitch between gettext 0.14.6 and
+       Autoconf 2.60.
+       * configure.ac (AC_PREREQ): Require Autoconf 2.60.
+       Do not check for uintptr_t, since new stdint module does the right
+       thing.
+       * lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
+       Add stdint.h, stdint_.h, wcwidth.h.
+       * m4/.cvsignore: Remove alloca.m4, onceonly.m4.
+       Add absolute-header.m4, double-slash-root.m4, longlong.m4,
+       stdint.m4, wchar_t.m4, wcwidth.m4.
+       * src/files.c: Include <dirname.h> and <stdio-safer.h> in the
+       usual order for ../lib/*.h files.
+       (file_name_split): Use last_component, not base_name, to adjust
+       to gnulib changes.
+       * src/parse-gram.h: Include <strverscmp.h> in the usual order
+       for ../lib/*.h files.
+       (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
+       Define unconditionally, since we now assume the stdint module.
+       * src/scan-skel.l: Include <dirname.h>.
+       (BASE_QPUTS): Use last_component, not base_name.
+       * src/system.h: Include <unlocked-io.h> in the usual order
+       for ../lib/*.h files.  Include <stdint.h> unconditionally,
+       since we now use the stdint module.
+       (uintptr_t): Declare if UINTPTR_MAX is not defined, not
+       HAVE_UINTPTR_T, since we now use the stdint module.
+       (base_name): Remove decl, since files now include <dirname.h>
+       to get the decl.
+
+2006-07-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_location_initial_column, b4_location_initial_line):
+       New, default to 1.
+       * data/yacc.c, data/glr.c, data/location.cc: Use them.
+       * NEWS, doc/bison.texinfo: The initial column and line are 1 by
+       default.
+       * tests/calc.at: Adjust.
+
+2006-07-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_basename): New.
+       (b4_syncline): Also output the location of its invocation (from
+       the skeleton).
+       (b4_user_action, b4_define_user_action, b4_user_actions)
+       (b4_user_initial_action, b4_user_post_prologue, b4_user_start_header)
+       (b4_user_stype): New.
+       * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.
+
+2006-07-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In the grammar file, the first column is 1 not 0 on the first line as
+       on every other line.
+       * src/parse-gram.y (%initial-action): Initialize @$ correctly.
+       * tests/input.at (Torturing the Scanner): Update output.
+
+       * src/scan-gram.l (scanner_cursor): Declare it static.
+
+2006-07-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In warnings, say "previous declaration" rather than "first
+       declaration".
+       * src/symtab.c (redeclaration): Do that here.
+       * src/reader.c (record_merge_function_type): In the case of a result
+       type clash, report the previous declaration rather than the very first
+       one in the grammar file.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): Add a third declaration to check this behavior.
+       * tests/input.at (Incompatible Aliases): Update output.
+
+2006-06-27  Akim Demaille  <akim@epita.fr>
+
+       * doc/Doxyfile.in: New.
+       * doc/Makefile.am: Use it.
+       * src/lalr.h, src/symtab.h: Initial doxygenation.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't miss %merge result type warnings just because the LHS types are
+       declared after the %merge.  This continues the effort of the previous
+       patch.
+       * src/reader.c (get_merge_function): Don't set the merger type yet.
+       (record_merge_function_type): New function for setting the merger type
+       and checking for clashes.
+       (grammar_current_rule_merge_set): Set the location of the %merge for
+       the current rule.
+       (packgram): Invoke record_merge_function_type for each rule now that
+       all symbol type declarations have been parsed.
+       * src/reader.h (merger_list.type_declaration_location): New member
+       storing the location of the first %merge from which the type for this
+       merging function was derived.
+       * src/symlist.h (symbol_list.merger_declaration_location): New member
+       storing the location of a rule's %merge, if any.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): New test to catch the error fixed by the above patch.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Get action warnings (grammar_rule_check) right even when symbol
+       declarations appear after the rules.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
+       Don't mistake the type of $$ in a midrule to be that of its parent
+       rule's $$.
+       * src/reader.c (grammar_current_rule_end): Don't invoke
+       grammar_rule_check yet since not all symbol declarations may have been
+       parsed yet.
+       (grammar_midrule_action): Likewise.
+       Don't record whether the midrule's $$ has been used yet since actions
+       haven't been translated yet.
+       Record the midrule's parent rule and its RHS index within the parent
+       rule.
+       (grammar_current_rule_action_append): Don't translate the action yet
+       since not all symbol declarations may have been parsed yet and, thus,
+       warnings about types for $$, $n, @$, and @n can't be reported yet.
+       (packgram): Translate the action and invoke grammar_rule_check now that
+       all symbol declarations have been parsed.
+       * src/scan-code.l (handle_action_dollar): Now that this is invoked
+       after parsing the entire grammar file, the symbol list here in the case
+       of a midrule is actually the midrule's empty RHS, so reference its
+       parent rule's RHS where necessary.
+       On the other hand, now that you can already know it's a midrule, you
+       aren't forced to think $$ has the same type as its parent rule's $$.
+       (handle_action_at): In the case of a midrule, reference the parent rule
+       where necessary.
+       * src/symlist.c (symbol_list_new): Initialize new midrule-related
+       members.
+       (symbol_list_length): Now that this is invoked after all rules have
+       been parsed, a NULL symbol (rather than a NULL symbol list node)
+       terminates a rule.  symbol_list_print already does this correctly.
+       * src/symlist.h (symbol_list.midrule_parent_rule,
+       symbol_list.midrule_parent_rhs_index): New members so that midrules can
+       remember their relationships with their parents.
+       * tests/input.at (Type Clashes): Extend to catch the midrule $$ error
+       fixed by the above patch.
+       (_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
+       implementing...
+       (Unused values): ... this old test case and...
+       (Unused values before symbol declarations): ... this new test case.
+       This one is the same as `Unused values' except that all symbol
+       declarations appear after the rules in order to catch the rest of the
+       errors fixed by the above patch.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       More cleanup.
+       * src/reader.c (current_rule): Declare it static since it's no longer
+       used outside this file.
+       (grammar_current_rule_action_append): Remove redundant arguments from
+       translate_rule_action invocation.
+       * src/reader.h (current_rule): Remove this unused extern.
+       * src/scan-code.h (translate_rule_action): Remove redundant arguments.
+       * src/scan-code.l (translate_rule_action): Likewise.
+
+2006-06-25  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up yesterday's patch.
+       * parse-gram.y (rhs): Move grammar_midrule_action invocation from here
+       to...
+       * src/reader.c (grammar_current_rule_action_append): ... here for
+       consistency with grammar_current_rule_symbol_append.
+       * tests/regression.at (Braced code in declaration in rules section):
+       Make yyerror and yylex static as usual.
+
+2006-06-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix bug that mistakes braced code in a declaration in the rules section
+       to be a rule action.  Mentioned at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
+       * src/scan-gram.l: Move midrule action detection from the start of the
+       scanning of any braced code to...
+       * src/parse-gram.y (rhs): ... the parsing of braced code as a rule
+       action.  For readability, use $2 and @2 rather than the equivalent
+       global variables.
+       * tests/regression.at (Braced code in declaration in rules section):
+       New test to catch the error fixed by the above patch.
+
+       Work on code readability some.
+       * src/scan-code.l (current_rule): Get rid of this misleading and
+       redundant declaration: it's actually extern'ed in reader.h.
+       (YY_DECL, code_lex, handle_action_dollar, handle_action_at,
+       translate_action): Add a rule argument and use it instead of the global
+       current_rule.
+       (translate_rule_action): This already receives current_rule through an
+       argument, so pass it on to translate_action instead of assigning
+       current_rule to current_rule.
+       (translate_symbol_action, translate_code): Pass rule = NULL to
+       translate_action.
+
+2006-06-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rename %before-definitions to %start-header and %after-definitions to
+       %end-header.  Don't use these declarations to separate pre-prologue
+       blocks from post-prologue blocks.  Add new order-independent
+       declarations %before-header and %after-header as alternatives to the
+       traditional Yacc pre-prologue and post-prologue blocks.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
+       * NEWS (2.3+): Update for these changes.
+       * data/glr.c (b4_before_definitions): Update to...
+       (b4_start_header): ... this.
+       (b4_after_definitions): Update to...
+       (b4_end_header): ... this.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/yacc.c: Likewise.
+       * doc/bison.texinfo (The prologue): Update names, and replace remaining
+       prologue blocks with %*-header declarations.
+       (Calc++ Parser): Likewise.
+       (Bison Declaration Summary): Update names.
+       (Bison Symbols): Update description.
+       * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
+       (PERCENT_END_HEADER): ... this.
+       (PERCENT_BEFORE_DEFINITIONS): Update to...
+       (PERCENT_START_HEADER): ... this.
+       (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+       (declaration): Update token names and m4 macro names.
+       When parsing %end-header and %start-header, invoke translate_code
+       before muscle_code_grow, and no longer set global booleans to remember
+       whether these declarations have been seen.
+       Parse new %after-header and %before-header.
+       * src/reader.c (before_definitions, after_definitions): Remove.
+       (prologue_augment): Accept a new bool argument to specify whether to
+       augment the pre-prologue or post-prologue.
+       * src/reader.h (before_definitions, after_definitions): Remove these
+       extern's.
+       (prologue_augment): Add new bool argument.
+       * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
+       (PERCENT_END_HEADER): ... this.
+       (PERCENT_BEFORE_DEFINITIONS): Update to...
+       (PERCENT_START_HEADER): ... this.
+       (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+       * tests/actions.at (Printers and Destructors): Update names.
+
+2006-06-22  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add comparison operators for C++ location classes.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
+       * data/c++.m4 (b4_define_location_comparison): New boolean %define
+       declaration indicating whether filename_type has an operator==.  If
+       filename_type is `std::string', it defaults to `1', `0' otherwise.
+       * data/location.cc: Iff b4_define_location_comparison is `1', add
+       operator== and operator!= for class position and for class location.
+
+       Some minor fixes.
+       * src/scan-action.l: Remove unused file.
+       * src/symtab.c (symbol_printer_set): Use printer_location not
+       destructor_location.
+       * src/symtab.h (struct symbol): Replace incorrect source comment for
+       printer members.
+       * tests/input.at (Incompatible Aliases): Update output with correct
+       printer location.
+
+2006-06-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't put the pre-prologue in the header file.  For the yacc.c code
+       file and the glr.c header and code files, move the pre-prologue before
+       the token definitions.  Add new %before-definitions and
+       %after-definitions to declare code that will go in both the header file
+       and code file.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
+       <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
+       * NEWS (2.3+): Describe these changes.
+       * data/glr.c (b4_pre_prologue): Move from within to before...
+       (b4_shared_declarations): ... this.
+       Add new b4_before_definitions before b4_token_enums.
+       Add new b4_after_definitions at the end.
+       * data/glr.cc (b4_pre_prologue): Replace with...
+       (b4_before_definitions): ... this in the header file.
+       (b4_after_definitions): New near the end of the header file.
+       * data/lalr1.cc (b4_pre_prologue): Move from the header file to the
+       code file right before including the header file.
+       (b4_before_definitions): New in the previous position of
+       b4_pre_prologue in the header file.
+       (b4_after_definitions): New near the end of the header file.
+       * data/yacc.c: Clean up some m4 quoting especially in the header file.
+       (b4_token_enums_defines): In the code file, move to right before
+       YYSTYPE for consistency with the header file.
+       (b4_before_definitions): New right before b4_token_enums_defines in
+       both the header and code file.
+       (b4_after_definitions): New right after YYLTYPE and yylloc in both the
+       header and code file.
+       * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
+       of prologues for %union dependencies.
+       (Bison Declaration Summary): In %defines description, mention the
+       effect of %before-definitions and %after-definitions on the header
+       file.
+       (Calc++ Parser): Forward declare driver in a %before-definitions rather
+       than in the pre-prologue so that make check succeeds.
+       (Bison Symbols): Add entries for %before-definitions and
+       %after-definitions.
+       * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
+       %before-definitions.
+       (PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
+       (declaration): Parse those declarations and append to
+       b4_before_definitions and b4_after_definitions, respectively.
+       * src/reader.c (before_definitions, after_definitions): New bools to
+       track whether those declarations have been seen.
+       (prologue_augment): Add to the post-prologue if %union,
+       %before-definitions, or %after-definitions has been seen.
+       * src/reader.h (before_definitions, after_definitions): New extern's.
+       * src/scan-gram.l: Scan the new declarations.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
+       prologue block in a %before-definitions or a %after-definitions based
+       on whether the %union is declared.
+       * tests/regression.at (Early token definitions with --yacc, Early token
+       definitions without --yacc): Move tests for token definitions into the
+       post-prologue since token names are no longer defined in the
+       pre-prologue.
+
+2006-06-20  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
+       (symbol_get): Use it.
+       * src/parse-gram.y: Use it.
+
+2006-06-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/scan-gram.l: Remove unused declaration of last_string_1 so the
+       build succeeds when configured with --enable-gcc-warnings.
+
+2006-06-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/parse-gram.y (char_name): New function.
+       (CHAR, STRING, string_content): For %printer, properly escape.
+       (ID): Prefer fputs to fprintf.
+       (id): Reindent to be consistent with other rules.
+       Properly quote char.
+
+       The Translation Project changed its way of publishing translations
+       to maintainers.  I haven't received any responses to my request
+       for supporting the old way, or for documenting the new way.  I
+       have modified 'bootstrap' to use screen scraping
+       (in this case, HTML scraping).  This is unreliable and inelegant,
+       but I don't see any better way.  Yuck.
+       * bootstrap (TP_URL, WGET_COMMAND): New vars.
+       (get_translations): New function, which uses HTML scraping to
+       deduce locations of latest translations.
+       Use this function to grab both bison and bison-runtime .po files.
+       Don't bother priming the pump for the runtime-po domain any more,
+       as it's now translated better than bison is.
+
+2006-06-19  Akim Demaille  <akim@epita.fr>
+
+       * src/scan-gram.l: No longer "parse" things after `%union' until
+       `{'.  Rather, return a single "%union" token.
+       No longer make symbols: return strings, and leave the conversion
+       to symbols to the parser.
+       (SC_PRE_CODE, token_type): Remove.
+       * src/parse-gram.y (%union): New field `character'.
+       Sort tokens.
+       (CHAR): New token.
+       (ID, ID_COLON): Now that the scanner no longer makes them
+       identifiers, adjust all uses to invoke symbol_get.
+       (id_colon): New, wraps the conversion from string to symbol.
+       (%union): Accept a possible union_name.
+       (symbol): Now can be a char.
+       * data/c.m4 (b4_union_name): Leave a default value.
+       * data/glr.c, data/yacc.c: Use it.
+
+2006-06-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       For associating token numbers with token names for "yacc.c", don't use
+       #define statements unless `--yacc' is specified; always use enum
+       yytokentype.  Most important discussions start at:
+       <http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00053.html>,
+       <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00052.html>,
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00043.html>.
+       * NEWS (2.3+): Mention.
+       * data/c.m4 (b4_yacc_if): New.
+       (b4_token_enums_defines): Use b4_yacc_if to decide whether to add the
+       token #define's.
+       * doc/bison.texinfo (Bison Options): Describe the effect of `--yacc'
+       on token name definitions.
+       * src/getargs.c (usage): Capitalize `Yacc' in English.
+       * src/output.c (prepare): Define b4_yacc_flag.
+       * tests/regression.at (Early token definitions): Test that tokens names
+       are defined before the pre-prologue not just before the post-prologue.
+       Remove this test case and copy to...
+       (Early token definitions with --yacc): ... this to test #define's.
+       (Early token definitions without --yacc): ... and this to test enums.
+
+2006-06-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Reword the post-2.3 change to not be so optimistic about
+       removing the old "look-ahead" spelling.
+       Update previous look-ahead/lookahead change reports.
+       * REFERENCES: look-ahead -> lookahead (since that's
+       what he actually wrote).
+       * doc/refcard.tex: look ahead -> lookahead,
+       look-ahead -> lookahead
+
+2006-06-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       For consistency, use `lookahead' instead of `look-ahead' or
+       `look_ahead'.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00049.html>
+       and then at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00017.html>.
+       * NEWS: For the next release, note the change to `--report'.
+       * TODO, doc/bison.1: Update English.
+       * doc/bison.texinfo: Update English.
+       (Understanding Your Parser, Bison Options): Document as
+       `--report=lookahead' rather than `--report=look-ahead'.
+       * src/conflicts.c: Update English in comments.
+       (lookahead_set): Rename from look_ahead_set.
+       (flush_reduce): Rename argument look_ahead_tokens to lookahead_tokens.
+       (resolve_sr_conflict): Rename local look_ahead_tokens to
+       lookahead_tokens, and update other uses.
+       (flush_shift, set_conflicts, conflicts_solve, count_sr_conflicts,
+       count_rr_conflicts, conflicts_free): Update uses.
+       * src/getargs.c (report_args): Move "lookahead" before alternate
+       spellings.
+       (report_types): Update uses.
+       (usage): For `--report' usage description, state `lookahead' spelling
+       rather than `look-ahead'.
+       * src/getargs.h (report.report_lookahead_tokens): Rename from
+       report_look_ahead_tokens.
+       * src/lalr.c: Update English in comments.
+       (compute_lookahead_tokens): Rename from compute_look_ahead_tokens.
+       (state_lookahead_tokens_count): Rename from
+       state_look_ahead_tokens_count.
+       Rename local n_look_ahead_tokens to n_lookahead_tokens.
+       (lookahead_tokens_print): Rename from look_ahead_tokens_print.
+       Rename local n_look_ahead_tokens to n_lookahead_tokens.
+       Update other uses.
+       Update English in output.
+       (add_lookback_edge, initialize_LA, lalr, lalr_free): Update uses.
+       * src/print.c: Update English in comments.
+       (lookahead_set): Rename from look_ahead_set.
+       (print_reduction): Rename argument lookahead_token from
+       look_ahead_token.
+       (print_core, state_default_rule, print_reductions, print_results):
+       Update uses.
+       * src/print_graph.c: Update English in comments.
+       (print_core): Update uses.
+       * src/state.c: Update English in comments.
+       (reductions_new): Update uses.
+       (state_rule_lookahead_tokens_print): Rename from
+       state_rule_look_ahead_tokens_print, and update other uses.
+       * src/state.h: Update English in comments.
+       (reductions.lookahead_tokens): Rename from look_ahead_tokens.
+       (state_rule_lookahead_tokens_print): Rename from
+       state_rule_look_ahead_tokens_print.
+       * src/tables.c: Update English in comments.
+       (conflict_row, action_row): Update uses.
+       * tests/glr-regression.at
+       (Incorrect lookahead during deterministic GLR,
+       Incorrect lookahead during nondeterministic GLR): Rename
+       print_look_ahead to print_lookahead.
+       * tests/torture.at: Update English in comments.
+       (AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR): Rename from
+       AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR.
+       (Many lookahead tokens): Update uses.
+       * data/glr.c: Update English in comments.
+       * lalr1.cc: Likewise.
+       * yacc.c: Likewise.
+       * src/conflicts.h: Likewise.
+       * src/lalr.h: Likewise.
+       * src/main.c: Likewise.
+       * src/output.c: Likewise.
+       * src/parse-gram.c: Likewise.
+       * src/tables.h: Likewise.
+       * tests/calc.at: Likewise.
+
+2006-06-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/flex-scanner.h (yytext): Remove stray `*/' in #define.
+
+2006-06-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * TODO: Add request from Nelson H. F. Beebe to be able to install
+       Bison without installing the yacc script.
+
+2006-06-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/flex-scanner.h: For the sake of Flex 2.5.4, don't #define yyleng
+       and yytext if they're already #define'd.
+       * src/flex-scanner.h, src/location.h: Move #include "system.h" to...
+       * src/scan-code-c.c: ... here.
+       * src/scan-code.l, src/scan-gram.l: ... and here.  Also #include
+       <config.h>.
+
+2006-06-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Get Bison to build again when configured with --enable-gcc-warnings.
+       * src/location.c, src/location.h, src/main.c, src/scan-code.l: Add some
+       missing #include's.
+       * src/scan-code.l (handle_action_dollar, handle_action_at): Rename
+       loc argument as it shadows a global.
+       * src/scan-gram.l: Remove stray comma that prevents boundary_set
+       invocation.
+
+       * src/.cvsignore: Add scan-code.c.
+
+2006-06-07  Akim Demaille  <akim@epita.fr>
+
+       * src/scan-gram.l: Move the "add a trailing ; to actions" code
+       to...
+       * src/scan-code.l: here.
+       * tests/input.at (Torturing the Scanner): Fix another location
+       error.
+
+2006-06-07  Akim Demaille  <akim@epita.fr>
+
+       * src/Makefile.am (BUILT_SOURCES): Fix the trailing backslash.
+
+2006-06-06  Akim Demaille  <akim@epita.fr>
+
+       Extract the parsing of user actions from the grammar scanner.
+       As a consequence, the relation between the grammar scanner and
+       parser is much simpler.  We can also split "composite tokens" back
+       into simple tokens.
+       * src/gram.h (ITEM_NUMBER_MAX, RULE_NUMBER_MAX): New.
+       * src/scan-gram.l (add_column_width, adjust_location): Move to and
+       rename as...
+       * src/location.h, src/location.c (add_column_width)
+       (location_compute): these.
+       Fix the column count: the initial column is 0.
+       (location_print): Be robust to ending column being 0.
+       * src/location.h (boundary_set): New.
+       * src/main.c: Adjust to scanner_free being renamed as
+       gram_scanner_free.
+       * src/output.c: Include scan-code.h.
+       * src/parse-gram.y: Include scan-gram.h and scan-code.h.
+       Use boundary_set.
+       (PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_INITIAL_ACTION)
+       (PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Remove the {...} part,
+       which is now, again, a separate token.
+       Adjust all dependencies.
+       Whereever actions with $ and @ are used, use translate_code.
+       (action): Remove this nonterminal which is now useless.
+       * src/reader.c: Include assert.h, scan-gram.h and scan-code.h.
+       (grammar_current_rule_action_append): Use translate_code.
+       (packgram): Bound check ruleno, itemno, and rule_length.
+       * src/reader.h (gram_in, gram__flex_debug, scanner_cursor)
+       (last_string, last_braced_code_loc, max_left_semantic_context)
+       (scanner_initialize, scanner_free, scanner_last_string_free)
+       (gram_out, gram_lineno, YY_DECL_): Move to...
+       * src/scan-gram.h: this new file.
+       (YY_DECL): Rename as...
+       (GRAM_DECL): this.
+       * src/scan-code.h, src/scan-code.l, src/scan-code-c.c: New.
+       * src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
+       (gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
+       (gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
+       Move these declarations, and...
+       (obstack_for_string, STRING_GROW, STRING_FINISH, STRING_FREE):
+       these to...
+       * src/flex-scanner.h: this new file.
+       * src/scan-gram.l (rule_length, rule_length_overflow)
+       (increment_rule_length): Remove.
+       (last_braced_code_loc): Rename as...
+       (gram_last_braced_code_loc): this.
+       Adjust to the changes of the parser.
+       Move all the handling of $ and @ into...
+       * src/scan-code.l: here.
+       * src/scan-gram.l (handle_dollar, handle_at): Remove.
+       (handle_action_dollar, handle_action_at): Move to...
+       * src/scan-code.l: here.
+       * src/Makefile.am (bison_SOURCES): Add flex-scanner.h,
+       scan-code.h, scan-code-c.c, scan-gram.h.
+       (EXTRA_bison_SOURCES): Add scan-code.l.
+       (BUILT_SOURCES): Add scan-code.c.
+       (yacc): Be robust to white spaces.
+
+       * tests/conflicts.at, tests/input.at, tests/reduce.at,
+       * tests/regression.at: Adjust the column numbers.
+       * tests/regression.at: Adjust the error message.
+
+2006-06-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
+       Use Akim's wording from
+       <http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00056.html>.
+
+2006-06-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Between Bison releases, manually append `+' to the previous Bison
+       release number, and use that as a signal to automatically print the
+       ChangeLog's CVS Id keyword from --version.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
+       * ChangeLog: Add Id header.
+       * configure.ac (AC_INIT): Append `+' to `2.3'.
+       * src/.cvsignore: Add revision.c.
+       * src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
+       (BUILT_SOURCES): Add revision.c.
+       (revision.c): New target rule.  This file defines a new global variable
+       named revision.  It initializes it with either the Id from ChangeLog
+       or, if VERSION doesn't contain `+', with the empty string.
+       * src/getargs.c (version): Print the value of revision.
+       * src/revision.h: Extern revision.
+
+2006-06-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Version 2.3.
+       * configure.ac (AC_INIT): Likewise.
+
+2006-05-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c (YYRECOVERING): Define to be a function-like macro
+       with no arguments, not as an object-like macro.  This is for
+       compatibility with data/yacc.c.  Problem reported by John P. Hartmann in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00059.html>.
+       * doc/bison.texinfo (Action Features, Error Recovery, Table of Symbols):
+       Document this.
+
+2006-05-30  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/getargs.c (usage): Back out yesterday's modification of the
+       --help output so that we don't have to wait for translation before
+       releasing 2.3.
+
+2006-05-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/bison.texinfo (Introduction): Don't say "GLR grammar".
+       Problem reported by Akim Demaille.
+
+2006-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
+
+2006-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c (yy_reduce_print): Omit trailing white space in
+       generated source code.  Problem reported by Frans Englich in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00049.html>.
+
+2006-05-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * Makefile.maint (gzip_rsyncable, GZIP_ENV): Compute within the
+       shell, not within 'make', so that 'make' by an ordinary builder
+       (using GNU make) does not worry about configuring gzip.  This also
+       works around a bug reported independently by Keith Thompson and by
+       Georg Schwarz, whereby gzip 1.2.4 --help would output usage on
+       stderr rather than stdout, messing up the build logs.
+
+2006-05-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/yacc.c (yyparse): Wrap the final return from yyparse inside YYID
+       to make sure that YYID will never be unused.  This fixes a 'make
+       maintainer-check' failure caused by the recent changes to the 'Trivial
+       grammars' test case, which caused g++ 4.1.0 to complain that YYID was
+       not used.
+       * data/glr.c (yyparse): Wrap yyparse's return inside YYID just in case.
+
+2006-05-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yyresolveLocations): Remove bogus YYASSERT that the
+       state before an empty RHS is always resolved here.  Only the location
+       of that state is guaranteed to be resolved, and that's enough.  This
+       fixes the remaining bug reported by Derek M. Jones in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
+       * tests/glr-regression.at (Uninitialized location when reporting
+       ambiguity): Test the above case.
+       Also, the embedded comments in this test case claim it checks the case
+       of an empty RHS that has inherited the initial location.  However, the
+       corresponding LHS was already resolved, so yyresolveLocations didn't
+       actually have reason to modify it.  Fix this by forcing
+       nondeterministic operation at the beginning of the parse.
+
+2006-05-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/c.m4 (b4_yy_symbol_print_generate):
+       (b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
+       'const YYSTYPE', and similarly for YYLTYPE.  This fixes one
+       of the bugs reported today by Derek M Jones in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
+       * doc/bison.texinfo (Value Type): Document that YYSTYPE must be
+       defined to be a type name without parens or brackets.
+       (Location Type): Similarly for YYLTYPE.
+       * tests/regression.at (Trivial grammars): Put in a test for this
+       bug that will be caught by 'make maintainer-check' (though not,
+       alas, by 'make check' unless your compiler is picky).
+
+2006-05-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Version 2.2.
+       * configure.ac (AC_INIT): Likewise.
+
+2006-05-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yyreportTree): Make room in yystates for the state
+       preceding the RHS.  This fixes the segmentation fault reported by Derek
+       M. Jones in
+       <http://lists.gnu.org/archive/html/help-bison/2006-05/msg00035.html>.
+       (yyreportTree, yypdumpstack): Subtract 1 from yyrule before printing
+       to the user.  Reported for yyreportTree by Derek M. Jones later in the
+       same thread.
+       * THANKS: Add Derek M. Jones.
+       Update my email address.
+       Fix typo in Steve Murphy's name.
+
+2006-05-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c (yyreportSyntaxError): Fix off-by-one error in
+       checking against YYLAST that caused the parser to miss a potential
+       alternative in its diagnostic.
+       Problem reported by Maria Jose Moron Fernandez in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00024.html>.
+       * data/lalr1.cc (yysyntax_error_): Likewise.
+       * data/yacc.c (yysyntax_error): Likewise.
+       * tests/regression.at (_AT_DATA_DANCER_Y): Use static array for
+       tokens, in case we run into an older C compiler.
+       (_AT_DATA_EXPECT2_Y, AT_CHECK_EXPECT2): New macros.
+       Use them to check for the off-by-one error fixed above.
+
+       * data/yacc.c (yytnamerr): Fix typo: local var should be of type
+       YYSIZE_T, not size_t.
+       * tests/regression.at (Trivial grammars): New test, to catch
+       the error fixed by the above patch.
+
+2006-05-14  Akim Demaille  <akim@lrde.epita.fr>
+
+       * doc/bison.texinfo (C++ Bison Interface): Clarify the naming
+       scheme.
+       Reported by Steve Murphy.
+
+2006-05-14  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/glr.cc, data/lalr1.cc: Using %defines is mandatory.
+       * data/glr.cc: b4_location_flag is now b4_locations_flag.
+
+2006-05-14  Akim Demaille  <akim@lrde.epita.fr>
+
+       Implement --trace=m4.
+       * src/getargs.c (trace_types, trace_args): Accept trace_m4.
+       * src/output.c (output_skeleton): When set, pass -dV to m4.
+
+       Factor the handling of flags in m4.
+       * src/output.c (prepare): Rename the muscle names debug, defines,
+       error_verbose to debug_flag, defines_flag, error_verbose_flag.
+       * data/c.m4: Adjust.
+       (_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
+       Use b4_define_flag_if to define other b4_FLAG_if macros.
+       (b4_location_if): As a consequence, rename as...
+       (b4_locations_if): this, for consistency.
+       Adjust all the skeletons.
+
+2006-05-14  Akim Demaille  <akim@lrde.epita.fr>
+
+       * etc/bench.pm: Shorten bench names.
+
+2006-05-14  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/output.h, src/output.c (error_verbose): Move to...
+       * src/getargs.h, src/getargs.c: here.
+       Sort the flags.
+       Adjust dependencies.
+
+2006-05-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/c.m4 (b4_copyright): Put the special exception for Bison
+       skeletons here, so we don't have to put it in each skeleton.  All
+       uses changed.  Suggested by Akim Demaille.  Also, wrap the
+       copyright notice, in case it is longer than 80 columns.  Replace
+       comma by newline after title.
+
+2006-05-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/bison.texinfo (Calc++ Scanner): The flex behavior is an
+       incompatibility, not a bug.  Mention that it wasn't fixed as of
+       flex 2.5.33.
+
+2006-05-11  Akim Demaille  <akim@lrde.epita.fr>
+
+       * examples/extexi: Enforce the precedence of concatenation over
+       >>.
+       Reported by Tommy Nordgren.
+
+2006-05-11  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/lalr1.cc (yytranslate_): Rename token as t to avoid clashes
+       with the member "token".
+       Reported by Martin Nylin.
+
+2006-05-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c: Switch to Bison 2.2 special-exception language in
+       the copyright notice.  Use more-regular format for titles and
+       copyright notices.
+       * data/glr.cc: Likewise.
+       * data/location.cc: Likewise.
+       * data/yacc.cc: Likewise.
+       * doc/bison.texinfo (Conditions): Document this.
+       * NEWS: likewise.  Upgrade version to 2.2.
+
+2006-04-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/glr.cc: Remove dead code.
+
+2006-04-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap: Comment out the AM_CPPFLAGS line, since we don't use
+       that variable and the line breaks the bootstrap.  Problem reported
+       by Juan M. Guerrero.
+
+2006-04-24  Akim Demaille  <akim@lrde.epita.fr>
+
+       * doc/bison.texinfo (Multiple start-symbols): New.
+
+2006-04-24  Akim Demaille  <akim@lrde.epita.fr>
+
+       * etc/README, etc/bench.pl: New.
+
+2006-04-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/scan-gram.l: Be robust to BRACED_CODE appearing before any
+       rule.
+       Reported by Mickael Labau.
+       * tests/input.at (Torturing the Scanner): Test it.
+
+2006-03-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/bison.texinfo (Decl Summary): Don't mention yylloc twice.
+       Problem reported by Bob Rossi.
+
+2006-03-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/bison.texinfo: Remove @shorttitlepage stuff; it wasn't used
+       and didn't really work.
+       For the index, use @ifnotinfo, not @iftex.
+       Minor cleanups of spacing and terminology.
+
+2006-03-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Fix the definition
+       of AT_NAME_PREFIX when %name-prefix is not used.
+
+2006-03-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       Apply --prefix to C++ skeletons too: they change the namespace.
+       The test suite already exercize these cases.
+       * data/c++.m4 (b4_namespace): New.
+       * data/lalr1.cc, data/glr.cc, data/location.cc: Use it instead of `yy'.
+       * data/lalr1.cc (yytnameerr_): Move its definition into the namespace.
+       * data/yacc.c, data/glr.c: Remove a useless `[]'.
+       * doc/bison.texinfo: Document it.
+       (Option Cross Key): Use @multitable in all formats.  It looks
+       nicer, even in TeX outputs.
+       (Rules): Use the same code whatever the output type is.
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS)
+       (_AT_BISON_OPTION_POPDEFS): Support AT_NAME_PREFIX.
+       * tests/calc.at: Use it, instead of hard coding `yy'.
+
+2006-03-10  Akim Demaille  <akim@lrde.epita.fr>
+
+       * TODO: Remove dead items.
+
+2006-03-10  Akim Demaille  <akim@lrde.epita.fr>
+
+       * doc/FAQ: Remove, merged into...
+       * doc/bison.texinfo (FAQ): this.
+       * doc/Makefile.am (EXTRA_DIST): Adjust.
+
+2006-03-10  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_token_enum): Always define the enum of tokens,
+       even if empty.
+       * data/lalrl1.cc, data/glr.cc (parser::token_type): New.
+       * doc/bison.texinfo (Calc++ Scanner): Use it.
+
+2006-03-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix two nits reported by twlevo, plus one more that I discovered.
+
+       * src/assoc.h (assoc_to_string): Give a name to the arg, as
+       this is the usual Bison style.
+       * src/location.h (location_print): Likewise.
+
+       * src/reader.h (token_name): Likewise.
+
+2006-03-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix some nits reported by twlevo.
+       * doc/FAQ: Remove ancient Y2K FAQ, replacing it with "secure"
+       and "POSIX".  Use more-modern syntax for URLs.  Mention C++
+       and ask for Java.  Don't hardwire OS version numbers.  Add
+       copyright notice.
+       * m4/.cvsignore: Add unistd_h.m4, for latest gnulib.
+       * src/conflicts.c (solved_conflicts_obstack): Now static.
+
+2006-03-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Introduction): Mention GLR and C++ as on the web
+       page.  Say "you can use it" not "you may use it" as on the web page;
+       we're describing capabilities not granting permission.
+
+2006-03-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c (yyresolveLocations): Rename local variables to avoid
+       shadowing warnings.  Use usual patter for iterating through RHS.
+       * tests/glr-regression.at
+       (Uninitialized location when reporting ambiguity):
+       Modify yylex so that it uses its argument, rather than trying
+       to rely on ARGSUSED (which doesn't work for gcc with warnings).
+       const char -> char const.
+
+       * tests/Makefile.am ($(srcdir)/package.m4, maintainer-check-valgrind):
+       Don't use tabs inside commands; it messes up 'ps'.
+       Problem reported by twlevo.
+
+2006-03-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/glr-regression.at (Uninitialized location when reporting
+       ambiguity): New test case.
+       * data/glr.c (yyresolveLocations): New function, which uses
+       YYLLOC_DEFAULT.
+       (yyresolveValue): Invoke yyresolveLocations before reporting an
+       ambiguity.
+       * doc/bison.texinfo (Default Action for Locations): Note
+       YYLLOC_DEFAULT's usage for ambiguity locations.
+       (GLR Semantic Actions): Cross-reference those notes.
+
+2006-03-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/glr-regression.at (Leaked semantic values when reporting
+       ambiguity): Remove unnecessary union and type declarations.
+       (Leaked lookahead after nondeterministic parse syntax error): New test
+       case.
+       * data/glr.c (yyparse): Check for zero stacks remaining before
+       attempting to shift the lookahead so that you don't lose it.
+
+2006-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Avoid memory leaks by not invoking longjmp in yyreportAmbiguity.
+       * tests/glr-regression.at (Leaked semantic values when reporting
+       ambiguity): New test case.
+       * data/glr.c (yyreportAmbiguity): Invoke yyyerror directly and return
+       yyabort rather than invoking yyFail, which invokes longjmp.  Remove the
+       now unnecessary yystackp parameter.
+       (yyresolveValue): Return yyreportAmbiguity's result.  Now the necessary
+       destructors can be called.
+
+       * tests/glr-regression.at: Don't invoke bison with `-t' unnecessarily
+       in existing testcases.
+
+2006-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't leak semantic values for parent RHS when a user action cuts the
+       parser, and clean up related code a bit.
+       * tests/glr-regression.at (Leaked merged semantic value if user action
+       cuts parse): Rename to...
+       (Leaked semantic values if user action cuts parse): ... this.  Add check
+       for leaked parent RHS values.
+       * data/glr.c (yydestroyGLRState): In debugging output, distinguish
+       between an unresolved state (non-empty chain of semantic options) and
+       an incomplete one (signaled by an empty chain).
+       (yyresolveStates): Document the interface.  Move all manipulation of a
+       successfully or unsuccessfully resolved yyGLRState to...
+       (yyresolveValue): ... here so that yyresolveValue always leaves a
+       yyGLRState with consistent data and thus is easier to understand.
+       Remove the yyvalp and yylocp parameters since they are always just
+       taken from the yys parameter.  When reporting a discarded merged value
+       in debugging output, note that it is incompletely merged.  Document the
+       interface.
+       (yyresolveAction): If resolving any of the RHS states fails, destroy
+       them all rather than leaking them.  Thus, as long as user actions are
+       written to clean up the RHS correctly, yyresolveAction always cleans up
+       the RHS of a semantic option.  Document the interface.
+
+2006-02-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c (yyexpandGLRStack): Catch an off-by-one error that
+       led to a segmentation fault in GNU Pascal.  Problem reported
+       by Waldek Hebisch.
+
+2006-02-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Mid-Rule Actions): Explain how to bury a
+       mid-rule action inside a nonterminal symbol in order to declare a
+       destructor for its semantic value.
+
+2006-02-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
+       YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
+       __cplusplus && ! defined _STDLIB_H && !
+       ((defined YYMALLOC || defined malloc) && (defined YYFREE ||
+       defined free))]: Include <stdlib.h> rather than rolling our own
+       declarations of malloc and free, to avoid problems with
+       incompatible declarations (using 'throw') C++'s stdlib.h.  This
+       should fix Debian bug 340012
+       <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
+       reported by Guillaume Melquiond.
+
+2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Clarify symbols versus types in unused-value warnings.
+
+       * configure.ac (AC_INIT): Bump version number.
+
+2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Version 2.1a.
+       * tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex,
+       since C99 requires this.
+
+2006-02-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * m4/c-working.m4: New file.
+       * configure.ac (BISON_TEST_FOR_WORKING_C_COMPILER): Use it.
+
+2006-02-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * Makefile.maint: Merge from coreutils.
+
+2006-02-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+       * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Catch a
+       configuration screwup "./configure CC=/opt/SUNWspro/bin/c89
+       CFLAGS="-xarch=generic64" CXX=/opt/SUNWspro/bin/CC
+       LDFLAGS="-xarch=generic64" with Sun C 5.7 on Solaris 10; this
+       messes up because C++ code is compiled in 32-bit mode but linked
+       in 64-bit mode.
+
+2006-02-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+       * doc/bison.texinfo (Calc++ Scanner): Work around a bug in flex
+       2.5.31.  This resembles the 2005-10-10 patch to src/scan-skel.l.
+
+       * examples/calc++/Makefile.am (check_PROGRAMS): Renamed from
+       nodist_PROGRAMS, since we don't need to actually compile the
+       example if we're just doing a plain 'make'.  This avoids bothering
+       the installer unnecessarily about problems due to weird C++
+       compilers.
+
+2006-02-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+       * tests/headers.at (AT_TEST_CPP_GUARD_H): Use #include <...> rather
+       than #include "...", and compile with -I'.'.  The old method was
+       not portable, according to Posix and the C standard, and it does
+       not work with Sun C 5.7, where previous #line directives affect
+       the working directory used in later #include "..." directives.
+
+2006-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       Various DJGGP specific issues in /djgpp
+
+2006-02-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+       * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that
+       '#include <map>' works and that you can apply ++ to iterators.
+
+2006-02-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Work around portability problems summarized by Nelson H. F. Beebe in
+       <http://lists.gnu.org/archive/html/bug-bison/2005-09/msg00021.html>.
+
+       * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
+       that '#include <string>' works.
+
+       * data/lalr1.cc (yytranslate_): No longer inline, to work around a
+       porting problem to g++ 3.4.3 on Darwin 7.9.0, where g++ complained
+       "warning: sorry: semantics of inline function static data `const
+       unsigned char translate_table[262]' are wrong (you'll wind up with
+       multiple copies)".
+
+       * lib/bbitset.h (struct bitset_vtable): Rename members not, and,
+       or, xor to not_, and_, or_, and xor_, respectively.  This works
+       around a bug in GCC 3.4.3 on Irix 6.5, which apparently has a
+       random system header somewhere that includes the equivalent of
+       <iso646.h>.
+
+       * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that "$CC
+       -E" works; it apparently doesn't work with PathScale EKO Compiler
+       Suite Version 2.0.
+
+2006-01-30  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       During deterministic GLR operation, user actions should be able to
+       influence the parse by changing yychar.  To make this easier to fix and
+       to make glr.c easier to evolve in general, don't maintain yytoken in
+       parallel with yychar; just compute yytoken when needed.
+       * tests/glr-regression.at (Incorrect lookahead during deterministic
+       GLR): Check that setting yychar in a user action has the intended
+       effect.
+       * data/glr.c (yyGLRStack): Remove yytokenp member.
+       (yyclearin): Don't set *yytokenp.
+       (yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Examine
+       yychar rather than *yytokenp to determine the current lookahead.
+       Compute yytoken locally when needed.
+       (yyparse): Likewise.  Remove the local yytoken that yytokenp used to
+       point to.
+
+       * doc/bison.texinfo (Bison Options): Remove stray sentence fragment
+       after `--report' documentation.
+
+2006-01-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/parse-gram.y (grammar_declaration): Location of printer
+       symbol is @1, not list->location.  Bug reported by twlevo.
+       * tests/input.at (Incompatible Aliases): Adjust to above change.
+
+2006-01-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/input.at (AT_CHECK_UNUSED_VALUES): Remove.  Instead, do
+       all the test at once.  This makes the output easier to read in the
+       normal case.
+
+       Fix a longstanding bug uncovered by bro-0.9a9/src/parse.y, which I
+       got from <http://bro-ids.org/download.html>.  The bug is that
+       when two actions appeared in succession, the second one was
+       scanned before the first one was added to the grammar rule
+       as a midrule action.  Bison then output the incorrect warning
+       "parse.y:905.17-906.36: warning: unused value: $3".
+       * src/parse-gram.y (BRACED_CODE, action): These are no longer
+       associated with a value.
+       (rhs): Don't invoke grammar_current_rule_action_append.
+       (action): Invoke it here instead.
+       * src/reader.c (grammar_midrule_action): Now extern.
+       (grammar_current_rule_action_append): Don't invoke
+       grammar_midrule_action; that is now the scanner's job.
+       * src/reader.h (last_string, last_braced_code_loc):
+       (grammar_midrule_action): New decls.
+       * src/scan-gram.l (last_string): Now extern, sigh.
+       (last_braced_code_loc): New extern variable.
+       (<INITIAL>"{"): Invoke grammar_midrule_action if the current
+       rule already has an action.
+       (<SC_BRACED_CODE>"}"): Set last_braced_code_loc before returning.
+       * tests/input.at (AT_CHECK_UNUSED_VALUES):
+       Add some tests to check that the above changes fixed the bug.
+
+2006-01-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/reader.c (symbol_should_be_used): Renamed from symbol_typed_p.
+       All used changed.  Check whether the symbol has a destructor,
+       not whether it is typed.
+       * tests/input.at (AT_CHECK_UNUSED_VALUES): Add a destructor, so
+       that the values are still reported as unused.  All line numbers
+       adjusted.
+
+2006-01-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Work around a bug in bro 0.8, which underparenthesizes its
+       definition of YYLLOC_DEFAULT.
+       * data/glr.c: Change all uses of YYLLOC_DEFAULT to parenthesize
+       their arguments.
+       * data/lalr1.cc: Likewise.
+       * data/yacc.cc: Likewise.
+
+2006-01-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Work around a bug in Pike 7.0, and give the Pike folks a
+       better way to override the usual int widths.
+       * data/yacc.c (b4_int_type): Use yytype_uint8, etc., so that the
+       user can override the types.
+       (short): #undef, to work around a bug in Pike 7.0.
+       (yytype_uint8, yytype_int8, yytype_uint16, yytype_int16): New types.
+       (union yyalloc.yyss): Use yytype_int16 rather than short.
+       All uses changed.
+       (yysigned_char): Remove.
+       * src/parse-gram.y (YYTYPE_UINT8, YYTYPE_INT8, YYTYPE_UINT16):
+       (YYTYPE_INT16): New macros, to test the new facility in yacc.c.
+       * tests/regression.at (Web2c Actions): Adjust to above changes.
+
+       * src/reader.c (check_and_convert_grammar): New function.
+       (reader): Close the input file even if something went wrong during
+       parsing.  Minor file descriptor leak reported by twlevo.
+
+       * src/assoc.c (assoc_to_string): Use a default: abort (); case
+       to pacify gcc -Wswitch-default.
+       * src/scan-gram.l (adjust_location): Use a default: break; case
+       to pacify gcc -Wswitch-default.
+       * src/scan-skel.h (skel_get_lineno, skel_get_in, skel_get_out):
+       (skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
+       (skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
+       Move these decls to scan-skel.l, since they don't need to be
+       visible elsewhere.
+       * src/scan-skel.l: Accept the above decls.
+       (skel_lex): New decl, to pacify GCC when unpatched flex 2.5.31
+       is used.
+
+2006-01-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * Makefile.cfg (local-checks-to-skip): Add changelog-check,
+       since we don't want to insist on a version number at the start
+       of the changelog every time.
+       * Makefile.maint: Sync from coreutils a bit better.
+       (sc_trailing_blank): Renamed from sc_trailing_space.
+       All uses changed.
+       (sc_no_if_have_config_h, sc_require_config_h):
+       (sc_prohibit_assert_without_use): New rules.
+       (sc_obsolete_symbols): Don't catch Makefile.maint itself.
+       (sc_dd_max_sym_length): Fix leading spaces in rule.
+       (sc_system_h_headers): Prefix with @.
+       (sc_useless_cpp_parens, m4-check): Output line numbers.
+       (changelog-check): Allow version only in head.
+       * data/c.m4: Use "defined FOO" instead of "defined (FOO)", to
+       satisfy new Makefile.maint rule.
+       * data/glr.c: Likewise.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/yacc.c: Likewise.
+       * lib/ebitsetv.c: Likewise.
+       * lib/lbitset.c: Likewise.
+       * lib/subpipe.c: Likewise.
+       * lib/timevar.c: Likewise.
+       * src/system.h: Likewise.
+       * data/yacc.c (YYSTYPE): Don't generate trailing spaces in output.
+       * djgpp/Makefile.maint: Add copyright notice.
+       * djgpp/README.in: Likewise.
+       * djgpp/config.bat: Likewise.
+       * djgpp/config.site: Likewise.
+       * djgpp/config_h.sed: Likewise.
+       * djgpp/djunpack.bat: Likewise.
+       * djgpp/config.sed: Fix copyright notice to match standard format.
+       * djgpp/subpipe.h: Likewise.
+       * lib/bitsetv-print.c: Likewise.
+       * lib/bitsetv.c: Likewise.
+       * lib/subpipe.h: Likewise.
+       * lib/timevar.c: Likewise.
+       * lib/timevar.h: Likewise.
+       * djgpp/subpipe.c: Use standard recipe for config.h.
+       * lib/abitset.c: Likewise.
+       * lib/bitset.c: Likewise.
+       * lib/bitset_stats.c: Likewise.
+       * lib/bitsetv-print.c: Likewise.
+       * lib/bitsetv.c: Likewise.
+       * lib/ebitsetv.c: Likewise.
+       * lib/get-errno.c: Likewise.
+       * lib/lbitset.c: Likewise.
+       * lib/subpipe.c: Likewise.
+       * lib/timevar.c: Likewise.
+       * lib/vbitset.c: Likewise.
+       * tests/local.at: Likewise.
+       * src/scan-gram.l: Don't include verify.h, since system.h does
+       that for us.
+       * .x-sc_require_config_h: New file.
+       * .x-sc_unmarked_diagnostics: New file.
+
+2006-01-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Be a bit more systematic about using 'abort'.
+       * lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
+       * lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
+       Put 'default: abort ();' before some other case, to satisfy older
+       pedantic compilers.
+       * lib/bitset_stats.c (bitset_stats_init): Likewise.
+       * lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
+       * lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
+       * src/conflicts.c (resolve_sr_conflict): Likewise.
+       * src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
+       (get_decision_str, get_orientation_str, get_node_alignment_str):
+       (get_arrow_mode_str, get_crossing_type_str, get_view_str):
+       (get_linestyle_str, get_arrowstyle_str): Likewise.
+       * src/conflicts.c (resolve_sr_conflict):
+       Use a default case rather than one for the one remaining enum
+       value, to catch invalid enum values as well.
+       * src/lalr.c (set_goto_map, map_goto):
+       Prefer "assert (FOO);" to "if (!FOO) abort ();".
+       * src/nullable.c (nullable_compute, token_definitions_output):
+       Likewise.
+       * src/reader.c (packgram, reader): Likewise.
+       * src/state.c (transitions_to, state_new, state_reduction_find):
+       Likewise.
+       * src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
+       (symbol_pack): Likewise.
+       * src/tables.c (conflict_row, pack_vector): Likewise.
+       * src/scan-skel.l (QPUTS): Remove unnecessary parens.
+       (BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
+       * src/system.h: Don't include <assert.h>.
+       (assert): New macro.
+
+       * doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
+       (Destructor Decl, Parser Function, Pure Calling):
+       Describe rules for braces inside C code more carefully.
+
+2006-01-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix some porting glitches found by Nelson H. F. Beebe.
+       * lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
+       compilers that don't understand that abort () does not return.
+       * src/state.c (transitions_to): Likewise.
+       * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
+       that '#include <cstdlib>' works.
+       * src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
+       (INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
+       #undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
+       for the benefit of some pre-C99 compilers.
+
+       * bootstrap: Undo changes to gnulib files that autoreconf made.
+
+       Minor fixups to get 'make maintainer-check' to work.
+       * configure.ac: Don't use -Wnested-externs, as it's incompatible
+       with the new verify.h implementation.
+       * data/c.m4 (b4_yy_symbol_print_generate): YYUSE (yyoutput).
+       * data/glr.c (YYUSE): Depend on __GNUC__ as well.
+       * data/yacc.c (YYUSE): Likewise.
+       * data/lalr1.cc (yysyntax_error_): YYUSE (yystate).
+       * lib/subpipe.c (end_of_output_subpipe): The args are unused.
+       * src/parse-gram.y (declaration): Don't pass a string constant
+       to a function that expects char *, since GCC might complain
+       about the constant value.
+       * src/reader.c (symbol_typed_p): Add parens to pacify GCC.
+       * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): #undef yylloc and yylval
+       before #defining them.
+       * tests/glr-regression.at
+       (Incorrectly initialized location for empty right-hand side in GLR):
+       In yyerror, use the msg arg.
+       (Corrupted semantic options if user action cuts parse):
+       (Incorrect lookahead during deterministic GLR):
+       (Incorrect lookahead during nondeterministic GLR):
+       Don't name a local var 'index'; it shadows string.h's 'index'.
+
+2006-01-19  Akim Demaille  <akim@epita.fr>
+
+       * tests/calc.at (_AT_DATA_CALC_Y): Initialize the whole initial
+       location, not just parts of it.
+
+2006-01-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document the fact that multiple %unions are now allowed.
+       * doc/bison.texinfo (Union Decl): Likewise.
+       * TODO: This feature is now implemented, so remove it from
+       the wishlist.
+
+       * Makefile.maint: Merge with coreutils Makefile.maint.
+       (CVS_LIST): Use build-aux version if available.
+       (VERSION_REGEXP): New macro.
+       (syntax-check-rules): Add sc_no_if_have_config_h,
+       sc_prohibit_assert_without_use, sc_require_config_h,
+       sc_useless_cpp_parens.
+       (sc_obsolete_symbols): Check for O_NDELAY.
+       (sc_dd_max_sym_length): Track coreutils.
+       (sc_unmarked_diagnostics): Look in all files, not just *.c.
+       (sc_useless_cpp_parens): New rule.
+       (news-date-check): Look for version or today's date.
+       (changelog-check): Don't require version number near head.
+       (copyright-check): Use current year instead of hardwiring 2005.
+       (my-distcheck): Depend on $(release_archive_dir)/$(prev-tgz).
+       (announcement): Add --gpg-key-ID.
+
+       * djgpp/config.sed: Add copyright notice, and replace "filesystem"
+       with "file system".
+
+       Avoid undefined behavior that addressed just before the start of an
+       array.  Problem reported by twlevo.
+       * src/reader.c (packgram): Prepend a new sentinel before ritem.
+       * src/lalr.c (build_relations): Rely on new sentinel.
+       * src/gram.c (gram_free): Adjust to new sentinel.
+
+2006-01-12  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to
+       yylookaheadNeeds.  All uses updated.
+       (yysplitStack): Rename local yynewLookaheadStatuses to
+       yynewLookaheadNeeds.
+       * data/glr-regression.at (Incorrect lookahead during nondeterministic
+       GLR): In comments, change `lookahead status' to `lookahead need'.
+
+2006-01-11  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>
+
+       * data/glr.c (yysplitStack): A little stylistic rewrite.
+
+2006-01-11  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>
+
+       * data/glr.c (yyaddDeferredAction): Flesh out the comment.
+
+2006-01-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo: Fix some typos.
+       (GLR Semantic Actions): New subsection discussing special
+       considerations because GLR semantic actions might be deferred.
+       (Actions): Mention look-ahead usage of yylval.
+       (Actions and Locations): Mention look-ahead usage of yylloc.
+       (Special Features for Use in Actions): Add YYEOF entry and mention it
+       in the yychar entry.
+       In the yychar entry, remove mention of the local yychar case (pure
+       parser) since this is irrelevant information when writing semantic
+       actions and since it's already discussed in `Bison Symbols' where
+       yychar is otherwise described as an external variable.
+       In the yychar entry, don't call it the `current' look-ahead since it
+       isn't when semantic actions are deferred.
+       In the yychar and yyclearin entries, add note about deferred semantic
+       actions.
+       Add yylloc and yylval entries discussing look-ahead usage.
+       (Look-Ahead Tokens): When discussing yychar, don't call it the
+       `current' look-ahead, and do mention yylval and yylloc.
+       (Error Recovery): Cross-reference `Action Features' when mentioning
+       yyclearin.
+       (Bison Symbols): In the yychar entry, don't call it the `current'
+       look-ahead.
+       In the yylloc and yylval entries, mention look-ahead usage.
+
+2006-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/glr-regression.at: Update copyright year to 2006.
+
+2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yyGLRStateSet): Add yybool* yylookaheadStatuses member to
+       use during nondeterministic operation to track which stacks have
+       actually needed the current lookahead.
+       (yyinitStateSet, yyfreeStateSet, yyremoveDeletes, yysplitStack):
+       Allocate, deallocate, resize, and otherwise shuffle space for
+       yylookaheadStatuses in parallel with yystates member of yyGLRStateSet.
+       (yysplitStack, yyprocessOneStack, yyparse): Set lookahead status
+       appropriately during nondeterministic operation.
+       (yySemanticOption): Add int yyrawchar, YYSTYPE yyval, and YYLTYPE yyloc
+       members to store the current lookahead to be used by the deferred
+       user action.
+       (yyaddDeferredAction): Add size_t yyk parameter specifying the stack
+       from which the RHS is taken.  Set the lookahead members of the new
+       yySemanticOption according to the lookahead status for stack yyk.
+       (yyglrShiftDefer, yyglrReduce): Pass yyk parameter on to
+       yyaddDeferredAction.
+       (yyresolveAction): Set yychar, yylval, and yylloc to the lookahead
+       members of yySemanticOption before invoking yyuserAction, and then set
+       them back to their current values afterward.
+       (yyparse): Set yychar = YYEMPTY where yytoken = YYEMPTY.
+       (yyreportAmbiguity): Add /*ARGSUSED*/ to pacify lint.
+       * tests/glr-regression.at: Remove `.' from the ends of recent test case
+       titles for consistency.
+       (Leaked merged semantic value if user action cuts parse): In order to
+       suppress lint warnings, use arguments in merge function, and assign
+       char value < 128 in main.
+       (Incorrect lookahead during deterministic GLR): New test case.
+       (Incorrect lookahead during nondeterministic GLR): New test case.
+
+2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/c.m4 (b4_yy_symbol_print_generate): In yy_symbol_print, accept
+       !yyvaluep as signal that no semantic value is available to print.
+       * data/glr.c (yydestroyGLRState): If state is not resolved, don't try
+       to print a semantic value.
+
+2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/glr-regression.at: For consistency with my newer test cases,
+       don't thank myself.
+
+2006-01-05  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yyresolveValue): When merging semantic options, if at
+       least one user action succeeds but a later one cuts the parse, then
+       destroy the semantic value before returning rather than leaking it.
+       (yyresolveStates): If a user action cuts the parse and thus
+       yyresolveValue fails, ignore the (unset) semantic value rather than
+       corrupting the yyGLRState, and empty the semantic options list since
+       the user actions should have called all necessary destructors.
+       Simplify code with YYCHK.
+       * tests/glr-regression.at (Corrupted semantic options if user action
+       cuts parse): New test case.
+       (Undesirable destructors if user action cuts parse): New test case.
+       Before applying any of this patch, this test case never actually failed
+       for me... but only because the corrupted semantic options usually
+       masked this bug.
+       (Leaked merged semantic value if user action cuts parse): New test
+       case.
+
+2006-01-05  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c, src/symlist.h, src/symlist.c: s/mid_rule/midrule/.
+
+2006-01-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/c.m4 (b4_c_modern): New macro, with a new provision for
+       _MSC_VER.  Problem reported by Cenzato Marco.
+       (b4_c_function_def): Use it.
+       * data/yacc.c (YYMODERN_C): Remove.  All uses replaced by
+       b4_c_modern.
+       (yystrlen, yystpcpy, yyparse): Use b4_c_function... macros rather
+       than rolling our own.
+
+2006-01-04  Akim Demaille  <akim@epita.fr>
+
+       Also warn about non-used mid-rule values.
+       * src/symlist.h, src/symlist.c (symbol_list): Add a mid_rule
+       member.
+       (symbol_list_new): Adjust.
+       * src/reader.c (symbol_typed_p): New.
+       (grammar_rule_check): Use it.
+       (grammar_midrule_action): Bind a mid-rule LHS to its rule.
+       Check its rule.
+       * tests/input.at (AT_CHECK_UNUSED_VALUES): New.
+       Use it.
+       * tests/actions.at (Exotic Dollars): Adjust.
+
+2006-01-04  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (grammar_midrule_action): If $$ is set in a
+       mid-rule, move the `used' bit to its lhs.
+       * tests/input.at (Unused values): New.
+       * tests/actions.at (Exotic Dollars): Adjust: exp is not typed.
+
+2006-01-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/bison.texinfo (Bison Options): Say more accurately what
+       --yacc does.
+       * src/parse-gram.y (rules_or_grammar_declaration): Don't complain
+       about declarations in the grammar when in Yacc mode, as POSIX does
+       not require a diagnostic when the grammar uses extensions.
+
+       * src/reduce.c (reduce_grammar): Remove unnecessary cast to bool.
+
+       Warn about dubious constructions like "%token T T".
+       Reported by twlevo.
+       * src/symtab.h (struct symbol.declared): New member.
+       * src/symtab.c (symbol_new): Initialize it to false.
+       (symbol_class_set): New arg DECLARING, specifying whether
+       this is a declaration that we want to warn about, if there
+       is more than one of them.  All uses changed.
+
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c:
+       Allow multiple %union directives, whose contents concatenate.
+       * src/parse-gram.y (grammar_declaration): Likewise.
+       Use muscle_code_grow, so that we don't need stype_line any more.
+       All uses changed.
+
+       * src/muscle_tab.c (muscle_grow): Fix comment.
+
+       * ChangeLog, data/c.m4, data/glr.c, data/glr.cc, data/location.cc:
+       * data/yacc.c, src/getargs.c, src/output.c, tests/cxx-type.at:
+       Update copyright year to 2006.
+
+2006-01-03  Akim Demaille  <akim@epita.fr>
+
+       Have glr.cc pass (some of) the calc.at tests.
+       * data/glr.cc (b4_parse_param_orig): New.
+       (b4_parse_param): Improve its definition, and bound it more
+       clearly in the skeleton.
+       (b4_epilogue): Append, instead of prepending, in order to keep
+       #line consistency.
+       Simplify the generation of auxiliary functions: locations and
+       purity are mandated.
+       (b4_global_tokens_and_yystype): Honor it.
+       * data/location.cc (c++.m4): Don't include it.
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Define AT_GLR_CC_IF
+       and AT_SKEL_CC_IF.
+       * tests/calc.at (AT_CHECK_CALC): Rely on AT_SKEL_CC_IF instead of
+       AT_LALR1_CC_IF.
+       Be sure to initialize the first position's filename.
+       (AT_CHECK_CALC_LALR1_CC): Add %location and %defines, they are
+       mandated anyway.
+       (AT_CHECK_CALC_GLR_CC): New.
+       Use it to exercise glr.cc as a lalr1.cc drop-in replacement.
+
+2006-01-02  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_skeleton): Don't hard wire the inclusion of
+       c.m4.
+       * data/c++.m4, data/glr.c, data/yacc.c: Include c.m4.
+       * data/glr.cc: Do not include stack.hh.
+
+2006-01-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c: Reformat whitespace with tabs.
+       (b4_lpure_formals): Remove this unused m4 macro.
+       * tests/cxx-type.at: Reformat whitespace with tabs.
+       (_AT_TEST_GLR_CXXTYPES): In union Node, rename node_info to nodeInfo
+       since it's a member.  Rename type to isNterm for clarity.
+
+2005-12-29  Akim  <akim@sulaco.local>
+
+       Let glr.cc catch up with symbol_value_print.
+       * data/glr.cc (b4_yysymprint_generate): Replace by...
+       (b4_yy_symbol_print_generate): this.
+       (yy_symbol_print, yy_symbol_value_print): Declare them.
+
+2005-12-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/location.h (boundary): Note that a line or column equal
+       to INT_MAX indicates an overflow.
+       * src/scan-gram.l: Include verify.h.  Don't include get-errno.h.
+       (rule_length_overflow, increment_rule_length, add_column_width):
+       New functions.
+       (<INITIAL>{id}, <SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'"):
+       (<SC_BRACED_CODE>"}"):
+       Use increment_rule_length rather than incrementing it by hand.
+       (adjust_location, handle_syncline): Diagnose overflow.
+       (handle_action_dollar, handle_action_at):
+       Fix bug with monstrosities like $-2147483648.
+       Remove now-unnecessary checks.
+       (scan_integer): Verify assumptions and remove now-unnecessary checks.
+       (convert_ucn_to_byte): Verify assumptions.
+       (handle_syncline): New arg LOC.  All callers changed.
+       Don't store through a value derived from char const * pointer.
+
+       * src/reader.c (grammar_rule_check): Rewrite slightly to avoid
+       GCC warnings.
+
+2005-12-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/reader.c (grammar_midrule_action, grammar_symbol_append):
+       Remove unnecessary forward static decls.
+
+2005-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (grammar_current_rule_check): Also check that $$
+       is used.
+       Take the rule to check as argument, hence rename as...
+       (grammar_rule_check): this.
+       * src/reader.h, src/reader.c (grammar_rule_begin, grammar_rule_end):
+       Rename as...
+       (grammar_rule_begin, grammar_rule_end): these, for consistency.
+       (grammar_midrule_action, grammar_symbol_append): Now static.
+       * tests/torture.at (input): Don't rely on the default action
+       being always performed.
+       * tests/calc.at: "Set" $$ even when the action is "cut" with
+       YYERROR or other.
+       * tests/actions.at (Exotic Dollars): Instead of using unused
+       values, check that the warning is issued.
+
+2005-12-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Improve wording for unused-value warnings.
+
+2005-12-22  Akim Demaille  <akim@epita.fr>
+
+       * data/lalr1.cc, data/yacc.c, data/glr.c, data/c.m4
+       (b4_yysymprint_generate): Rename as...
+       (b4_yy_symbol_print_generate): this.
+       Generate yy_symbol_print instead of yysymprint.
+       Generate also yy_symbol_value_print, and use it.
+
+2005-12-22  Akim Demaille  <akim@epita.fr>
+
+       * NEWS: Warn about unused values.
+       * src/symlist.h, src/symlist.c (symbol_list, symbol_list_new): Add
+       a `used' member.
+       (symbol_list_n_get, symbol_list_n_used_set): New.
+       (symbol_list_n_type_name_get): Use symbol_list_n_get.
+       * src/scan-gram.l (handle_action_dollar): Flag used symbols.
+       * src/reader.c (grammar_current_rule_check): Check that values are
+       used.
+       * src/symtab.c (symbol_print): Accept 0.
+       * tests/existing.at: Remove the type information.
+       Empty the actions.
+       Remove useless actions (beware of mid-rule actions: perl -000
+       -pi -e 's/\s*\{\}(?=[\n\s]*[|;])//g').
+       * tests/actions.at (Exotic Dollars): Use unused values.
+       * tests/calc.at: Likewise.
+       * tests/glr-regression.at (No users destructors if stack 0 deleted):
+       Likewise.
+
+       * src/gram.c (rule_useful_p, rule_never_reduced_p): Use
+       rule_useful_p.
+
+2005-12-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Undo 2005-12-01 tentative license wording change.  The wording is
+       still being reviewed by the lawyers, and we don't want to wait for
+       them before publishing a test release.  For now, revert to the
+       previous wording.
+       * NEWS: Undo 2005-12-01 change.
+       * data/glr.c: Revert to previous license wording.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/location.cc: Likewise.
+       * data/yacc.c: Likewise.
+
+       * NEWS: Reword %destructor vs YYABORT etc.
+       * data/glr.c: Use American spacing, for consistency.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/yacc.c: Likewise.
+       * data/yacc.c: Reformat comments slightly.
+       * doc/bison.texinfo: Replace "non-" with "non" when that makes sense,
+       for consistency.  Fix some spelling errors and reword recently-included
+       text slightly.
+       * tests/cxx-type.at: Cast results of malloc, for C++.
+
+2005-12-21  Joel E. Denny  <address@hidden>
+
+       * tests/cxx-type.at: Construct a tree, count the parents of shared
+       nodes, and free each node once and only once.  Previously, the memory
+       for semantic values was leaked instead.
+
+2005-12-21  Joel E. Denny  <address@hidden>
+
+       * data/glr.c (struct yyGLRStack): If pure, add yyval and yyloc members.
+       (yylval, yylloc): If pure, #define to yystackp->yyval and
+       yystackp->yyloc similar to yychar and yynerrs.
+       (yyparse): If pure, remove local yylval and yylloc. Add local
+       yystackp to accommodate pure definitions of yylval and yylloc.
+       (b4_lex_param, b4_lyyerror_args, b4_lpure_args): If pure, change
+       yylvalp and yyllocp to &yylval and &yylloc.
+       (nerrs, char, lval, lloc): If pure, add #define's for b4_prefix[]
+       namespace. Previously, nerrs and char were missing, but lval and lloc
+       weren't necessary.
+       (yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Remove
+       yylvalp and yyllocp parameters since, if pure, these are now always
+       accessible through yystackp.  If not pure, they are still accessible
+       globally.
+       * data/glr.c, data/yacc.c (YYLLOC_DEFAULT): Change `if (N)' to
+       `if (YYID (N))' to pacify lint.
+
+2005-12-21  Akim Demaille  <akim@epita.fr>
+
+       YYACCEPT, YYERROR, and YYABORT, as user actions, should not
+       destroy the RHS symbols of a rule.
+       * data/yacc.c (yylen): Initialize to 0.
+       Keep its value to the number of items to possibly shift.
+       In particular, a regular successful parse that ends on YYFINAL by
+       a (internal) YYACCEPT must not have yylen != 0.
+       (yyerrorlab, yyreturn): Pop the RHS.
+       Reorder a bit to emphasize the `shifting' bits of code.
+       (YYPOPSTACK): Now accept a number of items to pop.
+       * data/lalr1.cc: Likewise.
+       * data/glr.c: Formatting changes.
+       Use goto instead of fall through.
+       * doc/bison.texinfo (Destructor Decl): Complete.
+
+2005-12-20  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       * Makefile.am: DJGPP specific files added to EXTRA_DIST.
+       * djgpp/Makefile.maint: Fix PACKAGE variable computation.
+       * djgpp/config.bat: Replace every occurence of the file name
+       scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with
+       c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS.
+       * djgpp/config.sed: Replace every occurence of the file name
+       scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with
+       c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS.
+       * djgpp/djunpack.bat: DJGPP specific file.
+       * djgpp/fnchange.lst: DJGPP specific file.
+       * djgpp/README.in: Add new information about how to unpack the bison
+       source on MSDOS and other systems which have 8.3 file name restrictions
+       using djunpack.bat and fnchange.lst.
+
+2005-12-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap (build_cvs_prefix): Remove; unused.
+       (CVS_PREFIX): Adjust to yesterday's Savannah reorganization
+       when getting gnulib.
+
+2005-12-12  "Joel E. Denny" <jdenny@ces.clemson.edu>
+
+       * data/glr.c: Reorder typedef declarations for structs to match order
+       of struct declarations.
+       Rename yystack everywhere to yystackp except in yyparse where it's not
+       a pointer.
+       (yyglrShift): Change parameter YYSTYPE yysval to YYSTYPE* yyvalp for
+       consistency.
+       (yyis_table_ninf): Change 0 to YYID (0) to pacify lint.
+       (yyreportSyntaxError): Add /*ARGSUSED*/ to pacify lint.
+       (yyparse): Change while (yytrue) to while ( YYID (yytrue)) to pacify
+       lint.
+
+2005-12-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/sets.at (Accept): Fix typos in regular expression used to
+       sed out the final state number.
+
+       Work around portability problem on Solaris 10: flex-generated
+       files include <stdio.h> before <config.h>, which messes up
+       because the latter defines __EXTENSIONS__.  Address the problem
+       by creating two new little files that include <config.h> first,
+       then include the flex-generated files.  Rewrite everyone else
+       to include <config.h> first, as well.
+       * lib/timevar.c: Always include "config.h".
+       * src/Makefile.am (bison_SOURCES): Replace scan-gram.l with
+       scan-gram-c.c, and scan-skel.l with scan-skel-c.c.
+       (EXTRA_bison_SOURCES): New macro.
+       * src/scan-gram-c.c, src/scan-skel-c.c: New files.
+       * src/system.h: Don't include config.h.
+       * src/LR0.c: Include <config.h> first.
+       * src/assoc.c: Likewise.
+       * src/closure.c: Likewise.
+       * src/complain.c: Likewise.
+       * src/conflicts.c: Likewise.
+       * src/derives.c: Likewise.
+       * src/files.c: Likewise.
+       * src/getargs.c: Likewise.
+       * src/gram.c: Likewise.
+       * src/lalr.c: Likewise.
+       * src/location.c: Likewise.
+       * src/main.c: Likewise.
+       * src/muscle_tab.c: Likewise.
+       * src/nullable.c: Likewise.
+       * src/output.c: Likewise.
+       * src/parse-gram.y: Likewise.
+       * src/print.c: Likewise.
+       * src/print_graph.c: Likewise.
+       * src/reader.c: Likewise.
+       * src/reduce.c: Likewise.
+       * src/relation.c: Likewise.
+       * src/state.c: Likewise.
+       * src/symlist.c: Likewise.
+       * src/symtab.c: Likewise.
+       * src/tables.c: Likewise.
+       * src/uniqstr.c: Likewise.
+       * src/vcg.c: Likewise.
+
+       * src/parse-gram.y: Fix minor problems uncovered by lint.
+       (current_lhs, current_lhs_location): Now static.
+       (current_assoc): Remove unused variable.
+
+       Cleanups so that Bison-generated parsers have less lint.
+       * data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate):
+       Prepend /*ARGSUSED*/, for lint's sake.
+       * data/glr.c (YYUSE): Properly parenthesize, and use an alternate
+       definition if 'lint' is defined.
+       (YYID): New macro (or function, if lint).
+       All uses of /*CONSTCOND*/0 replaced by YYID(0).
+       * data/yacc.c: Likewise.
+       * data/glr.c (yyuserAction, yyuserMerge, yy_reduce_print):
+       (yyrecoverSyntaxError): Prepend /*ARGSUSED*/.
+       * data/glr.cc (YYLLOC_DEFAULT): Omit /*CONSTCOND*/ since this code
+       is C++ only.
+       * data/lalr1.cc (YYUSE): Just use a cast, since this code is C++ only.
+       * data/yacc.c (YYSTACK_FREE) [defined YYSTACK_ALLOC]:
+       Use YYID(0) rather than 0, for lint.
+       (yystrlen): Rewrite to avoid lint warning about ptrdiff_t overflow.
+       (yysyntax_error): Rewrite to avoid lint warnings about parenthesization.
+
+2005-12-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/glr-regression.at
+       (Improper handling of embedded actions and dollar(-N) in GLR parsers):
+       Close memory leak reported by twlevo.
+
+2005-12-06  "Joel E. Denny" <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yyprocessOneStack, yyparse): Synchronize the shift for
+       all stacks.
+       (yyparse): Iterate another stack in order to call user destructors.
+       * tests/glr-regression.at (No users destructors if stack 0 deleted):
+       New test case.
+       (Duplicated user destructor for lookahead): This test now is expected
+       to succeed.
+
 2005-12-01  Paul Eggert  <eggert@cs.ucla.edu>
 
        * NEWS: Document the following change.
 2005-12-01  Paul Eggert  <eggert@cs.ucla.edu>
 
        * NEWS: Document the following change.
 
 2005-09-19  Akim Demaille  <akim@epita.fr>
 
 
 2005-09-19  Akim Demaille  <akim@epita.fr>
 
-       * NEWS, configure.ac: Bump to 2.1a.
+       * NEWS, configure.ac: update version number to 2.1a.
 
 2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>
 
 
 2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>
 
 
        * data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings.
 
 
        * data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings.
 
-2004-10-28  Akim Demaille  <akim@epita.fr>,
+2004-11-17  Akim Demaille  <akim@epita.fr>,
            Alexandre Duret-Lutz <adl@gnu.org>
 
        * data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow
            Alexandre Duret-Lutz <adl@gnu.org>
 
        * data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow
        -----
 
        Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
        -----
 
        Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
-       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
-       Foundation, Inc.
+       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+       Software Foundation, Inc.
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this
        notice are preserved.
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this
        notice are preserved.
+
+$Id$