]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Undo my 2007-02-07 change, switching back to the c-strcase module
[bison.git] / ChangeLog
index e4baf83f454bfef5a5986a9e0610a2d75826ba9c..dde006f1cd3875c2c5321792b2eb870495ab69c6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2007-02-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Undo my 2007-02-07 change, switching back to the c-strcase module
+       introduced in the 2007-02-03 change.  Bruno Haible reported that
+       the 2007-02-07 change would be dangerous in Turkish if we add a
+       language whose name contains "i", since "i" is not lowercase "I"
+       in Turkish.
+       * bootstrap.conf (gnulib_modules): Add c-strcase.  Remove strcase.
+       * lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h,
+       c-strcasecomp.c, c-strncasecmp.c.  Remove strcasecmp.c, strncasecmp.c.
+       * m4/.cvsignore: Remove strcase.m4.
+       * src/getargs.c: Revert 2007-02-07 change, as follows.
+       Include c-strcase.h.
+       (language_argmatch): Use c_strcasecmp rather than strcasecmp.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Enable the Java related testsuite tests when the only Java compiler
+       found is a gcj < 4.3.  Discussed at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00016.html>.
+       * configure.ac (gt_JAVACOMP): Don't specify a target_version.
+
+2007-02-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/Makefile.am: Update copyright date.
+       * data/push.c (yypull_parse): Report memory exhaustion and return 2 if
+       yypstate_new returns NULL.
+       (yypstate_new): Return NULL if malloc does.
+       * src/reader.c (packgram): Move translation of rule actions from the
+       beginning of packgram to...
+       (check_and_convert_grammar): ... here right before packgram is invoked
+       so it's easier to write more complete comments, and remove redundant
+       code.
+
+2007-02-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       As in semantic actions, make @$ in %initial-action, %destructor, and
+       %printer imply %locations.
+       * src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when
+       scanning @$.
+       * tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting...
+       (@$ in %initial-action implies %locations,
+       @$ in %destructor implies %locations,
+       @$ in %printer implies %locations): ... these new test cases.
+
+2007-02-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Undo most of the 2007-02-03 change, switching to the strcase module
+       now that gnulib strcase has been fixed.
+       * bootstrap.conf (gnulib_modules): Remove c-strcase.  Add strcase.
+       * lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h,
+       c-strcasecomp.c, c-strncasecmp.c.  Add strcasecmp.c, strncasecmp.c
+       * m4/.cvsignore: Add strcase.m4.
+       * src/getargs.c: Revert 2007-02-03 change, as follows.
+       Don't include c-strcase.h.
+       (language_argmatch): Use strcasecmp rather than c_strcasecmp.
+       strcasecmp has "unspecified behavior" outside the POSIX locale,
+       but it works fine in practice if at least one argument is ASCII,
+       as is the case in Bison.
+
+2007-02-07  Paolo Bonzini  <bonzini@gnu.org>
+
+       * tests/java.at: Skip tests if only one of javac/java is present.
+       Reported by Joel E. Denny.
+       * tests/atlocal.in: Adjust copyright years.
+
+2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/lalr1.java (Stack): Work around old verifiers that disallow
+       access to the private fields of an inner class, from the outer class.
+       We can make Stack's fields public because user code doesn't have access
+       to the instance of Stack used by parse().  Reported by Paul Eggert.
+
+2007-02-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * .cvsignore: Add javacomp.sh, javaexec.sh.  Is this really
+       the right spot for these files?
+       * bootstrap.conf (gnulib_modules): Add c-strcase.
+       * lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c,
+       c-strncasecmp.c.
+       * src/getargs.c: Include c-strcase.h.
+       (language_argmatch): Use c_strcasecmp rather than strcasecmp,
+       to avoid unspecified behavior.
+
+2007-02-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Decl Summary): Correct typo.
+
+2007-01-30  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/bison.m4 (b4_percent_define_flag_if): Don't treat 0 as false.
+       Complain if the value does not match empty, "true" or "false".
+       * data/c++.m4: Adjust default definitions of %define variables.
+       * data/java.m4: Adjust default definitions of %define variables.
+       * doc/bison.texinfo (Decl Summary): Adjust the %define entry according
+       to above behavior.
+       * tests/input.at (Boolean %define variables): Test new behavior.
+
+2007-01-29  Paolo Bonzini  <bonzini@gnu.org>
+
+       * NEWS: Mention java.
+       * TODO: Remove things that are done.
+       * bootstrap.conf: Add javacomp-script and javaexec-script.
+       * configure.ac: Invoke gt_JAVACOMP and gt_JAVAEXEC.
+
+       * data/Makefile.am: Add new files.
+       * data/java-skel.m4: New.
+       * data/java.m4: New.
+       * data/lalr1.java: New.
+
+       * doc/bison.texinfo: Put "A Complete C++ Example" under
+       C++ Parsers.  Add Java Parsers.  Put C++ Parsers and Java Parsers
+       under Other Languages.
+
+       * src/getargs.c (valid_languages): Add Java.
+       * src/getargs.h (struct bison_language): Update size of string fields.
+
+       * tests/Makefile.am: Add java.at.
+       * tests/atlocal.in: Add CONF_JAVA and CONF_JAVAC.
+       * tests/java.at: New.
+       * tests/testsuite.at: Include it.
+
+2007-01-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up.
+       * src/scan-skel.l (at_directive_perform): Add at_directive_argc and
+       at_directive_argv arguments so these no longer have to be global
+       variables.  Also, update the implementation for the following changes.
+       (fail_for_at_directive_too_many_args,
+       fail_for_at_directive_too_few_args): Add at_directive_name argument.
+       (at_directive_name): Remove as at_directive_argv[0] will be used for
+       this now.
+       (AT_DIRECTIVE_ARGC_MAX): Increment to make space in at_directive_argv
+       for the directive name.
+       (at_directive_argc, at_directive_argv): Make these local within
+       skel_lex instead of global.
+       (INITIAL): Update directive start action for above changes.
+       (SC_AT_DIRECTIVE_ARG): Rename to...
+       (SC_AT_DIRECTIVE_ARGS): ... this, and update for above changes.
+       (SC_AT_DIRECTIVE_SKIP_WS): Update.
+       (scan_skel): Move yylex_destroy to...
+       (skel_scanner_free): ... here.
+       * tests/skeletons.at (installed skeleton file name): Rename to...
+       (installed skeleton file names): ... this.
+
+2007-01-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * ChangeLog: For changes in doc/bison.texinfo, consistently reference
+       node names: say "Table of Symbols" not "Bison Symbols", and say "Decl
+       Summary" not "Directives".
+       * doc/bison.texinfo (Decl Summary, Calc++ Parser): Cross-reference the
+       %code entry in "Decl Summary" rather than the one in "Table of Symbols"
+       since the former is now the more complete one.
+       (Prologue Alternatives): Likewise and do the same for %defines.
+       (Table of Symbols): Add summary of %code, add summary of %define, and
+       move full %code documentation to...
+       (Decl Summary): ... here for consistency with other entries in these
+       sections.
+       Move %define entry in order to keep this list alphabetized.
+       Reword %define entry a little to put less emphasis on the skeleton
+       concept, which most users shouldn't have to think about.
+
+2007-01-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Adjust to recent gnulib changes.
+       * lib/.cvsignore: Remove stpcpy.h, strndup.h, strnlen.h.
+       Add string.h, string_.h, unistd_.h, wchar_.h.
+       * m4/.cvsignore: Add gnulib-common.m4, string_h.m4, wchar.m4.
+       * src/system.h: Don't include <stpcpy.h>; this is now done by
+       <string.h>.
+
+2007-01-23  Paolo Bonzini  <bonzini@gnu.org>
+
+       Simplify implementation of unqualified %code, implement macros for
+       uniform treatment of boolean %define flags.  Document %define.
+       * data/bison.m4 (b4_percent_define_ifdef, b4_percent_define_flag_if,
+       b4_percent_code_ifdef): New.
+       (b4_percent_code_get): Map unqualified %code to b4_percent_code().
+       * data/c++.m4: Define default value for global_tokens_and_yystype.
+       * data/glr.cc: Likewise.
+       * data/location.cc: Use b4_percent_define_flag_if.
+
+       * doc/bison.texinfo (Decl Summary): Document %define.
+
+       * src/parse-gram.y (Unqualified %code): Change muscle name to
+       b4_percent_code().
+       (content.opt): Default to empty.
+
+2007-01-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Implement support for relative and absolute skeleton file names.
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00071.html>.
+       * doc/bison.texinfo (Decl Summary): Document in %skeleton entry.
+       (Bison Options): Document in --skeleton entry.
+       * src/output.c (output_skeleton): Use strncpy rather than strcpy since
+       full_skeleton can't necessarily hold all of pkgdatadir.
+       If the specified skeleton file name contains a `/', don't prepend
+       pkgdatadir.
+       * src/parse-gram.y (prologue_declaration): If the specified skeleton
+       file name contains a `/', prepend the grammar file directory.
+       * tests/Makefile.am (TESTSUITE_AT): Add skeletons.at.
+       * skeletons.at: New file.
+       (relative skeleton file names): New test case.
+       (installed skeleton file names): New test case.
+       * tests/testsuite.at: Include skeletons.at.
+
+       * bootstrap: Update copyright to 2007.
+
+2007-01-17  Paolo Bonzini  <bonzini@gnu.org>
+
+       * bootstrap: Remove occurrences of .#bootmp from the files.
+
+2007-01-17  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo (Calc++ Parser): Don't try to alias
+       nonterminals.
+       Use per-type %printer.
+
+2007-01-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4,
+       data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
+       djgpp/config.site, src/files.c, src/files.h, src/main.c,
+       src/muscle_tab.c, src/muscle_tab.h, src/parse-gram.y, src/reader.h,
+       src/scan-skel.h, src/scan-skel.l, tests/actions.at, tests/calc.at,
+       tests/glr-regression.at, tests/input.at, tests/local.at,
+       tests/output.at, tests/torture.at: Update copyright to 2007.
+
+2007-01-16  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an
+       error code.
+       (Calc++ Scanner): Exit with failure if we can't open the input
+       file.
+       Accept "-" standing for stdin.
+       (Calc++ Top Level): Print the result only if the parsing was
+       successful.
+
+2007-01-16  Akim Demaille  <akim@epita.fr>
+
+       * data/lalr1.cc (yy_reduce_print_): Add a missing end-of-line.
+
+2007-01-15  Paolo Bonzini  <bonzini@gnu.org>
+       and Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up %define and %code implementation in M4 some.  Most
+       importantly, rename all related macros to be in the b4_percent_define
+       and b4_percent_code namespaces.  Also, complete support for `.' in
+       %define variable names and %code qualifiers.
+       * data/bison.m4 (b4_check_user_names): Check for special
+       "SKELETON-NAMESPACE(name)" macros instead of using two nested
+       m4_foreach loops.
+       (b4_get_percent_define, b4_get_percent_code): Rename to...
+       (b4_percent_define_get, b4_percent_code_get): ... these.
+       Extend documentation with examples.
+       For SKELETON-NAMESPACE (as documented for b4_check_user_names), use
+       b4_percent_define_skeleton_variables and
+       b4_percent_code_skeleton_qualifiers.
+       Expect any value for the %define variable `foo' to be stored in the
+       macro named `b4_percent_define(foo)'; expect any %code blocks for the
+       qualifier `foo' to be stored in a macro named `b4_percent_code(foo)';
+       expect any unqualified %code blocks to be stored in a macro named
+       `b4_percent_code_unqualified'.
+       Use m4_indir so that %define variable names and %code qualifiers can
+       contain `.', which is allowed by the grammar parser.
+       (b4_percent_define_default): New macro to set a default value for a
+       %define variable.
+       (m4_wrap): Update wrapped code, and fix some underquoting.
+       (b4_check_user_names_wrap): Update and define outside the m4_wrap.
+       Expect grammar uses of %define variables and %code qualifiers to be
+       defined in b4_percent_define_user_variables and
+       b4_percent_code_user_qualifiers.
+       * data/c++.m4: Use b4_percent_define_default rather than
+       m4_define_default.  Fix some underquoting.  Skeleton usage of %define
+       variable define_location_comparison now implies skeleton usage of
+       %define variable filename_type.
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
+       data/push.c, data/yacc.c: Update macro names.
+       * src/parse-gram.y (prologue_declaration, grammar_declaration): Update
+       muscle names.
+
+2007-01-14  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP specific issues.
+
+       * djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific
+       default.  Set gl_cv_absolute_wctype_h to a sane DJGPP specific default.
+
+2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to
+       run parsers in all tests so that Valgrind is invoked during
+       maintainer-check-valgrind.
+       (Duplicate representation of merged trees): Free all semantic values.
+       (Duplicated user destructor for lookahead): Likewise.
+
+2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a
+       command-line prefix.
+       * tests/torture.at (Exploding the Stack Size with Alloca): Stderr is
+       ignored, so use that PRE to set --log-fd=1 in VALGRIND_OPTS so we don't
+       miss Valgrind messages.
+       (Exploding the Stack Size with Malloc): Likewise.
+
+2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Ignore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be
+       locals.  Reported by Juan Manuel Guerrero at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-01/msg00000.html>.
+       * data/push.c: Enclose the #ifdef YYSTACK_USE_ALLOCA in b4_push_if.
+       Fix some indentation also.
+       * tests/torture.at (Exploding the Stack Size with Alloca): Add comment
+       explaining this issue.
+
+2007-01-09  Paolo Bonzini  <bonzini@gnu.org>
+       and Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Simplify union and prologue handling, and escape union and lex/parse
+       params with digraphs.
+       * data/bison.m4 (b4_pre_prologue, b4_post_prologue): Set their default
+       values to the empty string since these are no longer guaranteed
+       initialized by the front-end.
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/push.c, data/yacc.c: Add
+       braces around b4_user_stype since this is no longer done by the
+       front-end.
+       * src/files.c, src/files.h (pre_prologue_obstack,
+       post_prologue_obstack): Remove.
+       * src/muscle_tab.c (muscle_pair_list_grow): Don't duplicate header
+       comments here.  Use MUSCLE_OBSTACK_SGROW so that values are escaped
+       with digraphs.  This fixes lex params and parse params.
+       * src/muscle_tab.h (muscle_pair_list_grow): Update comments.
+       * src/output.c (prepare): Remove muscle insertion of the prologues.
+       (output): Remove freeing of pre_prologue_obstack and
+       post_prologue_obstack.
+       * src/parse-gram.y (prologue_declaration): Use muscle_code_grow rather
+       than prologue_augment for prologue parsing so you don't need prologue
+       obstacks.
+       (grammar_declaration): For %union RHS, use `braceless' instead of
+       "{...}" so that braces are already stripped and code is escaped with
+       digraphs.
+       * src/reader.c (prologue_augment): Remove.
+       (reader): Remove initialization of pre_prologue_obstack and
+       post_prologue_obstack.
+       * src/reader.h (prologue_augment): Remove.
+
+       * data/c.m4: Remove stray parenthesis.
+
+2007-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Remove quotes from variables names in %define directives and from
+       qualifiers in %code directives, and restrict the characters that are
+       allowed in them to M4-friendly ones.  For %define, continue to support
+       the quoted form as a deprecated feature.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00023.html>.
+       * NEWS (2.3a+): Add entry for the change to %define.  Update entry for
+       %code.
+       * doc/bison.texinfo (Prologue Alternatives): Update.
+       (Bison Declaration Summary): In %defines entry, update mention of
+       `%code requires' and `%code provides'.
+       (C++ Location Values): Update %define uses.
+       (Calc++ Parser Interface): Likewise.
+       (Calc++ Parser): Likewise, and update `%code requires' uses.
+       (Table of Symbols): Update %code documentation.
+       * src/parse-gram.y (prologue_declaration): For %define variables, use
+       `variable' instead of `STRING'.
+       (grammar_declaration): For %code qualifiers, use `ID' instead of
+       `STRING'.
+       (variable): New nonterminal that takes an `ID' or a `STRING'.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update %code
+       and %define uses.
+       * tests/calc.at (_AT_DATA_CALC_Y): Update %define use.
+       * tests/input.at (Reject unused %code qualifiers): Update %code uses.
+       (%define errors): Update %define uses.
+
+2007-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/parse-gram.y (prologue_declaration): Use MUSCLE_INSERT_STRING
+       instead of muscle_insert for %define values so that M4-special
+       characters are replaced with digraphs.
+       * tests/input.at (%define errors): Extend to check weird values.
+
+2007-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Instead of having skeletons declare all valid %define variables and
+       %code qualifiers, provide macros that retrieve the associated values
+       and build these lists automatically.  Thus Bison will now warn when a
+       variable or qualifier is not used by the skeleton in the current
+       invocation regardless of whether it might sometimes be used by that
+       skeleton in other invocations.  Also, move all %define value macros to
+       the b4_percent_define_ namespace, and remove the %define "NAME" {CODE}
+       form, which is replaced by %code.
+       * data/bison.m4 (b4_check_for_unrecognized_names): Rename to...
+       (b4_check_user_names): ... this, and change the series of valid name
+       arguments to a single list argument for names used in the skeleton
+       similar to the existing list argument for names used in the grammar.
+       Warn instead of complaining.
+       (b4_get_percent_define, b4_get_percent_code): New to retrieve %define
+       values and %code code, to format %code code properly, and to build
+       lists of all %define variables and %code qualifiers used in the
+       skeleton: b4_skeleton_percent_define_variables and
+       b4_skeleton_percent_code_qualifiers.
+       (b4_check_percent_define_variables, b4_check_percent_code_qualifiers):
+       Remove, and...
+       (m4_wrap): ... m4_wrap b4_check_user_names invocations instead so that
+       the skeleton names lists can finish building first.  In place of
+       b4_used_percent_define_variables and b4_used_percent_code_qualifiers,
+       expect the lists b4_user_percent_define_variables and
+       b4_user_percent_code_qualifiers.
+       * data/c++.m4: Where setting default values for b4_parser_class_name,
+       b4_location_type, b4_filename_type, b4_namespace, and
+       b4_define_location_comparison, update their names to the
+       b4_percent_define_ namespace.
+       * data/glr.c: Don't use b4_check_percent_define_variables and
+       b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
+       * data/glr.cc, data/lalr1.cc: Likewise, and use b4_get_percent_define.
+       (b4_parser_class_name, b4_namespace): Define these using
+       b4_get_percent_define for parser_class_name and namespace.
+       * data/location.cc: Use b4_get_percent_define.
+       * data/push.c: Don't use b4_check_percent_define_variables and
+       b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
+       * data/yacc.c: Likewise, and don't call m4_exit in
+       b4_use_push_for_pull_if or m4_wrap code will never execute.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_grow_used_name_list):
+       Rename to...
+       (muscle_grow_user_name_list): ... this for consistency with the
+       terminology used in bison.m4.
+       * src/parse-gram.y (prologue_declaration): Prepend "percent_define_" to
+       %define variable names, and rename muscle used_percent_define_variables
+       to user_percent_define_variables.
+       (grammar_declaration): Rename muscle used_percent_code_qualifiers to
+       user_percent_code_qualifiers.
+       (content): Remove.
+       (content.opt): Replace content RHS with STRING RHS so %define "NAME"
+       {CODE} form is no longer accepted.
+       * tests/input.at (Reject bad %code qualifiers): Rename to...
+       (Reject unused %code qualifiers): ... this, and update test output.
+       (%define error): Update test output.
+
+2007-01-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Check for unrecognized %define variables similar to checking for
+       unrecognized %code qualifiers.  Check for redefined %define variables.
+       * data/bison.m4 (b4_check_for_unrecognized_names): New macro that
+       generalizes...
+       (b4_check_percent_code_qualifiers): ... this, which now wraps it.
+       (b4_check_percent_define_variables): New, also wraps it.
+       * data/glr.c: Unless glr.cc is wrapping glr.c, declare no valid %define
+       variables using b4_check_percent_define_variables.
+       * data/glr.cc, data/lalr1.cc: Declare the valid %define variables as
+       all those exercised in the test suite and all those listed in the
+       `Default values' section of c++.m4.  Are there others?
+       * data/push.c, data/yacc.c: Declare no valid %define variables.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_find_const): New function,
+       similar to muscle_find, but it works even when the muscle stores a
+       const value.
+       (muscle_grow_used_name_list): New function for constructing the used
+       name list muscles that b4_check_for_unrecognized_names requires.
+       * src/parse-gram.y (prologue_declaration): Warn if a variable is
+       %define'd more than once.  Define the b4_used_percent_define_variables
+       muscle with muscle_grow_used_name_list.
+       (grammar_declaration): Abbreviate %code code with
+       muscle_grow_used_name_list.
+       * tests/input.at (%define errors): New.
+
+2007-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Provide warn_at, complain_at, and fatal_at function callbacks to the
+       skeletons, and use this for %code qualifier complaints.
+       * data/bison.m4 (b4_error_at): New, invoked by...
+       (b4_warn_at, b4_complain_at, b4_fatal_at): ... these new macros to wrap
+       the skeleton scanner's new @warn_at(...@), @complain_at(...@), and
+       @fatal_at(...@) directives.
+       (b4_check_percent_code_qualifiers): Rewrite to expect locations for
+       qualifiers in b4_used_percent_code_qualifiers and to use
+       b4_complain_at.
+       * src/location.c, src/location.h (boundary_set_from_string): New global
+       function.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_boundary_grow): New global
+       function.
+       * src/parse-gram.y (grammar_declaration): Add locations for qualifiers
+       to b4_used_percent_code_qualifiers.
+       * src/scan-skel.l (fail_for_at_directive_too_few_args): New static
+       function.
+       (AT_DIRECTIVE_ARGC_MAX): Increase for boundary arguments.
+       (lineno): Rename to...
+       (out_lineno): ... this so I don't misunderstand it again.
+       (SC_AT_DIRECTIVE_SKIP_WS): Don't increment out_lineno for newlines
+       here; these newlines are in the input but not the output file.
+       (SC_AT_DIRECTIVE_ARG): Likewise.  Extract directive execution to...
+       (at_directive_perform): ... this new static function, and add handling
+       of new @warn_at(...@), @complain_at(...@), and @fatal_at(...@)
+       directives.
+       * tests/input.at (Reject bad %code qualifiers): Update test output with
+       locations and extend.
+
+       * tests/output.at (Output file name: [, Output file name: ]): Remove
+       bogus comment about these tests failing.
+
+2007-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up b4_check_percent_code_qualifiers a little.
+       * data/bison.m4 (b4_check_percent_code_qualifiers): Expect qualifiers
+       in b4_used_percent_code_qualifiers to be double-M4-quoted.  Rewrite
+       documentation and add examples.
+       * src/parse-gram.y (grammar_declaration): Double-M4-quote those
+       qualifiers here.
+
+2007-01-05  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't use m4_divert since it makes m4_divert_push and m4_divert_pop
+       unreliable -- especially when they're hidden inside another macro.
+       * data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-skel.m4,
+       data/c.m4: Remove m4_divert(-1).
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
+       data/push.c, data/yacc.c: Likewise, and replace m4_divert(0) with
+       m4_divert_push(0) and m4_divert_pop(0).
+       * src/output.c (output_skeleton): Don't add an m4_divert_push(0) and
+       an m4_wrap([m4_divert_pop(0)]) to the M4.  Diversion -1, which is
+       pushed and popped by m4sugar, should be first on the stack.
+
+       Provide warn, complain, and fatal function callbacks to the skeletons.
+       This provides more flexibility than m4_fatal, improves the error
+       message format, and captures messages for translation.  Discussed
+       starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00063.html>.
+       * data/bison.m4 (b4_error): New, invoked by...
+       (b4_warn, b4_complain, b4_fatal): ... these new macros to wrap the
+       skeleton scanner's new @warn(...@), @complain(...@), and @fatal(...@)
+       directives.  Because these M4 macros might be called when the current
+       diversion is -1 or 0, m4_divert_push and m4_divert_pop is used; thus
+       the previous removal of uses of m4_divert, which caused trouble.
+       (b4_check_percent_code_qualifiers): Use b4_complain instead of
+       m4_fatal to report unrecognized %code qualifiers.
+       * data/c++-skel.m4: Use b4_complain instead of m4_fatal to report C++
+       push parser requests.
+       * data/glr.c: Use b4_complain instead of m4_fatal to report
+       non-deterministic push parser requests.
+       Update @output usage to @output(...@) form.
+       * data/glr.cc, data/lalr1.cc: Use b4_fatal instead of m4_fatal to
+       report missing %defines.  Update @output usage to @output(...@) form.
+       * data/location.cc, data/push.c, data/yacc.c: Update @output usage to
+       @output(...@) form.
+       * src/main.c (main): Invoke skel_scanner_free.
+       * src/scan-skel.h (skel_scanner_free): Prototype new function.
+       * src/scan-skel.l (FLEX_NO_OBSTACK): Don't define; we now need the
+       obstack_for_string from flex-scanner.h.
+       (YY_DECL): Use to declare skel_lex static.
+       (decode_at_digraphs): Remove; now handled in the new
+       SC_AT_DIRECTIVE_ARG start condition.
+       (fail_for_at_directive_too_many_args, fail_for_invalid_at): New static
+       functions.
+       (at_directive_name, AT_DIRECTIVE_ARGC_MAX, at_directive_argc,
+       at_directive_argv): New static globals.
+       (INITIAL): Use fail_for_invalid_at.
+       Don't parse `@output file_name\n' or `@basename(...@)'.  Instead,
+       recognize the start of a generalized `@directive(...@)' form and
+       start...
+       (SC_AT_DIRECTIVE_ARG): ... this new start condition to parse the
+       directive args (using the new obstack_for_string), to decode the
+       contained @ diagraphs, and to perform the directive.  It recognizes
+       @basename(...@), @warn(...@), @complain(...@), @fatal(...@), and
+       @output(...@).
+       (SC_AT_DIRECTIVE_SKIP_WS): New start condition started by
+       SC_AT_DIRECTIVE_ARG to skip whitespace after the argument delimiter,
+       `@,'.
+       (scan_skel): Initialize obstack_for_string on the first call.
+       (skel_scanner_free): New function to free obstack_for_string.
+       * tests/input.at (Reject bad %code qualifiers): Update test output.
+
+2007-01-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Consolidate the 4 prologue alternative directives (%code, %requires,
+       %provides, and %code-top) into a single %code directive with an
+       optional qualifier field.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00012.html>.
+       * NEWS (2.3a+): Rewrite the existing entry for the prologue
+       alternatives.
+       * doc/bison.texinfo (Prologue Alternatives): Update.
+       (Decl Summary): Update to %code "requires" and %code "provides".
+       (Calc++ Parser): Update to %code "requires".
+       (Table of Symbols): Remove entries for %requires, %provides, and
+       %code-top.  Rewrite %code entry, and add a %code "QUALIFIER" entry.
+       * data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these
+       are replaced by b4_percent_code_provides and b4_percent_code_requires,
+       which are skeleton-specific.
+       (b4_check_percent_code_qualifiers): New.  A skeleton can use this to
+       declare what %code qualifiers it supports and to complain if any other
+       qualifiers were used in the grammar.
+       * data/glr.cc: Update to use b4_user_code([b4_percent_code_requires])
+       and b4_user_code([b4_percent_code_provides]) in place of
+       b4_user_requires and b4_user_provides.
+       * data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise.
+       Add b4_user_code([b4_percent_code_top]) and
+       b4_user_code([b4_percent_code]).
+       Invoke b4_check_percent_code_qualifiers.
+       * src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES,
+       PERCENT_REQUIRES): Remove.
+       (grammar_declaration): Remove RHS's for %code-top, %provides, and
+       %requires.  Rewrite the %code RHS as the unqualified form defining the
+       muscle b4_percent_code.  Add another RHS for the qualified %code form,
+       which defines muscles of the form b4_percent_code_QUALIFIER and the
+       b4_used_percent_code_qualifiers muscle.
+       * src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES,
+       PERCENT_REQUIRES): Remove.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use
+       %code "requires" and %code "provides".
+       * tests/input.at (Reject bad %code qualifiers): New.
+
+2007-01-03  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use the new code_props interface for destructors and printers.
+       * src/symtab.h (symbol, semantic_type): Remove destructor_location and
+       printer_location members, and change the type of the destructor and
+       printer members to code_props.
+       (symbol_destructor_set, symbol_destructor_get, symbol_printer_set,
+       symbol_printer_get, semantic_type_destructor_set,
+       semantic_type_printer_set, default_tagged_destructor_set,
+       default_tagless_destructor_set, default_tagged_printer_set,
+       default_tagless_printer_set): Use code_props in arguments and return
+       types in place of char const * and location.
+       (symbol_destructor_location_get, symbol_printer_location_get): Remove
+       since the locations are now contained in the return of
+       symbol_destructor_get and symbol_printer_get.
+       * src/output.c (symbol_destructors_output, symbol_printers_output):
+       Replace with...
+       (symbol_code_props_output): ... this to eliminate duplicate code.
+       (output_skeleton): Update to use symbol_code_props_output.
+       * src/reader.c (symbol_should_be_used): Update use of
+       symbol_destructor_get.
+       * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
+       Update uses of the various _destructor_set and _printer_set functions.
+       * src/symtab.c: (default_tagged_destructor_location,
+       default_tagless_destructor_location, default_tagged_printer_location,
+       default_tagless_printer_location): Remove since we...
+       (default_tagged_destructor, default_tagless_destructor,
+       default_tagged_printer, default_tagless_printer): ... change the type
+       of these to code_props.
+       (symbol_new, semantic_type_new, symbol_destructor_set,
+       semantic_type_destructor_set, symbol_destructor_get,
+       symbol_printer_set, semantic_type_printer_set, symbol_printer_get,
+       symbol_check_alias_consistency, default_tagged_destructor_set,
+       default_tagless_destructor_set, default_tagged_printer_set,
+       default_tagless_printer_set): Update.
+       (symbol_destructor_location_get, symbol_printer_location_get): Remove.
+       (SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for
+       code_props members.
+       (symbol_print): Use SYMBOL_CODE_PRINT.
+
+2007-01-03  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use the new code_props interface for rule actions.
+       * src/symlist.h (symbol_list): Replace action, action_location, and
+       used members with a code_props action_props member.
+       * src/reader.c (symbol_should_be_used, grammar_rule_check,
+       grammar_midrule_action, grammar_current_rule_merge_set,
+       grammar_current_rule_symbol_append, packgram): Update.
+       * src/scan-code.h (translate_rule_action): Remove, no longer used.
+       * src/scan-code.l (handle_action_dollar): Update.
+       (translate_rule_action): Remove, no longer used.
+       * src/symlist.c (symbol_list_sym_new, symbol_list_syms_print): Update.
+
+2007-01-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use the new code_props interface in parse-gram.y.
+       * src/parse-gram.y (prologue_declaration, braceless, epilogue.opt):
+       Update all uses of translate_* functions to use the new code_props
+       interface and to use gram_scanner_last_string_free and
+       code_scanner_last_string_free where possible.
+       (grammar_declaration): symbol_list_destructor_set and
+       symbol_list_printer_set now perform the translation, so don't do it
+       here.  Use gram_scanner_last_string_free where possible.
+       * src/scan-code.h, src/scan-code.l (translate_symbol_action,
+       translate_code): Remove, no longer used.
+       * src/symlist.h, src/symlist.c (symbol_list_destructor_set,
+       symbol_list_printer_set): Perform code translation here rather than
+       depending on the caller to do so.
+
+       * src/symlist.h (struct symbol_list): Correct some documentation typos.
+       * src/scan-gram.h (gram_last_string): Remove declaration.
+       * src/scan-gram.l (last_string): Declare it static.
+
+2007-01-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Encapsulate code properties and related functionality for the various
+       destructors, printers, and actions into a code_props structure and
+       interface.  This patch merely implements code_props in scan-code.h and
+       scan-code.l.  Future patches will rewrite other modules to use it.
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00020.html>.
+       * src/location.h (EMPTY_LOCATION_INIT): Define so that it's easier to
+       consistently initialize const structs that have an empty location
+       field.
+       * src/location.c (empty_location): Initialize with EMPTY_LOCATION_INIT
+       to ensure consistency.
+       * src/scan-code.h (code_props): New structure.
+       (code_props_none_init, CODE_PROPS_NONE_INIT, code_props_none): New
+       function, macro, and const global variable for initializing a
+       code_props with no code.
+       (code_props_plain_init, code_props_symbol_action_init,
+       code_props_rule_action_init, code_props_translate_code): The rest of
+       the new code_props functional interface.  Among other things, the init
+       functions set the code_props kind field so that
+       code_props_translate_code will know whether to behave like
+       translate_symbol_action, translate_rule_action, or translate_code.
+       These old translate functions must remain until all other modules are
+       updated to use the new code_props interface.
+       (code_scanner_last_string_free): New function similar to
+       gram_scanner_last_string_free.
+       (code_scanner_free): Add documentation.
+       * src/scan-code.l: Implement the new interface.
+       (code_lex): Make it static, add a code_props* argument, and remove the
+       rule argument.
+       (last_string): New static global similar to the one in scan-gram.l.
+       (SC_RULE_ACTION): Update to use the code_props* argument to code_lex
+       instead of rule.
+       (SC_SYMBOL_ACTION): For $$, set the is_value_used member of the
+       code_props since Bison may one day use this information for destructors
+       and printers.
+       (<*><<EOF>>): Use STRING_FINISH so that last_string is set.
+       (handle_action_dollar): Use symbol_list_n_get and set used flag
+       directly since symbol_list_n_used_set is removed.
+       (translate_action): Add a code_props* argument and remove the rule,
+       action, and location arguments.  Pass the code_props* on to code_lex.
+       (translate_rule_action, translate_symbol_action, translate_code):
+       Rewrite as wrappers around the new code_props interface.
+       * src/symlist.h, src/symlist.c (symbol_list_n_used_set): Remove since
+       it would eventually need to break the encapsulation of code_props.
+
+2007-01-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * etc/.cvsignore: New.
+
+2007-01-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add maintainer-push-check to run maintainer-check using push parsing in
+       place of pull parsing where available.
+       * Makefile.am (maintainer-push-check): New.
+       * data/bison.m4 (b4_use_push_for_pull_if): New.
+       * data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if
+       appropriately based on their existing values.
+       (yypush_parse): Don't print push-parser-specific diagnostics if push
+       parsing is being used in place of pull parsing.
+       * data/yacc.c: If push parsing should replace pull parsing, redirect to
+       push.c.
+       * src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment
+       variable, and insert b4_use_push_for_pull_flag into muscles.
+       * tests/Makefile.am (maintainer-push-check): New.
+
+2006-12-31  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (yypush_parse): Set yynew = 1 at the end of a parse
+       (whether successful or failed) so that yypush_parse can be invoked
+       again to start a new parse using the same yypstate.
+       * tests/torture.at (AT_DATA_STACK_TORTURE): For push mode, extend to
+       check multiple yypull_parse invocations on the same yypstate.  For pull
+       mode, extend to check multiple yyparse invocations.
+       (Exploding the Stack Size with Alloca): Extend to try with
+       %push-pull-parser.
+       (Exploding the Stack Size with Malloc): Likewise.
+
+       * tests/calc.at (Simple LALR Calculator): Don't specify
+       %skeleton "push.c" since %push-pull-parser implies that now.
+       * tests/headers.at (export YYLTYPE): Don't check for the push
+       declarations.  Otherwise, this test case can't be used to see if push
+       mode can truly emulate pull mode.
+       * tests/input.at (Torturing the Scanner): Likewise.
+       * tests/local.at (AT_YACC_OR_PUSH_IF, AT_PUSH_IF): Remove.
+       (AT_YYERROR_SEES_LOC_IF): Rather than AT_YACC_OR_PUSH_IF, use
+       AT_YACC_IF, which now includes the case of push mode since %skeleton
+       need not be used for push mode.  This will be more intuitive once
+       push.c is renamed to yacc.c.
+
+2006-12-31  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       For push mode, convert yyparse from a macro to a function, invoke yylex
+       instead of passing a yylexp argument to yypull_parse, and don't
+       generate yypull_parse or yyparse unless %push-pull-parser is declared.
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>.
+       * data/bison.m4 (b4_pull_if): New.
+       * data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH.
+       * data/push.c: Improve M4 quoting a little.
+       (b4_generate_macro_args, b4_parenthesize): Remove.
+       (yyparse): If there's a b4_prefix, #define this to b4_prefix[parse]
+       any time a pull parser is requested.
+       Don't #define this as a wrapper around yypull_parse.  Instead, when
+       both push and pull are requested, make it a function that does that
+       same thing.
+       (yypull_parse): If there's a b4_prefix, #define this to
+       b4_prefix[pull_parse] when both push and pull are requested.
+       Don't define this as a function unless both push and pull are
+       requested.
+       Remove the yylexp argument and hard-code yylex invocation instead.
+       * etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of
+       %push-parser.
+       * src/getargs.c (pull_parser): New global initialized to true.
+       * getargs.h (pull_parser): extern it.
+       * src/output.c (prepare): Insert pull_flag muscle.
+       * src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token.
+       (prologue_declaration): Set both push_parser and pull_parser = true for
+       %push-pull-parser.  Set push_parser = true and pull_parser = false for
+       %push-parser.
+       * src/scan-gram.l: Don't accept %push_parser as an alternative to
+       %push-parser since there's no backward-compatibility concern here.
+       Scan %push-pull-parser.
+       * tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser
+       instead of %push-parser.
+       * tests/headers.at (export YYLTYPE): Make yylex static, and don't
+       prototype it in the module that calls yyparse.
+       * tests/input.at (Torturing the Scanner): Likewise.
+       * tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.
+
+2006-12-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update etc/bench.pl.  Optimize push mode a little (the yyn change
+       deserves most of the credit).
+       * Makefile.am (SUBDIRS): Add etc subdirectory.
+       * configure.ac (AC_CONFIG_FILES): Add etc/bench.pl and etc/Makefile.
+       * data/push.c (b4_declare_parser_state_variables): Move yyn, yyresult,
+       yytoken, yyval, and yyloc declarations to...
+       (yyparse or yypush_parse): ... here to improve performance.  For
+       yypush_parse invocations after the first, be sure to assign yyn its old
+       value again.
+       (yypstate_new): Don't bother initializing the yyresult field since the
+       initial value isn't used.
+       (yyn, yyresult, yytoken, yyval, yyloc): For each NAME in this list,
+       remove the #define that, in push mode, set it to yyps->NAME.
+       * etc/Makefile.am: New.
+       * etc/bench.pl: Remove and build it instead from...
+       * etc/bench.pl.in: ... this new file.  Use @abs_top_builddir@ to invoke
+       "tests/bison" from the build directory by default rather than just
+       invoking "bison" from $PATH.
+       (calc_grammar): Update push parser code: don't declare yylval globally,
+       don't define yyparse_wrapper, and don't #define yyparse.
+       (bench_grammar): Update to check all working combinations of yacc.c,
+       push.c, impure, pure, pull, and push.
+
+2006-12-25  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       For push mode, add pull wrappers around yypush_parse.
+       * data/push.c: (b4_generate_macro_args, b4_parenthesize): New macros.
+       (yypull_parse): New function wrapping yypush_parse.
+       (yyparse): New #define wrapping yypull_parse.
+       * tests/calc.at (_AT_DATA_CALC_Y): Call yyparse even when %push-parser
+       is declared.
+       * tests/headers.at (export YYLTYPE): Make yylex global.  For push mode,
+       prototype yylex in the module that calls yyparse, and don't prototype
+       yyparse there.  Otherwise, the yyparse expansion won't compile.
+       * tests/input.at (Torturing the Scanner): Likewise.
+
+2006-12-25  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Enable push parsers to operate in impure mode.  Thus, %push-parser no
+       longer implies %pure-parser.  The point of this change is to move
+       towards being able to test the push parser code by running the entire
+       test suite as if %push-parser had been declared.
+       * data/push.c (yypush_parse): For impure mode, remove the
+       yypushed_char, yypushed_val, and yypushed_loc arguments.
+       Instead, declare these as local variables initialized to the global
+       yychar, yylval, and yylloc.
+       For the first yypush_parse invocation only, restore the initial values
+       of these global variables when it's time to read a token since they
+       have been overwritten.
+       * src/parse-gram.y (prologue_declaration): Don't set pure_parser for
+       %push-parser.
+       * tests/calc.at (Simple LALR(1) Calculator): Always declare
+       %pure-parser along with %push-parser since this test case was designed
+       for pure push parsers.
+       * tests/local.at (AT_PURE_OR_PUSH_IF): Remove unused.
+       (AT_YACC_OR_PUSH_IF): New.
+       (AT_YYERROR_SEES_LOC_IF): Fix enough that the test suite passes, but
+       add a note that it's still wrong for some cases (as it has been for a
+       while).
+       (AT_PURE_LEX_IF): Use AT_PURE_IF instead of AT_PURE_OR_PUSH_IF since
+       %push-parser no longer implies %pure-parser.
+
+2006-12-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Remove some unnecessary differences between the pull parser code and
+       the push parser code.  This patch enables yynerrs in push mode.
+       * data/push.c: Reformat M4 a little.
+       (b4_yyerror_range): Remove and convert all uses to just yyerror_range.
+       (b4_declare_scanner_communication_variables): Don't omit yynerrs just
+       because push mode is on.  Instead, if pure mode is on, move yynerrs
+       to...
+       (b4_declare_parser_state_variables): ... here.
+       (yynerrs, yyerror_range): For push mode, #define each NAME in this list
+       to yyps->NAME so it can be used in yypush_parse.
+       (yypush_parse): Don't omit uses of yynerrs in push mode.
+
+2006-12-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix bug such that the first pushed token's value and location are
+       sometimes overwritten (sometimes by %initial-action) before being used.
+       * data/push.c (yypush_parse): Rename arguments yynchar, yynlval, and
+       yynlloc to yypushed_char, yypushed_val, and yypushed_loc for clarity.
+       For the first yypush_parse invocation, initialize yychar to YYEMPTY to
+       more closely mimic the pull parser logic.
+       Don't copy the pushed token to yychar, yylval, and yylloc until it's
+       time to read a token, which is after any initialization of yylval and
+       yylloc.
+       (gottoken): Rename label to...
+       (yyread_pushed_token): ... for clarity and to avoid infringing on the
+       user namespace.
+
+2006-12-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rearrange initialization of the parser state variables so that the
+       skeleton doesn't have to have a copy for pull mode and another for push
+       mode.  This patch also fixes at least a bug such that yylloc was not
+       initialized (with b4_location_initial_line and
+       b4_location_initial_column) upon calling yypush_parse.  However, that
+       initialization now overwrites the first token's location;
+       %initial-action assigning @$ already did the same thing, and both bugs
+       will be fixed in a later patch.
+       * data/push.c (b4_yyssa): Remove and convert all uses to just yyssa.
+       (b4_declare_parser_state_variables): Remove initialization of yytoken,
+       yyss, yyvs, yyls, and yystacksize.
+       (yypstate_new): Remove initialization of some yypstate fields: yystate,
+       yyerrstatus, yytoken, yyss, yyvs, yyls, yystacksize, yyssp, yyvsp, and
+       yylsp.
+       (yyssa, yyvsa, yylsa): 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 yypush_parse, don't print the
+       "Starting parse" diagnostic for invocations after the first.
+       Add initialization of yytoken, yyss, yyvs, yyls, and yystacksize; for
+       yypush_parse, only do it for the first invocation.
+       Allow yystate, yyerrstatus, yyssp, yyvsp, yylsp, and yylloc
+       initialization to occur in yypush_parse but only on the first
+       invocation.
+
+2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c: Add CPP guards around push parser declarations in both
+       the header and the code file.
+       In the code file, move the push parser declarations to the same place
+       they appear in the header file.
+       Clean up the M4 some, especially the inconsistent underquoting in
+       some b4_c_function_def and b4_c_function_decl uses.
+
+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.
+       (Table of 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.
+       (Decl Summary): 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,
+       Table of 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, Table of 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, Table of 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.
+       (Table of 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.
+       (Table of 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.
+       (Table of Symbols): Add entry for %symbol-default.
+       * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token.
+       (generic_symlist, generic_symlist_item): New nonterminals for creating
+       a list in which each item is a symbol, semantic type, or
+       %symbol-default.
+       (grammar_declaration): Use generic_symlist in %destructor and %printer
+       declarations instead of symbols.1 or an empty list.
+       (symbol_declaration, precedence_declaration, symbols.1): Update actions
+       for changes to symbol_list.
+       * src/reader.c: Update for changes to symbol_list.
+       * src/scan-code.l: Likewise.
+       * src/scan-gram.l: Scan new PERCENT_SYMBOL_DEFAULT token.
+       * src/symlist.c, src/symlist.h: Extend such that a list node may
+       represent a semantic type or a %symbol-default in addition to just an
+       ordinary symbol.  Add switched functions for setting %destructor's and
+       %printer's.
+       * tests/actions.at, tests/input.at: Add %symbol-default to all default
+       %destructor/%printer declarations.
+
+2006-08-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Whether the default %destructor/%printer applies to a particular symbol
+       isn't a question of whether the user *declares* that symbol (in %token,
+       for example).  It's a question of whether the user by any means
+       *defines* the symbol at all (by simply using a char token, for
+       example).  $end is defined by Bison whereas any other token with token
+       number 0 is defined by the user.  The error token is always defined by
+       Bison regardless of whether the user declares it with %token, but we
+       may one day let the user define error as a nonterminal instead.
+       * NEWS (2.3+): Say "user-defined" instead of "user-declared".
+       * doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
+       the meaning of "user-defined".
+       * tests/actions.at (Default %printer and %destructor for user-declared
+       end token): Rename to...
+       (Default %printer and %destructor for user-defined end token): ...
+       this.
+
+       * src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
+       computation of whether to apply the default, don't maintain a list of
+       every Bison-defined symbol.  Instead, just check for a first character
+       of '$', which a user symbol cannot have, and check for the error token.
+
+2006-08-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't apply the default %destructor or %printer to the error token,
+       $undefined, or $accept.  This change fits the general rule that the
+       default %destructor and %printer are only for user-declared symbols,
+       and it solves several difficulties that are described in the new test
+       cases listed below.
+       * src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
+       * tests/actions.at (Default %printer and %destructor are not for error
+       or $undefined, Default %printer and %destructor are not for $accept):
+       New test cases.
+
+2006-08-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Allow %start after the first rule.
+       * src/reader.c (grammar_current_rule_begin): Don't set the start symbol
+       when parsing the first rule.
+       (check_and_convert_grammar): Search for it here after all grammar
+       declarations have been parsed.  Skip midrules, which have dummy LHS
+       nonterminals.
+       * src/symtab.c (symbol_is_dummy): New function.
+       * src/symtab.h (symbol_is_dummy): Declare it.
+       * tests/input.at (%start after first rule): New test.
+
+2006-08-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Redo some of the previous commit: add back the ability to use
+       non-aliased/undeclared string literals since it might be useful to
+       those declaring %token-table.
+       * src/reader.c (check_and_convert_grammar): Undo changes in previous
+       commit: don't worry about complaints from symbols_pack.
+       * src/symtab.c (symbol_new, symbol_class_set,
+       symbol_check_alias_consistency): Undo changes in previous commit: count
+       each string literal as a new symbol and token, assign it a symbol
+       number, and don't complain about non-aliased string literals.
+       (symbols_pack): Since symbol_make_alias still does not decrement symbol
+       and token counts but does still set aliased tokens to the same number,
+       symbol_pack_processor now leaves empty slots in the symbols array.
+       Remove those slots.
+       * tests/regression.at (Undeclared string literal): Remove test case
+       added in previous commit since non-aliased string literals are allowed
+       again.
+       (Characters Escapes, Web2c Actions): Undo changes in previous commit:
+       remove unnecessary string literal declarations.
+       * tests/sets.at (Firsts): Likewise.
+
+2006-08-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't allow an undeclared string literal, but allow a string literal to
+       be used before its declaration.
+       * src/reader.c (check_and_convert_grammar): Don't invoke packgram if
+       symbols_pack complained.
+       * src/symtab.c (symbol_new): Don't count a string literal as a new
+       symbol.
+       (symbol_class_set): Don't count a string literal as a new token, and
+       don't assign it a symbol number since symbol_make_alias does that.
+       (symbol_make_alias): It's not necessary to decrement the symbol and
+       token counts anymore.  Don't assume that an alias declaration occurs
+       before any uses of the identifier or string, and thus don't assert that
+       one of them has the highest symbol number so far.
+       (symbol_check_alias_consistency): Complain if there's a string literal
+       that wasn't declared as an alias.
+       (symbols_pack): Bail if symbol_check_alias_consistency failed since
+       symbol_pack asserts that every token has been assigned a symbol number
+       although undeclared string literals have not.
+       * tests/regression.at (String alias declared after use, Undeclared
+       string literal): New test cases.
+       (Characters Escapes, Web2c Actions): Declare string literals as
+       aliases.
+       * tests/sets.at (Firsts): Likewise.
+
+2006-08-14  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In the grammar scanner, STRING_FINISH unclosed constructs and return
+       them to the parser in order to improve error messages.
+       * src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER,
+       SC_BRACED_CODE, SC_PROLOGUE): Implement.
+       * tests/input.at (Unclosed constructs): New test case.
+       * tests/regression.at (Invalid inputs): Update now that unclosed %{ is
+       seen.
+
+       * src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove
+       unused global.
+
+2006-08-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Handle string aliases for character tokens correctly.
+       * src/symtab.c (symbol_user_token_number_set): If the token has an
+       alias, check and set its alias's user token number instead of its own,
+       which is set to indicate the alias.  Previously, every occurrence of
+       the character token in the grammar overwrote that alias indicator with
+       the character code.
+       * tests/input.at (String aliases for character tokens): New test.
+
+2006-08-12  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.
+
+2006-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
+       to prevent failures when building on older platforms.
+       Check for autopoint failure.
+       Set XGETTEXT_OPTIONS to values that check for C format strings,
+       so that translators are warned about them (this also helps
+       prevent core dumps).
+
+       * lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
+       function, since it simplifies our code a bit.
+
+       * configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
+       rather than -W, so we don't get bogus warnings about sign comparisons.
+       Add -Wpointer-arith, since that warning is useful (it reports code
+       that does not conform to C89 and that some compilers reject).
+       * data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change,
+       since it's no longer needed.
+
+2006-08-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up scanners a bit.
+       * src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack
+       definitions so gcc won't warn when obstack_for_string is unused.
+       * src/scan-code.l: config.h and system.h are already #include'd by
+       scan-code-c.c, so get rid of them here.
+       * src/scan-gram.l: Likewise.
+       * src/scan-skel.l: Likewise, and use flex-scanner.h without obstack
+       definitions rather than duplicating the rest of it.
+       * src/scan-gram-c.c, scan-skel-c.c: #include "system.h".
+
+2006-08-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Suppress signed/unsigned comparison warnings for yycheck.
+       * data/c.m4 (b4_safest_int_type): New macro.
+       * data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against
+       a signed int type, cast it to b4_safest_int_type first.
+       * data/yacc.c: Likewise.
+       (b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is
+       also overwritten.
+
+2006-08-09  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>  (tiny change)
+
+       * doc/bison.texinfo: Fix some typos.
+
+2006-08-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
+       po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4.
+
+       * bootstrap (gnulib_tool): Stop using --assume-autoconf;
+       the latest gnulib does this a different way.
+       (get_translations): Sharuzzaman Ahmat Raslan reported that the ms
+       translation was patched, so stop omitting it.
+
+2006-07-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Enable declaration of default %printer/%destructor.  Make the parser
+       use these for all user-declared grammar symbols for which the user does
+       not declare a specific %printer/%destructor.  Thus, the parser uses it
+       for token 0 if the user declares it but not if Bison generates it as
+       $end.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
+       * NEWS (2.3+): Mention.
+       * doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to
+       declare a %destructor for a mid-rule's semantic value.  It's just
+       impossible to declare one specific to it.
+       (Freeing Discarded Symbols): Mention that @$ can be used in %destructor
+       code.  Describe default %destructor form.
+       * src/parse-gram.y (grammar_declaration): Parse default
+       %printer/%destructor declarations.
+       * src/output.c (symbol_destructors_output): Use symbol_destructor_get
+       and symbol_destructor_location_get rather than accessing the destructor
+       and destructor_location members of struct symbol.
+       (symbol_printers_output): Likewise but for %printer's.
+       * src/reader.c (symbol_should_be_used): Likewise but for %destructor's
+       again.
+       * src/symtab.c (default_destructor, default_destructor_location,
+       default_printer, default_printer_location): New static global
+       variables to record the default %destructor and %printer.
+       (symbol_destructor_get, symbol_destructor_location_get,
+       symbol_printer_get, symbol_printer_location_get): New functions to
+       compute the appropriate %destructor and %printer for a symbol.
+       (default_destructor_set, default_printer_set): New functions to set the
+       default %destructor and %printer.
+       * src/symtab.h: Prototype all those new functions.
+       * tests/actions.at (Default %printer and %destructor): New test to
+       check that the right %printer and %destructor are called, that they're
+       not called for $end, and that $$ and @$ work correctly.
+       (Default %printer and %destructor for user-declared end token): New
+       test to check that the default %printer and %destructor are called for
+       a user-declared end token.
+       * tests/input.at (Default %printer and %destructor redeclared, Unused
+       values with default %destructor): New tests to check related grammar
+       warnings and errors.
+
+2006-07-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up handling of %destructor for the end token (token 0).
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
+       and
+       <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.
+
+       Make the skeletons consistent in how they pop the end token and invoke
+       its %destructor.
+       * data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start
+       state, which has token number 0, since this would invoke the
+       %destructor for the end token.
+       * data/lalr1.cc (yy::parser::parse): Don't check for the final state
+       until after shifting the end token, or else it won't be popped.
+       * data/yacc.c (yyparse): Likewise.
+
+       * data/glr.c (yyparse): Clear the lookahead after shifting it even when
+       it's the end token.  Upon termination, destroy an unshifted lookahead
+       even when it's the end token.
+       * data/lalr1.cc (yy::parser::parse): Likewise.
+       * data/yacc.c (yyparse): Likewise.
+
+       * src/reader.c (packgram): Don't check rule 0.  This suppresses unused
+       value warnings for the end token when the user gives the end token a
+       %destructor.
+
+       * tests/actions.at (Printers and Destructors): Test all the above.
+
+2006-07-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Update to latest gnulib and gettext versions.
+       * bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
+       Add fopen-safer.
+       (gnulib_files): Add m4/warning.m4.  Don't worry about files
+       overwritten by autopoint.
+       Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
+       Suppress "id", "ms", "tr" translations for now, since gettext 0.15
+       rejects them.
+       Don't use autoreconf; instead, invoke autopoint etc. by hand,
+       so that we can remove the intl files at a better time.
+       (intl_files_to_remove): Remove aclocal.m4, since it gets
+       rebuilt anyway.  Remove m4/inttypes_h.m4, m4/inttypes.m4,
+       m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
+       m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
+       Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
+       Remove datarootdir hack; no longer needed.
+       * configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
+       (AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
+       * lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
+       strdup.h.
+       * m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
+       * m4/warning.m4: Remove from CVS, since we now use gnulib's version.
+
+2006-07-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bootstrap: Adjust to today's change to gnulib-tool by invoking
+       it with --assume-autoconf='latest-stable'.
+
+2006-07-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
+       least 1.4.7 and 1.4.4) by putting a #line between `typedef union
+       YYSTYPE' and `{'.
+       * src/muscle_tab.h (muscle_grow): Replace the header comments with
+       those from muscle_tab.c since the old ones are misleading.
+
+2006-07-13  Akim Demaille  <akim@epita.fr>
+
+       Support %define "KEY" {VALUE}.
+       * src/scan-code.h, src/scan-code.l (translate_action)
+       (translate_rule_action, translate_symbol_action, translate_code):
+       Return char *, not const char *.
+       * src/parse-gram.y (declaration): Rename as...
+       (prologue_declaration): this.
+       (string_content): Remove this nonterminal, use STRING.
+       (braceless, content, content.opt): New nonterminal.
+       Use them.
+       (%define): Now accept content.opt, i.e., accept also BRACED_CODE
+       as value.
+       * src/scan-gram.l (getargs.h): Don't include it.
+
+2006-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
+       rather than a for-loop that declares a local bool variable.  This
+       should work around a compatibility problem with a Cray x1e C++
+       compiler reported by Hung Nguyen in
+       <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00022.html>.
+       The for-loop was introduced in the 2004-11-17 change but I don't
+       know why it was needed.
+
+2006-07-12  Akim Demaille  <akim@epita.fr>
+
+       * data/c.m4: Comment changes.
+
+2006-07-10  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/complain.c (error_message, ERROR_MESSAGE): New.
+       To factor...
+       (fatal_at, fatal, warn_at, warn, complain_at, complain): these.
+       * src/complain.h, src/complain.c (warning_issued): Remove, unused.
+
+2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Instead of %union, you can define and use your own union type
+       YYSTYPE if your grammar contains at least one <type> tag.
+       Your YYSTYPE need not be a macro; it can be a typedef.
+       * doc/bison.texinfo (Value Type, Multiple Types, Location Type):
+       (Union Decl, Decl Summary): Document this.
+       * data/glr.c (YYSTYPE): Implement this.
+       * data/glr.cc (YYSTYPE): Likewise.
+       * data/lalr1.cc (YYSTYPE): Likewise.
+       * data/yacc.c (YYSTYPE): Likewise.
+       * src/output.c (prepare): Output tag_seen_flag.
+       * src/parse-gram.y (declaration, grammar_declaration):
+       Use 'union_seen' rather than 'typed' to determine whether
+       %union has been seen, since grammars can now be typed without
+       %union.
+       (symbol_declaration, type.opt, symbol_def):
+       Keep track of whether a tag has been seen.
+       * src/reader.c (union_seen, tag_seen): New vars.
+       (typed): remove.
+       * src/reader.h (union_seen, tag_seen, typed): Likewise.
+       * src/scan-code.l (untyped_var_seen): New variable.
+       (handle_action_dollar): Adjust to above changes.
+       (handle_action_dollar, handle_action_at):
+       Improve overflow checking for outlandish numbers.
+       * tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
+       avoid new diagnostics generated by above changes.
+       * tests/regression.at (YYSTYPE typedef): Add test to check
+       for type tags without %union.
+
+       * src/symlist.c (symbol_list_length): Return int, not unsigned
+       int, since callers expect int.  This may need to get revisited
+       once we have proper integer overflow checking.
+
+       * src/scan-gram.h (gram_scanner_cursor): Remove decl, since this
+       object is now static.
+
+       * src/getargs.c (flags_argmatch): Return void, not int,
+       to pacify ./configure --enable-gcc-warnings.
+
+       * src/flex-scanner.h (STRING_FREE): Don't use FLEX_PREFIX (last_string)
+       since last_string is already defined to FLEX_PREFIX (last_string).
+
+2006-07-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       Implement --warnings/-W.
+       * src/getargs.c (report_argmatch, trace_argmatch): Remove,
+       replaced by...
+       (flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
+       Adjust callers.
+       * src/getargs.h, src/getargs.c (warnings, warnings_flags)
+       (warnings_args, warnings_types): New.
+       (getargs, short_options, long_options): Accept -W/--warnings.
+       Sort the options by alphabetical order, upper case letter right
+       before its lower case.
+
+2006-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Change %merge result type clash warnings to errors.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
+       * src/reader.c (record_merge_function_type): Use complain_at.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): Update test case results.
+
+2006-07-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       * src/getargs.h, src/getargs.c: Swap --report and --trace handling
+       to be in alphabetical order.
+       (trace_args): Spelling fixes.
+
+2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
+       so they don't collide with user-defined macros.
+       (yy_stack_print): Don't assume that yytype_int16 promotes to int;
+       this was never guaranteed, and now that we're using gnulib stdint,
+       which defines int_fast16_t to long int, the problem is exposed.
+
+2006-07-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/c.m4 (b4_basename): Simplify a bit, since we don't
+       need the full POSIX semantics (and weren't implementing them
+       anyway).
+
+       Adjust to Autoconf 2.60 and today's gnulib.
+       * bootstrap (gnulib_modules): Add stdint.
+       Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
+       no longer copies it.
+       (intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
+       since stdint needs the former and wcwidth (which is now required
+       by mbswidth) needs the latter.
+       Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
+       work around a compatibility glitch between gettext 0.14.6 and
+       Autoconf 2.60.
+       * configure.ac (AC_PREREQ): Require Autoconf 2.60.
+       Do not check for uintptr_t, since new stdint module does the right
+       thing.
+       * lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
+       Add stdint.h, stdint_.h, wcwidth.h.
+       * m4/.cvsignore: Remove alloca.m4, onceonly.m4.
+       Add absolute-header.m4, double-slash-root.m4, longlong.m4,
+       stdint.m4, wchar_t.m4, wcwidth.m4.
+       * src/files.c: Include <dirname.h> and <stdio-safer.h> in the
+       usual order for ../lib/*.h files.
+       (file_name_split): Use last_component, not base_name, to adjust
+       to gnulib changes.
+       * src/parse-gram.h: Include <strverscmp.h> in the usual order
+       for ../lib/*.h files.
+       (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
+       Define unconditionally, since we now assume the stdint module.
+       * src/scan-skel.l: Include <dirname.h>.
+       (BASE_QPUTS): Use last_component, not base_name.
+       * src/system.h: Include <unlocked-io.h> in the usual order
+       for ../lib/*.h files.  Include <stdint.h> unconditionally,
+       since we now use the stdint module.
+       (uintptr_t): Declare if UINTPTR_MAX is not defined, not
+       HAVE_UINTPTR_T, since we now use the stdint module.
+       (base_name): Remove decl, since files now include <dirname.h>
+       to get the decl.
+
+2006-07-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_location_initial_column, b4_location_initial_line):
+       New, default to 1.
+       * data/yacc.c, data/glr.c, data/location.cc: Use them.
+       * NEWS, doc/bison.texinfo: The initial column and line are 1 by
+       default.
+       * tests/calc.at: Adjust.
+
+2006-07-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       * data/c.m4 (b4_basename): New.
+       (b4_syncline): Also output the location of its invocation (from
+       the skeleton).
+       (b4_user_action, b4_define_user_action, b4_user_actions)
+       (b4_user_initial_action, b4_user_post_prologue, b4_user_start_header)
+       (b4_user_stype): New.
+       * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.
+
+2006-07-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In the grammar file, the first column is 1 not 0 on the first line as
+       on every other line.
+       * src/parse-gram.y (%initial-action): Initialize @$ correctly.
+       * tests/input.at (Torturing the Scanner): Update output.
+
+       * src/scan-gram.l (scanner_cursor): Declare it static.
+
+2006-07-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In warnings, say "previous declaration" rather than "first
+       declaration".
+       * src/symtab.c (redeclaration): Do that here.
+       * src/reader.c (record_merge_function_type): In the case of a result
+       type clash, report the previous declaration rather than the very first
+       one in the grammar file.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): Add a third declaration to check this behavior.
+       * tests/input.at (Incompatible Aliases): Update output.
+
+2006-06-27  Akim Demaille  <akim@epita.fr>
+
+       * doc/Doxyfile.in: New.
+       * doc/Makefile.am: Use it.
+       * src/lalr.h, src/symtab.h: Initial doxygenation.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't miss %merge result type warnings just because the LHS types are
+       declared after the %merge.  This continues the effort of the previous
+       patch.
+       * src/reader.c (get_merge_function): Don't set the merger type yet.
+       (record_merge_function_type): New function for setting the merger type
+       and checking for clashes.
+       (grammar_current_rule_merge_set): Set the location of the %merge for
+       the current rule.
+       (packgram): Invoke record_merge_function_type for each rule now that
+       all symbol type declarations have been parsed.
+       * src/reader.h (merger_list.type_declaration_location): New member
+       storing the location of the first %merge from which the type for this
+       merging function was derived.
+       * src/symlist.h (symbol_list.merger_declaration_location): New member
+       storing the location of a rule's %merge, if any.
+       * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+       declared later): New test to catch the error fixed by the above patch.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Get action warnings (grammar_rule_check) right even when symbol
+       declarations appear after the rules.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
+       Don't mistake the type of $$ in a midrule to be that of its parent
+       rule's $$.
+       * src/reader.c (grammar_current_rule_end): Don't invoke
+       grammar_rule_check yet since not all symbol declarations may have been
+       parsed yet.
+       (grammar_midrule_action): Likewise.
+       Don't record whether the midrule's $$ has been used yet since actions
+       haven't been translated yet.
+       Record the midrule's parent rule and its RHS index within the parent
+       rule.
+       (grammar_current_rule_action_append): Don't translate the action yet
+       since not all symbol declarations may have been parsed yet and, thus,
+       warnings about types for $$, $n, @$, and @n can't be reported yet.
+       (packgram): Translate the action and invoke grammar_rule_check now that
+       all symbol declarations have been parsed.
+       * src/scan-code.l (handle_action_dollar): Now that this is invoked
+       after parsing the entire grammar file, the symbol list here in the case
+       of a midrule is actually the midrule's empty RHS, so reference its
+       parent rule's RHS where necessary.
+       On the other hand, now that you can already know it's a midrule, you
+       aren't forced to think $$ has the same type as its parent rule's $$.
+       (handle_action_at): In the case of a midrule, reference the parent rule
+       where necessary.
+       * src/symlist.c (symbol_list_new): Initialize new midrule-related
+       members.
+       (symbol_list_length): Now that this is invoked after all rules have
+       been parsed, a NULL symbol (rather than a NULL symbol list node)
+       terminates a rule.  symbol_list_print already does this correctly.
+       * src/symlist.h (symbol_list.midrule_parent_rule,
+       symbol_list.midrule_parent_rhs_index): New members so that midrules can
+       remember their relationships with their parents.
+       * tests/input.at (Type Clashes): Extend to catch the midrule $$ error
+       fixed by the above patch.
+       (_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
+       implementing...
+       (Unused values): ... this old test case and...
+       (Unused values before symbol declarations): ... this new test case.
+       This one is the same as `Unused values' except that all symbol
+       declarations appear after the rules in order to catch the rest of the
+       errors fixed by the above patch.
+
+2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       More cleanup.
+       * src/reader.c (current_rule): Declare it static since it's no longer
+       used outside this file.
+       (grammar_current_rule_action_append): Remove redundant arguments from
+       translate_rule_action invocation.
+       * src/reader.h (current_rule): Remove this unused extern.
+       * src/scan-code.h (translate_rule_action): Remove redundant arguments.
+       * src/scan-code.l (translate_rule_action): Likewise.
+
+2006-06-25  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up yesterday's patch.
+       * parse-gram.y (rhs): Move grammar_midrule_action invocation from here
+       to...
+       * src/reader.c (grammar_current_rule_action_append): ... here for
+       consistency with grammar_current_rule_symbol_append.
+       * tests/regression.at (Braced code in declaration in rules section):
+       Make yyerror and yylex static as usual.
+
+2006-06-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix bug that mistakes braced code in a declaration in the rules section
+       to be a rule action.  Mentioned at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
+       * src/scan-gram.l: Move midrule action detection from the start of the
+       scanning of any braced code to...
+       * src/parse-gram.y (rhs): ... the parsing of braced code as a rule
+       action.  For readability, use $2 and @2 rather than the equivalent
+       global variables.
+       * tests/regression.at (Braced code in declaration in rules section):
+       New test to catch the error fixed by the above patch.
+
+       Work on code readability some.
+       * src/scan-code.l (current_rule): Get rid of this misleading and
+       redundant declaration: it's actually extern'ed in reader.h.
+       (YY_DECL, code_lex, handle_action_dollar, handle_action_at,
+       translate_action): Add a rule argument and use it instead of the global
+       current_rule.
+       (translate_rule_action): This already receives current_rule through an
+       argument, so pass it on to translate_action instead of assigning
+       current_rule to current_rule.
+       (translate_symbol_action, translate_code): Pass rule = NULL to
+       translate_action.
+
+2006-06-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rename %before-definitions to %start-header and %after-definitions to
+       %end-header.  Don't use these declarations to separate pre-prologue
+       blocks from post-prologue blocks.  Add new order-independent
+       declarations %before-header and %after-header as alternatives to the
+       traditional Yacc pre-prologue and post-prologue blocks.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
+       * NEWS (2.3+): Update for these changes.
+       * data/glr.c (b4_before_definitions): Update to...
+       (b4_start_header): ... this.
+       (b4_after_definitions): Update to...
+       (b4_end_header): ... this.
+       * data/glr.cc: Likewise.
+       * data/lalr1.cc: Likewise.
+       * data/yacc.c: Likewise.
+       * doc/bison.texinfo (The prologue): Update names, and replace remaining
+       prologue blocks with %*-header declarations.
+       (Calc++ Parser): Likewise.
+       (Bison Declaration Summary): Update names.
+       (Table of Symbols): Update description.
+       * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
+       (PERCENT_END_HEADER): ... this.
+       (PERCENT_BEFORE_DEFINITIONS): Update to...
+       (PERCENT_START_HEADER): ... this.
+       (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+       (declaration): Update token names and m4 macro names.
+       When parsing %end-header and %start-header, invoke translate_code
+       before muscle_code_grow, and no longer set global booleans to remember
+       whether these declarations have been seen.
+       Parse new %after-header and %before-header.
+       * src/reader.c (before_definitions, after_definitions): Remove.
+       (prologue_augment): Accept a new bool argument to specify whether to
+       augment the pre-prologue or post-prologue.
+       * src/reader.h (before_definitions, after_definitions): Remove these
+       extern's.
+       (prologue_augment): Add new bool argument.
+       * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
+       (PERCENT_END_HEADER): ... this.
+       (PERCENT_BEFORE_DEFINITIONS): Update to...
+       (PERCENT_START_HEADER): ... this.
+       (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+       * tests/actions.at (Printers and Destructors): Update names.
+
+2006-06-22  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add comparison operators for C++ location classes.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
+       * data/c++.m4 (b4_define_location_comparison): New boolean %define
+       declaration indicating whether filename_type has an operator==.  If
+       filename_type is `std::string', it defaults to `1', `0' otherwise.
+       * data/location.cc: Iff b4_define_location_comparison is `1', add
+       operator== and operator!= for class position and for class location.
+
+       Some minor fixes.
+       * src/scan-action.l: Remove unused file.
+       * src/symtab.c (symbol_printer_set): Use printer_location not
+       destructor_location.
+       * src/symtab.h (struct symbol): Replace incorrect source comment for
+       printer members.
+       * tests/input.at (Incompatible Aliases): Update output with correct
+       printer location.
+
+2006-06-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't put the pre-prologue in the header file.  For the yacc.c code
+       file and the glr.c header and code files, move the pre-prologue before
+       the token definitions.  Add new %before-definitions and
+       %after-definitions to declare code that will go in both the header file
+       and code file.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
+       <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
+       and
+       <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
+       * NEWS (2.3+): Describe these changes.
+       * data/glr.c (b4_pre_prologue): Move from within to before...
+       (b4_shared_declarations): ... this.
+       Add new b4_before_definitions before b4_token_enums.
+       Add new b4_after_definitions at the end.
+       * data/glr.cc (b4_pre_prologue): Replace with...
+       (b4_before_definitions): ... this in the header file.
+       (b4_after_definitions): New near the end of the header file.
+       * data/lalr1.cc (b4_pre_prologue): Move from the header file to the
+       code file right before including the header file.
+       (b4_before_definitions): New in the previous position of
+       b4_pre_prologue in the header file.
+       (b4_after_definitions): New near the end of the header file.
+       * data/yacc.c: Clean up some m4 quoting especially in the header file.
+       (b4_token_enums_defines): In the code file, move to right before
+       YYSTYPE for consistency with the header file.
+       (b4_before_definitions): New right before b4_token_enums_defines in
+       both the header and code file.
+       (b4_after_definitions): New right after YYLTYPE and yylloc in both the
+       header and code file.
+       * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
+       of prologues for %union dependencies.
+       (Bison Declaration Summary): In %defines description, mention the
+       effect of %before-definitions and %after-definitions on the header
+       file.
+       (Calc++ Parser): Forward declare driver in a %before-definitions rather
+       than in the pre-prologue so that make check succeeds.
+       (Table of Symbols): Add entries for %before-definitions and
+       %after-definitions.
+       * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
+       %before-definitions.
+       (PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
+       (declaration): Parse those declarations and append to
+       b4_before_definitions and b4_after_definitions, respectively.
+       * src/reader.c (before_definitions, after_definitions): New bools to
+       track whether those declarations have been seen.
+       (prologue_augment): Add to the post-prologue if %union,
+       %before-definitions, or %after-definitions has been seen.
+       * src/reader.h (before_definitions, after_definitions): New extern's.
+       * src/scan-gram.l: Scan the new declarations.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
+       prologue block in a %before-definitions or a %after-definitions based
+       on whether the %union is declared.
+       * tests/regression.at (Early token definitions with --yacc, Early token
+       definitions without --yacc): Move tests for token definitions into the
+       post-prologue since token names are no longer defined in the
+       pre-prologue.
+
+2006-06-20  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
+       (symbol_get): Use it.
+       * src/parse-gram.y: Use it.
+
+2006-06-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/scan-gram.l: Remove unused declaration of last_string_1 so the
+       build succeeds when configured with --enable-gcc-warnings.
+
+2006-06-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/parse-gram.y (char_name): New function.
+       (CHAR, STRING, string_content): For %printer, properly escape.
+       (ID): Prefer fputs to fprintf.
+       (id): Reindent to be consistent with other rules.
+       Properly quote char.
+
+       The Translation Project changed its way of publishing translations
+       to maintainers.  I haven't received any responses to my request
+       for supporting the old way, or for documenting the new way.  I
+       have modified 'bootstrap' to use screen scraping
+       (in this case, HTML scraping).  This is unreliable and inelegant,
+       but I don't see any better way.  Yuck.
+       * bootstrap (TP_URL, WGET_COMMAND): New vars.
+       (get_translations): New function, which uses HTML scraping to
+       deduce locations of latest translations.
+       Use this function to grab both bison and bison-runtime .po files.
+       Don't bother priming the pump for the runtime-po domain any more,
+       as it's now translated better than bison is.
+
 2006-06-19  Akim Demaille  <akim@epita.fr>
 
        * src/scan-gram.l: No longer "parse" things after `%union' until
        in the yychar entry.
        In the yychar entry, remove mention of the local yychar case (pure
        parser) since this is irrelevant information when writing semantic
-       actions and since it's already discussed in `Bison Symbols' where
+       actions and since it's already discussed in `Table of Symbols' where
        yychar is otherwise described as an external variable.
        In the yychar entry, don't call it the `current' look-ahead since it
        isn't when semantic actions are deferred.
        `current' look-ahead, and do mention yylval and yylloc.
        (Error Recovery): Cross-reference `Action Features' when mentioning
        yyclearin.
-       (Bison Symbols): In the yychar entry, don't call it the `current'
+       (Table of Symbols): In the yychar entry, don't call it the `current'
        look-ahead.
        In the yylloc and yylval entries, mention look-ahead usage.
 
 
        * data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings.
 
-2004-10-28  Akim Demaille  <akim@epita.fr>,
+2004-11-17  Akim Demaille  <akim@epita.fr>,
            Alexandre Duret-Lutz <adl@gnu.org>
 
        * data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow
        -----
 
        Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
-       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
-       Software Foundation, Inc.
+       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+       Free Software Foundation, Inc.
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this