X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/287b314eefdbf95b888f5f13f19bb6f472285b6d..9611cfa20bf95cf06b79c598ae5e69979ea1ff8e:/ChangeLog

diff --git a/ChangeLog b/ChangeLog
index 7451a103..b4f79664 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1345 @@
+2007-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Miscellaneous %define and %code cleanup.
+	* data/bison.m4 (b4_percent_define_flag_if): Correct comments on how
+	values are interpreted.
+	* doc/bison.texinfo (Decl Summary): Clean up and extend %define
+	documentation a little more.
+	* src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT,
+	muscle_percent_define_insert, muscle_percent_code_grow): New
+	functions/macros.
+	* src/muscle_tab.h (muscle_percent_define_insert,
+	muscle_percent_code_grow): Prototype.
+	* src/parse-gram.y (prologue_declaration): Use
+	muscle_percent_define_insert and muscle_percent_code_grow when parsing
+	%define and %code directives.
+
+	Make it easy to share %define boolean variables between the front-end
+	and back-end.  Though not used yet, this will be useful in the future.
+	* data/bison.m4 (b4_check_user_names): Rewrite comments to talk about
+	Bison uses of names rather than just skeleton uses of names.
+	(b4_percent_define_get, b4_percent_define_ifdef): Rename
+	b4_percent_define_skeleton_variables(VARIABLE) to
+	b4_percent_define_bison_variables(VARIABLE).
+	(b4_percent_code_get, b4_percent_code_ifdef): Rename
+	b4_percent_code_skeleton_qualifiers(QUALIFIER) to
+	b4_percent_code_bison_qualifiers(QUALIFIER).
+	(b4_check_user_names_wrap): Update for renames.
+	* src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if,
+	muscle_percent_define_default): New functions mimicking
+	b4_percent_define_flag_if and b4_percent_define_default.
+
+	For %define variables, report locations for invalid values and
+	redefinitions.  
+	* data/bison.m4 (b4_percent_define_flag_if): Read
+	b4_percent_define_loc(VARIABLE) to report the location of an invalid
+	value for VARIABLE.
+	(b4_percent_define_default): Save a special location in
+	b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE
+	must later be reported as invalid.
+	* src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New
+	functions.
+	(muscle_percent_define_insert): Record the location of VARIABLE in
+	muscle percent_define_loc(VARIABLE), and use it to report the previous
+	location for a redefinition.
+	(muscle_percent_define_flag_if): Update like b4_percent_define_flag_if.
+	(muscle_percent_define_default): Update like b4_percent_define_default.
+	(muscle_grow_user_name_list): Rename to...
+	(muscle_user_name_list_grow): ... this for consistency and use
+	muscle_location_grow.
+	* src/muscle_tab.h (muscle_location_grow): Prototype.
+	* tests/input.at (%define errors): Update expected output.
+	* tests/skeletons.at (%define boolean variables: invalid skeleton
+	defaults): New test case.
+
+2007-02-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* src/print.c (lookahead_set, state_default_rule): Remove.
+	(print_reductions): Replace state_default_rule invocation with
+	equivalent use of yydefact, which was computed in token_actions in
+	tables.c.
+	(print_results): Don't allocate lookahead_set.
+
+2007-02-27  Paolo Bonzini  <bonzini@gnu.org>
+
+	* data/lalr1.java: Prefix all private members with yy.
+
+2007-02-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Use YYFPRINTF instead of fprintf where appropriate.  Reported by
+	Sébastien Fricker at
+	<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
+	* THANKS: Add Sébastien Fricker.
+	* data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement.
+	* doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must
+	accept a variable number of arguments.
+
+2007-02-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* bootstrap: Remove occurrences of .#bootmp from lib/Makefile.
+
+2007-02-13  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+	* djgpp/config.bat: Adjustments concerning the use of autoconf 2.61.
+	* djgpp/config.sed: Adjustments concerning the use of autoconf 2.61.
+	* djgpp/config.site: Adjustments concerning the use of autoconf 2.61.
+
+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
@@ -12,7 +1354,7 @@
 	Rename <!> to <>.  Discussed starting at
 	<http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00039.html>.
 	* NEWS (2.3a+): Update.
-	* doc/bison.texinfo (Freeing Discarded Symbols, Bison Symbols):
+	* 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.
@@ -188,7 +1530,7 @@
 	* NEWS (2.3a+): Mention.
 	* doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
 	previous change today related to mid-rules.
-	(Bison Symbols): Remove %symbol-default and add <*> and <!>.
+	(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 <!>.
@@ -281,8 +1623,8 @@
 	alternatives to...
 	(Prologue Alternatives): ... this new section, and extend it to discuss
 	all 4 directives in detail.
-	(Bison Symbols): Clean up discussion of prologue alternatives and add
-	%code-top.
+	(Table of Symbols): Clean up discussion of prologue alternatives and
+	add %code-top.
 
 2006-10-16  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 
@@ -738,7 +2080,7 @@
 	<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
 	* NEWS (2.3+): Add %symbol-default to example.
 	* bison.texinfo (Freeing Discarded Symbols): Likewise.
-	(Bison Symbols): Add entry for %symbol-default.
+	(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
@@ -1380,7 +2722,7 @@
 	prologue blocks with %*-header declarations.
 	(Calc++ Parser): Likewise.
 	(Bison Declaration Summary): Update names.
-	(Bison Symbols): Update description.
+	(Table of Symbols): Update description.
 	* src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
 	(PERCENT_END_HEADER): ... this.
 	(PERCENT_BEFORE_DEFINITIONS): Update to...
@@ -1461,7 +2803,7 @@
 	file.
 	(Calc++ Parser): Forward declare driver in a %before-definitions rather
 	than in the pre-prologue so that make check succeeds.
-	(Bison Symbols): Add entries for %before-definitions and
+	(Table of Symbols): Add entries for %before-definitions and
 	%after-definitions.
 	* src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
 	%before-definitions.
@@ -2551,7 +3893,7 @@
 	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.
@@ -2562,7 +3904,7 @@
 	`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.
 
@@ -17794,8 +19136,8 @@
 	-----
 
 	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