]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Encapsulate the push parser state variables into an M4 macro so the
[bison.git] / ChangeLog
index 603709bed6d8d12b9f800c10336b2e7258dc634e..1454270e82ca8cdc8924b219fda637dad6b2ea48 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,959 @@
+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