]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Encapsulate the push parser state variables into an M4 macro so the
[bison.git] / ChangeLog
index 99a0227b273d10181d1a1c00c30838f588c1f935..1454270e82ca8cdc8924b219fda637dad6b2ea48 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Encapsulate the push parser state variables into an M4 macro so the
+       push skeleton doesn't have to list them again for pull mode's yyparse.
+       For push mode, remove yypush_parse's local equivalents of these
+       variables to eliminate unnecessary copying between the two sets at
+       run-time.  This patch also fixes at least a bug related to multiple
+       %initial-action invocations in push mode.
+       * data/push.c (b4_declare_parser_variables): Rename to...
+       (b4_declare_scanner_communication_variables): ... this for clarity and
+       update both uses.
+       (b4_declare_yyparse_variables): Remove and move its contents to the one
+       spot where it was invoked.
+       (b4_declare_parser_state_variables): New macro containing the parser
+       state variables required by push mode.
+       (struct yypstate): Replace all fields but yynew with
+       b4_declare_parser_state_variables.
+       (yystate, yyn, yyresult, yyerrstatus, yytoken, yyss, yyssp, yyvs,
+       yyvsp, yyls, yylsp, yystacksize, yyval, yyloc): For push mode, #define
+       each NAME in this list to yyps->NAME so it can be used in yypush_parse.
+       (yyparse or yypush_parse): For yyparse in pull mode, replace local
+       parser state variable declarations with
+       b4_declare_parser_state_variables.
+       Don't initialize parser state variables when calling yypush_parse since
+       yypstate_new already does that.
+       Invoke the user's initial action only upon the first yypush_parse
+       invocation.
+       Remove all code that copies between the local parser state variables
+       and the yypstate.
+
+2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (union yyalloc): Rename yyss, yyvs, and yyls fields to
+       prevent a name collision in a future patch where these names will
+       sometimes be #define'd.
+       (YYSTACK_RELOCATE): Add an argument to select a union yyalloc field
+       since it no longer has the same name as the existing argument.
+       (yyparse or yypush_parse): Update all uses of YYSTACK_RELOCATE.
+
+2006-12-19  Paolo Bonzini  <bonzini@gnu.org>
+       and Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Decl Summary): In the %language entry, mention
+       that the argument is case-insensitive, and there's no `=' here.
+       For the %skeleton entry, mention that %language is better.
+       (Bison Options): Likewise for --language and --skeleton.  Move the
+       --skeleton entry so that the `Tuning the parser' section is sorted
+       alphabetically on long options.
+       (C++ Bison Interface): Don't use the word skeleton.  Don't explain the
+       %language directive in detail here; cross-reference the %language
+       documentation instead.
+       (Calc++ Parser): Use `%require "@value{VERSION}"' rather than
+       `%require "2.3b"' so that the example is always up-to-date.
+       (Bison Symbols): Add entries for %language and %skeleton.
+       * examples/extexi (normalize): Instead of replacing every %require
+       argument with the current Bison version, just substitute for
+       `@value{VERSION}'.  This guarantees that we're testing what actually
+       appears in the documentation.
+       * examples/calc++/Makefile.am ($(calc_extracted)): Use `$(VERSION)'
+       rather than `@VERSION@'.
+
+2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Reword the %language news a bit, and put it earlier.
+
+       * src/getargs.c (skeleton_arg): Last arg is now location const *.
+       Rewrite to simplify the logic.
+       (language_argmatch): Likewise.
+       (program_name): We now own this var.
+       * src/getargs.h (struct bison_language): Use char[] rather than
+       const char *.
+
+       * doc/bison.texinfo (Decl Summary, Bison Options): Don't claim
+       Java is supported.
+       * src/complain.c (program_name): Remove decl; no longer needed.
+       * src/main.c (program_name): Remove; now belongs to getargs.
+
+2006-12-18  Paolo Bonzini  <bonzini@gnu.org>
+
+       * NEWS: Document %language.
+
+       * data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4.
+
+       * data/c-skel.m4, data/c++-skel.m4: New files.
+       * data/glr.c: Complain on push parsers.
+
+       * doc/bison.texinfo (C++ Parser Interface): Prefer %language
+       over %skeleton.
+       (Directives): Document %language and %skeleton.
+       (Command line): Document -L.
+
+       * examples/extexi: Rewrite %require directive.
+       * examples/calc++/Makefile.am: Pass VERSION to extexi.
+
+       * src/files.c (compute_exts_from_gc): Look in language structure
+       for .y extension.
+       (compute_file_name_parts): Check whether .tab should be added.
+       * src/getargs.c (valid_languages, skeleton_prio, language_prio):
+       (language, skeleton_arg, language_argmatch): New.
+       (long_options): Add --language.
+       (getargs): Use skeleton_arg, add -L/--language.
+       * src/getargs.h: Include location.h.
+       (struct bison_language, language, skeleton_arg, language_argmatch): New.
+       * src/output.c (prepare): Pick default skeleton from struct language.
+       Don't dispatch C skeletons here.
+       * src/parse-gram.y (PERCENT_LANGUAGE): New.
+       (prologue_declaration): Add "%language" rule, use skeleton_arg.
+       * src/scan-gram.l ("%language"): New rule.
+
+       * tests/calc.at: Test %skeleton and %language.
+       * tests/local.at (AT_SKEL_CC_IF): Look for %language.
+       (AT_GLR_IF): Look for %skeleton "glr.cc".
+       (AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite.
+       (AT_YACC_IF): Reject %language.
+
+2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/symtab.h (struct semantic_type): Remove the tag 'semantic_type',
+       since it wasn't used; only the typedef name 'semantic_type' is needed.
+       Also, omit trailing white space.
+
+       * bootstrap: Sync from coreutils.
+       (gnulib_extra_files): Add build-aux/announce.gen.
+       (slurp): Adjust .gitignore files like .cvsignore files.
+       * build-aux/announce-gen: Remove from CVS, since bootstrap
+       now creates this.
+
+2006-12-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Make %push-parser imply %pure-parser.  This fixes several bugs; see
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>.
+       * src/parse-gram.y (prologue_declaration): For %push-parser, also set
+       pure_parser = true.
+       * data/push.c: Don't bother testing b4_push_if when deciding whether
+       to expand b4_declare_parser_variables globally.
+       (yypush_parse): Likewise in here.
+
+       * data/push.c (yypush_parse): Add b4_parse_param to arguments.
+       (yy_reduce_print): Reformat M4 for readability.
+
+2006-12-15  Bob Rossi  <bob@brasko.net>
+       and Joel Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (yypstate): Add typedef, and update all uses of
+       struct yypstate to just yypstate.
+       * tests/calc.at (_AT_DATA_CALC_Y): Update here as well.
+
+2006-12-14  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yypush_parse): Declare prototype regardless of
+       %locations option.
+
+2006-12-14  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yyparse): Remove the prototype and the #define when in
+       push-parser mode.
+
+2006-12-13  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yypstate_init): Rename to...
+       (yypstate_new): ... this and use b4_c_function_def.
+       (yypstate_delete): New.
+       (yypush_parse): Change parameters yynval and yynlloc to be const.
+       * tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and
+       yypstate_delete functions.
+
+2006-12-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
+       strange test case titles.  Reported by Bob Rossi.
+
+2006-12-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * TODO: Add pointer to Sylvain Schmitz's work on static detection
+       of potential ambiguities in GLR grammers.
+
+2006-12-12  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/testsuite.at (AT_CHECK): When checking if $1 starts with
+       `bison ', use m4_index instead of m4_substr since chopping up a string
+       containing M4-special characters causes problems here.
+
+       Fix a couple of bugs related to special characters in user-specified
+       file names, and make it easier for skeletons to compute output file
+       names with the same file name prefix as Bison-computed output file
+       names.
+       * data/glr.cc, data/push.c, data/yacc.c: In @output, use
+       b4_parser_file_name and b4_spec_defines_file instead of
+       @output_parser_name@ and @output_header_name@, which are now redundant.
+       * data/glr.c, data/lalr1.cc: Likewise.  Also, in header #include's, use
+       b4_parser_file_name, b4_spec_defines_file, and the new
+       @basename(FILENAME@) instead of @output_parser_name@ and
+       @output_header_name@, which inappropriately escaped the file names as
+       C string literals.
+       * src/files.c (all_but_ext): Remove static qualifier.
+       (compute_output_file_names): Move `free (all_but_ext)' to...
+       (output_file_names_free): ... here since all_but_ext is needed later.
+       * src/files.h (all_but_ext): Extern.
+       * src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
+       exactly what MUSCLE_INSERT_STRING used to do.
+       (MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
+       characters are escaped properly.
+       * src/output.c (prepare): Define muscle file_name_all_but_ext as
+       all_but_ext.
+       For pkgdatadir muscle, maintain previous functionality by using
+       MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING.  The problem
+       is that b4_pkgdatadir is used inside m4_include in the skeletons, so
+       digraphs would never be expanded.  Hopefully no one has M4-special
+       characters in his Bison installation path.
+       * src/scan-skel.l: Don't parse @output_header_name@ and
+       @output_parser_name@ anymore since they're now redundant.
+       In @output, use decode_at_digraphs.
+       Parse a new @basename command that invokes last_component.
+       (decode_at_digraphs): New.
+       (BASE_QPUTS): Remove unused.
+       * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
+       (Output file name): New tests.
+
+2006-12-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Warn about output files that are generated by the skeletons and that
+       conflict with other output files.
+       * data/glr.c: Don't generate the header file here when glr.cc does.
+       * src/files.c (file_names, file_names_count): New static globals.
+       (compute_output_file_names): Invoke output_file_name_check for files
+       not generated by the skeletons and remove existing checks.
+       (output_file_name_check): New function that warns about conflicting
+       output file names.
+       (output_file_names_free): Free file_names.
+       * src/files.h (output_file_name_check): Declare.
+       * src/scan-skel.l: Invoke output_file_name_check for files generated by
+       the skeletons.
+       * tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): New.
+       (Conflicting output files): New tests.
+
+2006-12-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/bison.texinfo: Fix a couple of typos.
+
+2006-12-08  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
+       Rename to...
+       (yypstate_init, yypstate, struct yypstate, yypush_parse): ... these and
+       update all uses.
+       (b4_yyssa, b4_yyerror_range, yypstate_init): Rename pv to yyps.
+       (yypush_parse): Rename yypvars argument to yyps and remove redundant
+       local pv.
+       (yypstate_init, yypush_parse): Declare in Bison-generated header file.
+       * tests/calc.at (_AT_DATA_CALC_Y): Use newly named functions.
+
+2006-12-07  Bob Rossi  <bob@brasko.net>
+       and Joel Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (yypvarsinit): Change return type from void* to struct
+       yypvars*. No longer cast to void* on return.
+       (struct yypvars): Remove yylen since it need not be remembered between
+       yypushparse invocations.
+       (yypushparse): Don't copy between yylen and pv->yylen.
+
+2006-12-05  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
+       (yypushparse): Add yynchar, yynlval, yynlloc parameters.
+       (b4_declare_parser_variables): Do not declare yynerrs for push mode.
+       (struct yypvars): Remove b4_declare_parser_variables.
+       (yypvarsinit): Remove init code for removed variables.
+       (global scope): Do not declare b4_declare_parser_variables if
+       push or pure mode.
+       (yypushparse): Add b4_declare_parser_variables.
+       Init new local variables, and remove init code for removed
+       yypvars variables.
+       (yyparse): Delete.
+       * tests/calc.at (_AT_DATA_CALC_Y): Call yypushparse for push mode
+       and yyparse for other modes.
+       (AT_CHECK_CALC_LALR): Added '%skeleton "push.c"' for push tests.
+       * tests/local.at (AT_PUSH_IF, AT_PURE_OR_PUSH_IF): Added.
+       (AT_YYERROR_SEES_LOC_IF): push-parser makes this false.
+       (AT_PURE_LEX_IF): True if pure or push parser.
+
+2006-12-05  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Document Yacc prologue alternatives and default %destructor's and
+       %printer's as experimental.  Don't mention Java yet.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00002.html>.
+       * NEWS (2.3a+): Say they're experimental.  Remove any mention of Java.
+       (2.3a): Annotate this entry to say the old forms of these features were
+       also experimental.
+       * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols,
+       Bison Symbols): Say they're experimental.  Comment out any mention
+       of Java (we'll want this back eventually).
+
+2006-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Support a file name argument to %defines.  Deprecate `=' in
+       %file-prefix, %name-prefix, and %output.  Discussed at
+       <http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
+       * NEWS (2.3a+): Mention.
+       * doc/bison.texinfo (Decl Summary, Bison Symbols): Add entry for new
+       form of %defines, and remove `=' from entries for %file-prefix,
+       %name-prefix, and %output.
+       * src/parse-gram.y (prologue_declaration): Implement.
+       * tests/calc.at (Simple LALR Calculator, Simple GLR Calculator, Simple
+       LALR1 C++ Calculator, Simple GLR C++ Calculator): Remove the `=' from
+       all but one occurrence of %name-prefix.
+       * tests/headers.at (export YYLTYPE): Remove the `=' from %name-prefix.
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Likewise.
+       * tests/output.at (AT_CHECK_OUTPUT): Remove the `=' from all but one
+       occurrence of each of %file-prefix and %output.  Add check for %defines
+       with argument.
+       * tests/reduce.at (Useless Terminals, Useless Nonterminals,
+       Useless Rules, Reduced Automaton, Underivable Rules, Empty Language):
+       Remove the `=' from %output.
+
+2006-11-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't escape $ in test case titles since Autoconf 2.61 now does that
+       correctly.
+       * tests/actions.at (Default %printer and %destructor are not for error
+       or $undefined): Here.
+       (Default %printer and %destructor are not for $accept): Here.
+       * tests/input.at (Invalid $n and @n): Here.
+
+2006-11-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rename <!> to <>.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00039.html>.
+       * NEWS (2.3a+): Update.
+       * doc/bison.texinfo (Freeing Discarded Symbols, Bison Symbols):
+       Update.
+       * src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement.
+       * src/scan-gram.l (INITIAL): Implement.
+       * src/symlist.c (symbol_list_default_tagless_new): Update comment.
+       * src/symlist.h (symbol_list, symbol_list_default_tagless_new): Update
+       comment.
+       * tests/actions.at (Default tagless %printer and %destructor,
+       Default tagged and per-type %printer and %destructor,
+       Default %printer and %destructor are not for error or $undefined,
+       Default %printer and %destructor are not for $accept,
+       Default %printer and %destructor for mid-rule values): Update.
+       * tests/input.at (Default %printer and %destructor redeclared,
+       Unused values with default %destructor): Update.
+
+2006-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't let %prec take a nonterminal.
+       * src/reader.c (grammar_current_rule_prec_set): Make the %prec symbol a
+       token.
+       * tests/input.at (%prec takes a token): New test checking that %prec
+       won't take a nonterminal.
+
+2006-11-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because
+       it was double-quoted.
+       * src/Makefile.am (YACC): Use --warnings=all,error so that Bison's own
+       grammar is maintained with Bison's highest standards.
+       * src/getargs.c: Fix some typos in Doxygen comments.
+
+2006-11-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix memory leaks in scanners generated by at least Flex 2.5.9 and
+       later.  Reported by Paul Eggert in
+       <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00014.html>.
+       * src/flex-scanner.h (yylex_destroy): Define for Flex before 2.5.9.
+       * src/scan-code.l (translate_action): Don't bother invoking
+       yy_delete_buffer (YY_CURRENT_BUFFER) before creating the first buffer.
+       (code_scanner_free): Instead of invoking
+       yy_delete_buffer (YY_CURRENT_BUFFER) directly, invoke yylex_destroy,
+       which frees more.
+       * src/scan-gram.l (gram_scanner_free): Likewise.
+       * src/scan-skel.l (scan_skel): Likewise.
+
+2006-11-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/files.c (tr): Change return type to void.
+       * src/muscle_tab.c (muscle_insert): Free storage in case muscle_grow
+       has been called previously for the same key.
+       (muscle_find): Return storage instead of value so that
+       --enable-gcc-warnings doesn't produce warnings that the return discards
+       const.  aver that the value and storage are the same since storage
+       could potentially be NULL when value is not.
+       * tests/testsuite.at (AT_CHECK): Treat an unspecified exit value the
+       same as 0.
+
+2006-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing
+       the earlier change today), m4/intl.m4, m4/intldir.m4.  This gives
+       us a slightly cleaner distribution, and also works.
+       * m4/.cvsignore: Add inline.m4, wint_t.m4 to accommodate recent
+       gnulib changes.
+
+2006-11-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+       and Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't let Bison leak memory except when it complains.
+       * src/files.h (parser_file_name, spec_verbose_file, spec_graph_file):
+       (spec_defines_file, dir_prefix): Now char *, not const char *,
+       since they are freed.
+       * src/files.c: Likewise.
+       (all_but_ext, all_but_tab_ext, src_extension, header_extension):
+       Likewise.
+       (tr): Now operates in-place.  All uses changed.
+       (compute_exts_from_gf, compute_exts_from_src): Don't leak temporary
+       values.
+       (compute_file_name_parts, compute_output_file_names): Don't store
+       read-only data in variables that will be freed.
+       (compute_output_file_names): Free all_but_ext, all_but_tab_ext,
+       src_extension, and header_extension.
+       (output_file_names_free): New public function to free
+       spec_verbose_file, spec_graph_file, spec_defines_file,
+       parser_file_name, and dir_prefix.
+       * src/getargs.c (getargs): Don't store read-only data in variables that
+       will be freed.
+       * src/main.c (main): Invoke output_file_names_free, code_scanner_free
+       (which previously existed but was unused), and quotearg_free.
+       * src/muscle_tab.h (muscle_insert): value arg is now a `char const *'.
+       * src/muscle_tab.c: Likewise.
+       (muscle_entry): Make the value char const *,
+       and add a new storage member that is char * and can be freed.
+       (muscle_entry_free): New private function.
+       (muscle_init): Use it instead of free.
+       (muscle_insert, muscle_grow): Update and use new storage member.
+       (muscle_code_grow): Free the string passed to muscle_grow
+       since it's not needed anymore.
+       * src/parse-gram.y (%union): Make `chars' member a `char const *', and
+       add a new `char *code' member.
+       ("{...}"): Declare semantic type as code.
+       * src/scan-code.h (translate_rule_action):
+       (translate_symbol_action, translate_code, translate_action): Return
+       `char const *' rather than `char *' since external code should not free
+       these strings.
+       * src/scan-code.l: Likewise.
+       * src/scan-gram.l (<SC_BRACED_CODE>): Use val->code for BRACED_CODE,
+       which is "{...}" in the parser.
+       * tests/Makefile.am (maintainer-check-valgrind): Set
+       VALGRIND_OPTS='--leak-check=full --show-reacheable=yes' before invoking
+       Valgrind.
+       * tests/calc.at (_AT_DATA_CALC_Y): fclose the FILE* so Valgrind doesn't
+       complain.
+       * tests/testsuite.at (AT_CHECK): Redefine so that running Bison and
+       expecting a non-zero exit status sets --leak-check=summary and
+       --show-reachable=no for Valgrind.  Bison unabashedly leaks memory in
+       this case, and we don't want to hear about it.
+
+2006-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap (runtime-po/Makevars): Derive from po/Makevars
+       instead of from the template, to simplify configuration a bit.
+       * bootstrap.conf (excluded_files): Don't exclude m4/codeset.m4
+       and m4/wint_t.m4, as they are needed with the latest gnulib.
+
+2006-10-31  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Disable unset/unused mid-rule value warnings by default, and recognize
+       --warnings=midrule-values to enable them.  Discussed starting at
+       <http://lists.gnu.org/archive/html/help-bison/2006-10/msg00030.html>.
+       * NEWS (2.3a+): Mention.
+       * src/getargs.c, src/getargs.h (warnings_args, warnings_types, enum
+       warnings): Add entry for midrule-values subargument.
+       * src/reader.c (symbol_should_be_used): Don't return true just because
+       the value is a set/used mid-rule value unless
+       --warnings=midrule-values was specified.
+       * tests/input.at (Unused values, Unused values before symbol
+       declarations): Run tests with and without --warnings=midrule-values.
+
+       * src/reader.c (check_and_convert_grammar): Use symbol_list_free rather
+       than LIST_FREE directly.
+
+2006-10-31  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Finish implementing --warnings=error, which should not be implied by
+       --warnings=all (or by its synonyms -W and --warnings without
+       subarguments).
+       * src/complain.c (set_warning_issued): New function to report that
+       warnings are being treated as errors and to record an error if so.
+       Invoke...
+       (warn_at, warn): ... here.
+       * src/getargs.c (warnings_args, warnings_types): Reorder so that
+       "error - warnings are errors" does not appear above "all - all of the
+       above".
+       (getargs): For -W and --warnings without subarguments, don't let
+       FLAGS_ARGMATCH set warnings_error in warnings_flag.
+       * src/getargs.h (enum warnings): Unset warnings_error in warnings_all.
+
+2006-10-31  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/getargs.c (flags_argmatch): Don't cause segmentation fault for
+       empty subargument list.  For example: `bison  --warnings=  parser.y'.
+
+2006-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c, data/yacc.c: Make sure there's a newline at the end of
+       the parser header file so that gcc doesn't warn.
+
+2006-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Split the default %destructor/%printer into two kinds: <*> and <!>.
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00060.html>.
+       * NEWS (2.3a+): Mention.
+       * doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
+       previous change today related to mid-rules.
+       (Bison Symbols): Remove %symbol-default and add <*> and <!>.
+       * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
+       (TYPE_TAG_ANY): Add as <*>.
+       (TYPE_TAG_NONE): Add as <!>.
+       (generic_symlist_item): Remove RHS for %symbol-default and add RHS's
+       for <*> and <!>.
+       * src/scan-gram.l (PERCENT_SYMBOL_DEFAULT): Remove.
+       (TYPE_TAG_ANY, TYPE_TAG_NONE): Add.
+       * src/symlist.c (symbol_list_default_new): Split into tagged and
+       tagless versions.
+       (symbol_list_destructor_set, symbol_list_printer_set): Split
+       SYMLIST_DEFAULT case into SYMLIST_DEFAULT_TAGGED and
+       SYMLIST_DEFAULT_TAGLESS.
+       * src/symlist.h: Update symbol_list_default*_new prototypes.
+       (symbol_list.content_type): Split enum value SYMLIST_DEFAULT into
+       SYMLIST_DEFAULT_TAGGED and SYMLIST_DEFAULT_TAGLESS.
+       * src/symtab.c (default_destructor, default_destructor_location,
+       default_printer, default_printer_location): Split each into tagged and
+       tagless versions.
+       (symbol_destructor_get, symbol_destructor_location_get,
+       symbol_printer_get, symbol_printer_location_get): Implement tagged
+       default and tagless default cases.
+       (default_destructor_set, default_printer_set): Split each into tagged
+       and tagless versions.
+       * src/symtab.h: Update prototypes.
+       * tests/actions.at (Default %printer and %destructor): Rename to...
+       (Default tagless %printer and %destructor): ... this, and extend.
+       (Per-type %printer and %destructor): Rename to...
+       (Default tagged and per-type %printer and %destructor): ... this, and
+       extend.
+       (Default %printer and %destructor for user-defined end token): Extend.
+       (Default %printer and %destructor are not for error or $undefined):
+       Update.
+       (Default %printer and %destructor are not for $accept): Update.
+       (Default %printer and %destructor for mid-rule values): Extend.
+       * tests/input.at (Default %printer and %destructor redeclared): Extend.
+       (Unused values with default %destructor): Extend.
+
+2006-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't apply the default %destructor/%printer to an unreferenced midrule
+       value.  Mentioned at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00104.html>.
+       * src/symtab.c (dummy_symbol_get): Name all dummy symbols initially
+       like $@n instead of just @n so that the default %destructor/%printer
+       logic doesn't see them as user-defined symbols.
+       (symbol_is_dummy): Check for both forms of the name.
+       * src/reader.c (packgram): Remove the `$' from each midrule symbol
+       name for which the midrule value is referenced in any action.
+       * tests/actions.at (Default %printer and %destructor for mid-rule
+       values): New test.
+       * tests/regression.at (Rule Line Numbers, Web2c Report): Update output
+       for change to dummy symbol names.
+
+2006-10-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Warn about unset midrule $$ if the corresponding $n is used.
+       * src/reader.c (symbol_should_be_used): Check midrule parent rule for
+       $n usage.
+       (packgram): Before invoking grammar_rule_check on any rule, make sure
+       all actions have already been scanned in order to set `used' flags.
+       Otherwise, checking that a midrule's $$ is set will not always work
+       properly because the midrule check must forward-reference the midrule's
+       parent rule.
+       * tests/input.at (AT_CHECK_UNUSED_VALUES): Extend to check the new
+       warning.
+
+2006-10-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       More improvements to the documentation of the prologue alternatives:
+       * NEWS (2.3a+): Mention the new `Prologue Alternatives' section in the
+       Bison manual.
+       * doc/bison.texinfo (Prologue Alternatives): Correct some errors.  Add
+       some text to clarify the relative importance of the new directives and
+       to show how these directives may be viewed as code labels.
+
+2006-10-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Similar to the recently removed %before-header, add %code-top as the
+       alternative to the pre-prologue.  Mentioned at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00063.html>.
+       Also, let the prologue alternatives appear in the grammar section.
+       * src/parse-gram.y (PERCENT_CODE_TOP): New token.
+       (prologue_declaration): Move the existing prologue alternatives to...
+       (grammar_declaration): ... here and add %code-top.
+       * src/scan-gram.l (PERCENT_CODE_TOP): New token.
+
+       Clean up and extend documentation for the prologue alternatives.
+       * NEWS (2.3a+): Describe prologue alternatives.
+       * doc/bison.texinfo (Prologue): Move discussion of prologue
+       alternatives to...
+       (Prologue Alternatives): ... this new section, and extend it to discuss
+       all 4 directives in detail.
+       (Bison Symbols): Clean up discussion of prologue alternatives and add
+       %code-top.
+
+2006-10-16  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP specific issues.
+
+       * djgpp/config.bat: config.hin has been moved to lib. Adjust
+       config.bat accordingly.
+       * djgpp/config.sed: Adjust config.sed for the use of autoconf 2.60.
+       * djgpp/config.site: Likewise.
+
+2006-10-16  Paolo Bonzini  <bonzini@gnu.org>
+
+       Replace %*-header with %provides, %requires, %code.  See discussion at
+       http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00002.html
+
+       * data/bison.m4 (b4_user_requires, b4_user_provides): New.
+       (b4_user_start_header): Remove.
+       * data/glr.c: Use new macros instead of b4_*start_header
+       and b4_*end_header.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/push.c: Likewise.
+       * data/yacc.c: Likewise.
+
+       * doc/bison.texinfo: Remove %before-header, rename
+       %{start,end,after}-header to %requires, %provides, %code.
+
+       * src/parse-gram.y: Likewise (also rename token names accordingly).
+       * src/scan-gram.l: Likewise.
+       * tests/actions.at: Likewise.
+
+2006-10-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS).
+       Problem reported by Joel E. Denny.
+
+2006-10-14  Jim Meyering  <jim@meyering.net>
+
+       (Sync from coreutils.)
+       Work also when the working directory (with e.g. coreutils sources)
+       is version controlled with git, rather than CVS.
+       * bootstrap (CVS_only_file): Test for the existence of README-cvs,
+       rather than CVS.
+       In messages and comments, say e.g., "checked-out sources",
+       rather than "CVS sources".
+       (version_controlled_file): New function.  Work for git as well as
+       for CVS.  Don't use grep's -q option.
+       (slurp): Call it here, in place of CVS-specific code.
+
+2006-10-14  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix testsuite for ./configure --enable-gcc-warnings:
+       * configure.ac (gcc-warnings): Move -Wall before -Wno-sign-compare.
+       Otherwise, gcc 4.1.0 (at least) warns about sign comparisons in
+       __AT_CHECK_PRINTER_AND_DESTRUCTOR in tests/actions.at.
+       * test/input.at (Torturing the Scanner): #include <stdlib.h> for abort.
+       * test/regression.at (Diagnostic that expects two alternatives):
+       Likewise.
+
+2006-10-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap.conf (gnulib_modules): Add config-h.
+       * djgpp/subpipe.c: Include <config.h> unconditionally; don't
+       worry about HAVE_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/ebitset.c: Likewise.
+       * lib/get-errno.c: Likewise.
+       * lib/lbitset.c: Likewise.
+       * lib/subpipe.c: Likewise.
+       * lib/timevar.c: Likewise.
+       * lib/vbitset.c: Likewise.
+       * lib/bitset.c: Include "bitset.h" first, to test interface.
+       * lib/bitset_stats.c: Include "bitset_stats.h" first.
+       * lib/bitsetv-print.c: Include "bitsetv-print.h" first.
+       * lib/bitsetv.c: Include "bitsetv.h" first.
+       * lib/get-errno.c: Include "get-errno.h" first.
+       * m4/.cvsignore: Add config-h.m4.
+       * tests/actions.at (Default %printer and %destructor for ...):
+       Adjust expected line numbers in output to reflect removal of #if
+       HAVE_CONFIG_H lines.
+       * tests/glr-regression.at (Missed %merge type warnings when ...):
+       Likewise.
+       * tests/regression.at (Braced code in declaration in rules section):
+       Likewise.
+       * tests/atlocal.in (CPPFLAGS): Don't define HAVE_CONFIG_H.
+       * tests/local.at (AT_DATA_GRAMMAR_PROLOGUE):
+       Include <config.h> unconditionally.
+
+       * bootstrap: Sync from coreutils, as follows:
+
+       2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap (symlink_to_gnulib): Fix bug: the dot_dots shell
+       variable was sometimes used without being initialized.  This
+       messed up the installation of the INSTALL file in some cases.
+
+       2006-10-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap (usage, main program, symlink_to_gnulib): Add option
+       --copy.  Inspired by a suggestion from Bruno Haible.
+
+       2006-10-03  Jim Meyering  <jim@meyering.net>
+
+       * bootstrap: Undo last change to this file, since now gnulib-tool
+       sticks with the automake default in generating dependencies.
+
+2006-10-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * configure.ac: Use AC_PROG_CC_STDC; this is more modern than
+       the old AC_PROG_CC / AM_PROG_CC_STDC combination.
+
+       * doc/bison.1: Add copyright notice.
+
+       * data/glr.c: Don't include <stdarg.h>; not used.
+
+       * NEWS: The -g and --graph options now output graphs in Graphviz
+       DOT format, not VCG format.
+       * doc/bison.1: Likewise.
+       * doc/bison.texinfo (Understanding, Bison Options): Likewise.
+       * THANKS: Add Satya Kiran Popuri, who proposed the initial version
+       of this change in
+       <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00158.html>.
+       * TODO: Remove Graphviz entry.
+       * src/Makefile.am (bison_SOURCES): Add graphviz.c and graphviz.h;
+       remove vcg.c, vcg.h, vcg_defaults.h.
+       * src/vcg.c, src/vcg.h, src/vcg_defaults.h: Remove.
+       * src/graphviz.c, src/graphviz.h: New files.
+       * src/files.c (compute_output_file_names): Output .dot, not .vcg.
+       * src/files.h: Make comment more generic.
+       * src/main.c (main): Likewise.
+       * src/print_graph.h: Likewise.
+       * src/getargs.c (usage): Make usage description more generic.
+       * src/print_graph.c: Include graphviz.h rather than vcg.h.
+       (static_graph, fgraph): Remove.  All uses changed to pass
+       arguments instead of sharing a static var.
+       (print_core, print_actions, print_state, print_graph):
+       Output graphviz format rather than VCG format.
+       * tests/.cvsignore: Remove *.vcg; add *.dot.
+       * tests/output.at: Expect *.dot files, not *.vcg files.
+
+       * data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
+       accommodates the 2006-10-08 change.
+
+2006-10-11  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
+       (b4_yyssa, b4_yyerror_range): New macros.
+       (struct yypvars): Remove yyssa_ptr and yyerror_range_ptr fields.
+       (yypvarsinit): Remove init of removed fields.
+       (yypushparse): Remove use of removed fields; use new macros instead.
+
+2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/push.c (yypushparse): Fix memory leak if yymsg is malloced
+       in a push parser.  Reindent slightly to match yacc.c better.
+
+2006-10-11  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (struct yypvars): Remove yymsgbuf, yymsgbuf_ptr, yymsg,
+       yymsg_alloc fields.
+       (yypvarsinit, yypushparse): Remove init of removed fields.
+       (yypushparse): Use yymsgbuf instead of yymsgbuf_ptr.
+
+2006-10-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * THANKS: Add Paolo Bonzini and Bob Rossi.
+
+2006-10-08  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/c.m4 (b4_copyright, b4_epilogue, b4_location_initial_column,
+       b4_location_initial_line, p4_parse_param, b4_ints_in, b4_flag_if,
+       b4_define_flag_if and uses, b4_basename, b4_syncline, b4_user_code,
+       b4_define_user_cde and uses): Remove.
+       (b4_comment, b4_prefix, b4_sync_start): New.
+       * data/bison.m4: New file, with most of the content removed from c.m4.
+       * src/muscle_tab.h: Use "do {...} while(0)" throughout.
+       * src/output.c (output_skeleton): Pass bison.m4.
+       (prepare): Pass glr_flag and nondeterministic_flag.  Pass prefix
+       only if specified.
+
+2006-10-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix test failure reported by Tom Lane in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-10/msg00000.html>
+       and try to make such failures easier to catch in the future.
+       * data/glr.c (YYTRANSLATE): Don't check for nonpositive arg;
+       that's now the caller's responsibility.
+       (yyprocessOneStack, yyrecoverSyntaxError, yyparse):
+       Set yychar = YYEOF if it's negative.
+       * tests/actions.at (yylex): Abort if asked to read past EOF.
+       * tests/conflicts.at (yylex): Likewise.
+       * tests/cxx-type.at (yylex): Likewise.
+       * tests/glr-regression.at (yylex): Likewise.
+       * tests/input.at (yylex): Likewise.
+       * tests/regression.at (yylex): Likewise.
+       * tests/torture.at (yylex): Likewise.
+
+2006-10-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problems with translating English-language diagnostics.
+       * bootstrap: Fix bug introduced in recent bootstrap changes, with
+       respect to bison-runtime pot generation.  The YY_ stuff
+       wasn't being captured.
+       * bootstrap.conf (XGETTEXT_OPTIONS_RUNTIME): New var.
+       * po/POTFILES.in: Add src/location.c, src/scan-code.l.
+       * runtime-po/POTFILES.in: Add data/push.c.
+
+2006-09-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge bootstrap changes from coreutils.
+
+       2006-09-28  Jim Meyering  <jim@meyering.net>
+
+       Automatically generated dependencies are important even
+       when all of the sources in a directory come from gnulib.
+       * bootstrap (gnulib_tool): Remove the "no-dependencies" automake
+       option that gnulib-tool adds to what becomes our lib/gnulib.mk.
+
+       2006-09-23  Jim Meyering  <jim@meyering.net>
+
+       * bootstrap (gnulib_tool_options): Add "--local-dir gl".
+
+       2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap: Add support for --force.
+       (usage): New function.  Describe usage less tersely.
+       (CVS_only_file): New var.
+
+2006-09-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/push.c (YYPUSH_MORE): Make it an enum instead.
+       (yypushparse): Use YYPUSH_MORE instead of the mystery constant.
+       Adjust white space and comments to match GNU style better.
+
+2006-09-20  Bob Rossi  <bob@brasko.net>
+
+       * data/push.c (yyresult_get): Remove function.
+       (YYPUSH_MORE): Add #define.
+       (yypushparse): Modify return value.
+
+2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * stamp-h.in: Remove; no longer needed.
+       * .cvsignore: Replace autom4te.cache and config.cache with *.cache.
+       Remove config.h, config.hin, intl (no longer created).
+       * lib/.cvsignore: Add config.h, config.hin, configmake.h, inttypes.h,
+       stamp-h1.
+
+       Sync bootstrap from coreutils, as follows:
+
+       2006-09-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap (symlink_to_gnulib): New function.
+       (cp_mark_as_generated): Use it, to prefer symlinks-to-gnulib
+       to copies-of-gnulib.
+       (cp_mark_as_generated, slurp, gnulib_files):
+       Avoid making a copy if it's the same as the old version.
+       (gnulib_files): Add support for this variable (used by Bison).
+
+2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/getargs.c (usage): Rework to use conventions similar to
+       coreutils, to make translation a bit easier and the code a bit
+       smaller.  Problem reported by Tim Van Holder.
+
+2006-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use some of gnulib's new modules, taken from coreutils.
+
+       * bootstrap: Sync from coreutils, except add support for gnulib_files.
+       * bootstrap.conf: New file.
+       (gnulib_modules): Add configmake, inttypes, unistd.
+       (XGETTEXT_OPTIONS): Add complain, complain_at,
+       fatal, fatal_at, warn, warn_at, unexpected_end.
+       * configure.ac (AC_CONFIG_HEADERS): config.h is now in lib, not here.
+       (gl_USE_SYSTEM_EXTENSIONS): Remove; gl_EARLY now does this.
+       (gl_EARLY): Add.
+       (AM_STDBOOL_H): Remove; gl_INIT now dows this.
+       (gl_INIT): Add
+       (GNULIB_AUTOCONF_SNIPPET): Remove.
+       (AM_GNU_GETTEXT): Add; require formatstring macros since that's
+       the pickiest.
+       * lib/.cvsignore: Add inttypes_.h.
+       * lib/Makefile.am: Include gnulib.mk first so we can append to it.
+       (AM_CFLAGS): Add WERROR_CFLAGS, to be more like coreutils.
+       (BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Remove
+       no-longer-necessary initializations.
+       (lib_SOURCES): Remove, replacing by libbison_a_SOURCES.
+       * lib/subpipe.c: Include <unistd.h> unconditionally, now that we
+       use the unistd module.
+       * src/system.h: Likewise.
+       * m4/.cvsignore: Remove *_gl.m4, gnulib.m4, inttypes_h.m4, uintmax_t.m4,
+       ulonglong.m4.  Add gettext.m4, gnulib-cache.m4, gnulib-comp.m4,
+       gnulib-tool.m4, inttypes-h.m4, inttypes-pri.m4, inttypes.m4.
+       * src/Makefile.am (DEFS): Remove, since configmake does this for us.
+       (AM_CPPFLAGS): Remove -I../lib, since Automake does that for us.
+       * src/system.h: Include inttypes.h unconditionally, now that we
+       use the inttypes module.  Don't bother to include stdint.h, since
+       inttypes.h now does that for us.
+       (LOCALEDIR): Remove, now that we use the configmake module.
+       * src/getargs.c: Include configmake.h.
+       * src/main.c: Likewise.
+       * src/output.c: Likewise.
+       * tests/atlocal.in (CPPFLAGS): Include from $abs_top_builddir/lib,
+       not from $abs_top_builddir, since config.h moved.
+
+
+       Port to GCC 2.95.  First two problems reported by Michael Deutschmann in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00018.html>.
+
+       * src/parse-gram.y (symbol_declaration): Don't put statements
+       before declarations; it's not portable to C89.
+       * src/scan-code.l (handle_action_at): Likewise.
+
+       * src/scan-code.l: Always initialize braces_level; the old code
+       left it uninitialized and therefore had undefined behavior.
+
+       Don't attempt to redefine 'assert', since it runs afoul of
+       systems where standard headers (mistakenly) include <assert.h>.
+       Instead, define and use our own alternative, called 'aver'.
+       * src/reader.c: Don't include assert.h, since we no longer
+       use assert.
+       * src/scan-code.l: Likewise.
+       * src/system.h (assert): Remove, replacing with....
+       (aver): New function, taking a bool arg.  All uses changed.
+       * src/tables.c (pack_vector): Ensure that aver arg is bool,
+       not merely an integer.
+
+2006-09-15  Bob Rossi  <bob@brasko.net>
+
+       * data/Makefile.am (dist_pkgdata_DATA): Add push.c.
+       * data/c.m4 (YYPUSH): New.
+       (b4_push_if): New macro.  Use it instead of #ifdef YYPUSH.
+       * src/getargs.c (push_parser): New var.
+       * src/getargs.h (push_parser): New declaration.
+       * src/output.c (prepare): Add macro insertion of `push_flag'.
+       * src/parse-gram.y (PERCENT_PUSH_PARSER): New token.
+       (prologue_declaration): Parse %push-parser.
+       * src/scan-gram.l: Scan new PERCENT_PUSH_PARSER token.
+       * tests/calc.at (_AT_CHECK_CALC_ERROR): Add "Return" and "Now" to
+       list of removed lines from the traces observed.
+       (AT_CHECK_CALC_LALR): Added push parser tests.
+
+2006-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Version 2.3a.
+       * configure.ac (AC_INIT): Likewise.
+
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
+       "#define YYSTYPE int" that caused "make maintainer-check" to fail
+       due to header ordering dependencies.  I don't know why the #define
+       was there.
+
+       Fix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
+       runtime cost when YYDEBUG is not defined, and so that some tests
+       that used to fail now work.  Problem and initial suggestion by
+       Paolo Bonzini.
+       * data/c++.m4 (b4_parse_param_cons): Omit leading ','.
+       * data/glr.cc (b4_parser_class_name):
+       Initialize yycdebug_ only if YYDEBUG.  Also, initialize yydebug_.
+       (debug_level, set_debug_level): Affect yydebug_, not ::yydebug.
+       (yydebug_) [YYDEBUG]: New member.
+       (yycdebug_): Now defined only if YYDEBUG.
+       * data/lalr1.cc (yydebug_, yycdebug_): Now defined only if YYDEBUG.
+       (YYCDEBUG) [!YYDEBUG]: Don't use yydebug_ and yycdebug_.
+       (b4_parser_class_name): Initialize yydebug_ and yycdebug_ only
+       if YYYDEBUG.
+       (debug_stream, set_debug_stream, debug_level, set_debug_level):
+       Define only if YYDEBUG.
+       * tests/calc.at (_AT_DATA_CALC_Y) [!YYDEBUG]: Omit call to
+       set_debug_level.
+       * tests/regression.at (_AT_DATA_DANCER_Y) [!YYDEBUG]: Likewise.
+       * tests/calc.at (AT_CHECK_CALC_GLR_CC): Uncomment calls to
+       AT_CHECK_CALC_GLR_CC that are working now.
+
+2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.
+       We don't need them in glr.cc, and glr.c defines them.
+       Defining YYERROR_VERBOSE to 0 here breaks glr.c, since glr.c
+       assumes that defining it to anything is the same as defining
+       it to 1.  Problem reported by Paolo Bonzini.
+
+2006-09-12  Paolo Bonzini  <bonzini@gnu.org>  (tiny change)
+
+       * data/c.m4 (b4_null, b4_case): Define.
+       * src/output.c (prepare_symbols): Use b4_null.
+       (user_actions_output): Use b4_case.
+
+2006-09-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/glr.c (b4_shared_declarations): Put start-header first,
+       before any #includes that we generate, so that feature-test
+       macros work.  Problem reported by Michael Deutschmann in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
+       * data/lalr1.cc: Likewise.
+       * doc/bison.texinfo (Prologue): Document that feature-test macros
+       should be defined before any Bison declarations.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
+       that depend on location.hh after, not before, Bison decls, since
+       we now include location.hh after the first user prologue.
+
+       * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
+       Sander Brandenburg in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
+       Also, fix minor white space and comment issues.
+       (Prologue): Mention that it's better to define feature-test macros
+       before Bison declarations.  Problem reported by Michael Deutschmann.
+
+       * README-cvs: Fix typo: "&" should be "&&".  Problem reported
+       by Jim Meyering.
+       * m4/.cvsignore: Add argmatch.m4.  Remove obstack.m4, strerror_r.m4.
+       This adjusts to recent gnulib changes.
+
+2006-09-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Finish implementation of per-type %destructor/%printer.  Discussed
+       starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>.
+       * NEWS (2.3+): Add a description of this feature to the default
+       %destructor/%printer description.
+       * doc/bison.texinfo (Freeing Discarded Symbols): Likewise.
+       * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
+       Invoke semantic_type_destructor_set or semantic_type_printer_set when a
+       list node contains a semantic type.
+       * src/symtab.c, src/symtab.h: Extend with a table that associates
+       semantic types with their %destructor's and %printer's.
+       (semantic_type_from_uniqstr, semantic_type_get,
+       semantic_type_destructor_set, semantic_type_printer_set): New functions
+       composing the public interface of that table.
+       (symbol_destructor_get, symbol_destructor_location_get,
+       symbol_printer_get, symbol_printer_location_get):  If there's no
+       per-symbol %destructor/%printer, look up the per-type before trying
+       the default.
+       * tests/actions.at (Per-type %printer and %destructor): New test case.
+       * tests/input.at (Default %printer and %destructor redeclared):
+       Extend to check that multiple occurrences of %symbol-default in a
+       single %destructor/%printer declaration is an error.
+       (Per-type %printer and %destructor redeclared, Unused values with
+       per-type %destructor): New test cases.
+
+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.