2012-01-15  Akim Demaille  <demaille@gostai.com>

	java: fix reduction traces.
	* data/lalr1.java (yy_reduce_print): Fix state index.
	Reported by Tim Landscheidt.

2012-01-12  Jim Meyering  <meyering@redhat.com>

	build: avoid warning from coverity about lbitset_elt_find
	* lib/lbitset.c (lbitset_elt_find): Remove unnecessary test of "elt",
	at a point where we know it is non-NULL, due to prior dereference.

2012-01-13  Jim Meyering  <meyering@redhat.com>

	maint: get fdl.texi from gnulib
	* bootstrap.conf (gnulib_modules): Add fdl.
	* doc/fdl.texi: Remove file.
	* doc/.gitignore: Add it here.

	maint: spell "file system" as two separate words
	* doc/Doxyfile.in: Spell it "file system", to avoid a
	"make syntax-check" failure.

	maint: avoid "the the"
	* djgpp/README.in: s/the the/the/
	* src/parse-gram.c (lloc_default): Likewise.
	* src/parse-gram.y (lloc_default): Likewise, and remove a
	trailing space.

2012-01-13  Akim Demaille  <akim@lrde.epita.fr>

	maint: factor copyright year.
	* configure.ac: Use $PACKAGE_COPYRIGHT_YEAR instead of repeating it.

2012-01-13  Akim Demaille  <akim@lrde.epita.fr>

	maint: catch missing gnulib macros.
	* configure.ac: Add m4_pattern_forbid.

2012-01-11  Tim Landscheidt  <tim@tim-landscheidt.de>

	java: remove used variable.
	* data/lalr1.java (yyresult): remove, unused.

2012-01-11  Akim Demaille  <demaille@gostai.com>

	scanner: fix typo.
	* src/scan-skel.l (@`): s/emtpy/empty/.
	Reported by Tim Landscheidt.

2012-01-06  Jim Meyering  <meyering@redhat.com>

	build: avoid warnings about set-but-not-used variables
	* lib/bitset_stats.c (bitset_stats_list): Remove declaration
	and set of unused local, "type".
	* lib/ebitset.c (ebitset_init): Likewise, for "size".
	* lib/lbitset.c (lbitset_not): Likewise, for "elt".

2011-08-21  Joel E. Denny  <joeldenny@joeldenny.org>

	lalr1.cc: remove trailing comma from enumerator list.
	* data/lalr1.cc (yy::parser): Here.  This suppresses a -pedantic
	warning.

2011-08-21  Joel E. Denny  <joeldenny@joeldenny.org>

	tests: add -pedantic for --enable-gcc-warnings.
	This should help to avoid some portability problems.  For example,
	it would have revealed the empty unions fixed by the last patch
	* configure.ac (WARN_CFLAGS_TESTS, WARN_CXXFLAGS_TEST): Implement.
	* tests/synclines.at (AT_TEST_SYNCLINE): Avoid -pedantic warning
	about an empty translation unit.

2011-08-21  Joel E. Denny  <joeldenny@joeldenny.org>

	tests: fix empty unions.
	Empty unions are not accepted by the ISO C99 grammar or by at
	least some versions of Sun Studio.  Reported by Wolfgang S. Kechel
	at
	<http://lists.gnu.org/archive/html/bug-bison/2011-08/msg00003.html>.
	* NEWS (2.5.1): Document fix.
	* THANKS (Wolfgang S. Kechel): Add.
	* tests/existing.at (GNU Cim Grammar)
	(GNU pic (Groff 1.18.1) Grammar.): Remove empty %union.

2011-07-24  Joel E. Denny  <joeldenny@joeldenny.org>

	global: remove unnecessary horizontal tabs.
	This change was made by applying emacs' untabify function to
	nearly all files in Bison's repository.  Required tabs in make
	files, ChangeLog, regexps, and test code were manually skipped.
	Other notable exceptions and changes are listed below.
	* bootstrap: Skip because we sync this with gnulib.
	* data/m4sugar/foreach.m4
	* data/m4sugar/m4sugar.m4: Skip because we sync these with
	Autoconf.
	* djgpp: Skip because I don't know how to test djgpp properly, and
	this code appears to be unmaintained anyway.
	* README-hacking (Hacking): Specify that tabs should be avoided
	where not required.

2011-07-10  Joel E. Denny  <joeldenny@joeldenny.org>

	build: avoid YACC typo inherited from Autoconf.
	The typo shows up in the `configure --help' output.  Reported by
	W.C.A. Wijngaards and Paul Eggert at
	<http://lists.gnu.org/archive/html/bug-bison/2011-07/msg00000.html>.
	* README-hacking (Release Procedure): Remind about updating
	maintainer tools before a release.
	* THANKS (W.C.A. Wijngaards): Add.
	* configure.ac (AC_PREREQ): Set to 2.68, which fixes the YACC
	typo.

2011-07-10  Joel E. Denny  <joeldenny@joeldenny.org>

	build: create xz instead of bzip2 tarballs.
	Suggested by Jim Meyering at
	<http://lists.gnu.org/archive/html/bug-bison/2011-06/msg00012.html>.
	* README-hacking (Release Procedure): Update example.
	* configure.ac (AM_INIT_AUTOMAKE): Replace dist-bzip2 with
	dist-xz.

2011-05-29  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up references to `Locations Overview'.
	* doc/bison.texinfo (Locations Overview): Rename node to...
	(Locations): ... this, which is its section name.  Update menus to
	match that and not to use the title `Tracking Locations', which is
	a different section.

2011-05-29  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up references to `Tracking Locations'.
	* doc/bison.texinfo (Locations): Rename node to...
	(Tracking Locations): ... this, which is its section name, and
	update all cross references.  The trouble is that there is another
	node about locations.  Its section name is `Locations', which was
	easily confused with the node name of this node.  Moreover, its
	node name is `Locations Overview', which was mistakenly used to
	label some cross references to this node.

2011-05-29  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up `Named References' a little.
	* doc/bison.texinfo (Named References): Rename section to match
	the node name, and update all cross references.  Don't use the
	acronyms RHS and LHS given that we don't expand them anywhere in
	the manual.  Try to use @samp and @code properly.  Mention that
	named references are experimental as we've already stated in NEWS.
	(Destructor Decl): Expand the only remaining use of RHS or LHS.

2011-05-29  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: motivate named references.
	Suggested by Hans Aberg at
	<http://lists.gnu.org/archive/html/bug-bison/2011-05/msg00008.html>.
	* doc/bison.texinfo (Named References): Explain briefly how
	they're better than the traditional positional references.

2011-05-29  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: discuss named references after locations.
	Reported by Hans Aberg at
	<http://lists.gnu.org/archive/html/bug-bison/2011-05/msg00008.html>.
	* NEWS (2.5.1): Document.
	* doc/bison.texinfo (Named References): Because it discusses
	locations in addition to semantic values, move this subsection out
	of the section `Defining Language Semantics', where locations have
	not yet been introduced, to be a new section after the following
	section, `Tracking Locations'.

2011-05-29  Joel E. Denny  <joeldenny@joeldenny.org>

	Prepare for the possibility of a 2.5.1 release.
	* NEWS (2.5.1): New heading.

2011-05-14  Joel E. Denny  <joeldenny@joeldenny.org>

	Version 2.5.
	* NEWS (2.5): Set date.

2011-05-14  Joel E. Denny  <joeldenny@joeldenny.org>

	Don't use IF_LINT in Bison sources.
	It creates unnecessary differences between the sources that Bison
	maintainers build and test (given that maintainers normally
	configure with --enable-gcc-warnings) and the sources that Bison
	users build.  Instead, use PACIFY_CC, which doesn't.  This change
	fixes compiler warnings reported by Tys Lefering at
	<http://lists.gnu.org/archive/html/bison-patches/2011-05/msg00004.html>.
	* configure.ac: Don't AC_DEFINE lint regardless of the configure
	options.  This change affects imported gnulib sources, where
	IF_LINT still appears and depends on lint.
	* src/scan-gram.l, src/scan-skel.l: Replace uses of IF_LINT with
	PACIFY_CC.
	* src/system.h (IF_LINT): Remove cpp macro.
	(PACIFY_CC): New cpp macro.

2011-05-01  Joel E. Denny  <joeldenny@joeldenny.org>

	Fix precedence for end token.
	Since Bison 2.3b, which restored the ability of precedence
	directives to assign user token numbers, doing so for user token
	number 0 has produced an assertion failure.
	* NEWS (2.5): Document fix.
	* src/symtab.c (symbol_user_token_number_set): In the case of the
	end token, don't decrement ntokens if it was never incremented.
	* tests/regression.at (Token number in precedence declaration):
	Extend.

2011-05-01  Joel E. Denny  <joeldenny@joeldenny.org>

	Pacify -DGNULIB_POSIXCHECK.
	* bootstrap.conf (gnulib_modules): Add all modules suggested by
	-DGNULIB_POSIXCHECK.
	* src/files.c (file_name_split)
	* src/getargs.c (getargs)
	* src/location.c (boundary_set_from_string)
	* src/output.c (output_skeleton)
	* src/parse-gram.y (prologue_declaration)
	* src/scan-gram.l (handle_syncline)
	* src/symtab.c (symbol_new): Use mbschr and mbsrchr instead of
	strchr and strrchr.  In the cases of command-line options, file
	names, and thus locations, functionality may be improved.  In the
	case of symbol names, there should be no functional difference as
	all characters are ASCII, so the intended benefit is just warning
	suppression.

2011-05-01  Joel E. Denny  <joeldenny@joeldenny.org>

	* NEWS (2.5): Fix minor typos.

2011-05-01  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up quotation style in NEWS.
	* NEWS (2.5): For multi-character tokens in example grammar rules,
	use "token" not 'token'.  In English, use a consistent quotation
	style; we might as well follow the precedent seen in info pages:
	`quote' not "quote".

2011-04-16  Joel E. Denny  <joeldenny@joeldenny.org>

	tests: pacify gcc 4.6.0's -Wunused-but-set-variable.
	Reported by Jim Meyering at
	<http://lists.gnu.org/archive/html/bug-bison/2011-04/msg00002.html>.
	* tests/actions.at
	(Default %printer and %destructor for mid-rule values): Define
	YYLLOC_DEFAULT so that it uses its Rhs argument.

2011-04-16  Joel E. Denny  <joeldenny@joeldenny.org>

	glr.c: omit yyresolveLocations when locations are disabled.
	This prevents gcc 4.6.0's -Wunused-but-set-variable from warning
	about yyresolveLocations's local yyrhsloc.  When locations are
	enabled, there's no such warning because YYLLOC_DEFAULT then uses
	yyrhsloc.  Reported by Jim Meyering at
	<http://lists.gnu.org/archive/html/bug-bison/2011-04/msg00002.html>.
	* data/glr.c (yyresolveLocations): Omit definition when locations
	are disabled.
	(yyresolveValue): Omit yyresolveLocations invocation when
	locations are disabled.

2011-04-16  Joel E. Denny  <joeldenny@joeldenny.org>

	gnulib, autoconf: update.
	* README-hacking (Updating a submodule): Give advice on how to
	determine the versions of gnulib and autoconf to which we should
	update.
	(Release Procedure): Note that submodules should be updated.
	* bootstrap.conf (gnulib_modules): Rename pipe to spawn-pipe as
	suggested in updated gnulib NEWS.
	* gnulib: Choose a stable snapshot according to advice in Bison's
	README-hacking.
	* po/POTFILES.in (lib/pipe.c): Rename to...
	(lib/spawn-pipe.c): ... this.
	* src/output.c: Update to include spawn-pipe.h.
	* submodules/autoconf: Update to latest for improvement in m4.m4
	that excludes M4 with buggy strstr.  The only other changes to
	files that we use are copyright updates.

2011-04-09  Joel E. Denny  <joeldenny@joeldenny.org>

	Fix missing updates to GPLv3.
	Reported by Tys Lefering at
	<http://lists.gnu.org/archive/html/bison-patches/2011-04/msg00000.html>.
	* src/print-xml.c, src/print-xml.h: In these files.

2011-03-27  Joel E. Denny  <joeldenny@joeldenny.org>

	Add -Wconflicts-sr and -Wconflicts-rr.
	Thus, conflict reports are now affected by -Werror and -Wnone
	(unless %expect or %expect-rr is specified).  Reported by George
	Neuner at
	<http://lists.gnu.org/archive/html/bug-bison/2010-08/msg00002.html>.
	* NEWS (2.5): Document.
	* doc/bison.texinfo (Bison Options): Document.
	* src/complain.c, src/complain.h (set_warning_issued): Export
	function.
	* src/conflicts.c (conflicts_print): Suppress conflict report
	based on -Wno-conflicts-sr and -Wno-conflicts-rr, and treat
	conflicts as errors if -Werror.
	* src/getargs.c (warnings_flag): Initialize with
	warnings_conflicts_sr and warnings_conflicts_rr as well.
	(warnings_args, warnings_types): Add entries for
	warnings_conflicts_sr and warnings_conflicts_rr.
	(usage): Update.
	* src/getargs.h (enum warnings): Add entries for
	warnings_conflicts_sr and warnings_conflicts_rr.
	* tests/conflicts.at (-W versus %expect and %expect-rr): New test
	group.
	* tests/local.at (AT_BISON_CHECK_NO_XML): Update now that the
	conflict report can produce a "warnings being treated as errors"
	message.  Also, check that stderr is now fully scrubbed by -Wnone
	when the exit status is 0.

2011-03-27  Joel E. Denny  <joeldenny@joeldenny.org>

	Pacify maintainer-check-posix.
	Adding command-line options after the grammar file name is not
	permitted, so disable checks that do that when
	maintainer-check-posix is running.
	* tests/local.at (AT_BISON_CHECK_NO_XML): Don't run the
	problematic checks when POSIXLY_CORRECT=1.  Also, for readability,
	remove an unnecessary m4_if.

2011-03-27  Joel E. Denny  <joeldenny@joeldenny.org>

	Add -Wother so -Wnone suppresses all warnings.
	Reported by George Neuner at
	<http://lists.gnu.org/archive/html/bug-bison/2010-08/msg00002.html>.
	* NEWS (2.5): Document.
	* THANKS (George Neuner): Add.
	* doc/bison.texinfo (Bison Options): Document.
	* src/complain.c, src/complain.h
	(warn_at, warn_at_indent, warn): Suppress warning if -Wno-other.
	(midrule_value_at): New warning function, similar to yacc_at in
	that it's controlled by its own warning category.
	* src/getargs.c (warnings_flag): Initialize to warnings_other.
	(warnings_args, warnings_types): Add entry for warnings_other.
	(usage): Update.
	* src/getargs.h (enum warnings): Add entry for warnings_other.
	* src/gram.c (grammar_rules_useless_report): If -Wno-other, then
	don't print useless rules.
	* src/reader.c (symbol_should_be_used): Rather than adjusting the
	return value based on whether midrule value warnings are enabled,
	accept a new parameter for telling the caller whether true is
	being returned for a potential midrule warning.
	(grammar_rule_check): Use midrule_value_at for midrule value
	warnings, and continue to use warn_at for all other warnings.  Let
	them check whether the warnings are enabled.
	* tests/local.at (AT_BISON_CHECK): Update documentation.
	(AT_BISON_CHECK_NO_XML): Check that -Wnone and --warnings=none
	disable all warnings exercised in the test suite.

2011-03-27  Joel E. Denny  <joeldenny@joeldenny.org>

	Don't let -Wnone disable -Werror.
	Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2010-08/msg00009.html>.
	* NEWS (2.5): Document.
	* src/getargs.c (flags_argmatch): Accept a new argument that
	specifies what flags "all" and thus "none" affect.
	(FLAGS_ARGMATCH): Update flags_argmatch invocation.
	* tests/input.at (-Werror is not affected by -Wnone and -Wall):
	New test group.

2011-03-27  Joel E. Denny  <joeldenny@joeldenny.org>

	* NEWS (2.5): Document fix for -Wno-CATEGORY.

2011-03-20  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: fix confusing citation of LAC publication.
	Suggested by Akim Demaille.
	* doc/bison.texinfo (LAC): Here.

2011-03-20  Joel E. Denny  <joeldenny@joeldenny.org>

	lr.default-reductions: rename "full" value to "most".
	Unlike "consistent" and "accepting", "full" doesn't answer the
	question of "which states".
	* doc/bison.texinfo (%define Summary): Update.
	(Default Reductions): Update.
	* src/print.c (print_reductions): Update.
	* src/reader.c (prepare_percent_define_front_end_variables):
	Update.
	* src/tables.c (action_row): Update.
	* tests/input.at (%define enum variables): Update.
	* tests/reduce.at (%define lr.default-reductions): Update.

2011-03-13  Joel E. Denny  <joeldenny@joeldenny.org>

	* src/parse-gram.c, src/parse-gram.h: Regenerate.

2011-03-09  Akim Demaille  <akim@lrde.epita.fr>

	named references: fix double free.
	In `rhs[name]: "a" | "b"', do not free "name" twice.
	Reported by Tys Lefering.
	<http://lists.gnu.org/archive/html/bug-bison/2010-06/msg00002.html>
	* src/named-ref.h, src/named-ref.c (named_ref_copy): New.
	* src/parse-gram.y (current_lhs): Rename as...
	(current_lhs_symbol): this.
	(current_lhs): New function.  Use it to free the current lhs
	named reference.
	* src/reader.c: Bind lhs to a copy of the current named reference.
	* src/symlist.c: Rely on free (0) being valid.
	* tests/named-refs.at: Test this.

2011-03-09  Akim Demaille  <akim@lrde.epita.fr>

	tests: style changes.
	* tests/named-refs.at (Redundant words in LHS brackets)
	(Unresolved references): here.

2011-03-06  Joel E. Denny  <joeldenny@joeldenny.org>

	java: fix parser tracing bug.
	* NEWS (2.5): Document.
	* data/lalr1.java (YYParser::YYStack::print): Don't skip top
	element.

2011-03-06  Joel E. Denny  <joeldenny@joeldenny.org>

	java: finish fixing parser stack popping bug.
	* NEWS (2.5): Document.
	* data/lalr1.java (YYParser::YYStack::pop): Fix off-by-one error
	in clearing the location stack.  Also fix pop function that
	accepts no arguments.

2011-03-06  Angelo Borsotti  <angelo.borsotti@gmail.com>  (tiny change)

	java: fix parser stack popping bug.
	Reported at
	<http://lists.gnu.org/archive/html/bug-bison/2011-02/msg00005.html>.
	* THANKS (Angelo Borsotti): Add.
	* data/lalr1.java (YYParser::YYStack::pop): Fix off-by-one error
	in clearing the value stack.  Previously, the top element of the
	stack wasn't cleared and so the value was not garbage collected.

2011-03-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: cite publication for LAC.
	* doc/bison.texinfo (LAC): Here.

2011-03-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up terminology for mysterious conflicts.
	* doc/bison.texinfo (Mystery Conflicts): Rename node to...
	(Mysterious Conflicts): ... this, which is already the section
	title and the name used in the index.  Update all cross-references
	to this node.  Also, don't imply that R/R conflicts are the only
	kind of mysterious conflict.

2011-03-06  Joel E. Denny  <joeldenny@joeldenny.org>

	lr.default-reductions: rename "all" value to "full".
	States that shift the error token do not have default reductions,
	and GLR disables some default reductions, so "all" was a misnomer.
	* doc/bison.texinfo (%define Summary): Update.
	(Default Reductions): Update.
	* src/print.c (print_reductions): Update.
	* src/reader.c (prepare_percent_define_front_end_variables):
	Update.
	* src/tables.c (action_row): Update.
	* tests/input.at (%define enum variables): Update.
	* tests/reduce.at (%define lr.default-reductions): Update.

2011-03-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: create a new Tuning LR section in the manual.
	And clean up all other documentation of the features described
	there.
	* NEWS (2.5): Tweak wording of lr.type and parse.lac entries a
	bit, update the cross-references to the manual, and point out that
	LAC has caveats.  Don't be so adamant that IELR+LAC=canonical LR.
	That is, as the referenced section in the manual documents, LAC
	does not fix infinite parsing loops on syntax errors.
	* doc/bison.texinfo: Consistently drop the "(1)" suffix from LALR,
	IELR, and LR in @cindex.
	(%define Summary): Condense the entries for lr.default-reductions,
	lr.keep-unreachable-states, lr.type, and parse.lac into brief
	summaries, and cross-reference the appropriate subsections of
	Tuning LR.  For parse.lac, mention that it's only implemented for
	deterministic parsers in C.  In parse.error entry, mention LAC,
	and add cross-reference to the LAC section.
	(Error Reporting): When mentioning parse.error, mention LAC, and
	add cross-reference to the LAC section.
	(Tuning LR): New section with an extended version of the
	documentation removed from %define Summary.  Change all
	cross-references in the manual to point here instead of there.
	(Calc++ Parser): When mentioning parse.error, mention LAC, and add
	cross-reference to the LAC section.
	(Table of Symbols): In %error-verbose entry, add cross-reference
	to Error Reporting.
	(Glossary): Capitalize entry titles consistently.  Add definitions
	for "defaulted state" and "unreachable state".  Expand IELR
	acronym in IELR's entry.

2011-02-20  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: add bibliography to manual.
	* doc/bison.texinfo (Mystery Conflicts): Cross-reference
	bibliography instead of citing publications directly.
	(Generalized LR Parsing): Likewise.
	(Bibliography): New section.  Not all entries are cross-referenced
	yet, but that will come in future patches.

2011-02-19  Joel E. Denny  <joeldenny@joeldenny.org>

	java: test and document previous bug fix.
	* NEWS (2.5): Document it.
	* tests/java.at (_AT_DATA_JAVA_CALC_Y): To one of the yyerror
	invocations, pass a location that spans multiple tokens.  Change
	yyerror to report all of a location rather than just the begin
	position.  Extend yylex and Position to count tokens on a line.
	Remove getHashCode as it's unused.  Update all expected output.

2011-02-19  Bernd Kiefer  <kiefer@dfki.de>  (tiny change)

	java: fix location handling bug.
	Reported at
	<http://lists.gnu.org/archive/html/bison-patches/2011-02/msg00005.html>.
	* data/lalr1.java (YYParser::yylloc): For non-empty RHS, fix
	reversed access to location stack.
	* THANKS (Bernd Kiefer): Add.

2011-02-13  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: fix some minor inconsistencies.
	* doc/bison.texinfo (%define Summary): Fix mislabeled entry for
	lex_symbol.
	(%code Summary): For consistency with the variable list in the
	%define Summary, enclose the list of %code qualifiers in a table
	instead of an itemize.

2011-02-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up new subsections in manual.
	* doc/bison.texinfo (%define Summary): Reword so it reads well as
	a separate section.  For example, add an intro, and move most of
	the text outside of the @deffn so it is not indented so far.
	(%code Summary): Likewise.
	(Table of Symbols): Reword %code entry to match the %code entry in
	Decl Summary.

2011-02-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: finish splitting apart the manual's Decl Summary section.
	Suggested by Akim Demaille at
	<http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00013.html>.
	* doc/bison.texinfo (Decl Summary): Extract most of the %define
	entry into...
	(%define Summary): ... this new subsection, and update all
	cross-references.  For readability of the patches, rewriting of
	the text so it makes sense as a separate subsection will come in a
	later patch.  Moreover, the majority of the text describing the
	various new LR features should likely move to another new section
	somewhere.

2011-02-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: begin to split apart the manual's Decl Summary section.
	Discussed in thread starting at
	<http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00013.html>.
	* doc/bison.texinfo (Decl Summary): Extract most of the %code
	entry into...
	(%code Summary): ... this new subsection, and update all
	cross-references.  For readability of the patches, rewriting of
	the text so it makes sense as a separate subsection will come in a
	later patch.

2011-02-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: clean up naming of various Bison files.
	The Bison manual's names for various files associated with a Bison
	parser has devolved into inconsistency.  This patch makes the
	naming consistent for the most important files.  First, it chooses
	"grammar file" over "input file".  The former appears to be more
	traditional in the Bison manual, and Bison has other input
	files (skeletons).  Second, it chooses "parser implementation
	file" over names like "parser file", "parser source file", "parser
	source code file", and "parser output file".  The new name makes
	it clearer where Bison generates the main parser implementation,
	and it is easily distinguishable from "parser header file".
	* doc/bison.texinfo: Implement throughout.

2011-02-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: give credit to more of Bison's developers.
	* doc/bison.texinfo (Introduction): Don't imply that only Robert
	Corbett, Richard Stallman, and Wilfred Hansen have contributed to
	Bison.  However, I don't have time to write a full history, so
	just point readers to THANKS and ChangeLog.

2011-02-06  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: document experimental features better.
	* doc/bison.texinfo (Introduction): Say that IELR(1) and canonical
	LR(1) are experimental.  Mention Java.  Normally experimental
	features probably shouldn't be mentioned in the introduction.
	However, if Bison's limitations to LALR(1), C, and C++ are so
	important that they should be mentioned here, then it's important
	to point out that Bison is beginning to escape those limitations.
	Moreover, these particular experimental features have very little
	chance of being removed.
	* src/getargs.c (usage): Say that IELR(1) and canonical LR(1) are
	experimental.

2011-01-29  Joel E. Denny  <joeldenny@joeldenny.org>

	Do not allow identifiers that start with a dash.
	This cleans up our previous fixes for a bug whereby Bison
	discarded `.field' in `$-1.field'.  The previous fixes were less
	restrictive about where a dash could appear in an identifier, but
	the restrictions were hard to explain.  That bug was reported and
	this final fix was originally suggested by Paul Hilfinger.  This
	also fixes a remaining bug reported by Paul Eggert whereby Bison
	parses `%token ID -123' as `%token ID - 123' and handles `-' as an
	identifier.  Now, `-' cannot be an identifier.  Discussed in
	threads beginning at
	<http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00000.html>,
	<http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00004.html>.
	* NEWS (2.5): Update entry describing the dash extension to
	grammar symbol names.  Also, move that entry before the named
	references entry because the latter mentions the former.
	* doc/bison.texinfo (Symbol): Update documentation for symbol
	names.  As suggested by Paul Eggert, mention the effect of periods
	and dashes on named references.
	(Decl Summary): Update documentation for unquoted %define values,
	which, as a side effect, can no longer start with dashes either.
	* src/scan-code.l (id): Implement.
	* src/scan-gram.l (id): Implement.
	* tests/actions.at (Exotic Dollars): Extend test group to exercise
	bug reported by Paul Hilfinger.
	* tests/input.at (Symbols): Update test group, and extend to
	exercise bug reported by Paul Eggert.
	* tests/named-refs.at (Stray symbols in brackets): Update test
	group.
	($ or @ followed by . or -): Likewise.
	* tests/regression.at (Invalid inputs): Likewise.

2011-01-24  Joel E. Denny  <joeldenny@joeldenny.org>

	* data/yacc.c: Fix last apostrophe warning from xgettext.

2011-01-09  Paul Eggert  <eggert@cs.ucla.edu>

	Fix minor problems encountered by a fresh bootstrap.
	* data/glr.c, data/yacc.c: Do not use apostrophes in '#' comments,
	as they confuse xgettext, which tries to parse them as C character
	constants in a preprocessor directive.
	* data/yacc.c (yy_lac): Don't use printf %d format on *yyesp, as
	that expression might not promote to int on some platforms.
	* src/parse-gram.c, src/parse-gram.h: Regenerate.

2011-01-09  Joel E. Denny  <joeldenny@joeldenny.org>

	Improve error messages for `$' or `@' followed by `.' or `-'.
	Previously, for this special case of an invalid reference, the
	usual "symbol not found in production:" was printed.  However,
	because the symbol name was parsed as the empty string, that
	message was followed immediately by a newline instead of a symbol
	name.  In reality, this is a syntax error, so the reference is
	invalid regardless of the symbols actually appearing in the
	production.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2011-01/msg00012.html>.
	* src/scan-code.l (parse_ref): Report the above case as a syntax
	error.  Other than that, continue to handle this case like any
	other invalid reference that Bison manages to parse because
	"possibly meant" messages can still be helpful to the user.
	* tests/named-refs.at ($ or @ followed by . or -): New test group.

2011-01-08  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: don't use @acronym.
	Lately, many GNU packages are dropping it.  See
	<http://lists.gnu.org/archive/html/bison-patches/2011-01/msg00003.html>.
	* doc/bison.texinfo: Remove all uses.

2011-01-05  Alex Rozenman  <rozenman@gmail.com>

	Do not allow identifiers that start with a negative number.
	Reported by Paul Hilfinger as a side effect of named references
	support at
	<http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00000.html>.
	Suggested by Paul Eggert.
	* src/scan-code.l ({letter}, {id}): Adjust lexical definitions.
	* src/scan-gram.l ({letter}, {id}): Likewise.

2011-01-03  Joel E. Denny  <joeldenny@joeldenny.org>

	* ChangeLog (2011-01-02): improve description.

2011-01-03  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: don't update copyright years in bootstrap.
	* .x-update-copyright: Add entry for bootstrap.
	* bootstrap: Remove 2011 from copyright years.  The bootstrap
	version we're currently using comes from an older version of
	gnulib.
	* bootstrap.conf (bootstrap_sync): Add comments explaining this
	issue.

2011-01-02  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: run "make update-copyright".

2011-01-02  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: prepare to use year ranges in copyright notices.
	* README (Copyright statements): New section explaining the range
	notation.  The GNU maintainers document requires this explanation:
	<http://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices>.
	I copied our explanation from coreutils.
	* build-aux/update-b4-copyright: Revert 2010-06-17 changes that
	disabled Bison's automated use of ranges.
	* cfg.mk (update-copyright-env): Likewise.

2011-01-02  Joel E. Denny  <joeldenny@joeldenny.org>

	Correct my email address.
	* ChangeLog: In all recent entries.
	* THANKS (Joel E. Denny): Here.

2010-12-19  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: cleanup.
	* NEWS (2.5): Try to sort entries according to how interesting
	users might find them.

2010-12-19  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: cleanup.
	* NEWS (2.5): Make some minor improvements to wording, and format
	entries more consistently.
	* doc/bison.texinfo (Language and Grammar): Point out that IELR
	and canonical LR are experimental features.
	(Decl Summary): In list of %define variables, make wording more
	consistent.  Improve discussion of using LALR for GLR.

2010-12-19  Joel E. Denny  <joeldenny@joeldenny.org>

	parse.lac: document.
	* NEWS (2.5): Add entry for LAC, and mention LAC in entry for
	other corrections to verbose syntax error messages.
	* doc/bison.texinfo (Decl Summary): Rewrite entries for
	lr.default-reductions and lr.type to be clearer, to mention
	%nonassoc's effect on canonical LR, and to mention LAC.  Add entry
	for parse.lac.
	(Glossary): Add entry for LAC.

2010-12-11  Joel E. Denny  <joeldenny@joeldenny.org>

	parse.lac: implement exploratory stack reallocations.
	* data/yacc.c: Rename %define variable parse.lac.es-capacity to
	parse.lac.es-capacity-initial.  Accept parse.lac.memory-trace
	with values of "failures" (default) or "full".
	(b4_declare_parser_state_variables): Add yyesa, yyes, and
	yyes_capacity variables.
	(YYSTACK_USE_ALLOCA): Ignore it if LAC requested.
	(YYSTACK_ALLOC, YYSTACK_FREE, YYSTACK_ALLOC_MAXIMUM): Define if
	LAC requested.
	(YYCOPY_NEEDED): New cpp macro.
	(YYCOPY): Define if LAC requested.
	(yy_lac_stack_realloc): New function implementing stack
	reallocations.  Use YYMAXDEPTH for maximum stack size given that
	the stack should never need to grow larger than the main state
	stack needs to grow without LAC.
	(YY_LAC_ESTABLISH): Update yy_lac invocation.
	(yy_lac): Add arguments for exploratory stack memory data
	recorded in the main parser.  Invoke yy_lac_stack_realloc when
	reallocation is necessary.
	(yysyntax_error): Add the same new arguments and pass them to
	yy_lac.
	(yypstate_delete): Free yyes if necessary.
	(yyesa, yyes, yyes_capacity): #define these to yypstate members
	in the case of push parsing.
	(yyparse, yypush_parse): Initialize yyes and yyes_capacity.
	Update yysyntax_error invocations.  At yyreturn, free yyes if
	necessary.
	* src/parse-gram.y: %define parse.lac full.
	* tests/input.at (LAC: errors for %define): Extend for
	parse.lac-memory-trace.
	* tests/regression.at (LAC: Exploratory stack): Extend to check
	that stack reallocs happen when expected.
	(LAC: Memory exhaustion): Update to use YYMAXDEPTH and
	parse.lac.es-capacity-initial.

2010-12-11  Joel E. Denny  <joeldenny@joeldenny.org>

	parse.lac: implement as %define variable.
	LAC = lookahead correction.  See discussion at
	<http://lists.gnu.org/archive/html/bison-patches/2009-09/msg00034.html>.
	However, one point there must be corrected: because of %nonassoc,
	LAC is *not* always redundant for lr.type=canonical-lr.
	* data/yacc.c: Accept values of "none" (default) or "full" for
	parse.lac.  Accept %define parse.lac.es-capacity to specify
	capacity of LAC's temporary exploratory stack.  It defaults to 20
	and, for now, will not grow dynamically.
	(b4_lac_flag, b4_lac_if): New m4 macros.  Evaluate as true for
	parse.lac!=none.
	(YYBACKUP): Invoke YY_LAC_DISCARD.
	(YY_LAC_ESTABLISH, YY_LAC_DISCARD): New cpp macros that invoke
	yy_lac and track when it needs to be invoked
	(yy_lac): New function that, given the current stack, determines
	whether a token can eventually be shifted.  Return status mimics
	yyparse return status.
	(yysyntax_error): Change yystate argument to yyssp so stack top
	can be passed to yy_lac.  If LAC is requested, build expected
	token list by invoking yy_lac for every token instead of just
	checking the current state for lookaheads.  Return 2 if yy_lac
	exhausts memory.
	(yyparse, yypush_parse): Use local variable yy_lac_established and
	cpp macros YY_LAC_ESTABLISH and YY_LAC_DISCARD to implement LAC.
	Update yysyntax_error invocation.  Add yyexhaustedlab code if LAC
	is requested.
	* tests/conflicts.at (%nonassoc and eof): Extend to check the
	effect of each of -Dlr.type=canonical-lr and -Dparse.lac=full.
	(parse.error=verbose and consistent errors): Likewise.
	(LAC: %nonassoc requires splitting canonical LR states): New test
	group demonstrating how LAC can fix canonical LR.
	* tests/input.at (LAC: Errors for %define): New test group.
	* tests/regression.at (LAC: Exploratory stack): New test group.
	(LAC: Memory exhaustion): New test group.

2010-11-21  Joel E. Denny  <joeldenny@joeldenny.org>

	build: use gnulib's new bootstrap_sync option.
	Now, whenever we update bison's copy of gnulib, bootstrap will
	update itself the next time it's run.
	* bootstrap: Copy from latest gnulib for bootstrap_sync support.
	* bootstrap.conf (bootstrap_sync): Set to true.
	* gnulib: Update to latest so bootstrap is in sync now.

2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>

	yysyntax_error: fix for consistent error with lookahead.
	* NEWS (2.5): Document.
	* data/yacc.c (yysyntax_error): In a verbose syntax error
	message while in a consistent state with a default action (which
	must be an error action given that yysyntax_error is being
	invoked), continue to drop the expected token list, but don't
	drop the unexpected token unless there actually is no lookahead.
	Moreover, handle that internally instead of returning 1 to tell
	the caller to do it.  With that meaning of 1 gone, renumber
	return codes more usefully.
	(yyparse, yypush_parse): Update yysyntax_error usage.  Most
	importantly, set yytoken to YYEMPTY when there's no lookahead.
	* data/glr.c (yyreportSyntaxError): As in yacc.c, don't drop the
	unexpected token unless there actually is no lookahead.
	* data/lalr1.cc (yy::parser::parse): If there's no lookahead,
	pass yyempty_ not yyla.type to yysyntax_error_.
	(yy::parser::yysyntax_error_): Again, don't drop the unexpected
	token unless there actually is no lookahead.
	* data/lalr1.java (YYParser::parse): If there's no lookahead,
	set yytoken to yyempty_ before invoking yysyntax_error.
	(YYParser::yysyntax_error): Again, don't drop the unexpected
	token unless there actually is no lookahead.
	* tests/conflicts.at (parse.error=verbose and consistent
	errors): Extend test group to further reveal how the previous
	use of the simple "syntax error" message was too general.  Test
	yacc.c, glr.c, lalr1.cc, and lalr1.java.  No longer an expected
	failure.
	* tests/java.at (AT_JAVA_COMPILE, AT_JAVA_PARSER_CHECK): Move
	to...
	* tests/local.at: ... here.
	(_AT_BISON_OPTION_PUSHDEFS): Push AT_SKEL_JAVA_IF definition.
	(AT_BISON_OPTION_POPDEFS): Pop it.
	(AT_FULL_COMPILE): Extend to handle Java.

2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>

	yysyntax_error: more preparation for readability of next patch.
	There are no behavioral changes here.
	* data/glr.c (yyreportSyntaxError): Reorganize.
	* data/lalr1.cc (yy::parser::yysyntax_error_): Reorganize.
	* tests/conflicts.at (parse.error=verbose and consistent errors):
	Reorganize.

2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>

	yysyntax_error: prepare for readability of next patches.
	These are purely whitespace changes that result in ugly code
	but that make the next couple of patches much easier to read.
	* data/glr.c (yyreportSyntaxError): Reindent.
	* data/lalr1.cc (yy::parser::yysyntax_error_): Reindent.
	* data/lalr1.java (YYParser::yysyntax_error): Reindent.
	* data/yacc.c (yysyntax_error): Reindent.

2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>

	Fix memory leak.
	* src/output.c (prepare_rules): Free temporary array.

2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>

	yysyntax_error: improve invocation readability.
	* data/yacc.c (yyparse, yypush_parse): For yysyntax_error
	invocation, get rid of the while loop, which is misleading
	because there are really at most two iterations.

2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>

	* ChangeLog: Correct some errors in previous entries.

2010-10-17  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: re-anchor all .gitignore entries.
	* bootstrap: Copy from gnulib's latest for the fix to
	automatically anchor entries it constructs.
	* gnulib: Update to latest just so it has the same bootstrap.
	* .gitignore, build-aux/.gitignore, doc/.gitignore:
	* lib/.gitignore, m4/.gitignore, po/.gitignore:
	* runtime-po/.gitignore: Re-anchor all entries.

2010-10-08  Paul Eggert  <eggert@cs.ucla.edu>

	Fix portability problem on OpenBSD 4.7.

	Jim Meyering reported this in
	<http://lists.gnu.org/archive/html/bug-bison/2010-10/msg00007.html>.
	* data/yacc.c: Use EXIT_SUCCESS as a witness for stdlib.h,
	not _STDLIB_H.  EXIT_SUCCESS has been defined by the standard
	for quite some time.
	* src/parse-gram.c, src/parse-gram.h: Regenerate.
	* tests/regression.at: Tamper with the renamed witness.

	Adjust to recent changes to gnulib bootstrap.

	* .cvsignore, build-aux/.cvsignore, doc/.cvsignore, etc/.cvsignore:
	* examples/calc++/.cvsignore, lib/.cvsignore, m4/.cvsignore:
	* po/.cvsignore, runtime-po/.cvsignore, src/.cvsignore:
	* tests/.cvsignore: Remove; I don't use CVS to maintain Bison
	anymore and don't know of anybody else who does.  If someone needs
	these files, they can resurrect them.
	* .gitignore, build-aux/.gitignore, doc/.gitignore, lib/.gitignore:
	* m4/.gitignore, po/.gitignore, runtime-po/.gitignore:
	Omit leading '/', since bootstrap omits it.
	Adjust file names to match current contents better.
	* bootstrap: Sync from gnulib: this contains the new gnulib_mk_hook
	installed just for us.
	* bootstrap.conf (excluded_files): Don't exclude codeset.m4,
	glibc21.m4, inttypes_h.m4, size_max.m4, xsize.m4, as they are now
	needed somehow.  Don't have time to look into why.
	(gnulib_modules): Change malloc to malloc-gnu.  Do we really assume
	the GNU malloc behavior, where malloc (0) != NULL unless we're
	out of storage?  If not, we can omit malloc-gnu; but for now I left
	it in to be safe.
	(vc_ignore): Remove.
	(gnulib_mk_hook): New function.
	* README-hacking: Renamed from HACKING, since gnulib bootstrap now
	uses that convention.

2010-09-09  Paul Hilfinger  <hilfinger@cs.berkeley.edu>

	* data/glr.c (yySymbol): Define as int to avoid compiler warnings about
	possible change of value.

2010-09-08  Paul Hilfinger  <hilfinger@cs.berkeley.edu>

	* data/glr.c (yy_reduce_print): Change yyrhsVals to yyvsp to remove
	compiler errors when using %debug.
	Add declaration of yylow when locations in use to avoid compilation
	error.
	(yyglrReduce): Conditionalize message "Parse ... rejected by rule..."
	on whether we are in split mode, for consistency with behavior of
	non-GLR parsing.

2010-09-01  Akim Demaille  <demaille@gostai.com>

	Address GCC warnings about shadowed local variables (yyflag).
	* data/glr.c (YYCHK): Rename yyflag as yychk_flag.
	(yyprocessOneStack): Reduce the scope of yyaction, yyconflicts,
	yyrule, and yyflag.

2010-08-05  Joel E. Denny  <joeldenny@joeldenny.org>

	Version 2.4.3.
	* NEWS (2.4.3): Set date.

2010-08-04  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: add gettext version to release announcements.
	Suggested by Paul Hilfinger at
	<http://lists.gnu.org/archive/html/bison-patches/2010-07/msg00019.html>
	<http://lists.gnu.org/archive/html/bison-patches/2010-08/msg00002.html>.
	* cfg.mk (bootstrap-tools): Add gettext.

2010-08-04  Joel E. Denny  <joeldenny@joeldenny.org>

	doc: fix -W and %expect documentation some.
	* NEWS (2.4.3): Mention that there are documentation fixes.
	* doc/bison.texinfo (Expect Decl): Make it clear that %expect
	turns conflicts into errors not warnings.
	(Shift/Reduce): Likewise.
	(Bison Options): Don't mention -Wsyntax.  It doesn't exist.

2010-08-01  Joel E. Denny  <joeldenny@joeldenny.org>

	-Werror: fix for rules useless in parser after conflicts.
	* NEWS (2.4.3): Document fix.
	* src/complain.c (error_message): Extend to handle incomplete
	error messages so warn and warn_at can be used in more cases.
	* src/gram.c (grammar_rules_useless_report): Use warn_at so that
	-Werror is always obeyed.
	* src/reduce.c (reduce_print): Use warn so that the "warnings
	being treated as errors" message is printed consistently before
	the first warning message.  This makes testing easier.
	* tests/local.at (AT_BISON_WERROR_MSG): New macro.
	(AT_BISON_CHECK_NO_XML): Extend to check -Werror and
	--warnings=error when warnings appear in bison's stderr.

2010-07-29  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: enable gnits only at stable releases.
	* configure.ac (AM_INIT_AUTOMAKE): Underscore or dash in a
	version string should disable gnits.  Explain in comments.

2010-07-28  Joel E. Denny  <joeldenny@joeldenny.org>

	i18n: update.
	* po/POTFILES.in: Add src/graphviz.c.

2010-07-28  Joel E. Denny  <joeldenny@joeldenny.org>

	i18n: fix for gnulib.
	* po/POTFILES.in: Add remaining gnulib files that have
	translatable strings.

2010-07-25  Joel E. Denny  <joeldenny@joeldenny.org>

	build: fix our adjustments for gnulib files in lib.
	* configure.ac: For prepending lib/ to the values of config
	variables, fix detection of empty values.  Also, due to recent
	gnulib changes, add LIBUNISTRING_UNITYPES_H and
	LIBUNISTRING_UNIWIDTH_H to the list of those variables.

2010-07-25  Joel E. Denny  <joeldenny@joeldenny.org>

	maint: use announce-gen's new --mail-headers.
	* HACKING (Announce): Update instructions.
	* cfg.mk (announcement_Cc_): Define.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Update to 0.18 as
	required by latest gnulib.
	* gnulib: Update to latest.

2010-07-24  Joel E. Denny  <joeldenny@joeldenny.org>

	tests: handle Valgrind that complains about >&-.
	* tests/output.at (AT_CHECK_OUTPUT): Extend to accept pre-tests.
	(Output files: -dv >&-): Skip test group if running
	maintainer-check-valgrind.

2010-07-23  Paul Hilfinger  <hilfingr@EECS.Berkeley.EDU>

	* NEWS: Describe new semantic-predicate feature.
	* data/c.m4 (b4_predicate_case): New definition.
	* data/java.m4 (b4_predicate_case): New definition.
	* data/glr.c (yyimmediate): Add definition.
	(yydoAction): Remove comment, now obsolete.
	Do YY_REDUCE_PRINT here.
	(yyglrReduce): Alter comment to indicate that semantic values
	need not be deferred.
	Remove YY_REDUCE_PRINT from here; done in yydoAction.
	(yyprocessOneStack): Pass immediate flag.
	Delete stacks rejected by predicates in newly split-off parsers.
	Change handling of yyerr so that only current stack gets deleted
	when semantic predicate fails.
	(yyfillin): Don't crash if a semantic value is unresolved (as may
	happen in predicate rules).
	Copy lr state as well in debugging mode.
	Update comment on setting of yysval to include yyloc as well.
	(yy_reduce_print): Add yynormal argument.  Perform fillin properly.
	Report unresolved RHS values.
	(yyimmediate): New table.
	* src/gram.h (struct rule): Add is_predicate field.
	* src/output.c (user_actions_output): Use b4_predicate_case for
	predicates.
	(prepare_symbols): Output yyimmediate.
	* src/scan-gram.l: Add %? token, SC_PREDICATE state.
	* src/scan-code.l (code_props_rule_action_init): Add is_predicate
	argument.
	* src/scan-code.h (struct code_props): Add is_predicate field.
	(code_props_rule_action_init): New interface.
	* src/parse-gram.y (%?{...}): New token.
	(rhs): Add %?{...} rule.
	* src/parse-gram.c: Regenerate.
	* src/parse-gram.h: Regenerate.
	* src/reader.c (grammar_current_rule_action_append): Add
	immediate argument.
	(grammar_midrule_action): Use new interface for
	code_props_rule_action_init.
	(grammar_current_rule_action_append): Ditto.
	(packgram): Transfer is_predicate value.
	* src/reader.h (grammar_current_rule_action_append): New interface.
	* doc/bison.texinfo: Document semantic predicates (%?).

	* data/glr.c (yylhsNonterm, yyisDefaultedState,yyDefaultAction)
	(yygetLRActions,yynewGLRStackItem,yyaddDeferredAction,yyinitStateSet)
	(yyinitGLRStack,yyexpandGLRStack,yyupdateSplit,yymarkStackDeleted)
	(yyundeleteLastStack,yyglrShift,yyglrShiftDefer,yydoAction,yyglrReduce)
	(yyidenticalOptions,yymergeOptionSets,yyresolveStates,yyresolveAction)
	(yyresolveLocations,yyresolveValue,yyreducePrint): Update parameter
	names in comments and mention all parameters.
	(struct yyGLRState): Fix description of yyposn field.
	(yyresolveLocations): Correct comment so as not to imply action when
	yyn1==0.

2010-06-17  Paul Eggert  <eggert@cs.ucla.edu>

	Update from GFDL GFDL 1.2 to 1.3.
	* doc/bison.texinfo: Update GFDL version number.
	* doc/fdl.texi: Update to version 1.3, taken from:
	http://www.gnu.org/licenses/fdl.texi

	Do not use date ranges in copyright notices.
	See http://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices

	* HACKING, Makefile.am, NEWS, PACKAGING, README, README-alpha:
	* TODO, bootstrap, bootstrap.conf:
	* build-aux/update-b4-copyright, cfg.mk, configure.ac:
	* data/README, data/bison.m4, data/c++-skel.m4, data/c++.m4:
	* data/c-skel.m4, data/c.m4, data/glr.c, data/glr.cc:
	* data/java-skel.m4, data/java.m4, data/lalr1.cc:
	* data/lalr1.java, data/local.mk, data/location.cc:
	* data/stack.hh, data/variant.hh, data/xslt/bison.xsl:
	* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl:
	* data/xslt/xml2xhtml.xsl, data/yacc.c, djgpp/Makefile.maint:
	* djgpp/README.in, djgpp/config.bat, djgpp/config.sed:
	* djgpp/config.site, djgpp/config_h.sed, djgpp/djunpack.bat:
	* djgpp/local.mk, djgpp/subpipe.c, djgpp/subpipe.h:
	* djgpp/testsuite.sed, doc/bison.texinfo, doc/local.mk:
	* doc/refcard.tex, etc/README, etc/bench.pl.in, etc/local.mk:
	* examples/calc++/Makefile.am, examples/extexi:
	* examples/local.mk, lib/abitset.c, lib/abitset.h:
	* lib/bbitset.h, lib/bitset.c, lib/bitset.h:
	* lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c:
	* lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h:
	* lib/ebitset.c, lib/ebitset.h, lib/get-errno.c:
	* lib/get-errno.h, lib/lbitset.c, lib/lbitset.h:
	* lib/libiberty.h, lib/local.mk, lib/main.c, lib/timevar.c:
	* lib/timevar.def, lib/timevar.h, lib/vbitset.c:
	* lib/vbitset.h, lib/yyerror.c, m4/bison-i18n.m4:
	* m4/c-working.m4, m4/cxx.m4, m4/subpipe.m4, m4/timevar.m4:
	* src/AnnotationList.c, src/AnnotationList.h:
	* src/InadequacyList.c, src/InadequacyList.h, src/LR0.c:
	* src/LR0.h, src/Sbitset.c, src/Sbitset.h, src/assoc.c:
	* src/assoc.h, src/closure.c, src/closure.h, src/complain.c:
	* src/complain.h, src/conflicts.c, src/conflicts.h:
	* src/derives.c, src/derives.h, src/files.c, src/files.h:
	* src/flex-scanner.h, src/getargs.c, src/getargs.h:
	* src/gram.c, src/gram.h, src/graphviz.c, src/ielr.c:
	* src/ielr.h, src/lalr.c, src/lalr.h, src/local.mk:
	* src/location.c, src/location.h, src/main.c:
	* src/muscle-tab.c, src/muscle-tab.h, src/named-ref.c:
	* src/named-ref.h, src/nullable.c, src/nullable.h:
	* src/output.c, src/output.h, src/parse-gram.y:
	* src/print-xml.c, src/print-xml.h, src/print.c, src/print.h:
	* src/print_graph.c, src/print_graph.h, src/reader.c:
	* src/reader.h, src/reduce.c, src/reduce.h, src/relation.c:
	* src/relation.h, src/scan-code.h, src/scan-code.l:
	* src/scan-gram.h, src/scan-gram.l, src/scan-skel.h:
	* src/scan-skel.l, src/state.c, src/state.h, src/symlist.c:
	* src/symlist.h, src/symtab.c, src/symtab.h, src/system.h:
	* src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h:
	* tests/actions.at, tests/atlocal.in, tests/c++.at:
	* tests/calc.at, tests/conflicts.at, tests/cxx-type.at:
	* tests/existing.at, tests/glr-regression.at:
	* tests/headers.at, tests/input.at, tests/java.at:
	* tests/local.at, tests/local.mk, tests/named-refs.at:
	* tests/output.at, tests/push.at, tests/reduce.at:
	* tests/regression.at, tests/sets.at, tests/skeletons.at:
	* tests/synclines.at, tests/testsuite.at, tests/torture.at:
	Don't use date ranges in copyright notices.

2010-05-11  Akim Demaille  <demaille@gostai.com>

	lalrl1.cc: give a chance to user defined YYLLOC_DEFAULT.
	* data/lalr1.cc (YYLLOC_DEFAULT): Move its definition from the
	header file to the implementation file, after the user %code
	sections.
	* NEWS (2.5): Document this.

2010-05-11  Akim Demaille  <demaille@gostai.com>

	doc: please Emacs.
	* doc/bison.texinfo (Local Variables): Move this after the
	LocalWords, since the latter are looked for in the whole document,
	while the former are looked for only at its end.
	Require american spell checking.

2010-05-10  Akim Demaille  <demaille@gostai.com>

	doc: fix lalr1.cc documentation.
	* doc/bison.texinfo (C++ Scanner Interface): Fix yylex signature.
	(C++ Bison Interface): Fix lalr1.cc skeleton name.
	(C++ Parser Interface): Fix semantic_type and location_type names.
	Document yy::parser::token.
	Reported by Jerry Quinn.

2010-05-10  Akim Demaille  <demaille@gostai.com>

	c++: use YYRHSLOC.
	* data/lalr1.cc (YYRHSLOC): New.
	(YYLLOC_DEFAULT): Use it.
	* data/glr.cc: If location_type was user defined, do not include
	location.hh, and do not produce location.hh and position.hh.
	* tests/calc.at (YYLLOC_DEFAULT): Use YYRHSLOC.
	Check that glr.cc supports user defined location_type.
	* NEWS: Document this.

2010-05-07  Akim Demaille  <demaille@gostai.com>

	doc: fix typo.
	* tests/synclines.at: here.

2010-05-04  Akim Demaille  <demaille@gostai.com>

	tests: enhance AT_SYNCLINES_COMPILE.
	* tests/synclines.at (AT_SYNCLINES_COMPILE): More distcc patterns.
	(AT_TEST_SYNCLINE): Remove GCC 4.5 protection which is already
	taken care of in AT_SYNCLINES_COMPILE.

2010-05-04  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: don't generate location.hh when location_type is defined
	* data/bison.m4 (b4_percent_define_get): Accept a default value.
	* data/c++.m4: Do not provide a default value for the %define
	variable location_type, rather, use b4_percent_define_get with a
	default argument where its value is needed.
	* data/lalr1.cc: Do not load location.cc (which outputs both
	location.hh and position.hh) if the user defined location_type.
	Do not include location.hh either.

2010-05-04  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: minor refactoring.
	* data/lalr1.cc: Don't issue empty namespaces.

2010-05-04  Akim Demaille  <demaille@gostai.com>

	tests: fix %printer.
	Currently, there is no check that %printer ... <foo> (nor
	%destructor) is about an existing <foo> type.  This C++ test had
	it wrong (<::std::string> vs. <std::string>).

	* tests/c++.at (AT_CHECK_VARIANTS): In list.yy, redefine the
	pretty-printing of lists into something better for parser traces.
	Update the expected output.
	Fix correspondance between %type/%token and %printer.

2010-05-04  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: location_type: make sure we don't depend on loc.(begin|end).
	* tests/calc.at (Span): Instead of begin/end, as in the built-in
	location class, use first and last.
	Define YYLLOC_DEFAULT to adjust to these changes.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Adjust to the
	location_type changes.

2010-05-01  Joel E. Denny  <joeldenny@joeldenny.org>

	tests: fix maintainer-xml-check.
	* data/xslt/xml2dot.xsl (xsl:template match="bison-xml-report"):
	Update output to include comments now produced by --graph.
	(xsl:template match="automaton"): As for --graph, name the
	digraph after the grammar file.
	* src/print-xml.c (escape_bufs): Enlarge array.
	(print_xml): Add bug-report and url attributes to
	bison-xml-report element.

2010-05-01  Joel E. Denny  <joeldenny@joeldenny.org>

	In DOT output, convert from "/*" comments to "//" comments.
	This handles the possibility that a "*/" might appear in
	variable portions of those comments at some point in the future.
	* src/graphviz.c (start_graph): Implement.

2010-04-30  Joel E. Denny  <joeldenny@joeldenny.org>

	Document that undefined %prec identifier warnings will remain.
	* NEWS (2.4.3): Here.
	(2.4.2): Here.

2010-04-30  Joel E. Denny  <joeldenny@joeldenny.org>

	Revert 2009-12-30 change for undefined %prec token complaints.
	That is, keep them as warnings because that should be sufficient
	to satisfy POSIX without creating backward compatibility issues.
	Suggested by Richard Stallman at
	<http://lists.gnu.org/archive/html/bison-patches/2010-03/msg00033.html>.
	* NEWS (2.5): Remove mention of complaint.
	* src/reader.c (grammar_rule_check): Convert complaint back to
	warning.
	* tests/input.at (%prec's token must be defined): Update.

2010-04-25  Joel E. Denny  <joeldenny@joeldenny.org>

	build: don't require src/bison during bootstrap.
	Suggested by Eric Blake at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00003.html>.
	* bootstrap.conf (bootstrap_epilogue): New function to make sure
	src/parse-gram.[ch] are stamped later than src/parse-gram.y.

2010-04-25  Joel E. Denny  <joeldenny@joeldenny.org>

	i18n: fix untranslatable string.
	Reported by Goran Uddeborg at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00000.html>.
	* src/muscle-tab.c (muscle_percent_define_insert): Here.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	tests: calc: minor refactoring.
	* tests/calc.at (_AT_DATA_CALC_Y): Simplify yylex.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	tests: calc: simplify location management.
	* tests/local.at (AT_LOC_PUSHDEF, AT_LOC_POPDEF): New.
	(_AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): Use them to
	define the appropriate AT_LOC accessors.
	* tests/calc.at: Use AT_LOC accessors.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	test location_type.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS):
	Define AT_LOCATION_TYPE_IF.
	(_AT_BISON_OPTION_POPDEFS): Undefine AT_LOCATION_TYPE_IF.
	* tests/calc.at (_AT_DATA_CALC_Y): When %define location_type is
	used, provide a user location type and use it.
	(Simple LALR1 C++ Calculator): Add a test case for location_type.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	tests: check fclose's return value.
	* tests/calc.at (_AT_DATA_CALC_Y): Check fclose's return status.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	tests: don't depend on the actual location type.
	* tests/calc.at: Use yy::parser::location_type rather than
	yy::location, since the former is always right, and might point to
	another type than the latter.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	formatting changes.
	* tests/calc.at: Formatting changes.

2010-04-13  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: remove useless forward declaration.
	* data/lalr1.cc: Include location.hh before stack.hh.
	Remove the useless forward declarations of position and location.
	Reported by Chris Morley.
	* data/glr.cc: Likewise.

2010-04-11  Joel E. Denny  <joeldenny@joeldenny.org>

	* NEWS (2.4.3): Mention fix for Sun Studio C++.

2010-04-10  Joel E. Denny  <joeldenny@joeldenny.org>

	tests: fix for newer Sun Studio C++.
	Reported by Dagobert Michelsen at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00023.html>.
	* THANKS (Dagobert Michelsen): Add.
	* configure.ac (AC_PREREQ): Set to 2.64 so we get the latest
	Autoconf macro for handling the restrict keyword.
	* gnulib: Update to latest, which no longer overrides that macro
	from Autoconf.

2010-04-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	portability: fix pointer arithmetic to conform to C standard.
	Reported by Tys Lefering at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00035.html>.
	This fix is already implemented in glr.c and does not apply to
	lalr1.java.
	* data/lalr1.cc (yy::parser::parse): Increase size of
	yyerror_range and adjust subscripting so you don't have to
	subtract one from the beginning of the array.
	* data/yacc.c (b4_declare_parser_state_variables,
	yyparse, yypush_parse): Likewise.

2010-04-05  Akim Demaille  <demaille@gostai.com>

	remove useless include.
	* src/graphviz.h: Don't include stdbool.h.

2010-04-05  Akim Demaille  <demaille@gostai.com>

	graph: sign the output file.
	* src/graphviz.c (start_graph): Issue comments about Bison.
	Suggested by Tys Lefering.

2010-03-31  Joel E. Denny  <jdenny@ces.clemson.edu>

	portability: fix test suite for GCC 4.5's new #error message.
	Reported by Tys Lefering at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00030.html>.
	* NEWS (2.4.3): Mention.
	* tests/synclines.at (AT_TEST_SYNCLINE): Implement.

2010-03-30  Akim Demaille  <demaille@gostai.com>

	fix comments.
	* src/graphviz.h: Add missing license notice.
	Document.

2010-03-25  Akim Demaille  <demaille@gostai.com>

	tests: fix 250: parse.error=verbose overflow.
	* tests/regression.at (parse.error=verbose overflow): Avoid the
	double inclusion of stdlib.h as it triggers hard errors.

2010-03-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	portability: fix for BSD make.
	Reported by Johan van Selst at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00016.html>.
	* tests/local.mk ($(TESTSUITE)): Qualify package.m4 in
	this dependency list as in package.m4's target rule.

2010-03-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	portability: fix spawning on at least FreeBSD 8 and FreeBSD 9.
	Reported by Johan van Selst at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00014.html>.
	* NEWS (2.4.3): New.
	* THANKS (Johan van Selst): Add.
	* etc/prefix-gnulib-mk (prefix): Adjust regex for makefile
	targets so that gnulib's new c++defs.h is matched.
	* gnulib: Update to latest.

2010-03-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	maint: update for changes to gnulib's announce-gen.
	* HACKING (Announce): RELEASE_TYPE=major must now be written
	RELEASE_TYPE=stable.

2010-03-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Version 2.4.2.
	* NEWS (2.4.2): Set version and date.  For the recent test suite
	portability fixes, don't be so optimistic about their success
	given the lack of feedback on the affected platforms.

2010-02-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	tests: fix maintainer-xml-check for recent changes.
	* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): Use
	AT_BISON_CHECK_NO_XML rather than AT_BISON_CHECK because an
	output file whose name conflicts with a previous output file
	is now never generated.

2010-02-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	portability: fix several issues with M4 subprocess.

	M4's output pipe was not being drained upon fatal errors during
	scan_skel.  As a result, broken-pipe messages from M4 were seen
	on at least AIX, HP-UX, Solaris, and RHEL4, and this caused a
	failure in the test suite.  The problem was that, on platforms
	where the default disposition for SIGPIPE is ignore instead of
	terminate, M4 sometimes saw fwrite fail with errno=EPIPE and
	then reported it.  However, there's some sort of race condition,
	because the new test group occasionally succeeded.
	Reported by Albert Chin at
	<http://lists.gnu.org/archive/html/bug-bison/2010-02/msg00004.html>.

	There were also problems with the test suite livelocking on
	Tru64 5.1b.  Reported by Didier Godefroy at
	<http://lists.gnu.org/archive/html/bug-bison/2009-05/msg00005.html>.
	Switching to create_pipe_bidi suggested by Akim Demaille.

	To attempt to solve both of these problems, switch to gnulib's
	create_pipe_bidi and register M4 process as a slave.  Along the
	way, clean up file name conflict handling, which was affected by
	the broken-pipe problem before the switch.
	* NEWS (2.4.2): Document.
	* THANKS (Didier Godefroy): Add.
	* bootstrap.conf (gnulib_modules): Add pipe.
	* gnulib: Update to latest to make sure we have all the latest
	fixes.
	* lib/local.mk (lib_libbison_a_SOURCES): Remove subpipe.h and
	subpipe.c.
	* po/POTFILES.in (lib/subpipe.c): Remove.
	* src/files.c (compute_output_file_names): Update invocations
	of output_file_name_check.
	(output_file_name_check): In the case that the grammar file
	would be overwritten, use complain instead of fatal, but replace
	the output file name with /dev/null.  Use the /dev/null solution
	for the case of two conflicting output files as well because it
	seems safer in case Bison one day tries to open both files at
	the same time.
	* src/files.h (output_file_name_check): Update prototype.
	* src/output.c (output_skeleton): Use create_pipe_bidi and
	wait_subprocess.  Assert that scan_skel completely drains the
	pipe.
	* src/scan-skel.l (at_directive_perform): Update
	output_file_name_check invocation.
	* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): Check that the
	grammar file actually isn't overwritten.
	(Conflicting output files: -o foo.y): Update expected output.
	* tests/skeletons.at (Fatal errors but M4 continues producing
	output): New test group.

2010-02-04  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update POTFILES.
	* HACKING (Release Procedure): Add reminder about keeping
	POTFILES files up-to-date.
	* po/POTFILES.in (src/muscle-tab.c, src/scan-skel.l): Add.

2010-02-01  Joel E. Denny  <jdenny@clemson.edu>

	Code cleanup.
	* tests/atlocal.in (abs_top_srcdir): Remove shell variable,
	which is already defined in atconfig.

2010-01-22  Joel E. Denny  <jdenny@clemson.edu>

	tests: fix missing include caught by g++ 4.4.1.
	Reported by Tys Lefering.
	* HACKING (Release checks): Add note about trying a recent GCC.
	* tests/regression.at (_AT_DATA_DANCER_Y): For C++, include
	cstdlib for abort.
	(_AT_DATA_EXPECT2_Y): Likewise.

2010-01-21  Joel E. Denny  <jdenny@clemson.edu>

	* cfg.mk (gnulib_dir): Assume gnulib is a subdirectory.

2010-01-21  Joel E. Denny  <jdenny@clemson.edu>

	maint: automate PACKAGE_COPYRIGHT_YEAR update, and update it.
	* HACKING (Release Procedure): Update notes on copyright years.
	* Makefile.am (update-package-copyright-year): New target rule.
	* build-aux/update-package-copyright-year: New file.
	* cfg.mk (update-copyright): Add update-package-copyright-year
	as a dependency.

2010-01-19  Joel E. Denny  <jdenny@clemson.edu>

	* bootstrap: Import improvements from latest gnulib.

2010-01-19  Joel E. Denny  <jdenny@clemson.edu>

	build: require Automake 1.11.1 to avoid a security flaw.
	* HACKING (Release Procedure): Don't document Automake security
	flaw here.
	* configure.ac (AM_INIT_AUTOMAKE): Require 1.11.1, and explain
	why here.

2010-01-19  Joel E. Denny  <jdenny@clemson.edu>

	gnulib: update to latest.

2010-01-19  Joel E. Denny  <jdenny@clemson.edu>

	ChangeLog (2006-09-15): add Odd Arild Olsen's role for push.c.

2010-01-15  Joel E. Denny  <jdenny@clemson.edu>

	Thank the developer of the initial push parser implementation.
	This unfortunate oversight is several years old.
	* THANKS (Odd Arild Olsen): Add.

2010-01-04  Joel E. Denny  <jdenny@clemson.edu>

	Fix some comments concerning LR(0) versus LALR(1).

	Stop equating LR(0) with nondeterminism and LALR(1) with
	determinism.  That is, if all states are consistent, then LR(0)
	tables are deterministic.  On the other hand, LALR(1) tables
	might be nondeterministic before conflict resolution, and GLR
	permits LALR(1) tables to remain nondeterministic.
	* src/LR0.c, src/LR0.h: Here.
	* src/lalr.c, src/lalr.h: Here.
	* src/main.c (main): Here.
	* src/state.c, src/state.h: Here.

	* src/ielr.h (ielr): In preconditions, expect LR(0) not LALR(1)
	parser tables.

2010-01-04  Joel E. Denny  <jdenny@clemson.edu>

	maint: run "make update-copyright"

2009-12-30  Joel E. Denny  <jdenny@clemson.edu>

	POSIX: complain if %prec's token was not defined.
	* NEWS (2.5): Document.
	* src/reader.c (grammar_rule_check): Convert warning to
	complaint.
	* tests/input.at (%prec's token must be defined): Update.

2009-12-30  Joel E. Denny  <jdenny@clemson.edu>

	POSIX: warn if %prec's token was not defined.
	Reported by Florian Krohm at
	<http://lists.gnu.org/archive/html/bug-bison/2009-12/msg00005.html>.
	* NEWS (2.4.2): Document.
	* src/reader.c (grammar_rule_check): Implement.
	(grammar_current_rule_prec_set): Add comments explaining that we
	here assume a %prec identifier is a token, but we still manage
	to support POSIX.
	* tests/input.at (%prec's token must be defined): New test
	group.

2009-12-31  Joel E. Denny  <jdenny@clemson.edu>

	* HACKING (Release Procedure): Recommend a secure automake.

2009-12-29  Joel E. Denny  <jdenny@clemson.edu>

	portability: `<' and `>' are not always defined on addresses.
	Specifically, don't sort objects by their memory addresses when
	they're not allocated in the same array or other object.  Though
	I haven't found a test case where that fails on my platform, C
	says the behavior is undefined.
	* src/AnnotationList.c (AnnotationList__insertInto): Remove
	FIXME.  Use new id field of InadequacyList nodes rather than
	their memory addresses when sorting.
	(AnnotationList__compute_from_inadequacies): Add
	inadequacy_list_node_count argument to pass to
	InadequacyList__new_conflict.
	* src/AnnotationList.h
	(AnnotationList__compute_from_inadequacies): Update prototype
	and documentation for new argument.
	* src/InadequacyList.c (InadequacyList__new_conflict): Add
	node_count argument and use it to assign a unique ID.
	* src/InadequacyList.h (InadequacyListNodeCount): New typedef.
	(InadequacyList): Add id field.
	(InadequacyList__new_conflict): Update prototype and
	documentation for new argument.
	* src/ielr.c (ielr_compute_annotation_lists): Update
	AnnotationList__compute_from_inadequacies invocation.

2009-12-20  Joel E. Denny  <jdenny@clemson.edu>

	Fix handling of yychar manipulation in user semantic actions.
	The problem was that yacc.c didn't always update the yychar
	translation afterwards.  However, other skeletons appear to be
	fine.  glr.c appears to already translate yychar before every
	use.  lalr1.cc does not define yychar and does not document its
	replacement, yyla, for users.  It does provide yyclearin, but
	that does not manipulate yyla and thus requires no translation
	update.  In lalr1.java, yychar is out of scope during semantic
	actions.
	* NEWS (2.5): Document.
	* data/yacc.c (YYBACKUP): Don't bother translating yychar into
	yytoken here.
	(yyparse, yypush_parse): Instead, translate before every use of
	yytoken, and add comments explaining this approach.
	* tests/actions.at (Destroying lookahead assigned by semantic
	action): New test group checking that translation happens before
	lookahead destructor calls at parser return.  Previously,
	incorrect destructors were called.
	* tests/conflicts.at (parse.error=verbose and consistent
	errors): New test group checking that translation happens at
	syntax error detection before the associated verbose error
	message and the associated lookahead destructor calls.  While
	the destructor call is fixed by this patch, the verbose error
	message is currently incorrect due to another bug (see
	comments in test group), so this is an expected failure for now.

2009-12-21  Joel E. Denny  <jdenny@clemson.edu>

	YYFAIL: warn about uses and remove from lalr1.java.
	* NEWS (2.5): Document.
	* data/lalr1.java (YYParser::YYFAIL): Rename to YYERRLAB,
	and make it private.  Update all uses.
	* src/scan-code.l (SC_RULE_ACTION): Implement warning.

2009-12-21  Joel E. Denny  <jdenny@clemson.edu>

	YYFAIL: deprecate.
	* NEWS (2.4.2): Document deprecation and the phase-out plan.
	* data/lalr1.java (YYParser::YYFAIL): Add comment about
	deprecation.
	* data/yacc.c (YYFAIL): Likewise, and suppress warnings about
	YYFAIL from GCC cpp's -Wunused-macros.
	* doc/bison.texinfo (Java Action Features): Remove YYFAIL
	documentation.
	(LocalWords): Remove YYFAIL.

2009-12-20  Joel E. Denny  <jdenny@clemson.edu>

	tests: cleanup.
	* tests/c++.at (Syntax error discarding no lookahead): Don't
	ignore stderr.  Instead, eliminate remaining warnings.

2009-12-18  Joel E. Denny  <jdenny@clemson.edu>

	lalr1.cc: don't discard non-existent lookahead on syntax error.
	* data/lalr1.cc (yy::parser::parse): Check yyempty first.
	* tests/c++.at (Syntax error discarding no lookahead): New test
	group.

2009-12-17  Joel E. Denny  <jdenny@clemson.edu>

	Code cleanup.
	* src/symtab.c, src/symtab.h (symbol_class_get_string): Remove
	function, which is no longer used.

2009-12-16  Joel E. Denny  <jdenny@clemson.edu>

	Add gcc's -Wundef to test suite and fix another warning from it.
	* NEWS (2.4.2): Update description of -Wundef fix.
	* configure.ac (WARN_CXXFLAGS_TEST): New substitution.
	(WARN_CFLAGS_TEST): New substitution.
	* data/glr.c: Avoid warning about __STRICT_ANSI__.
	* tests/atlocal.in (CFLAGS): Use WARN_CFLAGS_TEST instead of
	WARN_CFLAGS.
	(NO_WERROR_CFLAGS): Likewise.
	(CXXFLAGS): Use WARN_CXXFLAGS_TEST instead of WARN_CXXFLAGS.

2009-12-16  Joel E. Denny  <jdenny@clemson.edu>

	* data/yacc.c: Reformat m4 a little.

2009-12-16  Joel E. Denny  <jdenny@clemson.edu>

	Document gcc -Wundef fix.
	* NEWS (2.4.2): Here.
	* THANKS (Jonathan Nieder): Add.

2009-12-15  Jonathan Nieder  <jrnieder@gmail.com>  (tiny change)

	Simplify y.tab.c when location tracking is disabled.
	* data/yacc.c: Do not check YYLTYPE_IS_TRIVIAL if location
	tracking is not enabled.  Instead, unconditionally define
	YY_LOCATION_PRINT as a no-op for backward compatibility.

2009-12-15  Jonathan Nieder  <jrnieder@gmail.com>  (tiny change)

	Avoid warnings from gcc -Wundef y.tab.c.
	* data/glr.c: Check if YYENABLE_NLS and YYLTYPE_IS_TRIVIAL are
	defined before using them.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.

2009-12-15  Joel E. Denny  <jdenny@clemson.edu>

	autoconf: update to latest for fix of M4 detection.
	Reported by Eric Blake.
	* submodules/autoconf: Update.

2009-12-15  Joel E. Denny  <jdenny@clemson.edu>

	portability: use -DGNULIB_POSIXCHECK.
	Reported by Eric Blake.  See discussions at
	<http://lists.gnu.org/archive/html/bug-bison/2009-09/msg00008.html>
	and
	<http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00108.html>.
	* HACKING (Release checks): Suggest -DGNULIB_POSIXCHECK.
	* bootstrap.conf (gnulib_modules): Add all the printf modules
	suggested by -DGNULIB_POSIXCHECK.  Add realloc-posix as
	suggested by -DGNULIB_POSIXCHECK for gnulib's own vasnprintf.c.
	(excluded_files): Remove m4/printf-posix.m4.
	* tests/atlocal.in (LIBS): As for LDADD in src/local.mk, add
	lib/libbison.a so gnulib libraries can be linked.

2009-12-15  Joel E. Denny  <jdenny@clemson.edu>

	gnulib: update for fix of fprintf-posix, which we'll use soon.
	* etc/prefix-gnulib-mk (prefix): Adjust regex for make file
	targets so that gnulib's new arg-nonnull.h and link-warning.h
	are matched.
	* gnulib: Update.

2009-12-14  Joel E. Denny  <jdenny@clemson.edu>

	Enable assertion output and --disable-assert for configure.
	* bootstrap.conf (gnulib_modules): Add assert module.
	* src/system.h (aver): Define as assert, and summarize the
	discussion on this issue.

2009-12-14  Joel E. Denny  <jdenny@clemson.edu>

	Expand GLR acronym in summary of Bison.
	Based on discussion with Akim Demaille starting at
	<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00087.html>.
	* doc/bison.texinfo (Introduction): Here.
	* src/getargs.c (usage): Here.

2009-10-03  Alex Rozenman  <rozenman@gmail.com>

	Document named references.
	* doc/bison.texinfo (Actions): Add new example and xref to
	Using Named References node.
	(Using Named References): New node.

2009-10-16  Joel E. Denny  <jdenny@clemson.edu>

	cleanup.
	* src/Sbitset.c (Sbitset__new_on_obstack): Use Sbitset instead
	of char*.
	(Sbitset__isEmpty): Use Sbitset instead of char*.
	* src/Sbitset.h (Sbitset): Make it a pointer to unsigned char
	instead of char.  This helps to avoid casting errors.
	(Sbitset__or): Use Sbitset instead of char*.

2009-10-16  Joel E. Denny  <jdenny@clemson.edu>

	portability: don't assume 8-bit bytes.
	That is, use CHAR_BIT and UCHAR_MAX instead of 8 and 0xff.
	* src/Sbitset.h (Sbitset__nbytes): Here.
	(Sbitset__byteAddress): Here.
	(Sbitset__bit_mask): Here.
	(Sbitset__last_byte_mask): Here.
	(Sbitset__ones): Here.
	(SBITSET__FOR_EACH): Here.

2009-10-11  Joel E. Denny  <jdenny@clemson.edu>

	portability: use va_start and va_end in the same function.
	* src/complain.c (error_message): Move va_end from here...
	(ERROR_MESSAGE): ... to here.

2009-10-08  Joel E. Denny  <jdenny@clemson.edu>

	* data/bison.m4: Update comments for rename to muscle-tab.h.

2009-10-07  Joel E. Denny  <jdenny@clemson.edu>

	Minor code cleanup.
	* src/muscle-tab.c (MUSCLE_USER_NAME_CONVERT): Remove macro and
	replace all uses with UNIQSTR_CONCAT.
	* src/uniqstr.c (uniqstr_vsprintf): New function.
	* src/uniqstr.h (uniqstr_vsprintf): Add prototype.
	(UNIQSTR_CONCAT, UNIQSTR_GEN_FORMAT, UNIQSTR_GEN_FORMAT_): New
	macros.

2009-10-06  Joel E. Denny  <jdenny@clemson.edu>

	* TODO (Complaint submessage indentation): New.

2009-10-04  Joel E. Denny  <jdenny@clemson.edu>

	Minor code cleanup.
	* src/parse-gram.y: Clean up sorting of declarations.
	Use types to simplify %printer declarations where possible.
	Provide %printer for BRACKETED_ID and symbol.prec.
	* src/symtab.c: Whitespace change.

2009-10-04  Joel E. Denny  <jdenny@clemson.edu>

	tests: skip tests of file names that platform does not support.
	Reported by Michael Raskin at
	<http://lists.gnu.org/archive/html/bug-bison/2009-09/msg00001.html>.
	* THANKS (Michael Raskin): Add.
	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Fix.  Cygwin used
	to fail at least for file names containing ":" or "\".

2009-09-23  Joel E. Denny  <jdenny@clemson.edu>

	yysyntax_error: avoid duplicate lookahead collection.
	Except when memory reallocation is required, this change
	eliminates the need to invoke yysyntax_error twice and thus to
	repeat the collection of lookaheads.  It also prepares for
	future extensions that will make those repetitions more
	expensive and that will require additional memory management in
	yysyntax_error.  Finally, it fixes an obscure bug already
	exercised in the test suite.
	* data/yacc.c (yysyntax_error): Add arguments for message
	buffer variables stored in the parser.  Instead of size, return
	status similar to yyparse status but indicating success of
	message creation.  Other than the actual reallocation of the
	message buffer, import and clean up memory management code
	from...
	(yyparse, yypush_parse): ... here.
	* tests/regression.at (parse.error=verbose overflow): No longer
	an expected failure.

2009-09-23  Joel E. Denny  <jdenny@clemson.edu>

	yysyntax_error: test memory management more.
	* tests/atlocal.in (NO_WERROR_CFLAGS): New cpp macro.
	* tests/regression.at (parse.error=verbose and
	YYSTACK_USE_ALLOCA): New test group.
	(parse.error=verbose overflow): New test group that reveals an
	obscure bug.  Expected fail for now.

2009-10-04  Joel E. Denny  <jdenny@clemson.edu>

	benchmarks: use %debug consistently among grammars.
	* etc/bench.pl.in (generate_grammar_triangular): Do not activate
	%debug by default.  It can affect the timings even if yydebug=0.
	(generate_grammar_calc): For consistency with other grammars,
	use YYDEBUG environment variable to set yydebug.

2009-10-03  Joel E. Denny  <jdenny@clemson.edu>

	Remove dead code.
	* src/symtab.c (symbol_pack): Here because every symbol's number
	is always defined by this time.

2009-10-03  Alex Rozenman  <rozenman@gmail.com>

	Add additional space after periods in NEWS.
	* NEWS (2.5): here.

2009-09-29  Joel E. Denny  <jdenny@clemson.edu>

	Use the correct conversion specifier for size_t.
	Reported by Jim Meyering.
	* src/Sbitset.h (SBITSET__INDEX__CONVERSION_SPEC): New, "zu"
	because Sbitset__Index is size_t.
	* src/Sbitset.c (Sbitset__fprint): Use it instead of %d.

2009-09-27  Joel E. Denny  <jdenny@clemson.edu>

	tests: don't abuse AT_BISON_CHECK.
	* tests/regression.at (parse-gram.y: LALR = IELR): Move
	additional shell commands outside of AT_BISON_CHECK.

2009-09-26  Joel E. Denny  <jdenny@clemson.edu>

	tests: check that parse-gram.y's IELR and LALR are identical.
	* tests/atlocal.in (abs_top_srcdir): New shell variable.
	* tests/regression.at (parse-gram.y: LALR = IELR): New test
	group.

2009-09-19  Alex Rozenman  <rozenman@gmail.com>

	Keep sub-messages aligned. Fix strings for translation.
	* src/location.h (location_print): Add return value.
	* src/location.c (location_print): Return number of printed
	characters.
	* src/complain.h (complain_at_indent, warn_at_indent): Prototype
	new functions.
	* src/complain.cpp (indent_ptr): New static variable.
	(error_message, complain_at_indent, warn_at_indent): Implement
	the alignment mechanism.
	* src/scan-code.l (parse_ref, show_sub_messages): Fix strings
	for translations. Use new alignment mechanism.
	* tests/named-ref.at: Adjust test-cases.
	* NEWS (2.5): Add an announcement about named references.

2009-09-17  Akim Demaille  <demaille@gostai.com>

	doc: fixes.
	* doc/bison.texinfo: here.
	Reported by Alex Rozenman.

2009-09-16  Akim Demaille  <demaille@gostai.com>

	doc: lalr1.cc and variants.
	* doc/bison.texinfo (Decl Summary): Document the "lex_symbol" and
	"variant" %define variables.
	(C++ Semantic Values): Split into...
	(C++ Unions, C++ Variants): these.
	The latter is new.
	(C++ Parser Interface): Fix type names.
	Document parser::syntax_error.
	Document the fact that locations are not mandatory.
	(C++ Scanner Interface): Split into...
	(Split Symbols, Complete Symbols): these.
	The later is new.
	(Calc++ Parsing Driver): Use variants.
	Add more comments.
	Adjust style.
	(Calc++ Parser): Declare all the tokens, no
	longer accept raw characters.
	Remove %union.
	Adjust types and printers.
	Remove destructors.
	(Calc++ Scanner): Use make_<SYMBOL> functions.
	Use strerror in error message.

2009-09-16  Akim Demaille  <demaille@gostai.com>

	doc: spell checking.
	* doc/bison.texinfo: here.

2009-09-16  Akim Demaille  <demaille@gostai.com>

	doc: comment changes.
	* doc/bison.texinfo: Comment changes.

2009-09-16  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: factor the yytranslate_ invocation in make_SYMBOLS.
	* data/c++.m4, data/lalr1.cc (parser::symbol_type): Change the
	constructor to take a token_type instead of the (internal) symbol
	number.
	Call yytranslate_.
	* data/variant.hh (b4_symbol_constructor_define_): Therefore,
	don't call yytranslate_ here.

2009-09-16  Akim Demaille  <demaille@gostai.com>

	TODO: statistics.
	* TODO (Figures): New.

2009-09-13  Joel E. Denny  <jdenny@clemson.edu>

	tests: clean up push.at test group titles.
	* tests/push.at: Remove "Push Parsing: " from test group titles
	because these are already under the banner "Push Parsing Tests".

2009-09-12  Alex Rozenman  <rozenman@gmail.com>

	Provide an additional sub-message for clarity.
	Add "symbol not found in production" error message when
	an "invalid reference" is detected in named references
	resolution.
	* src/scan-code.l: Update "invalid reference" case.
	* tests/named-ref.at: Adjust test-cases.

2009-09-10  Joel E. Denny  <jdenny@clemson.edu>

	Clean up yacc.c a little.
	* data/yacc.c: Clean up M4 for readability, and make output
	whitespace more consistent.  For the main parse function
	comment, instead of saying "yyparse or yypush_parse", say either
	"yyparse" or "yypush_parse" depending on which it actually is.

2009-09-10  Joel E. Denny  <jdenny@clemson.edu>

	Fix --enable-gcc-warnings.
	* src/parse-gram.y (%printer <param>): Handle param_none.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: syntax_error as exceptions.
	It is common to use sort of factories in the user actions.  These
	factories may check some "syntactic" constraints that are not
	enforced by the grammar itself.  This is possible using YYERROR
	within the action itself.  Provide the user with a means to throw
	a syntax_error exception.

	* data/c++.m4 (b4_public_types_declare, b4_public_types_define):
	Declare and define yy::parser::syntax_error.
	* data/lalr1.cc: Include stdexcept.
	(yy::parser::parse): Wrap the user action within a try/catch.
	* data/glr.cc: Include stdexcept.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: add missing "inline".
	* data/c++.m4 (b4_public_types_define): Add missing inline to
	implementations provided in headers.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	%param: documentation.
	* NEWS (2.6): Document %param, %lex-param, and %parse-param
	changes.
	* doc/bison.texinfo: Document that %lex-param and %parse-param
	are n-ary.
	Changes some examples to demonstrate it.
	(Calc++ Parser): Use %param.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	Regen.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	style changes.
	* src/parse-gram.y (add_param): Scope changes.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	%parse: support several arguments.
	* src/parse-gram.y (current_param): New.
	(param_type): Add param_none.
	(params): New nonterminal.
	Use it.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	Regen.

2009-09-09  Akim Demaille  <demaille@gostai.com>

	%param.
	Provide a means to factor lex-param and parse-param common
	declarations.

	* src/parse-gram.y (param_type): New.
	Define a %printer for it.
	(add_param): Use it.
	(%parse-param, %lex-param): Merge into...
	(%parse): this new token.
	Adjust the grammar to use it.
	* src/scan-gram.l (RETURN_VALUE): New.
	(RETURN_PERCENT_FLAG): Use it.
	(RETURN_PERCENT_PARAM): New.
	Use it to support %parse-param, %lex-param and %param.

2009-09-03  Joel E. Denny  <jdenny@clemson.edu>

	Use aver not assert.
	* src/output.c: Don't include assert.h.
	(output_skeleton): Use aver not assert.
	* src/system.h (aver): In documentation of why, add links to
	Paul Eggert's explanations in the mailing lists.

2009-09-05  Alex Rozenman  <rozenman@gmail.com>

	Use "Unresolved reference" error message when no symbols were found
	in a symbolic reference resolution. Remove .expr and -expr from
	the shown reference when the reference is unresolved.
	* src/scan-code.l: Change the error message, adjust location columns,
	rename variable "exact_mode" to "explicit_bracketing".
	* tests/named-ref.at: Adjust existing tests and add a new one.

2009-09-04  Akim Demaille  <demaille@gostai.com>

	Adjust synclines in src/parse-gram.[ch].
	* tests/bison.in: Do some magic (including working around issues
	with ylwrap) when this wrapper is used to compile
	src/parse-gram.y.

2009-09-03  Joel E. Denny  <jdenny@clemson.edu>

	Complain about unused %define variables and %code qualifiers.
	* NEWS (2.5): Document.
	* data/bison.m4 (b4_check_user_names): Complain instead of warn.
	* doc/bison.texinfo (Decl Summary): Document complaint, and
	improve %define documentation a little otherwise.
	* tests/input.at (Reject unused %code qualifiers): Update.
	(%define errors): Update.
	(%define, --define, --force-define): Update.
	(%define backward compatibility): Update.
	(Unused %define api.pure): Update.
	* tests/push.at (Push Parsing: Unsupported Skeletons): Update.

2009-09-03  Joel E. Denny  <jdenny@clemson.edu>

	Don't suppress warnings about unused parse.error.
	* data/bison.m4 (b4_error_verbose_flag): Don't examine value of
	%define variable parse.error unless b4_error_verbose_flag is
	actually expanded in a skeleton.

2009-09-03  Akim Demaille  <demaille@gostai.com>

	* NEWS (2.4.2): Add "Internationalization" item.

2009-09-03  Akim Demaille  <demaille@gostai.com>

	bootstrap: fix/improve find_tool.
	* bootstrap (find_tool): Improve error messages.
	Fix typo about find_tool_names.

2009-08-29  Joel E. Denny  <jdenny@clemson.edu>

	Fix gcc 3.4.4 shadowing warning reported by Eric Blake.
	See
	<http://lists.gnu.org/archive/html/bison-patches/2009-08/msg00093.html>.
	* src/scan-code.h (code_props_rule_action_init): Rename
	named_ref arg to name so it doesn't shadow named_ref type.  This
	makes it consistent with the function definition in scan-code.l
	anyway.

2009-08-28  Joel E. Denny  <jdenny@clemson.edu>

	%define: accept unquoted values.
	* NEWS (2.5): Group all %define changes together, and document
	this one.  Remove quotes in IELR and canonical LR entry.
	* doc/bison.texinfo: Remove quotes in most examples throughout.
	(Decl Summary): Update %define documentation.
	(Table of Symbols): Likewise.
	* src/ielr.c (LrType): Update documentation.
	* src/parse-gram.y (content.opt): Add production for ID.
	* tests/actions.at: Remove quotes in most tests.
	* tests/calc.at: Likewise.
	* tests/existing.at: Likewise.
	* tests/input.at: Likewise.
	* tests/local.at: Likewise.
	* tests/push.at: Likewise.
	* tests/reduce.at: Likewise.
	* tests/torture.at: Likewise.

2009-08-28  Joel E. Denny  <jdenny@clemson.edu>

	%define lr.type: make values lowercase IDs.
	That is, "LALR" => "lalr", "IELR" => "ielr", and
	"canonical LR" => "canonical-lr".
	* NEWS (2.5): Update documentation.
	* doc/bison.texinfo (Decl Summary): Likewise.
	* src/ielr.c (ielr): Use new values.
	* src/ielr.h (ielr): Update documentation.
	* src/reader.c (prepare_percent_define_front_end_variables): Use
	and validate new values.
	* tests/existing.at (AT_TEST_EXISTING_GRAMMAR): Update test
	grammars.
	* tests/reduce.at (AT_TEST_LR_TYPE): Likewise.

2009-08-27  Eric Blake  <ebb9@byu.net>

	scan-gram: avoid portability trap with ctype usage.
	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>):
	Avoid compiler warning.

2009-08-27  Joel E. Denny  <jdenny@clemson.edu>

	tests: use perl for printing special sequences to files.
	And skip tests if perl is not available.  This is better than
	playing tricks with shell portability.  Suggested by Akim
	Demaille.
	* tests/input.at (Bad character literals): Use it here for
	omitting final newlines.
	(Bad escapes in literals): Use it here for special characters.

2009-08-26  Joel E. Denny  <jdenny@clemson.edu>

	tests: show a use of %define lr.default-reductions "consistent"
	* tests/conflicts.at (%nonassoc and eof): Extend to test that it
	prevents the omission of expected tokens for %error-verbose.

2009-08-26  Akim Demaille  <demaille@gostai.com>

	tests: portability fix.
	* tests/input.at (Bad escapes in literals): Don't expect "echo
	'\0'" to output \ then 0.

2009-08-26  Joel E. Denny  <jdenny@clemson.edu>

	Actually handle the yytable zero value correctly this time.
	* data/bison.m4 (b4_integral_parser_tables_map): Don't mention
	zero values in the YYTABLE comments.
	* data/glr.c (yytable_value_is_error): Don't check for zero
	value.
	* data/lalr1.cc (yy_table_value_is_error_): Likewise.
	* data/yacc.c (yytable_value_is_error): Likewise.
	* data/lalr1.java (yy_table_value_is_error_): Likewise.
	(yysyntax_error): Fix typo in code: use yytable_ not yycheck_.
	* src/tables.h: In header comments, explain why it's useless to
	check for a zero value in yytable.

2009-08-25  Joel E. Denny  <jdenny@clemson.edu>

	More fixes related to last two patches.
	* data/bison.m4 (b4_integral_parser_tables_map): Fix YYTABLE
	comments: zero indicates syntax error not default action.
	* data/c.m4 (b4_table_value_equals): Comment that YYID must be
	defined.
	* data/glr.c (yyis_pact_ninf): Rename to...
	(yypact_value_is_default): ... this.
	(yyisDefaultedState): Update for rename.
	(yyis_table_ninf): Rename to...
	(yytable_value_is_error): ... this, and check for value zero
	besides just YYTABLE_NINF.
	(yygetLRActions): Check for default value from yypact.  It
	appears that this check is always performed before this function
	is invoked, and so adding the check here is probably redundant.
	However, the code may evolve after this subtlety is forgotten.
	Also, update for rename to yytable_value_is_error.  Because that
	macro now checks for zero, a different but equivalent branch of
	the if-then-else here is evaluated.
	(yyreportSyntaxError): Update for rename to
	yytable_value_is_error.  The zero condition was mishandled
	before.
	(yyrecoverSyntaxError): Update for renames.  No behavioral
	changes.
	* data/lalr1.cc, data/lalr1.java (yy_pact_value_is_default_):
	New function.
	(yy_table_value_is_error_): New function.
	(parse): Use new functions where possible.  No behavioral
	changes.
	(yysyntax_error_, yysyntax_error): Use yy_table_value_is_error_.
	The zero condition was mishandled before.
	* data/yacc.c (yyis_pact_ninf): Rename to...
	(yypact_value_is_default): ... this.
	(yyis_table_ninf): Rename to...
	(yytable_value_is_error): ... this, and check for value zero
	besides just YYTABLE_NINF.
	(yysyntax_error): Update for rename to yytable_value_is_error.
	The zero condition was mishandled before.
	(yyparse): Update for renames.  No behavioral changes.
	* src/tables.h: Improve comments about yypact, yytable, etc.
	more.  Most importantly, say yytable value of zero means syntax
	error not default action.

2009-08-25  Joel E. Denny  <jdenny@clemson.edu>

	Fix %error-verbose for conflicts resolved by %nonassoc.
	* NEWS (2.5): Document.
	* data/glr.c (yyreportSyntaxError): Fix this by checking
	yyis_table_ninf.
	* data/yacc.c (yysyntax_error): Likewise.
	* data/lalr1.cc (yysyntax_error_): Fix this by checking
	yytable_ninf_.
	* data/lalr1.java (yysyntax_error): Likewise.
	* tests/conflicts.at (%nonassoc and eof): Update expected output
	and remove FIXME.

2009-08-25  Joel E. Denny  <jdenny@clemson.edu>

	Some code and documentation improvements.
	* data/c.m4 (b4_table_value_equals): New macro to capture
	some repeated code.
	* data/glr.c (yyis_pact_ninf): Use it here.
	(yyis_table_ninf): Likewise.
	(yyreportSyntaxError): Improve internal comments.
	* data/yacc.c (yyis_pact_ninf): New macro copied from glr.c.
	Use it everywhere possible.
	(yyis_table_ninf): Likewise.
	(yysyntax_error): Improve internal comments.
	* data/lalr1.cc (yysyntax_error_): Likewise.
	* data/lalr1.java (yysyntax_error): Likewise.
	* src/tables.h: Improve comments about yypact, yytable, etc.

2009-08-21  Joel E. Denny  <jdenny@clemson.edu>

	Use locale when quoting.
	* src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER): Use
	quote rather than implementing quoting here.

2009-08-20  Eric Blake  <ebb9@byu.net>

	Make previous patch more robust.
	* src/output.c (ARRAY_CARDINALITY): New macro, copied from
	argmatch.h.
	(output_skeleton): Use it.
	Suggested by Akim Demaille.

	Import latest m4/m4.m4.
	* submodules/autoconf: Update to autoconf 2.64.
	* configure.ac (M4_GNU_OPTION): New define.
	* src/output.c (output_skeleton): Use it to resolve FIXME.
	* NEWS: Mention this.

2009-08-19  Joel E. Denny  <jdenny@clemson.edu>

	Fix complaints about escape sequences.
	Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2009-08/msg00036.html>.
	* src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER):
	For a \0 and similar escape sequences meaning the null
	character, report an invalid escape sequence instead of an
	invalid null character because the latter does not actually
	appear in the user's input.
	In all escape sequence complaints, don't escape the initial
	backslash, and don't quote when the sequence appears at the end
	of the complaint line unless there's whitespace that quotearg
	won't escape.
	Consistently say "invalid" not "unrecognized".
	Consistently prefer "empty character literal" over "extra
	characters in character literal" warning for invalid escape
	sequences; that is, consistently discard those sequences.
	* tests/input.at (Bad escapes in literals): New.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	doc: fixes.
	* doc/bison.texinfo: Fix minor Texinfo errors.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	tests: distcc compliance.
	* tests/synclines.at (AT_SYNCLINES_COMPILE): Discard distcc's
	error messages from the output.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	variables: simplify the upgrade of namespace into api.namespace.

	This patch simplifies "variables: rename namespace as
	api.namespace", commit 67501061076ba46355cfd9f9361c7eed861b389c.
	Suggested by Joel E. Denny in
	http://lists.gnu.org/archive/html/bison-patches/2009-07/msg00006.html

	* src/muscle-tab.c (muscle_percent_variable_update): New.
	(muscle_percent_define_insert): Use it in replacement of the
	previous tr invocation.
	Remove variable_tr, no longer needed.
	* data/bison.m4 (b4_percent_define_copy_, b4_percent_define_copy):
	Remove.
	* data/c++.m4: No longer handle namespace -> api.namespace.
	* tests/input.at (%define backward compatibility): Check that
	namespace is treated as api.namespace.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	doc: %initial-action to initialize yylloc.
	Reported by Bill Allombert.
	* doc/bison.texinfo: Set fill-column to 76.
	(Location Type): Document the use of %initial-action to initialize
	yylloc.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: use state_type.
	* data/lalr1.cc (yysyntax_error_): Use state_type.
	Move argument names into yy*.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: get rid of yyparse's yystate.
	yystate and yystack_[0].state are equal, keep only the latter.
	The former was also used as a temporary variable to compute the
	post-reduction state.  Move this computation into an auxiliary
	function.

	* data/glr.c (yyLRgotoState): Fuse variable definition and first
	assignment.
	* data/lalr1.cc (yy_lr_goto_state_): New.
	(yyparse): Use it.
	Replace remaining uses of yystate by yystate_[0].state.
	Remove the former.

2009-08-19  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: destroy $$ when YYERROR is called.
	* data/lalr1.cc (yyreduce): Compute the resulting state before
	running the user action so that yylhs is a valid symbol.
	(yyerrorlab): Since yylhs is complete (it knows its type), we can
	simply call yy_destroy_ to destroy $$ on YYERROR invocations.
	* tests/c++.at (AT_CHECK_VARIANTS): Test YYERROR with variants.

2009-08-18  Joel E. Denny  <jdenny@clemson.edu>

	maint: update for gnulib's recent update-copyright changes
	* gnulib: Update.
	* .x-update-copyright (COPYING): Add as it's no longer implied
	when .x-update-copyright is present.
	* cfg.mk (update-copyright-local): Remove, now ignored.
	(update-copyright): Declare update-b4-copyright as a dependency.

2009-08-17  Akim Demaille  <demaille@gostai.com>

	build: require gettext 0.17.

	Suggested by Bruno Haible.
	http://lists.gnu.org/archive/html/bug-bison/2009-08/msg00009.html
	* configure.ac: require gettext 0.17 to ensure compatibility with
	gnulib.

2009-08-17  Akim Demaille  <demaille@gostai.com>

	build: lower gettext requirements.

	Bison was uselessly requiring the formatstring macros from
	gettext, which resulted in mo files not being installed on systems
	that perfectly supported Bison mo files.  Lower the requirement.
	http://lists.gnu.org/archive/html/bug-bison/2009-08/msg00006.html

	* configure.ac: Require need-ngettext instead of
	need-formatstring-macros.
	Reported by Martin Jabocs.
	Suggested by Bruno Haible.
	* INSTALL: Restructure.
	(Internationalization): New.

2009-08-14  Joel E. Denny  <jdenny@clemson.edu>

	maint: fix use of copyright year intervals.
	* gnulib: Update.
	* bootstrap.conf (gnulib_modules): Update getopt to getopt-gnu
	as now recommended in gnulib/NEWS.
	* build-aux/update-b4-copyright: Fix.
	* cfg.mk (update-copyright-env): Configure update-copyright.

2009-08-13  Joel E. Denny  <jdenny@clemson.edu>

	Make it easier to write deterministic tests.
	Continues Akim's work from his 2009-06-10 commits.
	* src/reader.c (check_and_convert_grammar): Don't add any
	symbols after the first symbols_do invocation.
	* src/symtab.c (symbols_sorted): New static global.
	(user_token_number_redeclaration): Update comments.
	(symbol_from_uniqstr): If a new symbol is being created, assert
	that symbols_sorted hasn't been allocated yet.
	(symbols_free): Free symbols_sorted.
	(symbols_cmp, symbols_cmp_qsort): New functions.
	(symbols_do): Sort symbol_table into symbols_sorted on first
	invocation.
	* tests/input.at (Numbered tokens): Recombine tests now that the
	output should be deterministic across multiple numbers.

2009-08-12  Akim Demaille  <demaille@gostai.com>

	tests: GCC 4.5 compliance.
	* tests/synclines.at (AT_SYNCLINES_COMPILE): Adjust to GCC 4.5's
	messages about #error.

2009-08-12  Akim Demaille  <demaille@gostai.com>

	build: fix the generation of the documentation.
	Some of our targets use "bison --help", but they can't depend on
	"bison" itself (to avoid additional requirements on the user), so
	they used to call "make src/bison" in the commands.  Then
	concurrent builds may fail: one make might be aiming one of its
	jobs at compiling src/bison, and another job at generating the man
	page.  If the latter is faster than the former, then we have two
	makes that concurrently try to compile src/bison.

	This might also be a more convincing explanation for the failure
	described in the patch "build: fix paths".

	* Makefile.am (SUFFIXES): Initialize.
	* build-aux/move-if-change: New, symlink to gnulib's.
	* build-aux/local.mk: Ship it.
	* doc/common.x: Remove, merged into...
	* doc/bison.x: here.
	* doc/local.mk (doc/bison.help): New.
	($(CROSS_OPTIONS_TEXI)): Depend on it.
	Use src/bison.
	(.x.1): Replace with...
	(doc/bison.1): this explicit, simpler, target.
	(common_dep): Remove, inlined where appropriate.
	(SUFFIXES, PREPATH): Remove, unused.

2009-08-12  Akim Demaille  <demaille@gostai.com>

	gnulib: improve prefixing.
	* configure.ac (gl_PREFIXED_LIBOBJS): Don't rename it, rather,
	change the value of...
	(gl_LIBOBJS): this.
	Adjust more variables.
	* etc/prefix-gnulib-mk (prefix_assignment): Don't rename
	gl_LIBOBJS.
	(prefix): Also transform rules whose targets have slashes.
	Use $prefix liberally.
	Map @MKDIR_P@ to $(MKDIR_P).
	Prefix directories that are mkdir'd.

2009-08-12  Akim Demaille  <demaille@gostai.com>

	build: fix paths.
	When using $(top_builddir) inconsistently, Make (including GNU
	Make) is sometimes confused.  As a result it may want to build
	lib/libbison.la and $(top_builddir)/lib/libbison.la (the same
	file, different names) concurrently, which, amusingly enough,
	might end with:

	  ranlib lib/libbison.a
	  ranlib lib/libbison.a
	  make[2]: *** [lib/libbison.a] Segmentation fault

	on OS X.

	* doc/local.mk, src/local.mk: Do not use $(top_builddir) when not
	needed.

2009-08-12  Akim Demaille  <demaille@gostai.com>

	distcheck: fix.

	* examples/calc++/Makefile.am: (EXTRA_DIST): Ship calc.stamp.

2009-08-10  Joel E. Denny  <jdenny@clemson.edu>

	* tests/local.mk (TESTSUITE_AT): Add named-refs.at.

2009-08-10  Joel E. Denny  <jdenny@clemson.edu>

	Miscellaneous code readability improvements.

	* src/reader.c (reader): Move %define front-end variable
	defaults and checking into...
	(prepare_percent_define_front_end_variables): ... this new
	function.

	* src/scan-gram.l (INITIAL): For consistency with string
	literals, don't store open quote on character literal.  It's
	discarded before returning anyway.
	(SC_ESCAPED_CHARACTER): Similarly, don't store close quote.
	Make length test more readable, and make the character stored
	for an empty literal more obvious while consistent with the
	previous behavior.

	* src/symtab.c, src/symtab.h: Rename USER_NUMBER_ALIAS to
	USER_NUMBER_HAS_STRING_ALIAS throughout.
	* src/symtab.c (symbol_make_alias): Remove comment from symtab.c
	that is repeated in symtab.h.  Improve argument names to make it
	clear which side of the symbol-string alias pair is which.
	(symbol_check_alias_consistency): Improve local variable names
	for the same purpose.
	* src/symtab.h (struct symbol): Make comments about aliases
	clearer.
	(symbol_make_alias): Improve comments and argument name.
	* src/output.c (token_definitions_output): Update for rename to
	USER_NUMBER_HAS_STRING_ALIAS and improve comments about aliases.

2009-08-08  Alex Rozenman  <rozenman@gmail.com>

	Convert "misleading reference" messages to warnings.
	* src/scan-code.l: New function 'show_sub_messages', more
	factoring.
	* tests/named-ref.at: Adjust tests.

2009-08-06  Joel E. Denny  <jdenny@clemson.edu>

	maint: run "make update-copyright"

2009-08-06  Joel E. Denny  <jdenny@clemson.edu>

	maint: make update-b4-copyright easier to use
	* build-aux/update-b4-copyright: In warnings, report line
	numbers rather than character positions.
	* cfg.mk (update-copyright-local): Set to update-b4-copyright so
	that update-copyright runs it.
	* gnulib: Update.

2009-08-05  Joel E. Denny  <jdenny@clemson.edu>

	maint: clean up update-b4-copyright code
	* build-aux/update-b4-copyright: Do not accept 2-digit
	UPDATE_COPYRIGHT_YEAR, which was not handled correctly.
	Don't accept a `[' in a b4_copyright argument.
	Format code more consistently.
	Don't assume b4*copyright never occurs.

2009-08-04  Joel E. Denny  <jdenny@clemson.edu>

	maint: automate b4_copyright updates.
	* Makefile.am (update-b4-copyright): New target rule.
	* build-aux/local.mk (EXTRA_DIST): Add update-b4-copyright.
	* build-aux/update-b4-copyright: New.
	* data/yacc.c: Remove stray characters around b4_copyright
	invocations.

2009-08-04  Joel E. Denny  <jdenny@clemson.edu>

	maint: automate annual package-wide copyright-year update.
	* .x-update-copyright: New.
	* Makefile.am (EXTRA_DIST): Remove maint.mk.
	* bootstrap.conf (gnulib_modules): Add maintainer-makefile and
	update-copyright.  Remove gnumakefile, which is implied by
	maintainer-makefile.
	* cfg.mk (bootstrap-tools): Copy from old maint.mk.
	* gnulib: Update.
	* maint.mk: Remove, now copied from gnulib.
	* examples/extexi: Add missing "(C)" in copyright statement so
	update-copyright can recognize it.
	* src/LR0.h: Likewise.
	* src/print.h: Likewise.
	* src/print_graph.h: Likewise.
	* src/gram.c: Add missing comma in copyright statement.
	* src/gram.h: Likewise.

2009-08-04  Joel E. Denny  <jdenny@clemson.edu>

	Fix "make distcheck".
	* examples/calc++/Makefile.am: Say $(srcdir)/calc.stamp instead
	of just calc.stamp.

2009-08-01  Joel E. Denny  <jdenny@clemson.edu>

	Pacify "gcc -Wunused" for the input function from Flex.
	Reported by Alex Rozenman.  This warning shows up with gcc-4.3.0
	and later.
	* src/scan-code.l: Add "%option noinput", which I cannot find in
	the Flex manual, but which Flex has supported since at least as
	far back as 2.5.4.  However, if any of our developers still use
	Flex 2.5.4, they'll need to stop configuring with
	--enable-gcc-warnings because "%option noinput" didn't work
	correctly until Flex 2.5.6.
	* src/scan-gram.l: Likewise.
	* src/scan-skel.l: Likewise.

2009-07-31  Alex Rozenman  <rozenman@gmail.com>

	Fix --enable-gcc-warnings problems.
	* src/reader.c: Adjust variable names.
	* src/scan-code.l: Fix prototypes and adjust names.
	* src/named-ref.c: Remove redundant "if".

2009-07-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix a --enable-gcc-warnings problem.
	* src/scan-gram.l (SC_ESCAPED_CHARACTER): Actually use length
	variable.

2009-07-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	Warn about character literals not of length one.
	* NEWS (2.5): Document.
	* src/scan-gram.l (INITIAL): Remove comment that we don't check
	the length.
	(SC_ESCAPED_CHARACTER): Warn if length is wrong.
	* tests/input.at (Bad character literals): New test group.

2009-07-24  Alex Rozenman  <rozenman@gmail.com>

	Fix some memory leaks.
	* src/named-ref.c: Add a pointer check (named_ref_free).
	* src/scan-code.l: New function (variant_table_free). Called in
	code_scanner_free.
	* src/symlist.c: Call to named_ref_free (symbol_list_free).

2009-07-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/lalr.c (state_lookahead_tokens_count): Correct comment.

2009-07-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	Some M4 cleanup in the testsuite.
	Suggested by Eric Blake at
	<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00083.html>.
	* tests/existing.at (_AT_TEST_EXISTING_GRAMMAR): Do not
	complicate the code by distinguishing between a missing value
	and an empty string value for an optional argument.  This fix is
	allowed by the similar fix in AT_TEST_TABLES_AND_PARSE below.
	* tests/local.at (_AT_TEST_TABLES_AND_PARSE): Merge into...
	(AT_TEST_TABLES_AND_PARSE): ... this now that the special
	arguments are not needed because of the following changes.
	Fix stale comments.
	Bison developers should use GNU M4 and should not use
	POSIXLY_CORRECT when building the test suite, so do not
	complicate the code by avoiding $10 and above.
	Do not quote an empty string value for an optional argument, and
	do not distinguish between a missing value and an empty string
	value.

2009-07-15  Joel E. Denny  <jdenny@ces.clemson.edu>

	Revert unnecessary column realignment in --help output.
	Reported by Akim Demaille at
	<http://lists.gnu.org/archive/html/bison-patches/2009-06/msg00010.html>.
	* src/getargs.c (usage): Here.

2009-07-04  Alex Rozenman  <rozenman@gmail.com>

	Alphabetical order in src/local.mk.
	* src/local.mk: Adjust.

2009-07-04  Alex Rozenman  <rozenman@gmail.com>

	Style changes and factoring.
	* src/named-ref.h: Add comments.
	* src/parse-gram.y: Readability and style changes.
	* src/reader.c: Factoring: assign_named_ref function.
	* src/scan-code.l: Factoring and style changes. Rename
	parse_named_ref to parse_ref. Use "c-ctype.h" from gnulib.
	Use "unsigned" type for variant index. Improve readablity.
	* src/scan-gram.l: Change error messages and add comments.
	* src/symlist.h: symbol_list_null: New function decl.
	* src/symlist.c: symbol_list_null: Implement here.
	* tests/named-refs.at: Adjust for new error messages.

2009-06-29  Eric Blake  <ebb9@byu.net>

	scan-code: avoid compiler warnings
	* src/scan-code.l (parse_named_ref): Use correct specifiers.

2009-06-29  Akim Demaille  <demaille@gostai.com>

	build: avoid concurrent extraction of calc++.
	* examples/calc++/Makefile.am (calc.stamp): New.
	Depend on it to create the sources of calc++ so that concurrent
	builds don't launch several "extexi" in parallel.
	Not only this is inefficient, this also builds incorrect sources
	with several extractions mixed together.

2009-06-29  Akim Demaille  <demaille@gostai.com>

	parse.error: fix.
	* data/bison.m4: Move code related to specific variables after the
	definition of the variable-maintaining macros so that we don't
	"invoke" b4_percent_define_check_values before it is defined.

2009-06-29  Akim Demaille  <demaille@gostai.com>

	variables: parse.error

	Implement, document, and test the replacement of %error-verbose
	by %define parse.error "verbose".
	* data/bison.m4 (b4_error_verbose_if): Reimplement to track the
	values of the parse.error variable.
	Make "simple" its default value.
	Check the valid values.
	* src/parse-gram.y: Use %define parse.error.
	(PERCENT_ERROR_VERBOSE): New token.
	Support it.
	* src/scan-gram.l: Support %error-verbose.

	* doc/bison.texinfo (Decl Summary): Replace the documentation of
	%define error-verbose by that of %define parse.error.
	* NEWS: Document it.

	* tests/actions.at, tests/calc.at: Use parse.error instead of
	%error-verbose.

2009-06-27  Alex Rozenman  <rozenman@gmail.com>

	Implement support for named symbol references.
	* src/parse-gram.y: Add new syntax (named_ref.opt).
	* src/reader.c: Store named refs in symbol lists.
	* src/reader.h: New argument for symbol_append and
	action_append functions.
	* src/scan-code.h: Add new field (named_ref) into
	code_props data structure. Keeps named ref of midrule
	actions.
	* src/scan-code.l: Support for named refs in semantic
	action code. New function 'parse_named_ref'.
	* src/scan-gram.l: Support bracketed id.
	* src/symlist.c: Store named refs in symbol lists.
	* src/symlist.h: New field in symbol list: named_ref.
	* src/named-ref.h: New file, a struct for named_ref.
	* src/named-ref.cp: New file, named_ref_new function.
	* src/local.mk: Add two new files.
	* tests/testsuite.at: Include new test group:
	* tests/named-refs.at: this new file.

2009-06-25  Akim Demaille  <demaille@gostai.com>

	hash: check insertion for memory exhaustion.
	* src/uniqstr.c (uniqstr_new): New.

2009-06-24  Akim Demaille  <demaille@gostai.com>

	variables: rename namespace as api.namespace.
	Discussed in
	http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00033.html

	* data/bison.m4 (b4_percent_define_copy_, b4_percent_define_copy):
	New.
	(b4_percent_define_use): New.
	Use it where applicable.
	* data/c++.m4: Replace uses of the variable "namespace" by
	"api.namespace".
	Default the latter to the former.
	* doc/bison.texinfo (Decl Summary): Document "namespace" as
	obsolete.
	Document api.namespace.
	Use @samp to document %define uses, keep @code for identifiers.
	* NEWS: Likewise.
	* tests/c++.at, tests/input.at: Test api.namespace instead of
	namespace. (The tests passed with namespace.)

2009-06-11  Akim Demaille  <demaille@gostai.com>

	style changes.
	* data/xslt/xml2dot.xsl, data/xslt/xml2xhtml.xsl: Space changes.
	* src/print-xml.c: Style changes.
	* tests/conflicts.at: Comment changes.

2009-06-11  Akim Demaille  <demaille@gostai.com>

	xml: beware of user strings used to give a %prec to rules.
	* tests/conflicts.at (%prec with user strings): New.
	* src/gram.c (grammar_rules_print_xml): Escape the precedence for
	XML output.

2009-06-11  Akim Demaille  <demaille@gostai.com>

	hash: check insertion for memory exhaustion.
	* src/muscle-tab.c (muscle_insert, muscle_grow)
	* src/state.c (state_hash_insert): Check the return value of
	hash_insert.

2009-06-11  Akim Demaille  <demaille@gostai.com>

	tests: honor TESTSUITEFLAGS in every check target.
	* tests/local.mk (RUN_TESTSUITE): New.
	(check-local, installcheck-local, maintainer-check-g++)
	(maintainer-check-posix, maintainer-check-valgrind): Use it.

2009-06-10  Akim Demaille  <demaille@gostai.com>

	deterministic test suite.
	Some consistency checks on symbols are performed after all the
	symbols were read, by an iteration over the symbol table.  This
	traversal is nondeterministic, which can be a problem for test
	cases.
	Avoid this.
	Addresses another form of nondeterminism reported by Joel E. Denny.
	http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html

	* tests/input.at (Numbered tokens): Split the hexadecimal/decimal
	test in two.
	Use different file names for the three tests to make the
	maintenance easier.

2009-06-10  Akim Demaille  <demaille@gostai.com>

	gnulib: update.
	* gnulib: Update to latest.
	* lib/.cvsignore, lib/.gitignore, m4/.cvsignore,
	* m4/.gitignore: Regen.
	* src/symtab.c (symbol_from_uniqstr, semantic_type_from_uniqstr):
	Call xalloc_die on hash_insert failures.
	Requested by the new __warn_unused_result__ attribute of
	hash_insert.

2009-06-10  Akim Demaille  <demaille@gostai.com>

	deterministic user-token-number redeclaration errors.
	Address nondeterminism reported by Joel E. Denny.
	http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html

	* src/uniqstr.h: Comment changes.
	* src/location.h (boundary_cmp, location_cmp): New.
	* src/symtab.c (user_token_number_redeclaration): New.
	(symbol_translation): Use it.
	* tests/input.at (Numbered tokens): Adjust the expected output.

2009-05-25  Akim Demaille  <demaille@gostai.com>

	build: avoid ignored errors.
	* doc/local.mk ($(CROSS_OPTIONS_TEXI)): Don't generate ignored
	errors, they pollute the output.

2009-05-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	Convert multiple variable definition warnings to complaints.
	* NEWS (2.5): Add a new entry for that change.
	* doc/bison.texinfo (Decl Summary): Update %define entry.
	(Bison Options): Update -D/--define/-F/--force-define entry.
	* src/muscle-tab.c (muscle_percent_define_insert): Implement.
	* src/muscle-tab.h (muscle_percent_define_insert): Update
	comments.
	* tests/input.at (`%define errors'): Update.
	(`%define, --define, --force-define'): Update.

2009-05-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	-F/--force-define and relative %define/-D/--define priorities.
	* NEWS (2.5): Add documentation to -D/--define entry.
	* build-aux/cross-options.pl: Hard-code association of
	--force-define with %define.
	* doc/bison.texinfo (Decl Summary): In %define entry,
	cross-reference command-line options.
	(Bison Options): Add documentation to -D/--define entry.
	(Option Cross Key): Widen column for --force-define row.
	* src/getargs.c (usage): Document -F/--force-define.  Realign
	options in output.
	(short_options, long_options, getargs): Parse -F/--force-define,
	and update muscle_percent_define_insert invocations.
	* src/muscle-tab.h (muscle_percent_define_how): New enum type.
	(muscle_percent_define_insert): Add argument with that type.
	* src/muscle-tab.c (muscle_percent_define_insert): Implement
	-F/--force-define behavior and priorities.
	(muscle_percent_define_ensure): Update
	muscle_percent_define_insert invocation.
	* src/parse-gram.y (prologue_declaration): Update
	muscle_percent_define_insert invocations.
	* tests/input.at (`%define, --define'): Rename to...
	(`%define, --define, --force-define'): ... this and extend.

2009-05-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update some comments to make sense for -D.
	* data/bison.m4 (b4_check_user_names): In header comments, say
	"user occurrence" instead of "grammar occurrence".
	* src/muscle-tab.h (muscle_percent_define_insert): Likewise.
	(muscle_percent_code_grow): Likewise just for consistency.

2009-05-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/c++.m4 (b4_namespace_close): Simplify slightly.

2009-05-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	Handle a trailing `:' in a user-supplied C++ namespace better.
	* data/c++.m4 (b4_namespace_close): Don't let it be printed
	among the closing braces here.  This fix might make the
	generated code easier to debug, but otherwise it should be
	insignificant because a trailing `:' is a C++ error already.

2009-05-19  Akim Demaille  <demaille@gostai.com>

	remove useless variable.
	* src/getargs.c (skeleton_arg): Remove now useless variable.
	Should help the compiler see that this printf-like call is sane.

2009-05-15  Akim Demaille  <demaille@gostai.com>

	Rename token.prefix as api.tokens.prefix.
	Discussed here.
	http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00024.html.

	* NEWS, data/bison.m4, data/c.m4, data/java.m4, doc/bison.texinfo,
	* tests/c++.at, tests/calc.at, tests/java.at, tests/local.at
	(token.prefix): Rename as...
	(api.tokens.prefix): this.

2009-05-11  Akim Demaille  <demaille@gostai.com>

	doc: use C++ headers.
	* doc/bison.texinfo (Calc++ Scanner): Prefer C++ headers to C
	headers.

2009-05-11  Akim Demaille  <demaille@gostai.com>

	doc: token.prefix
	* doc/bison.simple (Decl Summary): Document token.prefix.
	(Calc++ Parser): Various fixes.
	Formatting changes.
	Use token.prefix.
	Introduce a macro TOKEN to shorten the code and make it more
	readable.
	(Calc++ Scanner): Adjust.
	* NEWS (Variable token.prefix): New.

2009-05-04  Akim Demaille  <demaille@gostai.com>

	bison: catch bad symbol names.
	* src/scan-gram.l({int}{id}): Report as an invalid identifier.
	* tests/input.at: Adjust.

2009-05-04  Akim Demaille  <demaille@gostai.com>

	identifiers: dashes are letters.
	Dashes can now start identifiers (symbols and directives).

	* src/scan-gram.l ({letter}): Add dash.
	({id}): Remove it.
	* tests/input.at (Symbols): Adjust.
	Remove stray comment.
	* tests/regression.at (Invalid inputs): Adjust error message.
	* doc/bison.texinfo (Symbols): Update.

2009-05-01  Joel E. Denny  <jdenny@ces.clemson.edu>

	Declare %code to be a permanent feature.
	* NEWS (2.4.2): Here.
	* doc/bison.texinfo (Prologue Alternatives): Don't say it's
	experimental.
	(Decl Summary): Likewise.

2009-04-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	Convert underscores to dashes in some %define variable names.
	For now, just api.push-pull and lr.keep-unreachable-states.
	Maintain old names for backward compatibility.
	* NEWS (2.5): Document.
	* data/c.m4 (b4_identification): Update comment.
	* data/yacc.c: Update access.
	* doc/bison.texinfo: Update.
	* etc/bench.pl.in (bench_push_parser): Update use.
	* src/files.c (tr): Move to...
	* src/getargs.c, src/getargs.h (tr): ... here because I can't
	think of a better place to expose it.  My logic is that, for all
	uses of tr so far, command-line arguments can be involved, and
	getargs.h is already included.
	* src/main.c (main): Update access.
	* src/muscle_tab.c (muscle_percent_define_insert): Convert old
	variable names to new variable names before assigning value.
	* src/reader.c (reader): Update setting default.
	* tests/calc.at: Update uses.
	* tests/conflicts.at (Unreachable States After Conflict
	Resolution): Update use.
	* tests/input.at (%define enum variables): Update use.
	(%define backward compatibility): New test group.
	* tests/push.at: Update uses.
	* tests/reduce.at: Update uses.
	* tests/torture.at: Update uses.

2009-04-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	Set all front-end %define defaults in one place.
	* src/main.c (main): Move lr.keep_unreachable_states default...
	* src/reader.c (reader): ... to here.

2009-04-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	Rename lr.default_reductions to lr.default-reductions.
	* NEWS (2.5): Here.
	* doc/bison.texinfo: Here.
	* src/lalr.c (initialize_LA): Here.
	* src/print.c (print_reductions): Here.
	* src/reader.c (reader): Here.
	* src/tables.c (action_row): Here.
	* tests/input.at (%define enum variables): Here.
	* tests/reduce.at (AT_TEST_LR_DEFAULT_REDUCTIONS): Here.

2009-04-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	Pacify ./configure --enable-gcc-warnings.
	* tests/input.at (Symbols): Prototype yyerror and yylex.

2009-04-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	Document how `%define "var" "value"' is not M4-friendly.
	* src/parse-gram.y (variable): In comments here.

2009-04-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	Clean up recent patches a little.
	Reported by Akim Demaille.
	* doc/bison.texinfo (Understanding): Fix typos.
	* src/print.c (print_reductions): Don't use negated variable.

2009-04-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	List accepted values for a %define enum variable with an invalid value.
	Suggested by Akim Demaille at
	<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00082.html>.
	* data/bison.m4 (_b4_percent_define_check_values): Implement.
	* src/muscle-tab.c (muscle_percent_define_check_values): Implement.
	* tests/input.at (%define lr.default_reductions invalid values): Merge
	into...
	(%define enum variables): ... here, and update output.

2009-04-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	Rename "default rule" to "default reduction".
	This includes changing variable names in code, changing
	comments, and renaming %define lr.default_rules to %define
	lr.default_reductions.
	* NEWS (2.5): Update IELR documentation.
	* data/bison.m4 (b4_integral_parser_tables_map): Adjust YYDEFACT
	documentation.
	* data/glr.c, data/lalr1.java: Sync copyright dates.
	* doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions
	and lr.type documentation.  Make some other wording
	improvements.
	(Glossary): Adjust cross-references and Default Reduction
	definition.
	* src/lalr.c (state_lookahead_tokens_count): Adjust code.
	Remove a confusing comment pointed out by Akim Demaille.
	(initialize_LA): Adjust code.
	* src/print-xml.c (print_reductions): Adjust code.
	* src/print.c (print_reductions): Adjust code.
	* src/reader.c (reader): Adjust code.
	* src/tables.c (action_row): Adjust code.
	(token_actions): Adjust code.
	* src/tables.h: Adjust YYDEFACT documentation.
	* tests/input.at (%define lr.default_rules invalid values):
	Rename test group to...
	(%define lr.default_reductions invalid values): ... this, and
	update grammar file and expected output.
	* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to...
	(AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.

2009-04-21  Akim Demaille  <demaille@gostai.com>

	tests: check the use of dashes and periods in symbols.
	* tests/input.at (Symbol): New test group.

2009-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Document %define lr.type and lr.default_rules.
	* NEWS (2.5): Add an entry.
	* src/getargs.c (usage): Mention IELR(1) and canonical LR(1)
	besides just LALR(1) and GLR(1).
	* doc/bison.texinfo (Introduction): Likewise.
	(Language and Grammar): Bison is no longer limited to LALR(1)
	restrictions.
	(GLR parsing): Say deterministic or LR(1) rather than LALR(1)
	when trying to distinguish from GLR.  Talk about LR(1) grammars
	rather than LALR(1) grammars.
	(Decl Summary): In %define api.push_pull entry, say it applies
	to deterministic parsers in C rather than LALR(1) parsers in C.
	Add lr.default_rules entry.
	Add lr.type entry.
	(Mystery Conflicts): Bison is no longer limited to LALR(1)
	restrictions.
	(Generalized LR Parsing): Same changes as for the previous GLR
	section.
	(Memory Management): Say deterministic rather than LALR(1).
	(Understanding): Correct some bison output.
	Index discussion of "accepting state".
	Say deterministic rather than LALR(1).
	(Bison Options): In --yacc entry, say deterministic rather than
	LALR(1).
	In --report, --graph, and --xml entries, just don't mention
	LALR(1).
	(C++ Parsers): Say deterministic rather than LALR(1).
	(Table of Symbols): Likewise in YYSTACK_USE_ALLOCA entry.
	(Glossary): Add Accepting State, Consistent State, Default Rule,
	and IELR(1) definitions.
	In Generalized LR (GLR) definition, make same changes as in
	previous GLR sections.
	In LALR(1) definition, say Bison uses LALR(1) by default rather
	than implying Bison is limited to LALR(1).
	(LocalWords): Add IELR.

2009-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Finish implementing %define lr.type.
	Its value can be "LALR", "IELR", or "canonical LR".
	* lib/timevar.def (TV_IELR_PHASE1): New var.
	(TV_IELR_PHASE2): New var.
	(TV_IELR_PHASE3): New var.
	(TV_IELR_PHASE4): New var.
	* src/Makefile.am (bison_SOURCES): Add AnnotationList.c,
	AnnotationList.h, InadequacyList.c, InadequacyList.h, Sbitset.c,
	Sbitset.h, ielr.h, and ielr.c.
	* src/getargs.h, src/getargs.c (enum trace, trace_args,
	trace_types): Add trace_ielr.
	* src/lalr.h, src/lalr.c (ngotos): Export it.
	(F): Rename to...
	(goto_follows): ... this, update all uses, and export it.
	(set_goto_map): Export it.
	(map_goto): Export it.
	(compute_lookahead_tokens): Don't free goto_follows yet.  Now
	handled in ielr.
	(initialize_LA): Export it.  Move lookback allocation to...
	(lalr): ... here because, for canonical LR, initialize_LA must
	be invoked but lookback and much of the rest of LALR isn't
	needed.
	* main.c (main): Instead of lalr, invoke ielr, which invokes
	lalr.
	* src/reader.c (reader): Default lr.type to "LALR".
	Default lr.default_rules to "accepting" if lr.type is "canonical
	LR".  Leave the default as "all" otherwise.
	Check for a valid lr.type value.
	* src/state.h, src/state.c (struct state_list): Add state_list
	member.
	(state_new): Initialize state_list member to NULL.
	(state_new_isocore): New function, exported.
	* tests/existing.at (AT_TEST_EXISTING_GRAMMAR): New macro that
	exercises all values of lr.type.
	(GNU AWK Grammar): Rename test group to...
	(GNU AWK 3.1.0 Grammar): ... this, and extend to use
	AT_TEST_EXISTING_GRAMMAR.
	(GNU Cim Grammar): Extend to use AT_TEST_EXISTING_GRAMMAR.
	(GNU pic Grammar): Rename test group to...
	(GNU pic (Groff 1.18.1) Grammar): ... this, and extend to use
	AT_TEST_EXISTING_GRAMMAR.
	* tests/reduce.at (AT_TEST_LR_TYPE): New macro that exercises
	all values of lr.type.
	(Single State Split): New test groups using AT_TEST_LR_TYPE.
	(Lane Split): Likewise.
	(Complex Lane Split): Likewise.
	(Split During Added Lookahead Propagation): Likewise.

2009-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add new files for IELR and canonical LR implementation.
	* src/AnnotationList.c: New.
	* src/AnnotationList.h: New.
	* src/InadequacyList.c: New.
	* src/InadequacyList.h: New.
	* src/Sbitset.c: New.
	* src/Sbitset.h: New.
	* src/ielr.c: New.
	* src/ielr.h: New.

2009-04-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Implement %define lr.default_rules.
	Its value describes the states that are permitted to contain
	default rules: "all", "consistent", or "accepting".
	* src/reader.c (reader): Default lr.default_rules to "all".
	Check for a valid lr.default_rules value.
	* src/lalr.c (state_lookahead_tokens_count): If lr.default_rules
	is "accepting", then only mark the accepting state as
	consistent.
	(initialize_LA): Tell state_lookahead_tokens_count whether
	lr.default_rules is "accepting".
	* src/tables.c (action_row): If lr.default_rules is not "all",
	then disable default rules in inconsistent states.
	* src/print.c (print_reductions): Use this opportunity to
	perform some assertions about whether lr.default_rules was
	obeyed correctly.
	* tests/local.at (AT_TEST_TABLES_AND_PARSE): New macro that
	helps with checking the parser tables for a grammar.
	* tests/input.at (%define lr.default_rules invalid values): New
	test group.
	* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): New macro using
	AT_TEST_TABLES_AND_PARSE.
	(`no %define lr.default_rules'): New test group generated by
	AT_TEST_LR_DEFAULT_RULES.
	(`%define lr.default_rules "all"'): Likewise.
	(`%define lr.default_rules "consistent"'): Likewise.
	(`%define lr.default_rules "accepting"'): Likewise.

2009-04-20  Akim Demaille  <demaille@gostai.com>

	Formatting change.

2009-04-20  Akim Demaille  <demaille@gostai.com>

	bison: factoring.
	* src/output.c (token_definitions_output): Use symbol_id_get
	instead of duplicating its logic.
	* TODO (YYERRCODE): Extend.

2009-04-20  Akim Demaille  <demaille@gostai.com>

	variables: prefer error-verbose to error_verbose.
	* data/bison.m4 (b4_error_verbose_if): Based on error-verbose
	instead of error_verbose.
	* src/scan-gram.l (%error-verbose): Map to the error-verbose
	variable.
	* doc/bison.texinfo: Promote %define error-verbose instead of
	%error-verbose.
	* tests/actions.at: Prefer %define error-verbose to %error-verbose.

2009-04-15  Akim Demaille  <demaille@gostai.com>

	variables: accept dashes.
	* data/bison.m4 (b4_percent_define_if_define_): Also map dashes to
	underscores.
	* src/scan-gram.l ({id}): Also accept dashes after the initial
	letter.
	({directive}): Use {id}.
	* src/parse-gram.y: Comment and formatting changes.
	* doc/bison.texinfo (Symbols): Adjust the lexical definitions of
	symbols.
	* src/complain.h, src/complain.c (yacc_at): New.
	* src/symtab.c (symbol_new): Use yacc_at to report inappropriate
	symbol names.
	* src/output.c (token_definitions_output): Do not #define token
	names with dashes.

2009-04-20  Akim Demaille  <demaille@gostai.com>

	Consistently refer to Yacc, not YACC.
	* src/getargs.c (usage, warnings_args): s/YACC/Yacc/.

2009-04-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Pacify make maintainer-check-posix.
	* tests/input.at (%define, --define): Move bison command-line
	options before grammar file name.

2009-04-04  Joel E. Denny  <jdenny@ces.clemson.edu>

	Document semicolon warnings.
	* NEWS (2.5): Here.

2009-04-14  Akim Demaille  <demaille@gostai.com>

	variables: use `parse.assert' instead of `assert'.
	* TODO (assert): Remove.
	* data/bison.m4 (b4_assert_if): Replace with...
	(b4_parse_assert_if): this.
	* data/lalr1.cc, data/variant.hh, tests/c++.at: Adjust.
	* doc/bison.texinfo (Decl Summary): Document parse.assert.

2009-04-14  Akim Demaille  <demaille@gostai.com>

	variables: use `parse.trace' instead of `debug'.
	* src/getargs.c (getargs): Map -t to %define trace.parse.
	* src/scan-gram.l (%debug): Map to %define trace.parse.
	* data/bison.m4 (b4_percent_define_if_define): Map `.' in variable
	names to `_' in macro names.
	(b4_debug_if): Replace with...
	(b4_parse_trace_if): this.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
	* data/yacc.c: Adjust.
	* doc/bison.texinfo (Decl Summary): Document %debug as obsoleted.
	Use @code to label the variable list.
	Document the variable parse.trace.
	(Tracing): Promote the parse.trace variable.
	* TODO: %printer is not documented.

2009-04-14  Akim Demaille  <demaille@gostai.com>

	doc: minor fixes.
	* doc/bison.texinfo (Decl Summary): Fix entry about %debug.
	(Table of Symbols): Remove duplicate entry for %debug.

2009-04-10  Eric Blake  <ebb9@byu.net>

	submodules: update to latest
	* submodules/autoconf: Use latest upstream Autoconf.

2009-04-06  Eric Blake  <ebb9@byu.net>

	Work around autoconf 2.63b bug in testsuite.
	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Avoid tripping
	autoconf bug related to # in test.

2009-04-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.5): New section.  Describe new -D/--define feature.

2009-04-06  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.c: Regen.

2009-04-06  Akim Demaille  <demaille@gostai.com>

	rename muscle_tab.* as muscle-tab.* for consistency.
	* src/muscle_tab.h, src/muscle_tab.c: Rename as...
	* src/muscle-tab.h, src/muscle-tab.c: these.
	* src/getargs.c, src/local.mk, src/main.c, src/output.c,
	* src/parse-gram.y, src/reader.c, src/scan-code.l: Adjust.

2009-04-06  Akim Demaille  <demaille@gostai.com>

	Makefile: introduce $(BISON).
	* src/local.mk (BISON): New.
	(YACC): Use it.

2009-04-06  Akim Demaille  <demaille@gostai.com>

	parser: handle %locations as %define locations.
	* src/getargs.h, src/getargs.c (locations_flag): Remove.
	* src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
	to set "locations" to true.
	* src/output.c (prepare): Don't output "locations".
	* src/scan-gram.l (%locations): Handle it as a %<flag>.
	* src/parse-gram.y: It's no longer a token.
	Don't handle it.
	* data/bison.m4 (b4_locations_if): Define it with
	b4_percent_define_if_define.
	* data/c.m4, data/glr.cc: Adjust.

2009-04-06  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.c: Regen.

2009-04-06  Akim Demaille  <demaille@gostai.com>

	muscle: factor the handling of obsolete of obsolete directives.
	Suggested by Joel E. Denny.

	* src/muscle_tab.h, src/muscle_tab.c (muscle_percent_define_ensure):
	New, extracted from...
	* src/parse-gram.y (prologue_declaration: pure-parser): here.
	Remove it.
	(prologue_declaration: "%<flag>"): Use
	muscle_percent_define_ensure.
	(%error-verbose, %pure-parser): No longer tokens.
	* src/scan-gram.l (pure-parser): Return as a %<flag>.

2009-04-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix options documentation.
	* build-aux/cross-options.pl: As in --help output, write optional
	arguments as [=ARG] not =[ARG].
	* doc/bison.texinfo (Bison Options): Add -W/--warnings argument.

2009-04-04  Joel E. Denny  <jdenny@ces.clemson.edu>

	Replace BISON_PROG_GNU_M4 with Autoconf's AC_PROG_GNU_M4.
	If the first m4 in $PATH is wrong, it keeps looking.  Moreover, its
	requirements for a correct m4 are stricter.
	* m4/m4.m4: Make it a symbolic link to submodules/autoconf/m4/m4.m4.
	* configure.ac: Update to use AC_PROG_GNU_M4.
	Reported by Eric Blake.

2009-04-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	Help with updating web manual.
	* HACKING: Incorporate instructions from gnulib/doc/README.
	* bootstrap.conf (gnulib_modules): Add gendocs.

2009-04-03  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.c: Regen.

2009-04-03  Akim Demaille  <demaille@gostai.com>

	Factor %FLAG at scan level.
	* src/parse-gram.y (PERCENT_DEBUG, PERCENT_ERROR_VERBOSE): Token
	definitions and associated rules, replaced by....
	(PERCENT_FLAG): this new token type, and rule.
	* src/scan-gram.l (RETURN_PERCENT_FLAG): New.
	Use it for %debug and %error-verbose.

2009-04-03  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.c: Regen.

2009-04-03  Akim Demaille  <demaille@gostai.com>

	Treat %debug as %define debug.
	* data/bison.m4 (b4_debug_if): New.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c,
	* data/lalr1.java: Use it instead of b4_debug_flag.
	* src/getargs.h, src/getargs.c (debug_flag): Remove.
	* src/output.c (prepare): Don't output it.
	* src/parse-gram.y: Treat %debug as %define debug.

2009-04-03  Akim Demaille  <demaille@gostai.com>

	Treat %error-verbose as %define error_verbose.
	This allows to pass -Derror_verbose on the command line.  Better
	yet, it allows to pass -Derror_verbose=$(ERROR_VERBOSE), with
	ERROR_VERBOSE being defined as false or true.
	* data/bison.m4 (b4_percent_define_if_define): Instead of relying
	on b4_percent_define_ifdef, for does not check the defined value,
	but only whether the symbol is defined, rely on
	b4_percent_define_flag_if, so that a value of "false" is processed
	as a false.
	If not defined, define the flag to "false".
	(b4_error_verbose_if): New.
	* data/glr.c, data/lalr1.cc, data/yacc.c: Use it instead of
	b4_error_verbose_flag.
	* src/getargs.h, src/getargs.c (error_verbose_flag): Remove.
	* src/output.c (prepare): Don't output it.
	* src/parse-gram.y (%error-verbose): Treat as %define error_verbose.

2009-04-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix strange %define locations for default values.
	Reported by Akim Demaille at
	<http://lists.gnu.org/archive/html/bug-bison/2007-12/msg00001.html>
	and discussed again starting at
	<http://lists.gnu.org/archive/html/bison-patches/2008-11/msg00102.html>.
	* data/bison.m4 (b4_percent_define_default): Leave syncline blank
	because location information is bogus.
	Use angle brackets to delimit fake file name because square brackets
	look like underexpanded m4.  Choose a better fake file name.
	Use negative line numbers.
	* src/muscle_tab.c (muscle_percent_define_default): Likewise.
	* src/location.c (location_print): If line for a boundary is negative,
	only print that boundary's file name.
	* src/location.h: Document that.
	* tests/skeletons.at (%define Boolean variables: invalid skeleton
	defaults): Update output.

2009-04-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	Pacify ./configure --enable-gcc-warnings.
	* Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS) because many files
	in lib won't compile with it.
	* src/local.mk (src_bison_CFLAGS): Use $(WERROR_CFLAGS) here only.

2009-03-31  Akim Demaille  <demaille@gostai.com>

	bootstrap: --help to stdout.
	* bootstrap (usage): Don't send --help to stderr.
	Use a here doc instead of a long string.

2009-03-31  Akim Demaille  <demaille@gostai.com>

	bootstrap: README-hacking no longer exists
	* bootstrap (checkout_only_file): Set to HACKING.

2009-03-26  Akim Demaille  <demaille@gostai.com>

	doc: merge HACKING and README-hacking.
	Two files is confusing.
	Reported by Alexandre Duret-Lutz.

	* README-hacking: Merge into...
	* HACKING (Working from the repository): here.

2009-03-26  Akim Demaille  <demaille@gostai.com>

	doc: update README-hacking.
	* README-hacking: We now use git and git submodules.
	Reported by Ralf Wildenhues and Alexandre Duret-Lutz.

2009-03-26  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: avoid GCC 4.3 warnings.
	GCC 4.3 now warns about "a || b && c" and asks for explicit
	parentheses.
	Reported by Alexandre Duret-Lutz.
	* data/location.cc: Update copyright years.
	(Position::operator==): Use parens to make precedence explicit.
	Compare lines and columns first, as they are more likely to be
	different, and they are faster to compare.

2009-03-26  Akim Demaille  <demaille@gostai.com>

	gnulib: update.
	* gnulib: Update to latest.
	* src/local.mk (AM_CFLAGS): Move to...
	* Makefile.am: here.
	* etc/prefix-gnulib-mk (prefix_assignment): Also transform
	AM_CFLAGS.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Comment changes.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Share b4_yytranslate_define.
	* data/lalr1.cc (b4_yytranslate_define): Move to...
	* data/c++.m4: here.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Use locations in the variant example.
	Yes, this obfuscates the point of this example, variants only.
	But glr.cc cannot work (yet?) without locations.  This change
	makes it easier to use this example with glr.cc.

	* examples/variant.yy (assert): %define it.
	(locations): Request them.
	(yylex): Bind the location to the stage.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Dub make_TOKEN as a public type interface.
	* data/c++.m4 (b4_symbol_constructor_declare)
	(b4_symbol_constructor_define): New empty stubs.
	(b4_public_types_declare, b4_public_types_define): Use them.
	* data/lalr1.cc (b4_symbol_constructor_declare)
	(b4_symbol_constructor_declare_)
	(b4_symbol_constructor_define_, b4_symbol_constructor_define):
	Move to...
	* data/variant.hh: here.
	Remove the "b4_variant_if" parts, as variant.hh is loaded only if
	needed.
	* data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
	b4_symbol_constructor_declare, as it is now done by
	b4_public_types_define and b4_public_types_declare.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Coding style changes.
	* data/lalr1.cc (b4_symbol_constructor_declaration_)
	(b4_symbol_constructor_declarations)
	(b4_symbol_constructor_definition_)
	(b4_symbol_constructor_definitions)
	(b4_yytranslate_definition): Rename as...
	(b4_symbol_constructor_declare_)
	(b4_symbol_constructor_declare)
	(b4_symbol_constructor_define_)
	(b4_symbol_constructor_define)
	(b4_yytranslate_define): these.
	* data/variant.hh (b4_variant_definition): Rename as...
	(b4_variant_define): this.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Factor b4_assert_if, b4_lex_symbol_if, and b4_variant_if.
	* data/bison.m4 (b4_percent_define_if_define): New.
	* data/c++.m4 (b4_variant_if): Move to...
	* data/bison.m4: Here, using b4_percent_define_if_define.
	* data/lalr1.cc (b4_assert_if, b4_lex_symbol_if): Move to...
	* data/bison.m4: Here, using b4_percent_define_if_define.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	Dub symbol_type_base as a public type.
	* data/c++.m4 (b4_public_types_declare): Now define
	symbol_type_base and symbol_type.
	(b4_public_types_define): New.
	In both cases, the definitions are taken verbatim from lalr1.cc.
	* data/lalr1.cc: Adjust.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	b4_public_types_declare.
	* data/c++.m4 (b4_public_types_declare): New.
	* data/glr.cc, data/lalr1.cc: Use it.

2009-03-02  Akim Demaille  <demaille@gostai.com>

	b4_semantic_type_declare.
	* data/c++.m4 (b4_semantic_type_declare): New.
	Factors and generalizes what was in glr.cc and lalr1.cc.
	* data/variant.hh (b4_semantic_type_declare): Redefine it for
	variants.
	* data/lalr1.cc, data/glr.cc: Use it.

2009-02-26  Akim Demaille  <demaille@gostai.com>

	Upgrade gnulib.
	* gnulib: Upgrade from master.
	* lib/.cvsignore, lib/.gitignore, m4/.cvsignore, m4/.gitignore:
	Regen.

2009-02-25  Akim Demaille  <demaille@gostai.com>

	Remove useless arguments.
	* data/glr.c (yy_reduce_print): $$ and @$ are not used and not
	relevant.

2009-02-25  Akim Demaille  <demaille@gostai.com>

	Comment changes.
	* data/lalr1.cc: here.

2009-02-25  Akim Demaille  <demaille@gostai.com>

	Fix glr.cc's debug level handling.
	* data/glr.cc (yydebug_): Remove, as it is actually yydebug from
	glr.c which is used.
	(debug_level, set_debug_level): Adjust.

2009-02-25  Akim Demaille  <demaille@gostai.com>

	Copyright years.
	* data/glr.c: Add 2007 and 2008 here, consistenly with the comments.

2009-02-25  Akim Demaille  <demaille@gostai.com>

	Style changes.
	* etc/bench.pl.in (generate_grammar_list): Consitently use
	location_type, not yy::location.

2009-02-25  Akim Demaille  <demaille@gostai.com>

	Comment change.
	* data/lalr1.cc: here.

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Make yyparser::error public.
	* data/lalr1.cc: here.
	There is no good reason to keep it private (and it is convenient
	to use it from the scanner for instance).  It is already public in
	glr.cc.

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Comment changes.
	* data/glr.cc: here.

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Remove trailing blanks.
	The epilogue has its own ending \n, no need to add another.

	* data/glr.c, data/lalr1.java, data/yacc.c: dnl when outputing the
	epilogue.
	* data/glr.cc: dnl when extending the epilogue.
	Remove stray "private:".

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Use b4_c_modern.
	* data/c.m4 (b4_c_function_decl): Here.

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Comment changes.
	* data/lalr1.cc: here.

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Extract variant.hh
	* data/variant.hh: New, extracted from...
	* data/lalr1.cc: here.
	Adjust.
	* data/local.mk: Adjust.

2009-02-19  Akim Demaille  <demaille@gostai.com>

	Extract stack.hh from lalr1.cc.
	* data/stack.hh: New.
	* data/lalr1.cc: Extract from here.
	* data/local.mk: Adjust.

2009-02-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add reminder about uploading public key to keys.gnupg.net.
	* HACKING (Release Procedure): Here.

2009-01-28  Akim Demaille  <demaille@gostai.com>

	* NEWS: Update information about 2.4.1 and 2.4.2.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Reformat NEWS.
	* NEWS: Use more outline-mode markup.
	Suggested by Jim Meyering.

2009-01-08  Akim Demaille  <demaille@gostai.com>

	Fix grep portability issues.
	Grep on Solaris does not support -q.
	Reported by Summum Bonum.

	* NEWS: Add a stub for 2.4.2.
	* THANKS: Add Summum Bonum.
	* tests/atlocal.in (EGREP): New.
	(CC, CXX, XSLTPROC): Make it possible to override them via
	envvars.
	* tests/java.at: Use $EGREP instead of egrep.
	Use AT_CHECK's ignore instead of grep's -q.

2008-12-11  Akim Demaille  <demaille@gostai.com>

	Pass the token type to yysyntax_error.
	* data/yacc.c (yysyntax_error): Take the transated token instead
	of the raw number.
	Adjust callers.
	* TODO: Update.

2008-12-11  Akim Demaille  <demaille@gostai.com>

	Formatting changes.
	* data/glr.c: Formatting changes.

2008-12-11  Akim Demaille  <demaille@gostai.com>

	Propagate i18n changes into glr.c.
	* TODO: Update.
	* data/glr.c (yyreportSyntaxError): Use "switch" instead of
	building the error message format dynamically.
	* data/lalr1.java: Formatting changes.

2008-12-11  Akim Demaille  <demaille@gostai.com>

	Use testsuite -C.
	* tests/local.mk: Replace "cd && testsuite" by "testsuite -C".
	Solves problems when top_srcdir is an absolute path.
	Suggested by Eric Blake.
	* configure.ac: Require Autoconf 2.62.

2008-12-11  Akim Demaille  <demaille@gostai.com>

	Simplify the i18n of the error messages.
	* data/lalr1.cc: Comment changes.
	* data/yacc.c (yysyntax_error): Rewrite, using a switch as in
	lalr1.cc instead of building dynamically the format string.

2008-12-08  Akim Demaille  <demaille@gostai.com>

	Fix portability issue in the test suite.
	* tests/local.at (AT_MATCHES_CHECK): New.
	Based on Perl instead of Sed.  Sed has too many portability
	pitfalls, not ever Sed is GNU Sed.
	* tests/actions.at (Fix user actions without a trailing semicolon):
	Use it.

2008-12-08  Akim Demaille  <demaille@gostai.com>

	Update data/README.
	* data/README: Document glr.cc, lalr1.java, m4sugar and xslt.

2008-12-08  Akim Demaille  <demaille@gostai.com>

	Install autoconf as a submodule to get m4sugar.
	* .gitmodules: Add submodules/autoconf.
	* data/m4sugar/foreach.m4, data/m4sugar/m4sugar.m4: Now links into
	submodules/autoconf.

2008-12-08  Akim Demaille  <demaille@gostai.com>

	Test token.prefix in all the skeletons.
	* data/java.m4 (b4_token_enum): Use the token.prefix.
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS): Define AT_TOKEN_PREFIX.
	* tests/calc.at (_AT_DATA_CALC_Y): Use it.
	Add checks for yacc.c, glr.c, lalr1.cc and glr.cc.
	* tests/java.at: Comment changes.
	(AT_CHECK_JAVA_MINIMAL): Define the END token.
	(Java parser class and package names): Add token.prefix check.

2008-12-08  Akim Demaille  <demaille@gostai.com>

	Fix regeneration of atconfig.
	* tests/local.mk (tests/atconfig): The rule was incorrect, but
	remove it: now that there is no tests/Makefile.am, the top-level
	Makefile properly updates atconfig when needed.

2008-12-07  Di-an Jan  <dianj@freeshell.org>

	Implement the FIXME that ends an user action with a semicolon
	if it seems necessary.
	* src/scan-code.l (flex rules section): Flag cpp directive from
	any `#' to the first unescaped end-of-line.  Semicolon is not
	needed after `;', `{', '}', or cpp directives and is needed after
	any other token (whitespaces and comments have no effect).
	* tests/actions.at (Fix user actions without a trailing semicolon):
	New test.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Add semicolons to
	to make user actions complete statements.
	Adjust column numbers in error messages.
	* tests/regression.at (Fix user actions without a trailing semicolon):
	Remove.  Covered by new test.

2008-12-07  Akim Demaille  <demaille@gostai.com>

	Update gnulib.
	* gnulib: Update from master.

2008-12-05  Eric Blake  <ebb9@byu.net>

	Avoid compiler warning.
	* src/output.c (muscle_insert_item_number_table): Delete unused
	function.

2008-12-02  Eric Blake  <ebb9@byu.net>

	Build testsuite with newer autoconf.
	* tests/output.at (m4_expand): Don't override in newer autoconf,
	where the underlying implementation changed.
	* tests/cxx-type.at (_AT_RESOLVED_GLR_OUTPUT)
	(_AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_AMBIG_GLR_OUTPUT)
	(_AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR)
	(_AT_VERBOSE_GLR_STDERR): Expand to double-quoted strings,
	since some of them contain unbalanced ')'.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	Use b4_symbol for printers and destructors everywhere.
	* data/bison.m4 (b4_symbol_action_location): New.
	* data/c.m4 (b4_symbol_actions): Remove.
	Adjust all callers to use by b4_symbol_foreach and the corresponding
	b4_symbol_printer/destructor macro.
	* data/glr.cc: Adjust.
	* data/lalr1.java: Adjust the %destructor sanity check.
	* src/output.c (symbol_code_props_output): Remove, we no longer
	need the b4_symbol_printers/destructors tables.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	Use b4_symbol_case_.
	* data/lalr1.cc, data/bison.m4 (b4_symbol_action): Use
	b4_symbol_case_.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	Move b4_symbol based macro to bison.m4.
	* data/lalr1.cc (b4_symbol_, b4_symbol, b4_symbol_if)
	(b4_symbol_action, b4_symbol_destructor, b4_symbol_printer)
	(b4_symbol_case_, b4_symbol_foreach, b4_type_action_)
	(b4_type_foreach): Move to...
	* data/bison.m4: Here.
	* data/lalr1.cc (b4_symbol_action): Specialize for C++: use
	b4_symbol_value_template instead of b4_symbol_value.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	b4_symbol/type_foreach.
	* data/lalr1.cc (b4_symbol_foreach, b4_type_foreach): New.
	Use them.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	Use the symbol properties to output the printer/destructor for lalr1.cc.
	Instead of defining complex list of tuples to define various
	properties of the symbols, we now prefer to define symbols as
	"structs" in m4: using the symbol key (its number), and the
	property name, b4_symbol gives it value.  Use this to handle
	destructors and printers.

	* src/output.c (CODE_PROP): New.
	(prepare_symbol_definitions): Use it to define the printer and
	destructor related attributes of the symbols.
	* data/lalr1.cc (b4_symbol_actions): Rename as...
	(b4_symbol_action): this.
	Use b4_symbol instead of 6 arguments.
	(b4_symbol_printer, b4_symbol_destructor): New.
	Use them instead of b4_symbol_actions.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	Avoid capturing variables too easily.
	* src/muscle_tab.h (MUSCLE_INSERT_BOOL, MUSCLE_OBSTACK_SGROW): Use
	v__ and p__ instead of v and p.

2008-12-01  Akim Demaille  <demaille@gostai.com>

	Remove spurious empty line before syncline.
	* data/bison.m4 (b4_syncline): Don't output an empty line before
	the output.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Convert lib/Makefile.am into lib/local.mk.
	The real problem is rather gnulib.mk, which itself is extracted
	from a Makefile.am that gnulib expects to the "recursive".  The
	tool prefix-gnulib-mk converts such a gnulib.mk to be
	non-recursive.  Also, some AC_SUBST variables need to be adjusted.

	* etc/prefix-gnulib-mk: New.
	* bootstrap (slurp): Use it to convert further gnulib.mk.
	No longer try to avoid re-creation of lib/gnulib.mk as the changes
	are deeper.
	* lib/Makefile.am: Rename as...
	* lib/local.mk: this.
	Adjust to be prefixed.
	* Makefile.am, configure.ac: Adjust.
	* src/local.mk (AM_CPPFLAGS): Extend it, don't define it.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	s/_FLAGS/FLAGS/.
	* tests/local.mk (TESTSUITE_FLAGS, AUTOTEST_FLAGS): Rename as...
	(TESTSUITEFLAGS, AUTOTESTFLAGS): these to compy with the GCS.
	Reported by Eric Blake.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Use b4_parser_tables_define in glr.cc.
	* data/glr.c: Use b4_parser_tables_define instead of defining the
	(deterministic integral) tables by hand.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Use b4_parser_tables_define in Java.
	* data/java.m4 (b4_typed_parser_table): Rename as...
	(b4_typed_parser_table_define): this, for consistency.
	Accept a comment as $4.
	Move $2 into yy*_.
	(b4_integral_parser_table): Rename as...
	(b4_integral_parser_table_define): this.
	* data/lalr1.java: Adjust all uses.
	Use b4_parser_tables_define instead of generation by hand.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Prepare the convergence bw C style and Java table generation.
	* data/bison.m4 (b4_tables_map, b4_tables_declare)
	(b4_tables_define): Rename as...
	(b4_integral_parser_tables_map, b4_parser_tables_declare)
	(b4_parser_tables_define): these.
	* data/c.m4 (b4_table_define): Rename as...
	(b4_integral_parser_table_define): this.
	* data/lalr1.cc: Adjust.
	(b4_table_define, b4_table_declare): Rename as...
	(b4_integral_parser_table_define)
	(b4_integral_parser_table_declare): these.
	(yyrline_): Move the comment where it is actually used.
	* data/yacc.c: Adjust.
	(yyrline): Use b4_integral_parser_table_define.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.c: Regen.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Factor the generation of the (integral) tables bw yacc.c and lalr1.cc.
	* data/lalr1.cc (b4_tables_map): Move to...
	* data/bison.m4: here.
	Update the comment for yytable during the flight.
	(b4_tables_declare, b4_tables_define): New.
	* data/lalr1.cc: Use them.
	* data/c.m4 (b4_table_define): New.
	* data/yacc.c: Use b4_tables_define instead of output the tables
	by hand.
	* tests/regression.at (Web2c Actions): Adjust the expected output,
	the order of the tables changed.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Get rid of (yy)rhs and (yy)prhs.
	These tables are no longer needed in the parsers, and they don't seem to
	be useful.  They are not documented either.

	* src/output.c (prepare_rules): Get rid of rhs and prhs.
	Adjust the computation of (yy)r2.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Rule length is unsigned.
	* src/gram.h, src/gram.c (rule_rhs_length): Return a size_t.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Get rid of lalr1-split.cc.
	It was no longer maintainer.

	* data/lalr1-split.cc: Remove.
	* etc/bench.pl.in (bench_fusion_parser): Remove.
	Adjust.

2008-11-26  Akim Demaille  <demaille@gostai.com>

	Use yy* consistently.
	* data/glr.c: Now that yyrhs no longer exists as a global
	variable, rename local "rhs" variables into "yyrhs" for
	consistency.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Get rid of yyrhs and yyprhs in glr.c.
	* data/glr.c (yyrhs, yyprhs): Remove.
	Instead, use the state stack and yystos.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Flag glr tests.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): If glr, declare it
	as an Autotest keyword.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Prefer TESTSUITE_FLAGS.
	TESTSUITEFLAGS is barely readable.

	* tests/local.mk (TESTSUITE_FLAGS): Default to $(TESTSUITEFLAGS)
	for backward compatibility.
	Use the former instead of the latter.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Get rid of yyrhs and yyprhs in larl1.java.
	* data/lalr1.java (yyrhs_, yyprhs_): Remove.
	(yy_reduce_print): Rather, use yystos_ and the state stack.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Formatting changes.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Get rid of yyrhs and yyprhs in yacc.c.
	They were used to get the symbol types, given a rule number, when
	displaying the top of the stack before a reduction.  But the
	symbol type is available from the state stack.  This has two be
	benefits: two tables less in the parser (making it smaller), and a
	more consistent use of the three stacks which will help to fuse
	them.

	* data/yacc.c (yyprhs, yyrhs): Remove.
	(YY_REDUCE_PRINT): Pass yyssp to yy_reduce_print.
	(yy_reduce_print): Take yyssp as argument.
	Use it, together with yystos, to get the symbol type.
	* tests/regression.at (Web2c Report): Remove these tables from the
	expected output.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	b4_tables_map.
	The point is to factor the generation of the tables across skeletons.
	This is language dependant.

	* data/c.m4 (b4_comment_): New.
	Should be usable to define how to generate tables independently of
	the language.
	(b4_c_comment): New.
	(b4_comment): Bounce to b4_c_comment.
	Now support $2 = [PREFIX] for indentation.
	* data/lalr1.cc (b4_table_declare): Don't output a comment if
	there is no comment.
	Indent it properly when there is one.
	Output the ending semicolon.
	(b4_table_define): Space changes.
	Output the ending semicolon.
	(b4_tables_map): New.
	Use it twice instead of declaring and defining the (integral)
	tables by hand.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	b4_table_declare.
	* data/lalr1.cc (b4_table_declare): New.
	Use it to declare the tables defined with b4_table_define.
	(b4_table_define): Declare a third arg to match b4_table_declare
	signature.
	Move all the comments around invocations of b4_table_define into
	the invocations itselves.
	Move things around to have the order for declarations and
	definitions.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	Formatting changes.
	* data/lalr1.java: here.

2008-11-25  Akim Demaille  <demaille@gostai.com>

	b4_args is more general than only C++.
	* data/lalr1.cc (b4_args, _b4_args): Move to...
	* data/bison.m4: here.

2008-11-21  Di-an Jan  <dianj@freeshell.org>

	Implement no-XXX arguments for --warnings, --report, --trace.
	* src/getargs.c (flags_argmatch): Handles no-XXX.
	Fix typo in doxygen comment.

2008-11-21  Akim Demaille  <demaille@gostai.com>

	Display the changes in cross-options.texi.
	* build-aux/cross-options.pl ($sep): New, to separate items.
	* doc/local.mk ($(CROSS_OPTIONS_TEXI)): Use diff to display the
	changes.

2008-11-20  Di-an Jan  <dianj@freeshell.org>

	Improves options in the manual.
	* doc/bison.texinfo (-g, -x): Add space before argument.
	(Option Cross Key): Implement FIXME: listing directives also.
	* build-aux/cross-options.pl:  Read from <STDIN> rather than <>.
	(Short Option): Special case -d.  Put arguments inside @option.
	(Bison Directive): Add column, automatically extracted from
	src/scan-gram.l (actual name passed as the first argument)
	with special case for %define.
	* doc/local.mk (doc/cross-options.texi): Pass src/scan-gram.l
	to build-aux/cross-options.pl.
	* src/getargs.c (usage): Document limitations of cross-options.pl.
	* src/scan-gram.l: Likewise.

2008-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix unexpanded macros in GLR defines file.
	Reported by Csaba Raduly at
	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00048.html>.
	* THANKS (Csaba Raduly): Add.
	* data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc.
	* tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate
	lexer in a separate module that includes the defines file.
	(AT_CHECK_CALC): From AT_FULL_COMPILE, request compilation of lexer
	source.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_DEFINES_IF.
	Adjust AT_LOC and AT_VAL to use AT_NAME_PREFIX.
	(AT_BISON_OPTION_POPDEFS): Pop AT_DEFINES_IF.
	(AT_DATA_SOURCE_PROLOGUE): New.
	(AT_DATA_GRAMMAR_PROLOGUE): Use AT_DATA_SOURCE_PROLOGUE.
	(AT_DATA_SOURCE): New.
	(AT_FULL_COMPILE): Extend to support an additional source file.

2008-11-18  Akim Demaille  <demaille@gostai.com>

	More TODO.
	* TODO: More short term issues.

2008-11-18  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.c: Regen.

2008-11-18  Akim Demaille  <demaille@gostai.com>

	Use b4_subtract where possible.
	* data/lalr1.cc (b4_subtract): Move to...
	* data/bison.m4: here.
	* data/glr.c (b4_rhs_data): Use it.
	* data/yacc.c (b4_rhs_value, b4_rhs_location): Use it.

2008-11-18  Akim Demaille  <demaille@gostai.com>

	Remove incorrect mode specification.
	* data/glr.cc: Don't pretend it's C code.

2008-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Simplify last patch slightly.
	* src/getargs.c (getargs): Here.

2008-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix last warning from --enable-gcc-warnings.
	* src/getargs.c (getargs): Don't assign const address to non-const
	pointer.

2008-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't let maintainer-*-check targets force a version update.
	* cfg.mk (_is-dist-target): Implement.  maintainer-check* was already
	handled.

2008-11-17  Di-an Jan  <dianj@freeshell.org>

	* doc/bison.texinfo: Synchronize ``Detail Node Listing''.
	Align menus.  Adjust word wrapping.  Use node names for menu names.
	(Examples): Don't abbreviate node names.
	(LocalWords): Remove abbreviations.
	(Copying): Make description a sentence.
	(Java Action Features): Remove period to match the rest of menu.

2008-11-17  Di-an Jan  <dianj@freeshell.org>

	Handles several --enable-gcc-warnings.
	* src/getargs.c (command_line_location): Set parameters to void.
	* src/output.c (symbol_type_name_cmp): Make static.
	(symbols_by_type_name): Set parameters to void.
	(symbol_definitions_output): Remove unused parameter.  Rename as...
	(prepare_symbol_definitions): this.
	(muscles_output): Move symbol_definitions_output to...
	(output): here as prepare_symbol_definitions.
	* tests/c++.at (AT_CHECK_VARIANTS): Remove unused parameters of main.
	(AT_CHECK_NAMESPACE): Make unused parameter lloc unnamed.

2008-11-17  Di-an Jan  <dianj@freeshell.org>

	* tests/c++.at (AT_CHECK_VARIANTS): Fixes tests 198-202.
	Use AT_DATA_GRAMMAR instead of AT_DATA for compiled tests.

2008-11-16  Akim Demaille  <demaille@gostai.com>

	Add missing $(EXEEXT).
	* doc/local.mk ($(CROSS_OPTIONS_TEXI)): The target is
	"src/bison$(EXEEXT)".
	Reported by Di-an Jan.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	* TODO: Update.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Formatting changes.
	* tests/input.at: here.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove duplicate header inclusion.
	* src/LR0.c: here.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	* src/parse-gram.h, src/parse-gram.c: Regen.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Support parametric types.

	There are two issues to handle: first scanning nested angle
	bracket pairs to support types such as std::pair< std::string,
	std::list<std::string> > >.

	Another issue is to address idiosyncracies of C++: do not glue two
	closing angle brackets together (otherwise it's operator>>), and
	avoid sticking blindly a TYPE to the opening <, as it can result
	in '<:' which is a digraph for '['.

	* src/scan-gram.l (brace_level): Rename as...
	(nesting): this.
	(SC_TAG): New.
	Implement support for complex tags.
	(tag): Accept
	, but not <.
	* data/lalr1.cc (b4_symbol_value, b4_symbol_value_template)
	(b4_symbol_variant): Leave space around types as parameters.
	* examples/variant.yy: Use nested template types and leading ::.
	* src/parse-gram.y (TYPE, TYPE_TAG_ANY, TYPE_TAG_NONE, type.opt):
	Rename as...
	(TAG, TAG_ANY, TAG_NONE, tag.opt): these.
	* tests/c++.at: Test parametric types.

2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>

	Test token.prefix.
	This is not sufficient, but we test at least that the make_SYMBOL
	interface is not affected by token.prefix.  A more general test
	will be implemented when the support of token.prefix is generalized
	to more skeletons.

	* tests/c++.at: One more variant test, using token.prefix.

2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>

	Test the make_TOKEN interface.
	* tests/c++.at (AT_CHECK_VARIANTS): Require and use locations.
	Factor the common code in yylex.
	Use it to test "%define lex_symbol".

2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>

	Formatting change.

2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>

	Simplify code for variants bench marks.
	* etc/bench.pl.in (&generate_grammar_list): Define and use
	location_type.
	Factor the common code in yylex.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Better error message.
	* bootstrap (find_tool): Fix the error message.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Update variant.yy to newest interface.
	* examples/variant.yy: Define lex_symbol.
	Adjust.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Don't use locations in variant.yy.
	* examples/variant.yy: Adjust to not using locations.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Comment changes.
	* data/local.mk, etc/local.mk, examples/local.mk: Use Automake
	comments for the license.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove tests/Makefile.am.
	* tests/Makefile.am: Rename as...
	* tests/local.mk: this.
	* Makefile.am, configure.ac: Adjust.
	* Makefile.am (DISTCLEANFILES): Define.
	(maintainer-check, maintainer-xml-check, maintainer-push-check):
	Remove, we no longer need to bounce to the real targets.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Comment changes.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	djgpp/local.mk.
	* Makefile.am (EXTRA_DIST): Move djgpp related part to...
	* djgpp/local.mk: this new file.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove doc/Makefile.am.
	* doc/Makefile.am: Rename as...
	* doc/local.mk: this.
	Adjust paths
	* Makefile.am, configure.ac: Adjust.
	* Makefile.am (MOSTLYCLEANFILES): New.
	* src/local.mk: Adjust.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Move sc_tight_scope into maint.mk.
	It does not work, and I don't know how it was supposed to work: it
	seems to be looking for sources in the build tree.  I just moved
	it at a better place, fixing it is still required.

	* src/local.mk (echo): Remove.
	(sc_tight_scope): Move to...
	* maint.mk: here.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.h: Regen.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove src/Makefile.am.
	* src/Makefile.am: Rename as...
	* src/local.mk: this.
	Prefix all the paths with src/.
	(AUTOMAKE_OPTIONS): Build object files in the sub dirs.
	(AM_CPPFLAGS): Find find in builddir/src.
	(YACC): Move the flags into...
	(AM_YFLAGS): here.
	* maint.mk (sc_tight_scope): Disable.
	It used to bounce to the version in src/Makefile.am which is now
	part of this very Makefile.
	* Makefile.am, configure.ac: Adjust.
	* src/scan-code-c.c, src/scan-code.l: We can no longer rely on
	include "..." to find files "here": we are no longer in src/, so
	qualify the includes with src/.
	* doc/Makefile.am (PREPATH): No longer include the top_builddir
	prefix.
	(.x.1): Adjust to be able to create src/foo from the top level
	Makefile, instead of going bounce to src/Makefile the creation of
	foo.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove useless variable.
	* doc/Makefile.am (srcsrcdir): Remove.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove data/Makefile.am.
	* data/Makefile.am: Rename as...
	* data/local.mk: this.
	Adjust paths.
	* Makefile.am, configure.ac: Adjust.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove etc/Makefile.am.
	* etc/Makefile.am: Rename as...
	* etc/local.mk: this.
	Adjust.
	* Makefile.am, configure.ac: Adjust.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove examples/local.mk.
	examples/calc++/Makefile.am might be interesting to keep as is, since
	it is an example in itself.

	* examples/Makefile.am: Rename as...
	* examples/local.mk: this.
	Adjust.
	* Makefile.am, configure.ac: Adjust.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Remove build-aux/Makefile.am.
	Recursive Makefiles are really way too slow, let's get rid of some of
	them.

	* build-aux/Makefile.am: Rename as...
	* build-aux/local.mk: this.
	Adjust paths.
	* Makefile.am, configure.ac: Adjust.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Provide convenience constructors for locations and positions.
	* data/location.cc (position::position): Accept file, line and
	column as arguments with default values.
	Always qualify initial line and column literals as unsigned.
	(location::location): Provide convenience constructors.

2008-11-15  Akim Demaille  <demaille@gostai.com>

	Instead of using make_symbol<TOK_FOO>, generate make_FOO for each
	token type.
	Using template buys us nothing, and makes it uselessly complex to
	construct a symbol.  Besides, it could not be generalized to other
	languages, while make_FOO would work in C/Java etc.

	* data/lalr1.cc (b4_symbol_): New.
	(b4_symbol): Use it.
	(b4_symbol_constructor_declaration_)
	(b4_symbol_constructor_definition_): Instead of generating
	specializations of an overloaded template function, just generate
	several functions whose names are forged from the token names
	without the token.prefix.
	(b4_symbol_constructor_declarations): Generate them for all the
	symbols, not just by class of symbol type, now that instead of
	specializing a function template by the token, we generate a
	function named after the token.
	(b4_symbol_constructor_specialization_)
	(b4_symbol_constructor_specializations): Remove.
	* etc/bench.pl.in: Adjust to this new API.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	%define token.prefix.
	Provide a means to add a prefix to the name of the tokens as
	output in the generated files.  Because of name clashes, it is
	good to have such a prefix such as TOK_ that protects from names
	such as EOF, FILE etc.  But it clutters the grammar itself.

	* data/bison.m4 (token.prefix): Empty by default.
	* data/c.m4 (b4_token_enum, b4_token_define): Use it.
	* data/lalr1.cc (b4_symbol): Ditto.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Compute at M4 time some of the subtractions.
	* data/lalr1.cc (b4_subtract): New.
	(b4_rhs_data): Use it.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	symbol::token.
	This allows the user to get the type of a token returned by yylex.

	* data/lalr1.cc (symbol::token): New.
	(yytoknum_): Define when %define lex_symbol, independently of
	%debug.
	(yytoken_number_): Move into...
	(symbol::token): here, since that's the only use.
	The other one is YYPRINT which was not officially supported
	by lalr1.cc, and anyway it did not work since YYPRINT uses this
	array under a different name (yytoknum).

2008-11-13  Akim Demaille  <demaille@gostai.com>

	YYERRCODE.
	* TODO (YYERRCODE): Mention the case of $undef.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	TODO: YYPRINT.
	* TODO (YYPRINT): New.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Comment changes.
	* data/lalr1.cc, data/yacc.c: Fix the description of the
	yytranslate and yytoknum tables.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Define make_symbol in the header.
	To reach good performances these functions should be inlined (yet
	this is to measure precisely).  To this end they must be available
	to the caller.

	* data/lalr1.cc (b4_symbol_constructor_definition_): Qualify
	location_type with the class name.
	Since will now be output in the header, declare "inline".
	No longer use b4_symbol_constructor_specializations, but
	b4_symbol_constructor_definitions in the header.
	Don't call it in the *.cc file.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Define yytranslate in the header for lex_symbol.
	* data/lalr1.cc: Move the invocation of b4_yytranslate_definition
	into the header file when using %define lex_symbol.
	(yytranslate_): Declare inline.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Define the constructors of symbol_type in
	b4_symbol_constructor_definitions.
	The constructors are called by the make_symbol functions, which a
	forthcoming patch will move elsewhere.  Hence the interest of
	putting them together.

	The stack_symbol_type does not need to be moved, it is used only
	by the parser.

	* data/lalr1.cc: Move symbol_type and symbol_base_type
	constructors into...
	(b4_symbol_constructor_definitions): here.
	Adjust.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Make it easier to move the definition of yytranslate_.
	Forthcoming changes will make it possible to use yytranslate_
	from outside the parser implementation file.

	* data/lalr1.cc (b4_yytranslate_definition): New.
	Use it.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Remove useless class specification.
	* data/lalr1.cc (b4_symbol_constructor_specialization_): No need
	to refer to the class name to use a type defined by the class for
	arguments of member functions.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Finer input type for yytranslate.
	This patch is debatable: the tradition expects yylex to return an int
	which happens to correspond to token_number (which is an enum).  This
	allows for instance to return characters (such as '*' etc.).  But this
	goes against the stronger typing I am trying to have with the new
	lex interface which return a symbol_type.  So in this case, feed
	yytranslate_ with a token_type.

	* data/lalr1.cc (yytranslate_): When in %define lex-symbol,
	expect a token_type.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Honor lex-params in %define lex_symbol mode.
	* data/lalr1.cc: Use b4_lex_param.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Simplify names.
	* src/output.c (symbol_definitions_output): Rename symbol
	attributes type_name and has_type_name as type and has_type.
	* data/lalr1.cc: Adjust uses.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Use b4_type_names for the union type.
	The union used to compute the size of the variant used to iterate
	over the type of all the symbols, with a lot of redundancy.  Now
	iterate over the lists of symbols having the same type-name.

	* data/lalr1.cc (b4_char_sizeof_): New.
	(b4_char_sizeof): Use it.
	Adjust to be called with a list of numbers instead of a single
	number.
	Adjust its caller for new-line issues.

2008-11-13  Akim Demaille  <demaille@gostai.com>

	Define the "identifier" of a symbol.
	Symbols may have several string representations, for instance if
	they have an alias.  What I call its "id" is a string that can be
	used as an identifier.  May not exist.

	Currently the symbols which have the "tag_is_id" flag set are
	those that don't have an alias.  Look harder for the id.

	* src/output.c (is_identifier): Move to...
	* src/symtab.c (is_identifier): here.
	* src/symtab.h, src/symtab.c (symbol_id_get): New.
	* src/output.c (symbol_definitions_output): Use it to define "id"
	and "has_id".
	Remove the definition of "tag_is_id".
	* data/lalr1.cc: Use the "id" and "has_id" whereever "tag" and
	"tag_is_id" were used to produce code.
	We still use "tag" for documentation.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Locations are no longer required by lalr1.cc.
	* data/lalr1.cc (_b4_args, b4_args): New.
	Adjust all uses of locations to make them optional.
	* tests/c++.at (AT_CHECK_VARIANTS): No longer use the locations.
	(AT_CHECK_NAMESPACE): Check the use of locations.
	* tests/calc.at (_AT_DATA_CALC_Y): Adjust to be usable with or
	without locations with lalr1.cc.
	Test these cases.
	* tests/output.at: Check lalr1.cc with and without location
	support.
	* tests/regression.at (_AT_DATA_EXPECT2_Y, _AT_DATA_DANCER_Y):
	Don't use locations.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	AT_FULL_COMPILE.
	* tests/local.at (AT_FULL_COMPILE): New.
	* tests/actions.at, tests/calc.at, tests/regression.at: Use it.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Support parens in calc++.
	* doc/bison.texinfo (Calc++ Scanner, Calc++ Parser): Support parens.
	* examples/calc++/test (run): Check the expected output.
	Adjust callers.
	Check parens too.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Simplify lalr1.cc since %defines is mandatory.
	* data/lalr1.cc: Remove useless calls to b4_defines_if.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	TODO: yyfmt.
	* TODO (yysyntax_error): New item.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Prefer M4 to CPP.
	* data/lalr1.cc: Use b4_error_verbose_if instead of #if
	YYERROR_VERBOSE.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Support i18n of the parse error messages.
	* TODO (lalr1.cc/I18n): Remove.
	* data/lalr1.cc (yysyntax_error_): Support the translation of the
	error messages, as done in yacc.c.
	Stay within the yy* pseudo namespace.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	More TODO.
	* TODO (single stack, yysyntax_error): New.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Make it possible to return a symbol_type from yylex.
	* data/lalr1.cc (b4_lex_symbol_if): New.
	(parse): When lex_symbol is defined, expected yylex to return the
	complete lookahead.
	* etc/bench.pl.in (generate_grammar_list): Extend to support this
	yylex interface.
	(bench_variant_parser): Exercise it.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Remove useless bench case.
	* etc/bench.pl.in (bench_variant_parser): VARIANT_DESTROY is
	no longer used.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Improve display of directives.
	* etc/bench.pl.in (parse_term): Don't add useless eol.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Use string_cast in the bench.
	* etc/bench.pl.in (generate_grammar_list): Define and use
	string_cast.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Replace yychar with a Boolean.
	* data/lalr1.cc (parse::yychar): Replace by...
	(parse::yyempty): this.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Factor the tables.
	* TODO: New item.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Let yytranslate handle the eof case.
	* data/lalr1.cc (yytranslate_): Handle the EOF case.
	Adjust callers.
	No longer expect yychar to be equal to yyeof_, rather, test the
	lookahead's (translated) kind.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	yychar cannot be empty in yyerrlab.
	* TODO (yychar == yyempty_): New.
	* data/lalr1.cc: Remove the handling of this case.
	This eases forthcoming changes related to yychar and yytranslate.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Bench: syntactic sugar for %define/#define.
	* etc/bench.pl.in (parse_dirs): Support %d and #d with arguments.
	(&bench_push_parser, bench_variant_parser): Use this feature.
	(&eat): New.
	Use it.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Less memory pressure on the "list" bench.
	* etc/bench.pl.in (generate_grammar_list): Do not accumulate all
	the values, to limit memory pressure.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Introduce make_symbol.
	make_symbol provides a means to construct a full symbol (kind,
	value, location) in a single shot.  It is meant to be a Symbol
	constructor, parameterized by the symbol kind so that overloading
	would prevent incorrect kind/value pairs.  Unfortunately
	parameterized constructors do not work well in C++ (unless the
	parameter also appears as an argument, which is not acceptable),
	hence the use of a function instead of a constructor.

	* data/lalr1.cc (b4_symbol_constructor_declaration_)
	(b4_symbol_constructor_declarations)
	(b4_symbol_constructor_specialization_)
	(b4_symbol_constructor_specializations)
	(b4_symbol_constructor_definition_)
	(b4_symbol_constructor_definitions): New.
	Use them where appropriate to generate declaration, declaration of
	the specializations, and implementations of the templated
	overloaded function "make_symbol".
	(variant::variant): Always define a default ctor.
	Also provide a copy ctor.
	(symbol_base_type, symbol_type): New ctor overloads for value-less
	symbols.
	(symbol_type): Now public, so that functions such as yylex can use
	it.

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Inform m4 whether a tag is a valid id.
	* src/output.c (is_identifier): New.
	(symbol_definitions_output): Use it to define tag_is_id.
	But maybe this should be done at m4 level?

2008-11-11  Akim Demaille  <demaille@gostai.com>

	Test 214 was failing: it greps with a pattern containing [     ]*
	which obviously meant to catch spaces and tabs, but contained only
	spaces. Tabulations in sources are a nuisance, so to simplify the
	matter, get rid of all the tabulations in the Java sources.  The
	other skeletons will be treated equally later.

	* data/java.m4, data/lalr1.java: Untabify.
	* tests/java.at: Simplify AT_CHECK_JAVA_GREP invocations:
	tabulations are no longer generated.

2008-11-11  Paolo Bonzini  <bonzini@gnu.org>

	* bootstrap.conf: Replace m4/warning.m4 with warnings module.
	* configure.ac: Adjust usage.
	* lib/Makefile.am: Replace $(WARNING_CFLAGS) with $(WARN_CFLAGS).
	* src/Makefile.am: Replace $(WARNING_CFLAGS) with $(WARN_CFLAGS).
	* tests/atlocal.in: Replace $(WARNING_*FLAGS) with $(WARN_*FLAGS).

2008-11-10  Di-an Jan  <dianj@freeshell.org>

	Workaround Java's ``code too large'' problem for parser tables
	in most cases, by using one function per initialization.
	* data/java.m4 (b4_typed_parser_table, b4_integral_parser_table): New.
	* data/lalr1.java (yypact_, yydefact_, yypgoto_, yydefgoto_,
	yytable_, yycheck_, yystos_, yytoken_number_, yyr1_, yyr2_, yyrhs_
	yyprhs_, yyrline_, yytranslate_table_): Use b4_integral_parser_table.
	(yytname_): Use b4_typed_parser_table.
	* doc/bison.texinfo (Java Bison Interface): Add note on Java's
	``code too large'' error.

2008-11-10  Di-an Jan  <dianj@freeshell.org>

	* NEWS: Document them.

	General Java skeleton improvements.
	* configure.ac (gt_JAVACOMP): Request target of 1.4, which allows
	using gcj < 4.3 in the testsuite, according to comments in
	gnulib/m4/javacomp.m4.
	* data/java.m4 (stype, parser_class_name, lex_throws, throws,
	location_type, position_type): Remove extraneous brackets from
	b4_percent_define_default.
	(b4_lex_param, b4_parse_param): Remove extraneous brackets from
	m4_define and m4_define_default.
	* data/lalr1.java (b4_pre_prologue): Change to b4_user_post_prologue,
	which marks the end of user code with appropriate syncline, like all
	the other skeletons.
	(b4_user_post_prologue): Add.  Don't silently drop.
	(yylex): Remove.
	(parse): Inline yylex.
	* doc/bison.texinfo (bisonVersion, bisonSkeleton): Document.
	(%{...%}): Fix typo of %code imports.
	* tests/java.at (AT_JAVA_COMPILE): Add "java" keyword.

	Support annotations on parser class with %define annotations.
	* data/lalr1.java (annotations): Add to parser class modifier.
	* doc/bison.texinfo (Java Parser Interface): Document
	%define annotations.
	(Java Declarations Summary): Document %define annotations.
	* tests/java.at (Java parser class modifiers): Test annotations.

	Do not generate code for %error-verbose unless requested.
	* data/lalr1.java (errorVerbose): Rename to yyErrorVerbose.
	Make private.  Make conditional on %error-verbose.
	(getErrorVerbose, setErrorVerbose): New.
	(yytnamerr_): Make conditional on %error-verbose.
	(yysyntax_error): Make some code conditional on %error-verbose.
	* doc/bison.texinfo (Java Bison Interface): Remove the parts
	about %error-verbose having no effect.
	(getErrorVerbose, setErrorVerbose): Document.

	Move constants for token names to Lexer interface.
	* data/lalr1.java (Lexer): Move EOF, b4_token_enums(b4_tokens) here.
	* data/java.m4 (b4_token_enum): Indent for move to Lexer interface.
	(parse): Qualify EOF to Lexer.EOF.
	* doc/bison.texinfo (Java Parser Interface): Move documentation of
	EOF and token names to Java Lexer Interface.
	* tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove Calc qualifier.

	Make yyerror public.
	* data/lalr1.java (Lexer.yyerror): Use longer parameter name.
	(yyerror): Change to public.  Add Javadoc comments.  Use longer
	parameter names.  Make the body rather than the declarator
	conditional on %locations.
	* doc/bison.texinfo (yyerror): Document.  Don't mark as protected.

	Allow user to add code to the constructor with %code init.
	* data/java.m4 (b4_init_throws): New, for %define init_throws.
	* data/lalr1.java (YYParser.YYParser): Add b4_init_throws.
	Add %code init to the front of the constructor body.
	* doc/bison.texinfo (YYParser.YYParser): Document %code init
	and %define init_throws.
	(Java Declarations Summary): Document %code init and
	%define init_throws.
	* tests/java.at (Java %parse-param and %lex-param): Adjust grep.
	(Java constructor init and init_throws): Add tests.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Update TODO.
	* TODO (-D): is implemented.
	(associativity): Same precedence must have the same associativity.
	For instance, how can a * b / c be parsed if * is %left and / is
	%right?
	(YYERRORCODE, YYFAIL, YYBACKUP): New.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Formatting changes.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	More information about the symbols.
	* src/output.c (type_names_output): Document all the symbols,
	including those that don't have a type-name.
	(symbol_definitions_output): Define "is_token" and
	"has_type_name".
	* data/lalr1.cc (b4_type_action_): Skip symbols that have an empty
	type-name, now that they are defined too in b4_type_names.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Regen.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Make parser::yytranslate static.
	Small speedup (1%) on the list grammar.  And makes yytranslate_
	available in non member functions.

	* data/lalr1.cc (yytranslate_): Does not need to be a instance
	function.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Avoid trailing spaces.
	* data/c.m4: b4_comment(TEXT): Don't indent empty lines.
	* data/lalr1.cc: Don't indent before rule and symbol actions, as
	they can be empty, and anyway this incorrectly indents the first
	action.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Comment changes.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Use "enum" for integral constants.
	This is just nicer to read, I observed no speedup.

	* data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
	(yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
	(yyuser_token_number_max_, yyundef_token_): Move into...
	(yytranslate_): here.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Shortcuts in bench directives.
	* etc/bench.pl.in (parse_dirs): New.
	Use it.
	(bench_variant_parser, bench_fusion_parser): Use %s and %d.
	Create the benches in "benches/".

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Formatting changes.
	* data/lalr1.cc: here.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Adjust verbose message to using emacs.
	* etc/bench.pl.in: Inform compilation-mode when we change the
	directory.
	(generate_grammar_list): Recognize %define "variant" in addition
	to %define variant.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Classify symbols by type-name.
	* src/uniqstr.h (UNIQSTR_CMP): New.
	* src/output.c (symbol_type_name_cmp, symbols_by_type_name)
	(type_names_output): New.
	(muscles_output): Use it.
	* data/lalr1.cc (b4_symbol_action_): Remove.
	(b4_symbol_case_, b4_type_action_): New.
	Adjust uses of b4_symbol_action_ to use b4_type_action_.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Change the handling of the symbols in the skeletons.
	Before we were using tables which lines were the symbols and which
	columns were things like number, tag, type-name etc.  It is was
	difficult to extend: each time a column was added, all the numbers had
	to be updated (you asked for colon $2, not for "tag").  Also, it was
	hard to filter these tables when only a subset of the symbols (say the
	tokens, or the nterms, or the tokens that have and external number
	*and* a type-name) was of interest.

	Now instead of monolithic tables, we define one macro per cell.  For
	instance "b4_symbol(0, tag)" is a macro name which contents is
	self-decriptive.  The macro "b4_symbol" provides easier access to
	these cells.

	* src/output.c (type_names_output): Remove.
	(symbol_numbers_output, symbol_definitions_output): New.
	(muscles_output): Call them.
	(prepare_symbols): Define b4_symbols_number.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	--trace=muscles
	* src/getargs.h, src/getargs.c (trace_muscle): New.
	(trace_types, trace_args): Support it.
	* src/output.c (output_skeleton): Use it.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	muscles_output.
	* src/output.c (muscles_output): New, extracted from...
	(output_skeleton): here.
	Adjust.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Formatting changes.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Update the variant example.
	* examples/variant.yy: Formatting changes.
	One stage build.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Support constructor with an argument.
	This improves the "list" bench by 2%.

	* data/lalr1.cc (variant::build): Add an overloaded version with
	an argument.
	* tests/c++.at (AT_CHECK_VARIANT): Check it.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Test variants.
	* tests/c++.at (AT_CHECK_VARIANTS): New.
	Use it with and without %define assert.

2008-11-10  Akim Demaille  <demaille@gostai.com>

	Add %precedence support.
	Unfortunately it is not possible to reuse the %prec directive.  This
	is because to please POSIX, we do not require to end the rules with a
	semicolon.  As a result,

	foo: bar %prec baz

	is ambiguous: either a rule which precedence is that of baz, or a rule,
	and then a declaration of the precedence of the token baz.

	* doc/bison.texinfo: Document %precedence.
	(Precedence Only): New.
	* src/assoc.h, src/assoc.c (precedence_assoc): New.
	* src/conflicts.c (resolve_sr_conflict): Support it.
	* src/scan-gram.l, src/parse-gram.y (%precedence): New token.
	Parse it.
	* tests/calc.at: Use %precedence for NEG.
	* tests/conflicts.at (%precedence does not suffice)
	(%precedence suffices): New tests.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Make benches in a sub dirs.
	* etc/bench.pl.in ($dir): New.
	Use it.
	Check the use of constructors with an argument.
	(bench_variant_parser): Fix.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	fix eof condition

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Fix --help.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Require the generation of parse-gram.output.
	* src/Makefile.am (YACC): Pass --report=all.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Formatting changes.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Update TODO.
	* TODO: Remove obsolete items.
	Update others.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Enhance bench.pl.
	* etc/bench.pl.in (parse, parse_expr, parse_term, parse_fact)
	(@token, $grammar, $bench): New.
	(generate_grammar_variant): Rename as...
	(generate_grammar_list): this.
	(generate_grammar): Adjust.
	(bench_grammar): Rename as...
	(bench): this.
	Use it in the various bench-marking routines.
	(-b, -g): New options.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Use a static hierarchy for symbols in the C++ parser.
	* data/lalr1.cc (symbol_base_type, symbol_type)
	(stack_symbol_type): Make it a static hierarchy.
	Adjust dependencies.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	bench.pl -d, --directive.
	* etc/bench.pl.in (@directive): New.
	(&bench_grammar): Use it.
	(&bench_list_grammar): New, to provide access to the "variant"
	grammar.
	Use it.
	(getopts): Support -d, --directive.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Use inline for small operations.
	* data/lalr1.cc (symbol_base_type, symbol_type)
	(stack_symbol_type): Declare constructor and other operations as
	inline.
	(yy_destroy_): Inline.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Introduce a hierarchy for symbols.
	* data/lalr1.cc (symbol_base_type, symbol_type): New.
	(data_type): Rename as...
	(stack_symbol_type): this.
	Derive from symbol_base_type.
	(yy_symbol_value_print_): Merge into...
	(yy_symbol_print_): this.
	Rename as...
	(yy_print_): this.
	(yydestruct_): Rename as...
	(yy_destroy_): this.
	(b4_symbols_actions, YY_SYMBOL_PRINT): Adjust.
	(parser::parse): yyla is now of symbol_type.
	Use its type member instead of yytoken.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Rename data_type and stack_symbol_type.
	* data/lalr1.cc (data_type): Rename as...
	(stack_symbol_type): this.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Handle semantic value and location together.
	* data/lalr1.cc (b4_symbol_actions): Bounce $$ and @$ to
	yydata.value and yydata.location.
	(yy_symbol_value_print_, yy_symbol_print_, yydestruct_)
	(YY_SYMBOL_PRINT): Now take semantic value and location as a
	single arg.
	Adjust all callers.
	(yydestruct_): New overload for a stack symbol.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Push a complete symbol, not connected parts.
	* data/lalr1.cc (yypush_): Take a data_type&, not disconnected
	state, value and location.
	Adjust callers.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Agregate yylval and yylloc.
	* data/lalr1.cc (parser::yylval, parser::yylloc): Replace by...
	(parser::yyla): this.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Rely on the state stack to display reduction traces.
	To display rhs symbols before a reduction, we used information
	about the rule reduced, which required the tables yyrhs and
	yyprhs.  Now use rely only on the state stack to get the same
	information.

	* data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
	Use them.
	(parser::yyrhs_, parser::yyprhs_): Remove.
	(parser::yy_reduce_print_): Use the state stack.

2008-11-09  Akim Demaille  <demaille@gostai.com>

	Fuse yyval and yyloc into yylhs.
	* data/lalr1.cc (b4_lhs_value, b4_lhs_location): Adjust to using
	yylhs.
	(parse): Replace yyval and yyloc with yylhs.value and
	yylhs.location.
	After a user action, compute yylhs.state earlier.
	(yyerrlab1): Do not play tricks with yylhs.location, rather, use a
	fresh error_token.

2008-11-09  Di-an Jan  <dianj@freeshell.org>

	Remove unused variable.
	* src/output.c (type_names_output): Remove unused variable sep.

2008-11-09  Paolo Bonzini  <bonzini@gnu.org>

	Change tests/output.at quoting.
	* tests/output.at (AT_CHECK_OUTPUT): Use conventional m4 quoting when
	expanding arguments.

2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't add a semicolon to actions for %skeleton or %language.
	It breaks Java test cases as reported by Akim Demaille.
	* src/scan-code.l: Implement.

2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Clean up %skeleton and %language priority implementation.
	* src/getargs.c (skeleton_prio): Use default_prio rather than 2, and
	remove static qualifier because others will soon need to see it.
	(language_prio): Likewise.
	(getargs): Use command_line_prio rather than 0.
	* src/getargs.h (command_line_prio, grammar_prio, default_prio): New
	enum fields.
	(skeleton_prio): Extern it.
	(language_prio): Extern it.
	* src/parse-gram.y: Use grammar_prio rather than 1.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Moving push traces into yypush_.
	* data/lalr1.cc (yypush_): Now takes a optional trace message.
	Adjust all uses.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	The single-stack C++ parser is now the standard one.
	* data/lalr1.cc: Rename as...
	* data/lalr1-split.cc: this.
	* data/lalr1-fusion.cc: Rename as...
	* data/lalr1.cc: this.
	* etc/bench.pl.in: Adjust.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Avoid empty-if warnings.
	Reported by Quentin Hocquet.

	* data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
	(YY_STACK_PRINT): Provide some contents even when !YYDEBUG.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Pass command line location to skeleton_arg and language_argmatch.
	* src/getargs.h, src/getargs.c (skeleton_arg, language_argmatch):
	The location argument is now mandatory.
	Adjust all dependencies.
	(getargs): Use command_line_location.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	-D, --define.
	* src/getargs.c (usage): Document -D.
	Fix help string for --locations.
	(command_line_location): New.
	(short_options, long_options, getargs): Support -D, --define.
	(getargs): Move -d support at the right place.
	* doc/bison.texinfo (Bison Options): Update.
	* tests/input.at (%define, --define): New.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Initialize the muscle table before parsing the command line.
	* src/getargs.c (quotearg.h, muscle_tab.h): Include.
	(getargs): Define file_name.
	* src/main.c (main): Initialize muscle_tab before calling
	getargs.
	* src/muscle_tab.c (muscle_init): No longer define file_name, as
	its value is not available yet.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Locations without columns for command line arguments.
	* src/location.c (location_print): Don't display negative columns.
	* src/location.h: Document this.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Fix --help.
	* src/getargs.c (usage): Fix help string for -W.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Handle more general types of option arguments.
	* build-aux/cross-options.pl: The argument ends at the first
	space, not the first non-symbol character.
	Use @var for each word appearing the argument description.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Destroy the variants that remain on the stack in case of error.
	* data/lalr1-fusion.cc (yydestruct_): Invoke the variant's
	destructor.
	Display the value only if yymsg is nonnull.
	(yyreduce): Invoke yydestruct_ when popping lhs symbols.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Add "%define assert" to variants.
	This is used to help the user catch cases where some value gets
	ovewritten by a new one.  This should not happen, as this will
	probably leak.

	Unfortunately this uncovered a bug in the C++ parser itself: the
	lookahead value was not destroyed between two calls to yylex.  For
	instance if the previous lookahead was a std::string, and then an int,
	then the value of the std::string was correctly taken (i.e., the
	lookahead was now an empty string), but std::string structure itself
	was not reclaimed.

	This is now done in variant::build(other&) (which is used to take the
	value of the lookahead): other is not only stolen from its value, it
	is also destroyed.  This incurs a new performance penalty of a few
	percent, and union becomes faster again.

	* data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
	(b4_variant_if): New.
	(variant::built): New.
	Use it whereever the status of the variant changes.
	* etc/bench.pl.in: Check the penalty of %define assert.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Use "%define variant" in bench.pl.
	* etc/bench.pl.in: No longer use the pseudo directive %variants,
	just use %define variants.

2008-11-07  Akim Demaille  <demaille@gostai.com>

	Regen.
	* src/parse-gram.h, src/parse-gram.c: Regen.

2008-11-04  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix user actions without a trailing semicolon.
	Reported by Sergei Steshenko at
	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00001.html>.
	* THANKS (Sergei Steshenko): Add.
	* src/scan-code.l (SC_RULE_ACTION): Fix it.
	* tests/regression.at (Fix user actions without a trailing semicolon):
	New test case.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Use b4_copyright_years.
	* data/yacc.c (b4_copyright_years): New.
	Fix its value according to the comments in the file.
	Use it and undefine it.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Formatting changes.
	* data/lalr1-fusion.cc, src/parse-gram.y: here.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Formatting changes.
	* data/lalr1-fusion.cc: here.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Use strict on bench.pl.
	* etc/bench.pl.in (&run, &generate_grammar): New.
	Rename the grammar generating functions for consistency.
	Change the interface so that the list of benches to run is passed
	as (optionless) arguments.
	(&compile): Use &run.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Remove spurious initial empty lines.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
	* data/yacc.c: End the @output lines with an @.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Improve the display of sizes.
	* etc/bench.p.in: Higher precision.
	Sort by decreasing size.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Don't memcpy C++ structures.
	* data/lalr1-fusion.cc (b4_symbol_variant): Adjust additional
	arguments.
	(variant::build): New overload for
	copy-construction-that-destroys.
	(variant::swap): New.
	(parser::yypush_): Use it in variant mode.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Better defaults for bench.pl.
	* etc/bench.pl.in ($verbose, $cflags, $iterations): Change the
	default values.
	Adjust &verbose uses.
	(-q, --quiet): New.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Make variant.yy more complex.
	std::list cannot be copied via memcpy, they are more demanding than
	std::string.  Use one std::list to strengthen the test.

	* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
	Adjust.
	Create a list of strings, instead of a single large string.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	bench.pl --bench.
	* etc/bench.pl.in (--bench, $bench): New.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Sort methods.
	* data/lalr1-fusion.cc (destroy): Use as() in its definition.
	Define it after as().

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Useless parens.
	* data/lalr1-fusion.cc (b4_rhs_location): Remove useless parens.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Issue missing synclines after user actions.
	* data/c.m4 (b4_case): Issue synclines on the output file.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Remove trailing empty line.
	* data/lalr1-fusion.cc: Don't add an empty line after the user's
	epilogue.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Fix output of copyright years.
	* data/bison.m4 (b4_copyright): Fix the indentation of the
	copyright year paragraph.
	Use b4_copyright_years when no years are given.
	* data/lalr1.cc, data/lalr1-fusion.cc, data/location.cc
	(b4_copyright_years): New.
	Use it.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Avoid the spurious initial empty line.
	* data/lalr1-fusion.cc, data/location.cc: Put a trailing "@" at
	the end of @output request to suppress the empty line that
	results.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Remove parser::rhs_number_type.
	* data/lalr1-fusion.cc (rhs_number_type): No longer define it.
	(yyrhs_): Use b4_table_define.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Fix iteration type.
	* data/lalr1-fusion.cc: Use an int to iterate up to an int.

2008-11-04  Akim Demaille  <demaille@gostai.com>

	Factor the declaration of the integer tables.
	* data/lalr1-fusion.cc (b4_table_define): New.
	Use it.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Fix indentation of tables in lalr1.cc
	* data/lalr1-fusion.cc: Fix the indentation.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Destroy the lhs symbols after reduction.
	* data/lalr1-fusion.cc (parse): After the user action, when in
	variant mode, destroy the lhs symbols.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Simplify yysyntax_error_ use.
	* data/lalr1-fusion.cc (yysyntax_error_): Always pass it the token
	type, but make it unnamed in the declaration when it is not used.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Let yy::variant::build return an lvalue.
	* data/lalr1-fusion.cc (variant::build): Return a reference to the
	object.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Define yy::variant only when needed.
	* data/lalr1-fusion.cc (yy::variant): Define only if variants are
	used.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Bench the three-stack lalr1.cc.
	* etc/bench.pl.in: Bench the three-stack lalr1.cc vs. the
	one-stack one.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Fail on parse error in calc++.
	* doc/bison.texinfo (calc++.cc): Propagate failures to the exit
	status.
	* examples/calc++/test ($me, $number, $exit, run): New.
	Use them to propagate errors to the exit status.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Don't specify the skeleton twice in the example.
	* examples/calc++/Makefile.am: Don't pass -S to Bison, the grammar
	file does what is needed.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	bench: Improve output.
	* etc/bench.pl.in (bench_grammar): Tune the printf format.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	bench: check impact of %debug on variants.
	* etc/bench.pl.in (variant_grammar): Fix the computation of
	$variant.
	Generate a grammar file that can work with or without %debug.
	Do use the @directive.
	(bench_variant_parser): Check impact of %debug.
	(@directives): Rename all the occurrences to...
	(@directive): this, for consistency.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	bench: report the size too.
	* etc/bench.pl.in ($iterations): Defaults to -3.
	(&bench_grammar): Require hireswallclock.
	Compute and display the size of the result.
	More comments.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	bench: More use of the verbosity level.
	* etc/bench.pl.in ($verbose, &verbose): New.
	Use them.
	More POD documentation.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	bench.pl: a command line interface
	* etc/bench.pl.in: More doc.
	Some fixes in the documentation.
	($cflags, $iterations, &help, &getopt): New.
	Use them.
	(&variant_grammar): Let the number of stages be 10 times what is
	specified.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Bench the use of Boost.Variants.
	* etc/bench.pl.in ($cxx, &variant_grammar, &bench_variant_parser):
	New.
	(&compile): Be ready to compile C++ parsers.
	(&bench_push_parser): Move debug information to the outermost
	level.
	* THANKS: Add Michiel De Wilde.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	bench.pl: Pass directives as a list instead of as a string.
	* etc/bench.pl.in (&directives): New.
	(&triangular_grammar, &calc_grammar): Use it to format the Bison
	directives.
	(&triangular_grammar): Do use the directives (were ignored).
	(&bench_grammar, &bench_push_parser): Adjust to pass lists of
	directives.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Improve genericity of bench.pl.
	* etc/bench.pl.in (&bench_grammar): Take the set of benches as
	argument.
	(&bench_push_parser): New.
	Call it.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Add documentation to bench.pl.
	* etc/bench.pl.in: Comment changes.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Fuse the three stacks into a single one.

	In order to make it easy to perform benchmarks to ensure that
	there are no performance loss, lalr1.cc is forked into
	lalr1-fusion.cc.  Eventually, lalr1-fusion.cc will replace
	lalr1.cc.

	Meanwhile, to make sure that lalr1-fusion.cc is correctly
	exercized by the test suite, the user must install a symbolic link
	from lalr1.cc to it.

	Instead of having three stacks (state, value, location), use a
	stack of triples.  This considerably simplifies the code (and it
	will be easier not to require locations as currently does the C++
	parser), and also gives a 10% speedup according to
	etc/bench (probably mainly since memory allocation is done once
	instead of three times).

	Another motivation is to make it easier to destruct properly
	semantic values: now that they are bound to their state (hence
	symbol type) it will be easier to call the appropriate destructor.

	These changes should probably benefit the C parser too.

	* data/lalr1.cc: Copy as...
	* data/lalr1-fusion.cc: this new file.
	(b4_rhs_value, b4_rhs_location): New definitions overriding those
	from c++.m4.
	(state_stack_type, semantic_stack_type, location_stack_type)
	(yystate_stack_, yysemantic_stack_, yylocation_stack_): Remove.
	(data_type, stack_type, yystack_): New.
	(YYLLOC_DEFAULT, yypush_): Adjust.
	(yyerror_range): Now based on data_type, not location_type.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Push the state, value, and location at the same time.
	This is needed to prepare a forthcoming patch that fuses the three
	stacks into one.

	* data/lalr1.cc (parser::yypush_): New.
	(parser::yynewstate): Change the semantics: instead of arriving to
	this label when value and location have been pushed, but yystate
	is to be pushed on the state stack, now the three of them must
	have been pushed before.  yystate still must be the new state.
	This allows to use yypush_ everywhere instead of individual
	handling of the stacks.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Prefer references to pointers.
	* data/lalr1.cc (b4_symbol_actions): New, overrides the default C
	definition to use references instead of pointers.
	(yy_symbol_value_print_, yy_symbol_print_, yydestruct_):
	Take the value and location as references.
	Adjust callers.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	stack::size instead of stack::height.
	* data/lalr1.cc (stack::height): Rename as...
	(stack::size): this.
	Fix the output type.
	Comment changes.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Use variants to support objects as semantic values.
	This patch was inspired by work by Michiel De Wilde.  But he used
	Boost variants which (i) requires Boost on the user side, (ii) is
	slow, and (iii) has useless overhead (the parser knows the type of
	the semantic value there is no reason to duplicate this
	information as Boost.Variants do).

	This implementation reserves a buffer large enough to store the
	largest objects.  yy::variant implements this buffer.  It was
	implemented with Quentin Hocquet.

	* src/output.c (type_names_output): New.
	(output_skeleton): Invoke it.
	* data/c++.m4 (b4_variant_if): New.
	(b4_symbol_value): If needed, provide a definition for variants.
	* data/lalr1.cc (b4_symbol_value, b4_symbol_action_)
	(b4_symbol_variant, _b4_char_sizeof_counter, _b4_char_sizeof_dummy)
	(b4_char_sizeof, yy::variant): New.
	(parser::parse): If variants are requested, define
	parser::union_type, parser::variant, change the definition of
	semantic_type, construct $$ before running the user action instead
	of performing a default $$ = $1.
	* examples/variant.yy: New.
	Based on an example by Michiel De Wilde.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Parameterize the extraction of semantic values.
	To make future changes easier, no longer rely on ".TYPE" being the
	way to get a semantic value.

	* data/c.m4 (b4_symbol_value): New.
	Use it.
	* data/c++.m4, data/yacc.c: Use it.
	* data/glr.c: Use b4_symbol_value.
	(b4_rhs_data): New.
	Use it.

2008-11-03  Akim Demaille  <demaille@gostai.com>

	Prepare easier M4 changes.
	* data/lalr1.cc: Use escaped [] instead of literals to prepare
	future changes.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Initiate further development.
	* NEWS: Create an empty section for new entries.
	* gnulib: Update submodule to HEAD.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS: Version 2.4.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Prepare for next release.
	* NEWS: Briefly mention changes since 2.3b.
	* README: Say GNU m4 1.4.6, which we've been requiring in release
	announcements already, not 1.4.3, which breaks the build.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Say %language is experimental.
	We're thinking of extending it's effect on output file naming.  See the
	thread at
	<http://lists.gnu.org/archive/html/bison-patches/2008-10/msg00003.html>.
	* NEWS: Say it's experimental.
	* doc/bison.texinfo (Decl Summary): Say it's experimental, and so don't
	recommend it over %skeleton for now.
	(Bison Options): Likewise.
	(C++ Bison Interface): Use %skeleton not %language.
	(Calc++ Parser): Use %skeleton not %language.
	* src/getargs.c (usage): Say it's experimental.

2008-11-01  Di-an Jan  <dianj@freeshell.org>
	    Paolo Bonzini  <bonzini@gnu.org>

	Support all Java parser class modifiers.
	* data/java.m4 (b4_percent_define_get3): New.
	(b4_final_if, b4_strictfp_if): New.
	* data/lalr1.java (final, strictfp, extends, implements): Support.
	* doc/bison.texinfo (final, strictfp, extends, implements): Add
	documentation.
	* tests/java.at (AT_CHECK_JAVA_MINIMAL): New.
	(AT_CHECK_JAVA_MINIMAL_W_LEXER): New.
	(AT_CHECK_JAVA_GREP): New.
	(Java parser class modifiers): New test.
	(Java parser class extends and implements): New test.

	Model exception propagation better with throws and lex_throws.
	* data/java.m4 (b4_list2): New.
	(throws): Change default.
	* data/lalr1.java (yyaction): Add throws.
	(parse): Add lex_throws in addition to throws.
	* doc/bison.texinfo (throws, lex_throws): Add documentation.
	* tests/java.at (Java throws specifications): New test.

	Improve documentation for Java parsers.
	* doc/bison.texinfo (Java Parsers): Add subsections.
	Don't quote first argument of %define.
	(Java Bison Interface): Document output files.  Move documentation
	of parser class and merge into Java Parser Interface.  Document
	features that error out.  Document directives with no effect.
	Move note about Javadoc higher.
	(Java Semantic Values): Explicitly mention stype.
	Document that generic types cannot be used.
	(Java Location Values): Use @deftypeivar.  Document constructors.
	Correct return value for toString.
	(Java Parser Interface): List undocumented constants/fields.
	Move documentation of fields added by %parse-param closer to list
	of members.  Document that token names are added as fields.
	Document constructors accurately.  Remove error method.
	(Java Scanner Interface): Move note on %pure-parser to Java Bison
	Interface.  Describe %code lexer and yylex accutately.
	Remove documentation that does not match the code.
	(Java Action Features): New.
	(Java Differences): Add reference.  Add item on semantic values.
	Add note about @{ ... @}.  Clarify %% epilogue placement.
	(Java Declarations Summary): New.

	Fix Java skeleton.
	* data/java.m4 (b4_prefix): Correct quoting for m4_define_default.
	(b4_remove_comma): Quote test argument.
	(b4_identification): Remove "bison" field.
	* tests/java.at (Java parser class and package names): New test.
	(Java %parse-param and %lex-param): New test.
	(Java stype, position_class and location_class): New test.

2008-10-31  Di-an Jan  <dianj@freeshell.org>

	* data/lalr1.jave: Update copyright years.
	(YYParser): Correct name of "generated from" file in Javadoc:
	use b4_file_name instead of @ofile@.
	(Location constructor): Correct Javadoc parameter name.
	(yylloc): Add missing opening m4 quote after b4_location_if.
	This removes a stray [ in the Javadoc of Lexer.getStartPos.
	(Lexer.yyerror): Fix incorrect m4 and Javadoc.
	(YYParser constructor): Correct Javadoc parameter name.

2008-10-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	Always put auxiliary code files in the same dir as other output files.
	* src/files.c (compute_file_name_parts): When the user specifies
	--output but not --file-prefix, extract the directory prefix from the
	file prefix not from the grammar file name.  This affects the location
	of files like location.hh generated by the C++ skeleton.  The includes
	in the other output files require this fix.
	* tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
	for expected output files.
	(Output files): Add a test for the above.

2008-10-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* gnulib: Update submodule to HEAD.

2008-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update copyright year.
	* src/files.c: Here.

2008-10-28  Di-an Jan  <dianj@freeshell.org>  (tiny change)

	Don't overwrite the input file.
	* src/files.c (output_file_name_check): Fatal error if using input file
	for output.
	* tests/output.at: (AT_CHECK_CONFLICTING_OUTPUT): Add return status
	argument.
	(Conflicting output files): Add test.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Space changes.
	* data/lalr1.cc: Formatting changes.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Don't define debugging functions when !YYDEBUG.
	* data/lalr1.cc (debug_stream, set_debug_stream)
	(debug_level_type, debug_level, set_debug_level): Don't
	declare them when YYDEBUG is not defined.
	The implementation are already YYDEBUG-aware.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Prefer "continue" for empty loop bodies.
	* etc/bench.pl.in: Use "continue" instead of {}.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Space and comments changes.
	* data/c++.m4, data/glr.c, data/lalr1.cc: Copyright year changes.
	* data/c.m4, data/lalr1.cc: Space changes.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Make gnulib a submodule.
	* gnulib: New.
	* .gitmodules (gnulib): New.

2008-10-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix yyerror_range for user-defined location type in C++.  Reported by
	Georg Sauthoff at
	<http://lists.gnu.org/archive/html/bug-bison/2008-08/msg00008.html>.
	* data/lalr1.cc (parse): Change type of yyerror_range to location_type.
	* THANKS (Georg Sauthoff): Add.

2008-10-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update several administrative files mainly to facilitate releasing.
	* HACKING (Administrivia): Make the git-merge-changelog notes more
	helpful.
	(Test suite): Don't say lalr1.cc is not exercised in the test suite.
	(Release Procedure): Update for git and add numerous details that were
	previously missing.
	* Makefile.am (EXTRA_DIST): Remove Makefile.cfg and Makefile.maint.
	* maint.mk (announcement): Don't list bison as a bootstrap tool so
	that announcements don't claim we bootstrapped with whatever bison
	happened to be in PATH.  Add flex as a bootstrap tool.
	* Makefile.maint: Remove, previously replaced by maint.mk.
	* Makefile.cfg: Remove, and migrate settings to...
	* cfg.mk: ... here for the sake of `make announcement'.
	* bootstrap.conf (gnulib_modules): Add announce-gen.
	* README: Say GNU Bison instead of just Bison.  Suggested by Karl
	Berry.

2008-10-08  Di-an Jan  <dianj@freeshell.org>  (tiny change)

	Small but important bugfixes for the Java skeleton.
	* data/lalr1.java (yyerror): Change Location to b4_location_type.
	(yy_symbol_print): Call toString on yyvaluep.

2008-08-29  Akim Demaille  <demaille@gostai.com>

	Clarify UPDATED use.
	* doc/bison.texinfo: It refers to the last edition of this file,
	not to the release date of Bison.
	Reported by Joel E. Denny.

2008-08-29  Akim Demaille  <demaille@gostai.com>

	* README: Update FAQ pointer.
	Reported by Joel E. Denny.

2008-08-27  Eric Blake  <ebb9@byu.net>

	Resync m4sugar from autoconf.
	* data/m4sugar/m4sugar.m4 (m4_defn, m4_popdef, m4_undefine)
	(m4_init): Adjust to latest m4.git changes.
	(m4_mapall_sep, _m4_list_cmp, m4_version_compare): Reduce side
	effects.
	* data/m4sugar/foreach.m4 (_m4_shiftn): Fix off-by-one bug.
	(_m4_list_cmp): Reduce side effects.

2008-08-27  Akim Demaille  <demaille@gostai.com>

	Check yyerrok in calc.at.
	* tests/calc.at (calc.y): Use yyerrok on "( error )".
	(AT_CHECK_CALC): Add a check that ensures that yyerrok works as
	expected.

2008-08-27  Akim Demaille  <demaille@gostai.com>

	Support yyerrok in lalr1.cc.
	YYBACKUP is still to import back into lalr1.cc.
	* data/lalr1.cc (yyerrork, yyclearin, YYRECOVERING): Define.

2008-08-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	For maintainer-check*, don't recompile for a $(VERSION) update.
	* cfg.mk: New file.
	(_is-dist-target): Override the one in GNUmakefile.
	* Makefile.am (EXTRA_DIST): Add cfg.mk.

2008-08-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update for recent change to gnulib.
	* src/parse-gram.y: Don't include strverscmp.h.  It comes from
	string.h now.

2008-08-15  Eric Blake  <ebb9@byu.net>

	Remaining m4sugar merge from autoconf.
	* data/m4sugar/m4sugar.m4: Copy entire file from autoconf.
	* data/m4sugar/foreach.m4: New file, copied from autoconf.
	* data/Makefile.am (dist_m4sugar_DATA): Distribute it.
	* src/output.c (output_skeleton): Tell m4 how to find it.

	Partial m4sugar merge from autoconf: m4_map.
	* data/m4sugar/m4sugar.m4 (m4_fst): Delete.
	(m4_map, m4_map_sep, _m4_map): Rewrite more efficiently.
	(m4_apply, _m4_apply, m4_mapall, m4_mapall_sep): New macros.
	* data/java.m4 (b4_token_enums): Use more efficient short-circuit
	for empty list.
	* data/c.m4 (b4_token_defines, b4_token_enums, b4_c_ansi_formals):
	Likewise.
	(b4_parse_param_for): Avoid m4_fst, now that autoconf no longer
	declares it.

2008-08-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Keep .version and PACKAGE_VERSION in sync.
	* Makefile.am ($(top_srcdir)/.version): Declare configure as a
	dependency, and add comments justifying this in more detail.  Discussed
	starting at
	<http://lists.gnu.org/archive/html/bison-patches/2008-07/msg00022.html>.

2008-08-06  Eric Blake  <ebb9@byu.net>

	Partial m4sugar merge from autoconf: m4_shiftn.
	* data/m4sugar/m4sugar.m4 (m4_shiftn): Faster implementation.
	(m4_shift2, m4_shift3): New macros.
	(m4_case, m4_bmatch, m4_bpatsubsts, m4_join): Adjust clients.
	* data/c.m4 (b4_c_function_def, b4_c_ansi_function_def)
	(b4_c_ansi_function_decl, b4_c_function_call): Likewise.
	* data/java.m4 (b4_remove_comma): Likewise.

	Partial m4sugar merge from autoconf: m4_wrap vs. m4 1.6.
	* data/m4sugar/m4sugar.m4 (m4_unquote, m4_wrap_lifo): New macros.
	(m4_wrap): Guarantee FIFO order, in spite of m4 1.6.
	(m4_init): Consolidate wrapped text into single m4_wrap.
	* data/bison.m4 (b4_check_user_names_wrap): Stick with LIFO order
	in wrapped text.

2008-08-05  Eric Blake  <ebb9@byu.net>

	Partial m4sugar merge from autoconf: builtins, version.m4.
	* data/m4sugar/m4sugar.m4 (changeword): Nuke.
	(m4_prepend): Remove, as it is unused and inherently quadratic,
	whereas m4_append is linear in newer m4.
	(m4_mkstemp): New builtin.
	(m4_symbols): Make rename conditional.
	(m4_version_prereq): Ensure fatal error if used in bison, which
	intentionally lacks version.m4.

	Fix comments in m4sugar.
	* data/m4sugar/m4sugar.m4: Comment changes, borrowed from autoconf.

2008-08-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update for recent .gitignore fix in Gnulib.
	* bootstrap: Back out 2008-07-18 hack now that gnulib-tool creates
	anchored .gitignore entries.

2008-08-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Set gnu or gnits strictness.
	* configure.ac (AM_INIT_AUTOMAKE): Set gnu strictness during
	development and gnits strictness for releases.  Based on Eric Blake's
	suggestion at
	<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00019.html>.

2008-07-31  Paolo Bonzini  <bonzini@gnu.org>

	* NEWS: Clarify documentation of %language.

2008-07-31  Paolo Bonzini  <bonzini@gnu.org>

	Support usage of git-merge-changelog.
	* .gitattributes: New.
	* HACKING: Document usage of git-merge-changelog.
	* bootstrap: Install git-merge-changelog entries in .git/config
	if appropriate.

2008-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Remove remaining dependence on CVS Id keyword.
	* ChangeLog: For the sake of people still using CVS, don't use dollars
	when mentioning Id.
	* data/xslt/bison.xsl: Remove Id from header comments, where it was
	unusual anyway.
	* data/xslt/xml2dot.xsl: Likewise.
	* data/xslt/xml2text.xsl: Likewise.
	* data/xslt/xml2xhtml.xsl: Likewise.
	* doc/Doxyfile.in (PROJECT_NUMBER): Don't use ID.
	* doc/Makefile.am (neutralize): Remove, no longer needed.
	(.x.1): Don't use neutralize.
	(edit): Don't substitute for ID.
	(Doxyfile): Don't define Id, and thus don't depend on ChangeLog.

2008-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix dependence on computed configure variables.
	* doc/Makefile.am (common_dep): Depend on $(top_srcdir)/configure not
	$(top_srcdir)/configure.ac so that changes to computed variables, such
	as PACKAGE_VERSION, are seen.
	* tests/Makefile.am ($(srcdir)/package.m4): Likewise.

2008-07-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update copyright dates for recent changes.
	* Makefile.am: Here.
	* src/Makefile.am: Here.
	* src/reduce.c: Here.
	* tests/reduce.at: Here.

2008-07-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Use git-version-gen for version names between releases.
	* .cvsignore (.tarball-version, GNUmakefile, *~): Add.
	* .gitignore (/.tarball-version, /GNUmakefile, /*~): Add.
	* .prev-version: New.
	* .version.in: Remove.
	* ChangeLog: Remove the Id previously used for capturing the CVS
	revision.
	* GNUmakefile: Remove, now copied from Gnulib.
	* Makefile.am: Add code suggested by comments in
	build-aux/git-version-gen.
	(EXTRA_DIST): Remove GNUmakefile, handled by Gnulib.  Add maint.mk,
	.prev-version, and .version.
	* NEWS (2.3b+): Rename to...
	(?.?): ... this because we're dropping the "+" version naming scheme,
	but, in general, we still can't be sure of our next release name.
	* bootstrap: Add a quick hack to remove from .gitignore the
	GNUmakefile entry that gnulib adds.  We already have a /GNUmakefile
	entry.  This should really be fixed in gnulib instead.
	* bootstrap.conf (gnulib_modules): Add gnumakefile.
	* configure.ac (AC_INIT): Set version name by invoking
	build-aux/git-version-gen.
	(AC_CONFIG_FILES): Remove .version, now generated by
	build-aux/git-version-gen.
	* maint.mk: New, copied from coreutils.
	* doc/.cvsignore (bison.1): Add.
	* doc/.gitignore (/bison.1): Add.
	* doc/bison.1: Remove, generated.
	* src/.cvsignore (revision.c): Remove.
	* src/.gitignore (/revision.c): Remove.
	* src/Makefile.am (bison_SOURCES): Remove revision.c and revision.h.
	(BUILT_SOURCES): Remove revision.c.
	(revision.c): Remove.
	* src/getargs.c (version): Don't print revision after the VERSION.
	* src/revision.h: Remove.

2008-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix untranslatable composition of sentences.  Reported by Goran
	Uddeborg at
	<http://lists.gnu.org/archive/html/bug-bison/2008-06/msg00000.html>.
	* THANKS (Goran Uddeborg): Add.
	* src/reduce.c (reduce_print): Report the number of nonterminals and
	rules useless in the grammar in separate sentences.
	* tests/reduce.at (Useless Rules): Update output.
	(Reduced Automaton): Likewise.
	(Underivable Rules): Likewise.
	(Empty Language): Likewise.

2008-07-15  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix some .gitignore and .cvsignore problems.
	* bootstrap (insert_sorted_if_absent): Replace all uses with...
	(insert_vc_ignore): ... this new function, which prepends `/' to all
	.gitignore entries before passing them to insert_sorted_if_absent.
	* bootstrap.conf (vc_ignore): Set to '.cvsignore .gitignore' so that
	.cvsignore files are maintained even though Bison developers run
	bootstrap while using Git.
	* .cvsignore (*.patch *.log log patches applied): Remove, apparently
	unneeded by Bison.
	(gnulib): Add.
	* .gitignore (/*.patch *.log log patches applied): Remove, broken and
	unneeded.  Reported by Eric Blake.
	* lib/.gitignore (/*~): Add.
	* po/.cvsignore, runtime-po/.cvsignore: Sync with .gitignore.
	* examples/calc++/.gitignore (/calc++.exe): Add.  Reported by Eric
	Blake.
	* src/.gitignore (/bison.exe): Add.  Reported by Eric Blake.

2008-07-15  Joel E. Denny  <jdenny@ces.clemson.edu>

	Improve forward-compatibility with GNU M4.  Reported by Eric Blake at
	<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00000.html>.
	* bootstrap.conf (gnulib_modules): Add unsetenv.
	* lib/.gitignore, lib/.cvsignore (/unsetenv.c): Add.
	* m4/.gitignore, m4/.cvsignore (/environ.m4): Add.
	(/setenv.m4): Add.
	* src/output.c (output_skeleton): For the m4 invocation, pass -dV as
	the first argument because it may become position-dependent, and unset
	POSIXLY_CORRECT so Bison's skeletons have access to GNU M4 extensions.
	Add comments explaining these issues in more detail.

2008-07-14  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add .gitignore everywhere based on .cvsignore.
	* .gitignore: New.
	* build-aux/.gitignore: New.
	* data/.gitignore: New.
	* doc/.gitignore: New.
	* etc/.gitignore: New.
	* examples/.gitignore: New.
	* examples/calc++/.gitignore: New.
	* lib/.gitignore: New.
	* m4/.gitignore: New.
	* po/.gitignore: New.
	* runtime-po/.gitignore: New.
	* src/.gitignore: New.
	* tests/.gitignore: New.

2008-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3b+): New section, empty for now.
	* configure.ac (AC_INIT): 2.3b -> 2.3b+.

2008-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3b): Update release date since there has been a delay in
	getting the announcements and tarballs out.

2008-05-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS: Version 2.3b.
	* configure.ac (AC_INIT): Likewise.
	(PACKAGE_COPYRIGHT_YEAR): Update to 2008.

2008-05-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	* HACKING: Don't say don't mention HACKING in the ChangeLog.  We've
	been doing it for years.
	(Test suite): Mention maintainer-push-check and maintainer-xml-check.
	(Release Procedure): Add FIXME about make alpha being unmaintained.

2008-05-13  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/yacc.c: Reformat m4 a little for readability.
	* src/lalr.c (build_relations): Correct comment.

2008-05-12  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issue.
	* djgpp/config.sed: Fixes required to run configure scripts generated
	by autoconf 2.62.

2008-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	* HACKING (Release Procedure): translation@iro.umontreal.ca is now
	coordinator@translationproject.org.

2008-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* THANKS: Add Eric Blake.

2008-04-23  Eric Blake  <ebb9@byu.net>

	Revert prior patch, by working around autoconf regression.
	* tests/output.at (m4_expand): Add workaround for autoconf 2.62.
	("Output file name: ("): Uncomment test.
	("Output file name: )"): Likewise.
	Based on an idea from Noah Misch.

2008-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Work-around an Autoconf 2.62 AT_SETUP bug that was not present in
	2.61.  Reported by Juan Manuel Guerrero at
	<http://lists.gnu.org/archive/html/bug-bison/2008-04/msg00011.html>.
	* tests/output.at ("Output file name: ("): Comment out test case for
	now.
	("Output file name: )"): Likewise.

2008-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* GNUmakefile: Update git-version-gen invocation so make dist
	succeeds.

2008-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update to the current gnulib CVS repository, and fix trigraph handling
	in Bison.
	* bootstrap: Update gnulib CVS repository URL.
	(symlink_to_dir): Encapsulate the code that guarantees the destination
	directory exists into...
	(check_dst_dir): ... this new function, and...
	(cp_mark_as_generated): ... reuse it here so that bootstrap doesn't
	fail when copying files into lib/uniwidth/.
	* src/output.c (prepare_symbols): When writing yytname muscles, where
	symbol names will be encoded in C-string literals, tell quotearg to
	escape trigraphs.  This used to be the default in gnulib.
	* tests/regression.at (Token definitions): Because of the change in
	gnulib's quotearg behavior, string_as_id in parse-gram.y no longer
	escapes trigraphs in symbol names.  Thus, yytname no longer has
	trigraphs unnecessarily doubly escaped.  Update test case output.
	Extend test case to be sure Bison's own error messages will no longer
	have trigraphs in symbol names unnecessarily escaped once.

2008-04-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix make dist infinite loop reported by Juan Manuel Guerrero at
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00009.html>.
	* .cvsignore: Add .version.
	* .version.in: New.
	* bootstrap.conf (gnulib_modules): Add git-version-gen.
	* configure.ac (AC_CONFIG_FILES): Add .version.
	* build-aux/.cvsignore: Add git-version-gen.

2008-03-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Mention that -g now takes an argument.
	* doc/bison.texinfo (Bison Options): Reword -W entry a little for
	consistency.  Update the -g and -x entries now that they take
	arguments.  Use brackets to indicate optional arguments.
	* src/getargs.c (usage): Explain the relationship between arguments of
	long and short options more completely.  Document --defines and -d
	separately since the former takes an argument but, for POSIX Yacc, the
	latter does not.
	(short_options): Let -W take an optional argument like --warnings.
	(getargs): Sort cases.

2008-02-28  Akim Demaille  <demaille@gostai.com>

	* doc/bison.texinfo: Fix a few typos.

2008-02-28  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Bison Options): Document -W.
	Based on Joel E. Denny's NEWS entry, and Automake's documentation.

2008-02-28  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (short_options): Split and sort for readability.
	-g and -x take optional arguments, just like their long options.
	* build-aux/cross-options.pl: Use /x to make the regexp easier to
	understand.
	Fix the handling of $opt which resulted in all the argument to be
	considered as optional.

2008-02-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Don't say %language is experimental.  Mention Java and
	say its interface is experimental.
	* doc/bison.texinfo (Decl Summary): In the %language entry, mention
	Java.
	(Bison Options): In the -L and --language entry, mention Java.
	(Java Bison Interface): Say the interface is experimental.
	* src/getargs.c (usage): Mention -L and --language.

	* NEWS (2.3a+): Say the push parsing interface is experimental.
	* doc/bison.texinfo (Push Decl): Likewise.
	(Decl Summary): Likewise in the "%define api.push_pull" entry.
	(Push Parser Function): Likewise.
	(Pull Parser Function): Likewise.
	(Parser Create Function): Likewise.
	(Parser Delete Function): Likewise.
	(Table of Symbols): Likewise in the yypstate_delete, yypstate_new,
	yypull_parse, and yypush_parse entries.

	* NEWS (2.3a+): Mention XML support, and say the schema is
	experimental.
	* doc/bison.texinfo (Bison Options): Mention -x and --xml.
	* src/getargs.c (usage): Say the XML schema is experimental.

	* NEWS (2.3a+): Say option instead of flag.

2008-02-21  Wojciech Polak  <polak@gnu.org>

	* data/xslt/xml2xhtml.xsl (xsl:template match="/"): Change footer
	text.

2008-02-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix impure push parser compile error reported by Bob Rossi at
	<http://lists.gnu.org/archive/html/help-bison/2008-02/msg00023.html>.
	* data/yacc.c: Clean up whitespace in the output a little.
	(yypstate_allocated): Define for impure push parsers regardless of
	whether the pull interface is also requested.
	* tests/push.at (Push Parsing: Multiple impure instances): Extend to
	check impure push parsers without the pull interface.

	* data/yacc.c (yypstate_new): Don't try to invoke yyerror since
	yyerror takes arguments specified by %parse-param while yypstate_new
	does not.
	* doc/bison.texinfo (Parser Create Function): Document that
	yypstate_new returns 0 for multiple impure parser instances.
	* tests/push.at (Push Parsing: Multiple impure instances): Update
	expected stderr output.

2008-02-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* runtime-po/POTFILES.in (push.c): Remove.

2008-02-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/Makefile.am (dist_pkgdata_DATA): Remove push.c.
	* data/push.c: Rename to...
	* data/yacc.c: ... this, overwriting it.
	* etc/bench.pl.in (bench_grammar): `%pure-parser'-> `%define api.pure'.
	`%push-pull-parser' -> `%define api.push_pull "both"'.
	Remove old yacc.c tests, and update push.c tests to yacc.c.

2008-02-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/bison.m4 (b4_percent_code_get): Output %code block comments like
	`"%code top" blocks' instead of `%code "top" blocks'.
	* data/push.c: Import yacc.c changes from 2008-01-09 and 2007-08-03.
	Clean up whitespace in the output a little.

2008-02-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix documentation problems reported by Tim Josling at
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00013.html>.
	* NEWS (2.3a+): Mention removal of --no-parser, -n, and %no-parser.
	* doc/bison.texinfo (Token Decl): Token numbers are *nonnegative*
	integers.  Explain the effect of literal string aliases on error
	messages.  Copy token 0 documentation from the C++ skeleton
	documentation.

2008-02-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	Accept a token number in a %left, %right, or %nonassoc for POSIX
	conformance.  Reported by Tim Josling at
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00010.html>.
	* NEWS (2.3a+): Mention.
	* doc/bison.texinfo (Precedence Decl): Describe how literal strings
	and code numbers are treated by precedence declarations.
	* src/parse-gram.y (precedence_declaration): Use symbols.prec instead
	of symbols.1.
	(symbols.prec): New, just like symbols.1 but uses symbol.prec instead
	of symbol.
	(symbol.prec): New, just like symbol but allows INT.
	* src/symtab.c (symbol_user_token_number_set): Remove an aver that no
	longer holds.
	* tests/regression.at (Token number in precedence declaration): New
	test case.

2008-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issues.
	* djgpp/config.bat: Add filenames that are not 8.3 clean and that must
	be changed.  Copyright timestamp adjusted.
	* djgpp/config.sed: Add filenames that are not 8.3 clean and that must
	be changed.  Copyright timestamp adjusted.
	* djgpp/config.site: Copyright timestamp adjusted.
	* djgpp/config_h.sed: Copyright timestamp adjusted.
	* djgpp/djunpack.bat: Copyright timestamp adjusted.
	* djgpp/fnchnage.lst: Add filenames that are not 8.3 clean to the
	filename translation list.
	* djgpp/subpipe.c (init_subpipe): Check the environment variables
	TMPDIR, TMP and TEMP, in that order, to determinate where the temp
	files shall be created.  Before trying to use the temp dir where the
	environment variable points to check that the dir really exists. If
	not default to the cwd as temp dir.  Copyright timestamp adjusted.
	* djgpp/subpipe.h: Copyright timestamp adjusted.
	* djgpp/testsuite.sed: Copyright timestamp adjusted.

2008-01-30  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo: Update Back-Cover text to reflect new GNU wording.

2008-01-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yyparse): Correct the comment when locations aren't used.
	Problem reported by Claudio Saavedra in
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00003.html>.

2008-01-05  Wojciech Polak  <polak@gnu.org>

	* data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
	document's title with the input grammar file name.

2007-12-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	Automate regression testing of the XML/XSLT implementation.  Discussed
	starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
	* configure.ac (XSLTPROC): New substitution.
	* Makefile.am (maintainer-xml-check): New phony target invoking...
	* tests/Makefile.am (maintainer-xml-check): ... this new phony target
	invoking make maintainer-check with BISON_TEST_XML=1.
	* tests/atlocal.in (XSLTPROC): New.
	* tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
	not to report reachable memory when Bison is expected to have a
	non-zero exit status and (2) to compare XML/XSLT output with --graph
	and --report=all output for every working grammar when
	BISON_TEST_XML=1.
	(AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
	(AT_BISON_CHECK_XML): New.
	(AT_QUELL_VALGRIND): New.
	* tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
	(AT_CHECK): ... don't redefine this since this was the old way to
	quell Valgrind.
	* tests/actions.at: Rewrite all AT_CHECK invocations for bison as
	AT_BISON_CHECK invocations.
	* tests/c++.at: Likewise.
	* tests/calc.at: Likewise.
	* tests/conflicts.at: Likewise.
	* tests/cxx-type.at: Likewise.
	* tests/existing.at: Likewise.
	* tests/glr-regression.at: Likewise.
	* tests/headers.at: Likewise.
	* tests/input.at: Likewise.
	* tests/java.at: Likewise.
	* tests/output.at: Likewise.
	* tests/push.at: Likewise.
	* tests/reduce.at: Likewise.
	* tests/regression.at: Likewise.
	* tests/sets.at: Likewise.
	* tests/skeletons.at: Likewise.
	* tests/synclines.at: Likewise.
	* tests/torture.at: Likewise.
	(Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
	tends to hang xsltproc.
	(Big horizontal): Likewise.

2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	In XML output, remove redundant class attribute on symbol element.
	* data/xslt/bison.xsl (xsl:key name="bison:symbolByName"): New.
	* data/xslt/xml2xhtml.xsl (xsl:template match="symbol"): Use it to
	look up a symbol to determine whether it's a nonterminal or terminal.
	* src/gram.c (rule_rhs_print_xml): Remove class attribute.
	* src/state.c (state_rule_lookahead_tokens_print_xml): Likewise.

	Add prec/assoc information to XML output.
	* src/gram.c (grammar_rules_print_xml): For each rule that has a
	%prec, add a percent_prec attribute.
	* src/print-xml.c (print_grammar): For each terminal that has a
	precedence or associativity, add a prec or assoc attribute.
	(xml_indent): New.
	(xml_puts): Use xml_indent.
	(xml_printf): Use xml_indent.
	* src/print-xml.h (xml_indent): Prototype.

	* tests/existing.at (GNU pic Grammar): Fix a rule miscopied from
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.

2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/xslt/bison.xsl (bison:ruleNumber): Rename to...
	(bison:ruleByNumber): ... this for clarity.
	* data/xslt/xml2dot.xsl (xsl:template match="item"): Update.
	* data/xslt/xml2text.xsl (xsl:template match="item"): Update.
	(xsl:template match="reduction"): Update.
	(xsl:template match="item"): Update.
	(xsl:template match="reduction"): Update.

	In the XML output, don't print the list of rules where symbols appear.
	Compute it in XSLT instead.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00024.html>.
	* data/xslt/bison.xsl (bison:ruleByLhs): New.
	(bison:ruleByRhs): New.
	* data/xslt/xml2text.xsl (xsl:template match="terminal"): Use
	bison:ruleByRhs.
	(xsl:template match="terminal/rule"): Remove.
	(xsl:template match="nonterminal"): Use bison:ruleByLhs and
	bison:ruleByRhs.
	(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
	Remove.
	* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use
	bison:ruleByRhs and mode="number-link" for rule template.
	(xsl:template match="terminal/rule"): Remove.
	(xsl:template match="nonterminal"): Use bison:ruleByLhs and
	bison:ruleByRhs and mode="number-link" for rule template.
	(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
	Rewrite as...
	(xsl:template match="rule" mode="number-link"): ... this.
	* src/print-xml.c (print_grammar): Don't print the list of rules.

2007-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't let --report affect XML output; always print all information.
	Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
	* src/conflicts.c (log_resolution): Implement.
	* src/print-xml.c (print_core): Implement.
	(print_state): Implement.
	(print_xml): Implement.

	* NEWS (2.3a+): Fix quotes.
	* src/parse-gram.y (prologue_declaration): For consistency with -v,
	don't let %verbose clear the list specified by --report.

2007-11-26  Akim Demaille  <akim@epita.fr>

	* data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.

2007-11-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	In the XML output, list useless and unused symbols and rules with the
	useful ones and add a "usefulness" attribute.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00017.html>.
	* src/gram.c (grammar_rules_partial_print_xml): Remove.
	(grammar_rules_print_xml): Print all rules instead of just those
	useful in the grammar, and add a "usefulness" attribute.
	* src/gram.h (grammar_rules_partial_print_xml): Remove prototype.
	* src/print-xml.c (print_rules_useless_in_parser): Remove.
	(print_grammar): Print all nonterminals instead of just useful ones,
	and add a "usefulness" attribute to nonterminals and terminals.
	(print_xml): Don't print a separate "reductions" or
	"rules-useless-in-parser" element.
	* src/reduce.c (reduce_output): Use reduce_token_unused_in_grammar.
	(reduce_xml): Remove.
	(reduce_token_unused_in_grammar): New.
	(reduce_nonterminal_useless_in_grammar): New.
	* src/reduce.h (reduce_xml): Remove prototype.
	(reduce_token_unused_in_grammar): Add prototype.
	(reduce_nonterminal_useless_in_grammar): Add prototype.
	* data/xslt/xml2text.xsl: Update for XML changes.
	* data/xslt/xml2xhtml.xsl: Update for XML changes.
	* tests/reduce.at (Useless Terminals): Update output.
	(Useless Rules): Update output.
	(Reduced Automaton): Update output.

	Say "Terminals unused in grammar" instead of "Unused terminals".
	* NEWS (2.3a+): Update.
	* doc/bison.texinfo (Understanding): Update example output.
	* src/reduce.c (reduce_output): Implement.
	* data/xslt/xml2text.xsl: Implement.
	* data/xslt/xml2xhtml.xsl: Implement.

2007-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Accept --report-file=FILE to override the default `.output' filename.
	* NEWS (2.3a+): Mention.
	* doc/bison.texinfo (Bison Options): Add an entry.
	* src/files.c (compute_output_file_names): Don't override
	spec_verbose_file if already set.
	* src/getargs.c (usage): Document --report-file.
	(REPORT_FILE_OPTION): New anonymous enum member.
	(long_options): Add entry for it.
	(getargs): Add case for it setting spec_verbose_file.

	* build-aux/cross-options.pl: Don't record a short option just because
	there's an arg.
	* doc/.cvsignore: Add yacc.1.

2007-11-14  Akim Demaille  <akim@epita.fr>

	* doc/yacc.1.in: New.
	* configure.ac, doc/Makefile.am: Adjust.
	* configure.ac (PACKAGE_COPYRIGHT_YEAR): New substitution, and new
	config.h symbol.
	Use AC_SUBST for assignments too.
	* src/getargs.c (version): Use PACKAGE_COPYRIGHT_YEAR.

2007-11-10  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/gram.c: Remove comments that duplicate comments in gram.h.

	When reporting useless rules and nonterminals, say "useless in grammar"
	instead of "useless", and say "useless in parser" instead of "never
	reduced".  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00033.html>.
	* NEWS (2.3a+): Mention this change.
	* data/xslt/xml2text.xsl: Update output text and expected input XML
	element names to match changes below.
	* data/xslt/xml2xhtml.xsl: Likewise.
	(xsl:template match="bison-xml-report"): Add missing entry in Table of
	Contents: "Rules useless in parser due to conflicts".
	* doc/bison.texinfo (Decl Summary): Reword a little.
	(Understanding): Update example output for changes below.
	* src/gram.c: (rule_useful_p): Rename to...
	(rule_useful_in_grammar_p): ... this.
	(rule_useless_p): Rename to...
	(rule_useless_in_grammar_p): ... this.
	(rule_never_reduced_p): Rename to...
	(rule_useless_in_parser_p): ... this.
	(grammar_rules_print): Update for renames.
	(grammar_rules_print_xml): Update for renames.
	(grammar_rules_never_reduced_report): Rename to...
	(grammar_rules_useless_report): ... this since it is used for either
	kind of useless rule.
	* src/gram.h: Reword comments and update function names in prototypes.
	* src/main.c (main): Say "rule useless in parser due to conflicts".
	* src/print-xml.c (print_rules_never_reduced): Rename to...
	(print_rules_useless_in_parser): ... this, and rename output XML
	element "rules-never-reduced" to "rules-useless-in-parser".
	(print_xml): Update for rename.
	* src/print.c (print_results): Say "Rules useless in parser due to
	conflicts".
	* src/reduce.c (reduce_grammar_tables): Say "rule useless in grammar".
	(nonterminals_reduce): Say "nonterminal useless in grammar".
	(reduce_output): Say "Nonterminals useless in grammar".
	Say "Rules useless in grammar".
	(reduce_xml): Rename output XML element "useless" to
	"useless-in-grammar".
	(reduce_print): Don't report the count of grammatically useless rules
	as "rules never reduced" just because %yacc is specified.
	In the correct report of this count, say nonterminal(s) and rule(s)
	"useless in grammar".
	* tests/conflicts.at (S/R in initial): Update expected output.
	(Defaulted Conflicted Reduction): Likewise.
	(Unreachable States After Conflict Resolution): Likewise.
	* tests/existing.at (GNU pic Grammar): Likewise.
	* tests/reduce.at (Useless Nonterminals): Likewise.
	(Useless Rules): Likewise.
	(Reduced Automaton): Likewise.
	(Underivable Rules): Likewise.
	(Empty Language): Likewise.

2007-11-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
	here document and before the EOF so that BSD's implementation of Bourne
	shell doesn't parse the delimiter as part of the here document.
	* doc/.cvsignore: Add cross-options.texi.
	* src/getargs.c (usage): Add a blank line after the warning categories.

2007-11-08  Paolo Bonzini  <bonzini@gnu.org>

	* data/lalr1.java (Lexer): Remove usage of b4_pure_if.

2007-11-05  Akim Demaille  <akim@epita.fr>

	Remove Id: from bison.1.
	* doc/Makefile.am (remove_time_stamp): Include the sed invocation.
	(perl -0777 -pi -e 's/\.PP\nId): New.
	(.x.1): Use it to ignore the version control revision.

2007-11-05  Akim Demaille  <demaille@gostai.com>

	* build-aux/Makefile.am: Ship cross-options.pl.
	* doc/Makefile.am: Always refer to cross-options.texi with
	$(srcdir).
	(MAINTAINERCLEANFILES): Add it.

2007-11-04  Akim Demaille  <demaille@gostai.com>

	Generate the long/short option cross-table.
	* build-aux/cross-options.pl: New.
	* doc/Makefile.am (cross-options.texi): New.
	* doc/bison.texinfo: Use it.

2007-11-04  Akim Demaille  <demaille@gostai.com>

	Generate bison.1 using help2man.
	* doc/common.x, doc/bison.x: New.
	* doc/Makefile.am (bison.1, .x.1): New.
	The code is taken from autoconf-2.61/man/Makefile.am.
	* configure.ac: Look for help2man.

2007-11-04  Akim Demaille  <demaille@gostai.com>

	Complete --help.
	* src/getargs.c (usage): Document -W, make it clear that -d,
	-g and -x have optional arguments.

2007-11-04  Akim Demaille  <demaille@gostai.com>

	Find sha1sum when named gsha1sum.
	* bootstrap (find_tool): New.
	($SHA1SUM): New.

2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	Deprecate %pure-parser and add `%define api.pure'.  Discussed starting
	at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
	* NEWS (2.3a+): Mention.
	* data/bison.m4 (b4_pure_if): Don't define it here.
	* data/c.m4 (b4_identification): Depend on individual skeletons to
	define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the
	values of the %define variables api.pure or api.push_pull.  Define
	YYPURE, YYPUSH, and YYPULL accordingly.
	* data/glr.c: Define b4_pure_if based on `%define api.pure' unless
	glr.cc has already defined b4_pure_flag.
	* data/push.c: Define b4_pure_if based on `%define api.pure'.
	Remove YYPUSH and YYPULL since they're back in b4_identification again.
	* data/yacc.c: Define b4_pure_if based on `%define api.pure'.
	* doc/bison.texinfo (Pure Decl): Update.
	(Push Decl): Update.
	(Decl Summary): Add api.pure to %define entry.
	In %pure-parser entry, say it's deprecated and reference %define.
	(Pure Calling): Update.
	(Error Reporting): Update.
	(C++ Scanner Interface): Update.
	(How Can I Reset the Parser): Update.
	(Table of Symbols): In %pure-parser entry, say it's deprecated and
	reference %define.
	* src/getargs.c (pure_parser): Remove global variable.
	* src/getargs.h (pure_parser): Remove extern.
	* src/output.c (prepare): Don't define pure_flag muscle.
	* src/parse-gram.y (prologue_declaration): Implement %pure-parser as a
	wrapper around `%define api.pure'.
	* tests/calc.at (Simple LALR Calculator): Update.
	(Simple GLR Calculator): Update.
	* tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations):
	Update.
	(GLR: Resolve ambiguity, pure, locations): Update.
	(GLR: Merge conflicting parses, pure, no locations): Update.
	(GLR: Merge conflicting parses, pure, locations): Update.
	* tests/glr-regression.at (Uninitialized location when reporting
	ambiguity): Update
	* tests/input.at (Unused %define api.pure): New test case.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for
	AT_PURE_IF and AT_PURE_AND_LOC_IF.
	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.

2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	%define push_pull -> %define api.push_pull.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
	* data/push.c: Expect the new name.
	* data/yacc.c: Likewise.
	* doc/bison.texinfo (Push Decl): Update.
	(Decl Summary): Update %define entry.
	(Push Parser Function): Update.
	(Pull Parser Function): Update.
	(Parser Create Function): Update.
	(Parser Delete Function): Update.
	* tests/calc.at (Simple LALR Calculator): Update.
	* tests/input.at (%define enum variables): Update.
	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
	(Push Parsing: Multiple impure instances): Update.
	(Push Parsing: Unsupported Skeletons): Update.
	* tests/torture.at (Exploding the Stack Size with Alloca): Update.
	(Exploding the Stack Size with Malloc): Update.

	* NEWS (2.3a+): Add an entry for the push parser, and clean up the
	other entries some.

2007-10-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	For the XML output's terminal element, rename @number to @token-number,
	and add @symbol-number.  In the nonterminal element, rename @number to
	@symbol-number.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00040.html>.
	* data/xslt/xml2text.xsl (xsl:template match="terminal"): Update for
	renames.
	(xsl:template match="nonterminal"): Likewise.
	* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Likewise.
	(xsl:template match="nonterminal"): Likewise.
	* src/print-xml.c (print_grammar): Implement.

2007-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
	2007-10-11 change, the child elements here are items not rules.
	(xsl:template match="item"): New.
	(xsl:template match="rule"): Update for new reduced itemset.
	(xsl:template match="point"): Remove.
	(xsl:template match="empty"): For consistency with --graph, don't
	output "/* empty */".
	* data/xslt/xml2text.xsl (xsl:template match="terminal"): When invoking
	line-wrap, don't pass a negative value as first-line-length since this
	won't work with the following changes.
	(xsl:template name="line-wrap"): Simplify slightly.
	(xsl:template name="ws-search"): Eliminate recursion.
	* src/print_graph.c (print_core): Don't print a reduction's lookahead
	set next to an item whose dot is not at the end of the RHS even if it
	happens to be associated with the same rule.

2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add %define lr.keep_unreachable_states.
	* NEWS (2.3a+): Mention it in the entry for unreachable state removal.
	* doc/bison.texinfo (Decl Summary): Mention it in the %define entry.
	* src/main.c (main): Implement it.
	* tests/conflicts.at (Unreachable States After Conflict Resolution):
	Extend to test it, and fix a typo.

2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Add entry for recent .output file lookahead set fix.
	* doc/bison.texinfo (Understanding): Remove a bogus lookahead set in
	the example .output text.
	* tests/regression.at (Extra lookahead sets in report): Improve wording
	of comments.

2007-10-17  Wojciech Polak  <polak@gnu.org>

	* src/print-xml.c (print_grammar): Renamed
	<terminal> and <nonterminal> attributes:
	"type" to "number" and "symbol" to "name".
	* data/xslt/xml2text.xsl (xsl:template match="terminal"):
	Use new attribute names.
	(xsl:template match="nonterminal"): Likewise.
	* data/xslt/xml2xhtml.xsl: Likewise.

2007-10-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Bison Options): Add entry for --print-datadir.
	(Option Cross Key): Likewise.

	* src/print-xml.c (print_core): Don't print a reduction's lookahead set
	next to an item whose dot is not at the end of the RHS even if it
	happens to be associated with the same rule.
	* src/print.c (print_core): Likewise.
	* tests/conflicts.at (Unresolved SR Conflicts): Update output.
	(Resolved SR Conflicts): Update output.
	* tests/regression.at (Extra lookahead sets in report): New test case.

2007-10-11  Wojciech Polak  <polak@gnu.org>

	* src/print-xml.c (print_core): Remove item set
	redundancy.
	* data/xslt/bison.xsl (bison:ruleNumber): New key.
	Improve processing time. Suggested by Joel E. Denny.
	* data/xslt/xml2dot.xsl (xsl:template name="escape"):
	Write xsl:param "required" attribute as comment.
	* data/xslt/xml2text.xsl (xsl:template match="item"): New.
	(xsl:template match="rule"): Support new reduced itemset.
	(xsl:template match="point"): Remove.
	* data/xslt/xml2xhtml.xsl: Likewise.

2007-10-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (version): Update copyright year.

2007-10-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	Make xml2dot.xsl and --graph produce the same output.
	* data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a `&#10;'
	instead of a `\n'.  That is, don't add escapes yet or they'll be doubly
	escaped later.
	(xsl:template name="output-node"): Use the new escape template instead
	of the string-replace template directly.
	(xsl:template name="output-edge"): Likewise.
	(xsl:template name="escape"): New, escapes backslashes and newlines in
	addition to quotation marks.
	* src/graphviz.c (start_graph, output_node, output_edge): Add
	whitespace to output for legibility.

	Make xml2text.xsl and --report produce the same output, and remove the
	XML "conflicts" element since a conflict summary is easily extracted
	from the automaton.
	* data/xslt/bison.xsl: New.
	(xsl:template match="state" mode="bison:count-conflicts): New.
	* data/xslt/xml2text.xsl: Import bison.xsl.
	(xsl:template match="bison-xml-report"): Instead of styling the
	"conflicts" element, style the "automaton" element with mode
	"conflicts".  Unlike the former, the latter lists S/R and R/R
	conflicts for a state on the same line.
	(xsl:template match="conflicts"): Remove.
	(xsl:template match="conflict"): Remove.
	(xsl:template match="terminal"): Line-wrap the list of rules in which
	the terminal is used.
	(xsl:template match="nonterminal"): Likewise for nonterminals.
	(xsl:template match="automaton" mode="conflicts"): New.
	(xsl:template match="state" mode="conflicts"): New.
	(xsl:template name="line-wrap"): New.
	(xsl:template name="ws-search"): New.
	* data/xslt/xml2xhtml.xsl: Import bison.xsl.
	(xsl:template match="bison-xml-report"): Instead of styling the
	"conflicts" element, style the "automaton" element with mode
	"conflicts."
	(xsl:template match="conflicts"): Remove.
	(xsl:template match="conflict"): Remove.
	(xsl:template match="automaton" mode="conflicts"): New.
	(xsl:template match="state" mode="conflicts): New.
	* src/conflicts.c (conflicts_output_xml): Remove.
	* src/conflicts.h (conflicts_output_xml): Remove prototype.
	* src/print-xml.c (print_xml): Don't invoke conflicts_output_xml.
	* src/print.c (print_grammar): Consistently wrap at the 66th column so
	the corresponding XSLT is easier.  Also, never wrap between a word and
	the comma that follows it.

2007-10-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	Improve C++ namespace support.  Discussed starting at
	<http://lists.gnu.org/archive/html/help-bison/2007-09/msg00016.html>.
	* data/c++.m4: (b4_namespace_ref, b4_namespace_open,
	b4_namespace_close): New macros that interpret the %define variable
	"namespace" so its value can contain "::" to indicate nested
	namespaces.
	* data/glr.cc (b4_namespace): Don't define, and replace all uses with
	the above macros.
	* data/lalr1.cc (b4_namespace): Likewise.
	* data/location.cc (b4_namespace): Likewise.
	* doc/bison.texinfo (Decl Summary): Move `%define push_pull' entry
	inside a new table in the general %define entry.  Document `%define
	namespace' there as well.  Point the %name-prefix entry to it since it
	explains it more completely in the case of C++.
	(C++ Bison Interface): Mention `%define namespace' instead of
	%name-prefix.
	(Table of Symbols): Remove the `%define push_pull' entry.  The %define
	entry suffices.
	* tests/c++.at (Relative namespace references): New test case.
	(Absolute namespace references): New test case.
	(Syntactically invalid namespace references): New test case.
	* tests/input.at (C++ namespace reference errors): New test case.

2007-10-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add syncline support and location accessor to internal %define
	interfaces.
	* data/bison.m4 (b4_percent_define_get_loc): New.
	(b4_percent_define_get_syncline): New.
	(b4_percent_define_flag_if): Use b4_percent_define_get_loc.
	(b4_percent_define_default): Record defining location as line 1 rather
	than 0 for the sake of synchronizing #line's, and define
	b4_percent_define_syncline(VARIABLE).
	(b4_percent_define_check_values): Use b4_percent_define_get_loc.
	* src/muscle_tab.c (muscle_syncline_grow): New.
	(muscle_code_grow): Use muscle_syncline_grow.
	(muscle_percent_define_insert): Use muscle_percent_define_get_loc, and
	define b4_percent_define_syncline(VARIABLE).
	(muscle_percent_define_get_loc): New.
	(muscle_percent_define_get_syncline): New.
	(muscle_percent_define_flag_if): Use muscle_percent_define_get_loc, and
	remove some unused variables.
	(muscle_percent_define_default): Record defining location as line 1
	rather than 0 for the sake of synchronizing #line's, and define
	b4_percent_define_syncline(VARIABLE).
	(muscle_percent_define_check_values): Use
	muscle_percent_define_get_loc.
	* src/muscle_tab.h (muscle_percent_define_get_loc): Prototype.
	(muscle_percent_define_get_syncline): Prototype.
	* tests/skeletons.at (%define Boolean variables: invalid skeleton
	defaults): Update output for location change.
	(Complaining during macro argument expansion): Extend to test
	b4_percent_define_get_loc and b4_percent_define_get_syncline errors.

2007-10-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix some error-reporting macro bugs.
	* data/bison.m4 (b4_cat): New.
	(b4_error, b4_error_at): Use b4_cat to send error directives directly
	to stdout so they don't become arguments to other macros.  Update
	comments and add examples.
	(b4_warn, b4_warn_at, b4_complain, b4_complain_at): Update comments and
	add examples.
	(b4_fatal, b4_fatal_at): Likewise, and invoke m4_exit(1) immediately
	after printing the error directive so that M4 doesn't report subsequent
	problems that are induced by this problem.
	* src/scan-skel.l: Recognize @` digraph outside of directive arguments
	instead of just in them.  Recognize @\n in both places.  Both expand to
	the empty string.  Needed by b4_cat.
	* tests/skeletons.at (Complaining during macro argument expansion):
	New test case.
	(Fatal errors make M4 exit immediately): New test case.

2007-10-04  Joel E. Denny  <jdenny@ces.clemson.edu>

	Implement --print-datadir.
	* src/getargs.c (usage): Mention.
	(PRINT_DATADIR_OPTION): New anonymous enum member.
	(long_options): Add entry for it.
	(getargs): Add case for it calling compute_pkgdatadir.
	* src/output.c (output_skeleton): Encapsulate data directory
	computation from here...
	(prepare): ... and from here...
	(compute_pkgdatadir): ... into this new function.
	* src/output.h (compute_pkgdatadir): Prototype.

2007-09-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/print-xml.c (escape_bufs): New static global variable
	replacing...
	(xml_escape_n): ... the static local variable buf here.
	(print_xml): Free memory for escape_bufs.
	* src/reduce.c (reduce_xml): XML-escape terminal symbol tags.

2007-09-25  Joel E. Denny  <jdenny@ces.clemson.edu>

	Replace `%push-parser' and `%push-pull-parser' with
	`%define push_pull "push"' and `%define push_pull "both"'.
	`%define push_pull "pull"' is the default.
	* doc/bison.texinfo (Push Decl, Push Parser Function,
	Pull Parser Function, Parser Create Function, Parser Delete Function):
	Update declarations.
	(Decl Summary, Table of Symbols): Replace %push-parser and
	%push-pull-parser entries with a %define push_pull entry.
	* data/bison.m4 (b4_percent_define_check_values): New macro.
	(b4_pull_if, b4_push_if, b4_use_push_for_pull_if): Move these
	definitions...
	* data/c.m4 (b4_identification): ... and the YYPUSH and YYPULL cpp
	definitions...
	* data/push.c: ... to here and compute them from the value of the
	%define variable push_pull.
	* data/c-skel.m4: Instead of choosing the push.c skeleton for push
	parsing requests here...
	* data/yacc.c: ... hack this to switch to push.c any time
	b4_use_push_pull_flag or the %define variable push_pull is set.  This
	will go away when we mv push.c yacc.c.
	* data/c++-skel.m4, data/glr.c, data/java-skel.m4: Don't report that
	push parsing is not supported since unused %define variables are
	reported anyway.
	* src/getargs.c, src/getargs.h (pull_parser, push_parser): Remove.
	* src/muscle_tab.h (muscle_percent_define_check_values): Update
	comments for consistency with b4_percent_define_check_values.
	* src/output.c (prepare): Don't insert b4_pull_flag and b4_push_flag
	muscles.
	* src/parse-gram.y (PERCENT_PUSH_PARSER, PERCENT_PUSH_PULL_PARSER):
	Remove.
	(prologue_declaration): Remove %push-parser and %push-pull-parser
	rules.
	* src/scan-gram.l (%push-parser, %push-pull-parser): Remove rules.
	* tests/calc.at: Update declarations.
	* tests/input.at (%define enum variables): New test case.
	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update
	declaration.
	(Push Parsing: Multiple impure instances): Update declaration.
	(Push Parsing: Unsupported Skeletons): New test case.
	* tests/torture.at (Exploding the Stack Size with Alloca): Update
	declaration.
	(Exploding the Stack Size with Malloc): Update declaration.

2007-09-24  Wojciech Polak  <polak@gnu.org>

	Add XSLT transformations.

	* data/xslt/xml2dot.xsl: Transform XML into DOT.
	* data/xslt/xml2text.xsl: Transform XML into plain text.
	* data/xslt/xml2xhtml.xsl: Transform XML into XHTML.
	* data/Makefile.am (xsltdir): New variable.
	(dist_xslt_DATA): Add xslt/*.xsl files.

2007-09-23  Paul Eggert  <eggert@cs.ucla.edu>

	* src/conflicts.c (log_resolution): Fix indenting bugs I introduced.
	Problem reported by Wojciech Polak.
	* src/print-xml.c (xml_puts): Work even if LEVEL exceeds INT_MAX/2.
	(xml_printf): Undo change I made on 21 September; that is,
	indent 2 spaces, not 1.

2007-09-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	Pacify ./configure --enable-gcc-warnings.
	* src/print-xml.c, src/print-xml.h (xml_puts): Make third argument
	`char const *' instead of `char *'.
	* src/state.c (state_rule_lookahead_tokens_print_xml): Remove unused
	local variable `sep'.

2007-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* src/gram.c (rule_rhs_print_xml): Now static, since it isn't used
	elsewhere.
	* src/print-xml.c: Prefer "const" after types; that's more consistent.
	(xml_printf): Indent just 1 space for level.
	(e_char, xlate_char): Remove.
	(xml_escape_string): Rewrite to avoid undefined behavior (used
	storage that was freed from the stack).
	(xml_escape_n): Don't bother checking for subscript error.

2007-09-21  Wojciech Polak  <polak@gnu.org>

	Add Bison XML Automaton Report.

	Add support for an -x option to generate an XML report.
	It is not documented yet.
	* src/print-xml.c: New file.
	* src/print-xml.h: Likewise.
	* lib/timevar.def (TV_XML): New var.
	* src/Makefile.am (bison_SOURCES): Add print-xml.c, print-xml.h.
	* src/conflicts.c: Include print-xml.h.
	(solved_conflicts_xml_obstack): New var.
	(log_resolution, conflicts_solve, conflicts_free):
	Add support for XML report.
	(conflicts_output_val): New function.
	* src/conflicts.h (conflicts_output_val): New decl.
	* src/files.c (spec_xml_file): New var.
	(compute_output_file_names, output_file_names_free): Add XML support.
	* src/files.h (spec_xml_file): New decl.
	* src/getargs.c (xml_flag): New var.
	(usage, short_options, long_options, getargs): Add XML support.
	* src/getargs.h (xml_flag): New decl.
	* src/gram.c: Include print-xml.h.
	(rule_lhs_print_xml, rule_rhs_print_xml):
	(grammar_rules_partial_print_xml, grammar_rules_print_xml):
	New functions.
	* src/gram.h: Declare external ones.
	* src/main.c: Include print-xml.h.
	(main): Add XML support.
	* src/reduce.c: Include print-xml.h.
	(reduce_xml): New function.
	* src/reduce.h: Declare it.
	* src/state.c: Include print-xml.h.
	(state_new): Add XML support.
	(state_rule_lookahead_tokens_print_xml): New function.
	* src/state.h: Declare it.
	(struct state): New member solved_conflicts_xml.
	* src/symtab.c (symbol_class_get_string): New function.
	* src/symtab.h: Declare it.

2007-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* GNUmakefile: Switch to coreutils's version.
	* bootstrap: Likewise.
	* Makefile.cfg: Adjust to new GNUmakefile.
	* README-hacking: Likewise.

	Import from gnulib:

	2006-08-18  Paul Eggert  <eggert@cs.ucla.edu>
		    Bruno Haible  <bruno@clisp.org>

	* m4/bison-i18n.m4 (BISON_I18N): Also handle the case where yacc exists
	and is a script that invokes bison. Tighten the code. Add comments.

2007-08-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	Spell "boolean" as "Boolean".  Reported by Akim Demaille.
	* data/bison.m4 (b4_percent_define_flag_if): Fix complaint.
	* doc/bison.texinfo (Decl Summary): Fix.
	* src/muscle_tab.c (muscle_percent_define_flag_if): Fix complaint.
	* tests/input.at (Boolean %define variables): Update output.
	* tests/skeletons.at (%define boolean variables: invalid skeleton
	defaults): Rename to...
	(%define Boolean variables: invalid skeleton defaults): ... this and
	update output.

2007-08-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	In impure push mode, don't allow more than one yypstate to be allocated
	since multiple impure parsers would corrupt yynerrs.
	* data/push.c (yypstate_allocated): New static global variable
	initialized to 0.
	(yypull_parse): If yypstate_new returns 0, don't report it as memory
	exhaustion if yypstate_allocated is 1, but still return 2.
	(yypstate_new): Invoke yyerror and return 0 if yypstate_allocated is
	already 1.  Otherwise, set it to 1.
	(yypstate_delete): Set it to 0.
	* tests/push.at (Push Parsing: Multiple impure instances): New test
	case.

2007-08-17  Bob Rossi  <bob@brasko.net>

	* doc/bison.texinfo (Push Decl): Document the push parser.
	(Table of Symbols): Ditto.
	(Pure Decl): Ditto.
	(Decl Summary): Ditto.
	(Multiple Parsers, Push Parser Function, Pull Parser Function,
	Parser Create Function, Parser Delete Function):
	Add new push parser symbols.
	(Table of Symbols): Document push-parser, push-pull-parser,
	yypush_parse, yypull_parse, yypstate_new and yypstate_delete.

2007-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Update to GPLv3.
	* doc/gpl-3.0.texi: New file.
	* doc/gpl.texi: Remove.
	* COPYING, GNUmakefile, HACKING, Makefile.am, Makefile.cfg:
	* Makefile.maint, NEWS, PACKAGING, README, README-alpha:
	* README-hacking, TODO, bootstrap, bootstrap.conf:
	* configure.ac, data/Makefile.am, data/README, data/bison.m4:
	* data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4:
	* data/glr.c, data/glr.cc, data/java-skel.m4, data/java.m4:
	* data/lalr1.cc, data/lalr1.java, data/location.cc:
	* data/push.c, data/yacc.c, data/m4sugar/m4sugar.m4:
	* djgpp/Makefile.maint, djgpp/README.in, djgpp/config.bat:
	* djgpp/config.sed, djgpp/config.site, djgpp/config_h.sed:
	* djgpp/djunpack.bat, djgpp/subpipe.c, djgpp/subpipe.h:
	* djgpp/testsuite.sed, doc/Makefile.am, doc/bison.texinfo:
	* doc/fdl.texi, doc/refcard.tex, etc/Makefile.am, etc/README:
	* etc/bench.pl.in, examples/Makefile.am, examples/extexi:
	* examples/calc++/Makefile.am, lib/Makefile.am, lib/abitset.c:
	* lib/abitset.h, lib/bbitset.h, lib/bitset.c, lib/bitset.h:
	* lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c:
	* lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h:
	* lib/ebitset.c, lib/ebitset.h, lib/get-errno.c:
	* lib/get-errno.h, lib/lbitset.c, lib/lbitset.h:
	* lib/libiberty.h, lib/main.c, lib/subpipe.c, lib/subpipe.h:
	* lib/timevar.c, lib/timevar.def, lib/timevar.h:
	* lib/vbitset.c, lib/vbitset.h, lib/yyerror.c:
	* m4/c-working.m4, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4:
	* m4/timevar.m4, src/LR0.c, src/LR0.h, src/Makefile.am:
	* src/assoc.c, src/assoc.h, src/closure.c, src/closure.h:
	* src/complain.c, src/complain.h, src/conflicts.c:
	* src/conflicts.h, src/derives.c, src/derives.h, src/files.c:
	* src/files.h, src/flex-scanner.h, src/getargs.c:
	* src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c:
	* src/lalr.c, src/lalr.h, src/location.c, src/location.h:
	* src/main.c, src/muscle_tab.c, src/muscle_tab.h:
	* src/nullable.c, src/nullable.h, src/output.c, src/output.h:
	* src/parse-gram.c, src/parse-gram.h, src/parse-gram.y:
	* src/print.c, src/print.h, src/print_graph.c:
	* src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c:
	* src/reduce.h, src/relation.c, src/relation.h:
	* src/revision.h, src/scan-code.h, src/scan-code.l:
	* src/scan-gram.h, src/scan-gram.l, src/scan-skel.h:
	* src/scan-skel.l, src/state.c, src/state.h, src/symlist.c:
	* src/symlist.h, src/symtab.c, src/symtab.h, src/system.h:
	* src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h:
	* tests/Makefile.am, tests/actions.at, tests/c++.at:
	* tests/calc.at, tests/conflicts.at, tests/cxx-type.at:
	* tests/existing.at, tests/glr-regression.at:
	* tests/headers.at, tests/input.at, tests/java.at:
	* tests/local.at, tests/output.at, tests/push.at:
	* tests/reduce.at, tests/regression.at, tests/sets.at:
	* tests/skeletons.at, tests/synclines.at, tests/testsuite.at:
	* tests/torture.at:
	Update to GPLv3.

2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	Get rid of broken %no-parser, -n, and --no-parser implementation and
	documentation.
	* TODO: Don't mention them.
	* doc/bison.1: Likewise.
	* doc/bison.texinfo (Decl Summary): Likewise.
	(Bison Options): Likewise.
	(Option Cross Key): Likewise.
	* src/getargs.c (no_parser_flag): Remove global variable.
	(usage): Don't print description of -n and --no-parser.
	(long_options): Remove --no-parser entry here.
	(getargs): Remove -n case in the switch here.
	* src/getargs.h (no_parser_flag): Remove extern.
	* tests/regression.at (Web2c Actions): Remove comment that mentions
	--no-parser.

2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not
	name user variables starting with `yy'.  Just pass NULL instead of a
	dummy local &yylval to yypush_parse.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Do not name user variables
	starting with `yy'.

2007-08-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is
	true since it's then always used regardless of whether yyoverflow is
	defined.  Reported by Christian Burger at
	<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00031.html>.
	* THANKS: Add Christian Burger.

	* ChangeLog: For changes in doc/bison.texinfo, consistently reference
	node names: say "Decl Summary" not "Bison Declaration Summary".

2007-07-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/muscle_tab.c (muscle_percent_define_flag_if): In order to
	determine whether this function has already complained about an invalid
	value for a %define boolean variable, don't check whether Bison has
	ever examined the value.  As written, the check was a tautology.
	Instead, record and check for this complaint using a separate muscle.

2007-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix push parsing memory leak reported by Brandon Lucia at
	<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00032.html>.
	* THANKS: Add Brandon Lucia.
	* data/push.c (yypstate_delete): Free the stack if it was reallocated
	but the parse never completed and thus freed it.
	* tests/Makefile.am (TESTSUITE_AT): Add push.at.
	* tests/testsuite.at: Include push.at.
	* test/push.at: New.
	(Push Parsing: Memory Leak for Early Deletion): New test case.

2007-07-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Improve handling of multiple S/R conflicts in the same state and of S/R
	conflicts involving multiple reductions.
	* src/conflicts.c (resolve_sr_conflict): Don't assign the error action
	set for a state here or Bison will abort if it is reassigned on a
	later conflicted reduction in the same state.
	Similarly, don't finalize and assign the solved conflicts report here
	or it will be lost if it is reassigned on a later conflicted reduction
	in the same state.
	(set_conflicts): Instead, assign them both here after all S/R conflicts
	in the state have been fully examined.
	* src/print.c (shift_set): Rename to...
	(no_reduce_set): ... this.
	(print_reductions): Update for rename, and add %nonassoc error action
	tokens to no_reduce_set so that, when printing the first remaining
	reduction on an error action token, the reduction is enclosed in
	brackets.
	(print_results): Update for rename.
	* tests/conflicts.at (Solved conflicts report for multiple reductions
	in a state): New test case.
	(%nonassoc error actions for multiple reductions in a state): New test
	case.

	* src/main.c (main): Don't depend on C99 features.

2007-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	* build-aux/.cvsignore: Add compile.
	* lib/.cvsignore: Add charset.alias, ref-add.sed, ref-del.sed, and
	uniwidth.

2007-07-10  Joel E. Denny  <jdenny@ces.clemson.edu>

	* bootstrap (slurp): Create target directories that don't exist.
	Specifically, we need lib/uniwidth/ because of recent Gnulib changes.

2007-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* LR0.c (new_itemsets): Fix wording in comments: say item index rather
	than item number.
	* closure.c (closure): Likewise.
	* state.h (reductions): Comment sorting of rules.
	(state): Comment sorting of items.

2007-07-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix C++ test cases after recent Gnulib changes.  Discussed starting at
	<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00000.html>.
	* examples/calc++/Makefile.am (DEFAULT_INCLUDES): Override Automake's
	definition in order to avoid Gnulib headers since we don't use config.h
	here.
	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use AT_DATA_GRAMMAR
	rather than AT_DATA so that config.h is included.

2007-07-01  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF
	instead of fprintf.  Guard these functions with #if YYDEBUG instead of
	#ifdef YYDEBUG for consistency with all other uses of YYDEBUG in Bison
	and so that YYFPRINTF is guaranteed to be defined here.

2007-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/muscle_tab.c (muscle_percent_define_invalid_value): Replace
	with...
	(muscle_percent_define_check_values): ... this more helpful function.
	Again, it's not used yet, but it will be.
	* src/muscle_tab.h: Likewise.

	Improve some comments in parser table construction.
	* src/LR0.c (new_itemsets): Explain sorting of itemset and kernel_base.
	(generate_states): Don't mention ruleset, which is internal to closure.
	* src/closure.c (closure): Explain sorting of core and itemset, which
	is required for this function to behave correctly.
	* src/closure.h (closure): Mention sorting.

2007-05-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/lalr.c (state_lookahead_tokens_count): For code readability,
	move the check for disabled transitions to an aver since conflict
	resolution hasn't happened yet.

	* src/lalr.c (state_lookahead_tokens_count): Remove the check that
	labels a state as inconsistent just because it has error transitions.
	The original form of this check appeared in revision 1.1 of lalr.c,
	which was committed on 1991-12-21.  Now (at least), changing the
	consistency label on such a state appears to have no useful effect in
	any of the places it is examined, which I enumerate below.  The key
	point to understanding each item in this enumeration is that a state
	with an error transition is labelled consistent in the first place only
	if it has no rules, so the check cannot matter for states that have
	rules.  (1) Labelling a state as inconsistent will cause set_conflicts
	to try to identify its conflicts, and a state must have *rules* to have
	conflicts.  (2) Labelling a state as inconsistent will affect how
	action_row sets the default *rule* for the state.  (3) Labelling a
	state as inconsistent will cause build_relations to add lookback edges
	to *rules* in that state.
	* src/state.h (struct state): Word the comment for member consistent
	more carefully.

2007-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't depend on C99 features.
	* src/conflicts.c (conflicts_update_state_numbers): Fix for-loop.
	* src/lalr.c (lalr_update_state_numbers): Fix for-loop.
	* src/reader.c (check_and_convert_grammar): Fix for-loop.
	* src/state.c (state_mark_reachable_states): Fix for-loop.
	(state_remove_unreachable_states): Fix for-loop.

	Don't widen struct state with member reachable just to temporarily
	record reachability.  Instead, use a local bitset.
	* src/state.h (struct state): Remove member.
	* src/state.c (state_new): Don't initialize it.
	(state_mark_reachable_states): Rename to...
	(state_record_reachable_states): ... this, and use bitset.
	(state_remove_unreachable_states): Use bitset.

2007-05-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/Makefile.am (yacc): Quote target action commands properly so
	that the yacc script isn't corrupt.  Reported by Hans Aberg at
	<http://lists.gnu.org/archive/html/bug-bison/2007-05/msg00003.html>.

	* data/glr.c (yylval): As in yacc.c, don't extern in the header for
	the case of pure parsers.  Reported by Frans Englich at
	<http://lists.gnu.org/archive/html/help-bison/2007-05/msg00018.html>.
	* THANKS: Add Frans Englich.

	* NEWS (2.3a+): In the %code entry, reference section `Bison
	Declaration Summary' from the manual now since the %code summary has
	moved there.
	* doc/bison.texinfo (Prologue Alternatives): Mention that directives
	in the rules section must be terminated by semicolons.

2007-05-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Extend the front-end API for %define variables to more completely
	mirror the back-end.  This will be useful in the future.
	* data/bison.m4 (b4_percent_define_get, b4_percent_define_ifdef):
	Update comments to mention the new front-end counterparts of these
	macros.
	* src/muscle_tab.c (MUSCLE_COMMON_DECODE): New macro with common code
	for muscle_string_decode and muscle_location_decode.
	(muscle_string_decode): New static function.
	(muscle_location_decode): Use MUSCLE_COMMON_DECODE.
	(muscle_percent_define_get, muscle_percent_define_ifdef): New
	functions.
	(muscle_percent_define_flag_if): Use muscle_percent_define_ifdef and
	muscle_percent_define_get to mimic the b4_percent_define_flag_if
	implementation more closely.
	(muscle_percent_define_invalid_value): New function.
	* src/muscle_tab.h (muscle_percent_define_get,
	muscle_percent_define_ifdef, muscle_percent_define_invalid_value):
	Prototype.

2007-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Mention yesterday's state-removal change.
	(2.3a): Remove the %language entry, which was added after 2.3a.
	* src/LR0.c, src/closure.c, src/closure.h, src/conflicts.c,
	src/conflicts.h, src/lalr.c, src/lalr.h, src/print.c,
	src/print_graph.c, src/state.c, src/state.h, tests/conflicts.at,
	tests/existing.at: Update copyright date.

2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	If conflict resolution makes states unreachable, remove those states,
	report rules that are then unused, and don't report conflicts in those
	states.
	* src/conflicts.c, src/conflicts.h (conflicts_update_state_numbers):
	New global function.
	* src/lalr.c, src/lalr.h (lalr_update_state_numbers): New global
	function.
	* src/main.c (main): After conflict resolution, remove the unreachable
	states and update all data structures that reference states by number.
	* src/state.c (state_new): Initialize each state's reachable member to
	false.
	(state_mark_reachable_states): New static function.
	(state_remove_unreachable_states): New global function.
	* src/state.h (struct state): Add member bool reachable.
	(state_remove_unreachable_states): Prototype.
	* tests/conflicts.at (Unreachable States After Conflict Resolution):
	New test case.
	* tests/existing.at (GNU pic Grammar): Update test case output now that
	an unused rule is discovered.

2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	Minor code cleanup in parser table construction.
	* src/LR0.c (new_itemsets): Use item_number_is_symbol_number.
	(new_itemsets, save_reductions): Update for rename to nitemset.
	* src/closure.c (nritemset): Rename to...
	(nitemset): ... this since the "r" appears to meaningless and isn't
	used in the comments.
	(closure): Update for rename.
	* src/closure.h (nritemset): Update extern to...
	(nitemset): ... this.
	* src/lalr.c (LA): Fix a typo in comments.
	* src/print.c (print_core): Update for rename to nitemset.
	* src/print_graph.c (print_graph): Likewise.
	* src/state.h: Fix some typos in header comments.

2007-04-04  Paul Eggert  <eggert@cs.ucla.edu>

	* THANKS: Use ASCII for Sebastien Fricker's name.  Bison source
	still sticks to ASCII.  Sorry!

	* README-hacking: New file, taken mostly from coreutils, with changes
	for Bison.  Contains much of the contents of:
	* README-cvs: Remove.
	* bootstrap: Sync from gnulib.
	* build-aux/.cvsignore: Remove *.t, mkinstalldirs.
	* lib/.cvsignore: Add wchar.h, wctype.h.  Remove exit.h.

2007-03-10  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
	Setzer.
	(Java Differences): Fix some typos.
	* THANKS: Add Sebastian Setzer.

2007-03-07  Paolo Bonzini  <bonzini@gnu.org>

	* data/java.m4 (b4_single_class_if): Remove.
	(b4_abstract_if): Look at "%define abstract".
	(b4_lexer_if): New.
	(b4_union_name): Rename...
	(b4_yystype): ... to this.  Map to "%define stype".
	(b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
	b4_maybe_throws): Fix quoting.
	(b4_lex_param_call): Move below to keep b4_*_param_decl close.
	* data/lalr1.java (Lexer interface): Always define.
	(Lexer interface within parser class): Remove.
	(YYLexer class): New, used when "%code lexer" is present.
	(constructor): When "%code lexer" is used, pass %lex-param
	to the lexer constructor.
	(yylex, yyparse): Remove %lex-param from method invocations
	(YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.

	* doc/bison.texinfo (Java Bison Interface): Mention "%define
	abstract".  Rename "%define union_name" to "%define stype".
	Rename method names according to previous patch.
	(Java Scanner Interface): Describe "%code lexer" instead of
	"%pure-parser" and "%define single_class".
	(Java Differences): Mention "%code lexer".

	* tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
	Include scanner here, using macros from tests/local.at.
	(AT_DATA_CALC_Y): Remove final argument.
	(_AT_CHECK_JAVA_CALC): Likewise.
	(AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
	of %locations and %error-verbose.
	(main): Test with and without %lex-param.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
	(AT_BISON_OPTION_POPDEFS): Pop it.

2007-03-07  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP spefic issue.  Inhibit the use of disallowed characters for
	file name genertion on Win98, WinXP, etc.  These are |<>":?*\
	and concern testsuite case 46.
	* Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST
	* djgpp/testsuite.sed: Inhibit the use of disallowed characters.
	* djgpp/config.bat: Inhibit the use of disallowed characters.

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
	Sebastien Fricker at
	<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
	* THANKS: Add Sebastien 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.
	(Decl 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>

	Add support for push parsing.  Based on the original work of
	Odd Arild Olsen <oao@fibula.no>.
	* 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.
	* data/push.c: New file.
	* 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.
	(Decl 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.
	(Decl 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
	`{'.  Rather, return a single "%union" token.
	No longer make symbols: return strings, and leave the conversion
	to symbols to the parser.
	(SC_PRE_CODE, token_type): Remove.
	* src/parse-gram.y (%union): New field `character'.
	Sort tokens.
	(CHAR): New token.
	(ID, ID_COLON): Now that the scanner no longer makes them
	identifiers, adjust all uses to invoke symbol_get.
	(id_colon): New, wraps the conversion from string to symbol.
	(%union): Accept a possible union_name.
	(symbol): Now can be a char.
	* data/c.m4 (b4_union_name): Leave a default value.
	* data/glr.c, data/yacc.c: Use it.

2006-06-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	For associating token numbers with token names for "yacc.c", don't use
	#define statements unless `--yacc' is specified; always use enum
	yytokentype.  Most important discussions start at:
	<http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00053.html>,
	<http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00052.html>,
	and
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00043.html>.
	* NEWS (2.3+): Mention.
	* data/c.m4 (b4_yacc_if): New.
	(b4_token_enums_defines): Use b4_yacc_if to decide whether to add the
	token #define's.
	* doc/bison.texinfo (Bison Options): Describe the effect of `--yacc'
	on token name definitions.
	* src/getargs.c (usage): Capitalize `Yacc' in English.
	* src/output.c (prepare): Define b4_yacc_flag.
	* tests/regression.at (Early token definitions): Test that tokens names
	are defined before the pre-prologue not just before the post-prologue.
	Remove this test case and copy to...
	(Early token definitions with --yacc): ... this to test #define's.
	(Early token definitions without --yacc): ... and this to test enums.

2006-06-11  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Reword the post-2.3 change to not be so optimistic about
	removing the old "look-ahead" spelling.
	Update previous look-ahead/lookahead change reports.
	* REFERENCES: look-ahead -> lookahead (since that's
	what he actually wrote).
	* doc/refcard.tex: look ahead -> lookahead,
	look-ahead -> lookahead

2006-06-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	For consistency, use `lookahead' instead of `look-ahead' or
	`look_ahead'.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00049.html>
	and then at
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00017.html>.
	* NEWS: For the next release, note the change to `--report'.
	* TODO, doc/bison.1: Update English.
	* doc/bison.texinfo: Update English.
	(Understanding Your Parser, Bison Options): Document as
	`--report=lookahead' rather than `--report=look-ahead'.
	* src/conflicts.c: Update English in comments.
	(lookahead_set): Rename from look_ahead_set.
	(flush_reduce): Rename argument look_ahead_tokens to lookahead_tokens.
	(resolve_sr_conflict): Rename local look_ahead_tokens to
	lookahead_tokens, and update other uses.
	(flush_shift, set_conflicts, conflicts_solve, count_sr_conflicts,
	count_rr_conflicts, conflicts_free): Update uses.
	* src/getargs.c (report_args): Move "lookahead" before alternate
	spellings.
	(report_types): Update uses.
	(usage): For `--report' usage description, state `lookahead' spelling
	rather than `look-ahead'.
	* src/getargs.h (report.report_lookahead_tokens): Rename from
	report_look_ahead_tokens.
	* src/lalr.c: Update English in comments.
	(compute_lookahead_tokens): Rename from compute_look_ahead_tokens.
	(state_lookahead_tokens_count): Rename from
	state_look_ahead_tokens_count.
	Rename local n_look_ahead_tokens to n_lookahead_tokens.
	(lookahead_tokens_print): Rename from look_ahead_tokens_print.
	Rename local n_look_ahead_tokens to n_lookahead_tokens.
	Update other uses.
	Update English in output.
	(add_lookback_edge, initialize_LA, lalr, lalr_free): Update uses.
	* src/print.c: Update English in comments.
	(lookahead_set): Rename from look_ahead_set.
	(print_reduction): Rename argument lookahead_token from
	look_ahead_token.
	(print_core, state_default_rule, print_reductions, print_results):
	Update uses.
	* src/print_graph.c: Update English in comments.
	(print_core): Update uses.
	* src/state.c: Update English in comments.
	(reductions_new): Update uses.
	(state_rule_lookahead_tokens_print): Rename from
	state_rule_look_ahead_tokens_print, and update other uses.
	* src/state.h: Update English in comments.
	(reductions.lookahead_tokens): Rename from look_ahead_tokens.
	(state_rule_lookahead_tokens_print): Rename from
	state_rule_look_ahead_tokens_print.
	* src/tables.c: Update English in comments.
	(conflict_row, action_row): Update uses.
	* tests/glr-regression.at
	(Incorrect lookahead during deterministic GLR,
	Incorrect lookahead during nondeterministic GLR): Rename
	print_look_ahead to print_lookahead.
	* tests/torture.at: Update English in comments.
	(AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR): Rename from
	AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR.
	(Many lookahead tokens): Update uses.
	* data/glr.c: Update English in comments.
	* lalr1.cc: Likewise.
	* yacc.c: Likewise.
	* src/conflicts.h: Likewise.
	* src/lalr.h: Likewise.
	* src/main.c: Likewise.
	* src/output.c: Likewise.
	* src/parse-gram.c: Likewise.
	* src/tables.h: Likewise.
	* tests/calc.at: Likewise.

2006-06-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/flex-scanner.h (yytext): Remove stray `*/' in #define.

2006-06-07  Paul Eggert  <eggert@cs.ucla.edu>

	* TODO: Add request from Nelson H. F. Beebe to be able to install
	Bison without installing the yacc script.

2006-06-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/flex-scanner.h: For the sake of Flex 2.5.4, don't #define yyleng
	and yytext if they're already #define'd.
	* src/flex-scanner.h, src/location.h: Move #include "system.h" to...
	* src/scan-code-c.c: ... here.
	* src/scan-code.l, src/scan-gram.l: ... and here.  Also #include
	<config.h>.

2006-06-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Get Bison to build again when configured with --enable-gcc-warnings.
	* src/location.c, src/location.h, src/main.c, src/scan-code.l: Add some
	missing #include's.
	* src/scan-code.l (handle_action_dollar, handle_action_at): Rename
	loc argument as it shadows a global.
	* src/scan-gram.l: Remove stray comma that prevents boundary_set
	invocation.

	* src/.cvsignore: Add scan-code.c.

2006-06-07  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: Move the "add a trailing ; to actions" code
	to...
	* src/scan-code.l: here.
	* tests/input.at (Torturing the Scanner): Fix another location
	error.

2006-06-07  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (BUILT_SOURCES): Fix the trailing backslash.

2006-06-06  Akim Demaille  <akim@epita.fr>

	Extract the parsing of user actions from the grammar scanner.
	As a consequence, the relation between the grammar scanner and
	parser is much simpler.  We can also split "composite tokens" back
	into simple tokens.
	* src/gram.h (ITEM_NUMBER_MAX, RULE_NUMBER_MAX): New.
	* src/scan-gram.l (add_column_width, adjust_location): Move to and
	rename as...
	* src/location.h, src/location.c (add_column_width)
	(location_compute): these.
	Fix the column count: the initial column is 0.
	(location_print): Be robust to ending column being 0.
	* src/location.h (boundary_set): New.
	* src/main.c: Adjust to scanner_free being renamed as
	gram_scanner_free.
	* src/output.c: Include scan-code.h.
	* src/parse-gram.y: Include scan-gram.h and scan-code.h.
	Use boundary_set.
	(PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_INITIAL_ACTION)
	(PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Remove the {...} part,
	which is now, again, a separate token.
	Adjust all dependencies.
	Wherever actions with $ and @ are used, use translate_code.
	(action): Remove this nonterminal which is now useless.
	* src/reader.c: Include assert.h, scan-gram.h and scan-code.h.
	(grammar_current_rule_action_append): Use translate_code.
	(packgram): Bound check ruleno, itemno, and rule_length.
	* src/reader.h (gram_in, gram__flex_debug, scanner_cursor)
	(last_string, last_braced_code_loc, max_left_semantic_context)
	(scanner_initialize, scanner_free, scanner_last_string_free)
	(gram_out, gram_lineno, YY_DECL_): Move to...
	* src/scan-gram.h: this new file.
	(YY_DECL): Rename as...
	(GRAM_DECL): this.
	* src/scan-code.h, src/scan-code.l, src/scan-code-c.c: New.
	* src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
	(gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
	(gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
	Move these declarations, and...
	(obstack_for_string, STRING_GROW, STRING_FINISH, STRING_FREE):
	these to...
	* src/flex-scanner.h: this new file.
	* src/scan-gram.l (rule_length, rule_length_overflow)
	(increment_rule_length): Remove.
	(last_braced_code_loc): Rename as...
	(gram_last_braced_code_loc): this.
	Adjust to the changes of the parser.
	Move all the handling of $ and @ into...
	* src/scan-code.l: here.
	* src/scan-gram.l (handle_dollar, handle_at): Remove.
	(handle_action_dollar, handle_action_at): Move to...
	* src/scan-code.l: here.
	* src/Makefile.am (bison_SOURCES): Add flex-scanner.h,
	scan-code.h, scan-code-c.c, scan-gram.h.
	(EXTRA_bison_SOURCES): Add scan-code.l.
	(BUILT_SOURCES): Add scan-code.c.
	(yacc): Be robust to white spaces.

	* tests/conflicts.at, tests/input.at, tests/reduce.at,
	* tests/regression.at: Adjust the column numbers.
	* tests/regression.at: Adjust the error message.

2006-06-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
	Use Akim's wording from
	<http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00056.html>.

2006-06-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	Between Bison releases, manually append `+' to the previous Bison
	release number, and use that as a signal to automatically print the
	ChangeLog's CVS Id keyword from --version.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
	* ChangeLog: Add Id header.
	* configure.ac (AC_INIT): Append `+' to `2.3'.
	* src/.cvsignore: Add revision.c.
	* src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
	(BUILT_SOURCES): Add revision.c.
	(revision.c): New target rule.  This file defines a new global variable
	named revision.  It initializes it with either the Id from ChangeLog
	or, if VERSION doesn't contain `+', with the empty string.
	* src/getargs.c (version): Print the value of revision.
	* src/revision.h: Extern revision.

2006-06-05  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.3.
	* configure.ac (AC_INIT): Likewise.

2006-05-30  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (YYRECOVERING): Define to be a function-like macro
	with no arguments, not as an object-like macro.  This is for
	compatibility with data/yacc.c.  Problem reported by John P. Hartmann in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00059.html>.
	* doc/bison.texinfo (Action Features, Error Recovery, Table of Symbols):
	Document this.

2006-05-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (usage): Back out yesterday's modification of the
	--help output so that we don't have to wait for translation before
	releasing 2.3.

2006-05-29  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Introduction): Don't say "GLR grammar".
	Problem reported by Akim Demaille.

2006-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.

2006-05-26  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yy_reduce_print): Omit trailing white space in
	generated source code.  Problem reported by Frans Englich in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00049.html>.

2006-05-22  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.maint (gzip_rsyncable, GZIP_ENV): Compute within the
	shell, not within 'make', so that 'make' by an ordinary builder
	(using GNU make) does not worry about configuring gzip.  This also
	works around a bug reported independently by Keith Thompson and by
	Georg Schwarz, whereby gzip 1.2.4 --help would output usage on
	stderr rather than stdout, messing up the build logs.

2006-05-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/yacc.c (yyparse): Wrap the final return from yyparse inside YYID
	to make sure that YYID will never be unused.  This fixes a 'make
	maintainer-check' failure caused by the recent changes to the 'Trivial
	grammars' test case, which caused g++ 4.1.0 to complain that YYID was
	not used.
	* data/glr.c (yyparse): Wrap yyparse's return inside YYID just in case.

2006-05-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyresolveLocations): Remove bogus YYASSERT that the
	state before an empty RHS is always resolved here.  Only the location
	of that state is guaranteed to be resolved, and that's enough.  This
	fixes the remaining bug reported by Derek M. Jones in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
	* tests/glr-regression.at (Uninitialized location when reporting
	ambiguity): Test the above case.
	Also, the embedded comments in this test case claim it checks the case
	of an empty RHS that has inherited the initial location.  However, the
	corresponding LHS was already resolved, so yyresolveLocations didn't
	actually have reason to modify it.  Fix this by forcing
	nondeterministic operation at the beginning of the parse.

2006-05-20  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_yy_symbol_print_generate):
	(b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
	'const YYSTYPE', and similarly for YYLTYPE.  This fixes one
	of the bugs reported today by Derek M Jones in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
	* doc/bison.texinfo (Value Type): Document that YYSTYPE must be
	defined to be a type name without parens or brackets.
	(Location Type): Similarly for YYLTYPE.
	* tests/regression.at (Trivial grammars): Put in a test for this
	bug that will be caught by 'make maintainer-check' (though not,
	alas, by 'make check' unless your compiler is picky).

2006-05-19  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.2.
	* configure.ac (AC_INIT): Likewise.

2006-05-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyreportTree): Make room in yystates for the state
	preceding the RHS.  This fixes the segmentation fault reported by Derek
	M. Jones in
	<http://lists.gnu.org/archive/html/help-bison/2006-05/msg00035.html>.
	(yyreportTree, yypdumpstack): Subtract 1 from yyrule before printing
	to the user.  Reported for yyreportTree by Derek M. Jones later in the
	same thread.
	* THANKS: Add Derek M. Jones.
	Update my email address.
	Fix typo in Steve Murphy's name.

2006-05-14  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyreportSyntaxError): Fix off-by-one error in
	checking against YYLAST that caused the parser to miss a potential
	alternative in its diagnostic.
	Problem reported by Maria Jose Moron Fernandez in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00024.html>.
	* data/lalr1.cc (yysyntax_error_): Likewise.
	* data/yacc.c (yysyntax_error): Likewise.
	* tests/regression.at (_AT_DATA_DANCER_Y): Use static array for
	tokens, in case we run into an older C compiler.
	(_AT_DATA_EXPECT2_Y, AT_CHECK_EXPECT2): New macros.
	Use them to check for the off-by-one error fixed above.

	* data/yacc.c (yytnamerr): Fix typo: local var should be of type
	YYSIZE_T, not size_t.
	* tests/regression.at (Trivial grammars): New test, to catch
	the error fixed by the above patch.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* doc/bison.texinfo (C++ Bison Interface): Clarify the naming
	scheme.
	Reported by Steve Murphy.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* data/glr.cc, data/lalr1.cc: Using %defines is mandatory.
	* data/glr.cc: b4_location_flag is now b4_locations_flag.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	Implement --trace=m4.
	* src/getargs.c (trace_types, trace_args): Accept trace_m4.
	* src/output.c (output_skeleton): When set, pass -dV to m4.

	Factor the handling of flags in m4.
	* src/output.c (prepare): Rename the muscle names debug, defines,
	error_verbose to debug_flag, defines_flag, error_verbose_flag.
	* data/c.m4: Adjust.
	(_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
	Use b4_define_flag_if to define other b4_FLAG_if macros.
	(b4_location_if): As a consequence, rename as...
	(b4_locations_if): this, for consistency.
	Adjust all the skeletons.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* etc/bench.pm: Shorten bench names.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* src/output.h, src/output.c (error_verbose): Move to...
	* src/getargs.h, src/getargs.c: here.
	Sort the flags.
	Adjust dependencies.

2006-05-13  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_copyright): Put the special exception for Bison
	skeletons here, so we don't have to put it in each skeleton.  All
	uses changed.  Suggested by Akim Demaille.  Also, wrap the
	copyright notice, in case it is longer than 80 columns.  Replace
	comma by newline after title.

2006-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Calc++ Scanner): The flex behavior is an
	incompatibility, not a bug.  Mention that it wasn't fixed as of
	flex 2.5.33.

2006-05-11  Akim Demaille  <akim@lrde.epita.fr>

	* examples/extexi: Enforce the precedence of concatenation over
	>>.
	Reported by Tommy Nordgren.

2006-05-11  Akim Demaille  <akim@lrde.epita.fr>

	* data/lalr1.cc (yytranslate_): Rename token as t to avoid clashes
	with the member "token".
	Reported by Martin Nylin.

2006-05-08  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c: Switch to Bison 2.2 special-exception language in
	the copyright notice.  Use more-regular format for titles and
	copyright notices.
	* data/glr.cc: Likewise.
	* data/location.cc: Likewise.
	* data/yacc.cc: Likewise.
	* doc/bison.texinfo (Conditions): Document this.
	* NEWS: likewise.  Upgrade version to 2.2.

2006-04-27  Akim Demaille  <akim@lrde.epita.fr>

	* data/glr.cc: Remove dead code.

2006-04-25  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Comment out the AM_CPPFLAGS line, since we don't use
	that variable and the line breaks the bootstrap.  Problem reported
	by Juan M. Guerrero.

2006-04-24  Akim Demaille  <akim@lrde.epita.fr>

	* doc/bison.texinfo (Multiple start-symbols): New.

2006-04-24  Akim Demaille  <akim@lrde.epita.fr>

	* etc/README, etc/bench.pl: New.

2006-04-03  Akim Demaille  <akim@lrde.epita.fr>

	* src/scan-gram.l: Be robust to BRACED_CODE appearing before any
	rule.
	Reported by Mickael Labau.
	* tests/input.at (Torturing the Scanner): Test it.

2006-03-16  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Decl Summary): Don't mention yylloc twice.
	Problem reported by Bob Rossi.

2006-03-13  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo: Remove @shorttitlepage stuff; it wasn't used
	and didn't really work.
	For the index, use @ifnotinfo, not @iftex.
	Minor cleanups of spacing and terminology.

2006-03-12  Akim Demaille  <akim@lrde.epita.fr>

	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Fix the definition
	of AT_NAME_PREFIX when %name-prefix is not used.

2006-03-12  Akim Demaille  <akim@lrde.epita.fr>

	Apply --prefix to C++ skeletons too: they change the namespace.
	The test suite already exercize these cases.
	* data/c++.m4 (b4_namespace): New.
	* data/lalr1.cc, data/glr.cc, data/location.cc: Use it instead of `yy'.
	* data/lalr1.cc (yytnameerr_): Move its definition into the namespace.
	* data/yacc.c, data/glr.c: Remove a useless `[]'.
	* doc/bison.texinfo: Document it.
	(Option Cross Key): Use @multitable in all formats.  It looks
	nicer, even in TeX outputs.
	(Rules): Use the same code whatever the output type is.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS)
	(_AT_BISON_OPTION_POPDEFS): Support AT_NAME_PREFIX.
	* tests/calc.at: Use it, instead of hard coding `yy'.

2006-03-10  Akim Demaille  <akim@lrde.epita.fr>

	* TODO: Remove dead items.

2006-03-10  Akim Demaille  <akim@lrde.epita.fr>

	* doc/FAQ: Remove, merged into...
	* doc/bison.texinfo (FAQ): this.
	* doc/Makefile.am (EXTRA_DIST): Adjust.

2006-03-10  Akim Demaille  <akim@lrde.epita.fr>

	* data/c.m4 (b4_token_enum): Always define the enum of tokens,
	even if empty.
	* data/lalrl1.cc, data/glr.cc (parser::token_type): New.
	* doc/bison.texinfo (Calc++ Scanner): Use it.

2006-03-09  Paul Eggert  <eggert@cs.ucla.edu>

	Fix two nits reported by twlevo, plus one more that I discovered.

	* src/assoc.h (assoc_to_string): Give a name to the arg, as
	this is the usual Bison style.
	* src/location.h (location_print): Likewise.

	* src/reader.h (token_name): Likewise.

2006-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some nits reported by twlevo.
	* doc/FAQ: Remove ancient Y2K FAQ, replacing it with "secure"
	and "POSIX".  Use more-modern syntax for URLs.  Mention C++
	and ask for Java.  Don't hardwire OS version numbers.  Add
	copyright notice.
	* m4/.cvsignore: Add unistd_h.m4, for latest gnulib.
	* src/conflicts.c (solved_conflicts_obstack): Now static.

2006-03-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Introduction): Mention GLR and C++ as on the web
	page.  Say "you can use it" not "you may use it" as on the web page;
	we're describing capabilities not granting permission.

2006-03-06  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyresolveLocations): Rename local variables to avoid
	shadowing warnings.  Use usual patter for iterating through RHS.
	* tests/glr-regression.at
	(Uninitialized location when reporting ambiguity):
	Modify yylex so that it uses its argument, rather than trying
	to rely on ARGSUSED (which doesn't work for gcc with warnings).
	const char -> char const.

	* tests/Makefile.am ($(srcdir)/package.m4, maintainer-check-valgrind):
	Don't use tabs inside commands; it messes up 'ps'.
	Problem reported by twlevo.

2006-03-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at (Uninitialized location when reporting
	ambiguity): New test case.
	* data/glr.c (yyresolveLocations): New function, which uses
	YYLLOC_DEFAULT.
	(yyresolveValue): Invoke yyresolveLocations before reporting an
	ambiguity.
	* doc/bison.texinfo (Default Action for Locations): Note
	YYLLOC_DEFAULT's usage for ambiguity locations.
	(GLR Semantic Actions): Cross-reference those notes.

2006-03-04  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at (Leaked semantic values when reporting
	ambiguity): Remove unnecessary union and type declarations.
	(Leaked lookahead after nondeterministic parse syntax error): New test
	case.
	* data/glr.c (yyparse): Check for zero stacks remaining before
	attempting to shift the lookahead so that you don't lose it.

2006-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Avoid memory leaks by not invoking longjmp in yyreportAmbiguity.
	* tests/glr-regression.at (Leaked semantic values when reporting
	ambiguity): New test case.
	* data/glr.c (yyreportAmbiguity): Invoke yyyerror directly and return
	yyabort rather than invoking yyFail, which invokes longjmp.  Remove the
	now unnecessary yystackp parameter.
	(yyresolveValue): Return yyreportAmbiguity's result.  Now the necessary
	destructors can be called.

	* tests/glr-regression.at: Don't invoke bison with `-t' unnecessarily
	in existing testcases.

2006-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't leak semantic values for parent RHS when a user action cuts the
	parser, and clean up related code a bit.
	* tests/glr-regression.at (Leaked merged semantic value if user action
	cuts parse): Rename to...
	(Leaked semantic values if user action cuts parse): ... this.  Add check
	for leaked parent RHS values.
	* data/glr.c (yydestroyGLRState): In debugging output, distinguish
	between an unresolved state (non-empty chain of semantic options) and
	an incomplete one (signaled by an empty chain).
	(yyresolveStates): Document the interface.  Move all manipulation of a
	successfully or unsuccessfully resolved yyGLRState to...
	(yyresolveValue): ... here so that yyresolveValue always leaves a
	yyGLRState with consistent data and thus is easier to understand.
	Remove the yyvalp and yylocp parameters since they are always just
	taken from the yys parameter.  When reporting a discarded merged value
	in debugging output, note that it is incompletely merged.  Document the
	interface.
	(yyresolveAction): If resolving any of the RHS states fails, destroy
	them all rather than leaking them.  Thus, as long as user actions are
	written to clean up the RHS correctly, yyresolveAction always cleans up
	the RHS of a semantic option.  Document the interface.

2006-02-27  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyexpandGLRStack): Catch an off-by-one error that
	led to a segmentation fault in GNU Pascal.  Problem reported
	by Waldek Hebisch.

2006-02-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Mid-Rule Actions): Explain how to bury a
	mid-rule action inside a nonterminal symbol in order to declare a
	destructor for its semantic value.

2006-02-16  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
	YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
	__cplusplus && ! defined _STDLIB_H && !
	((defined YYMALLOC || defined malloc) && (defined YYFREE ||
	defined free))]: Include <stdlib.h> rather than rolling our own
	declarations of malloc and free, to avoid problems with
	incompatible declarations (using 'throw') C++'s stdlib.h.  This
	should fix Debian bug 340012
	<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
	reported by Guillaume Melquiond.

2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Clarify symbols versus types in unused-value warnings.

	* configure.ac (AC_INIT): Bump version number.

2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.1a.
	* tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex,
	since C99 requires this.

2006-02-11  Paul Eggert  <eggert@cs.ucla.edu>

	* m4/c-working.m4: New file.
	* configure.ac (BISON_TEST_FOR_WORKING_C_COMPILER): Use it.

2006-02-10  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.maint: Merge from coreutils.

2006-02-09  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Catch a
	configuration screwup "./configure CC=/opt/SUNWspro/bin/c89
	CFLAGS="-xarch=generic64" CXX=/opt/SUNWspro/bin/CC
	LDFLAGS="-xarch=generic64" with Sun C 5.7 on Solaris 10; this
	messes up because C++ code is compiled in 32-bit mode but linked
	in 64-bit mode.

2006-02-08  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* doc/bison.texinfo (Calc++ Scanner): Work around a bug in flex
	2.5.31.  This resembles the 2005-10-10 patch to src/scan-skel.l.

	* examples/calc++/Makefile.am (check_PROGRAMS): Renamed from
	nodist_PROGRAMS, since we don't need to actually compile the
	example if we're just doing a plain 'make'.  This avoids bothering
	the installer unnecessarily about problems due to weird C++
	compilers.

2006-02-06  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* tests/headers.at (AT_TEST_CPP_GUARD_H): Use #include <...> rather
	than #include "...", and compile with -I'.'.  The old method was
	not portable, according to Posix and the C standard, and it does
	not work with Sun C 5.7, where previous #line directives affect
	the working directory used in later #include "..." directives.

2006-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	Various DJGGP specific issues in /djgpp

2006-02-02  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that
	'#include <map>' works and that you can apply ++ to iterators.

2006-02-01  Paul Eggert  <eggert@cs.ucla.edu>

	Work around portability problems summarized by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2005-09/msg00021.html>.

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
	that '#include <string>' works.

	* data/lalr1.cc (yytranslate_): No longer inline, to work around a
	porting problem to g++ 3.4.3 on Darwin 7.9.0, where g++ complained
	"warning: sorry: semantics of inline function static data `const
	unsigned char translate_table[262]' are wrong (you'll wind up with
	multiple copies)".

	* lib/bbitset.h (struct bitset_vtable): Rename members not, and,
	or, xor to not_, and_, or_, and xor_, respectively.  This works
	around a bug in GCC 3.4.3 on Irix 6.5, which apparently has a
	random system header somewhere that includes the equivalent of
	<iso646.h>.

	* tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that "$CC
	-E" works; it apparently doesn't work with PathScale EKO Compiler
	Suite Version 2.0.

2006-01-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	During deterministic GLR operation, user actions should be able to
	influence the parse by changing yychar.  To make this easier to fix and
	to make glr.c easier to evolve in general, don't maintain yytoken in
	parallel with yychar; just compute yytoken when needed.
	* tests/glr-regression.at (Incorrect lookahead during deterministic
	GLR): Check that setting yychar in a user action has the intended
	effect.
	* data/glr.c (yyGLRStack): Remove yytokenp member.
	(yyclearin): Don't set *yytokenp.
	(yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Examine
	yychar rather than *yytokenp to determine the current lookahead.
	Compute yytoken locally when needed.
	(yyparse): Likewise.  Remove the local yytoken that yytokenp used to
	point to.

	* doc/bison.texinfo (Bison Options): Remove stray sentence fragment
	after `--report' documentation.

2006-01-30  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y (grammar_declaration): Location of printer
	symbol is @1, not list->location.  Bug reported by twlevo.
	* tests/input.at (Incompatible Aliases): Adjust to above change.

2006-01-29  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/input.at (AT_CHECK_UNUSED_VALUES): Remove.  Instead, do
	all the test at once.  This makes the output easier to read in the
	normal case.

	Fix a longstanding bug uncovered by bro-0.9a9/src/parse.y, which I
	got from <http://bro-ids.org/download.html>.  The bug is that
	when two actions appeared in succession, the second one was
	scanned before the first one was added to the grammar rule
	as a midrule action.  Bison then output the incorrect warning
	"parse.y:905.17-906.36: warning: unused value: $3".
	* src/parse-gram.y (BRACED_CODE, action): These are no longer
	associated with a value.
	(rhs): Don't invoke grammar_current_rule_action_append.
	(action): Invoke it here instead.
	* src/reader.c (grammar_midrule_action): Now extern.
	(grammar_current_rule_action_append): Don't invoke
	grammar_midrule_action; that is now the scanner's job.
	* src/reader.h (last_string, last_braced_code_loc):
	(grammar_midrule_action): New decls.
	* src/scan-gram.l (last_string): Now extern, sigh.
	(last_braced_code_loc): New extern variable.
	(<INITIAL>"{"): Invoke grammar_midrule_action if the current
	rule already has an action.
	(<SC_BRACED_CODE>"}"): Set last_braced_code_loc before returning.
	* tests/input.at (AT_CHECK_UNUSED_VALUES):
	Add some tests to check that the above changes fixed the bug.

2006-01-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/reader.c (symbol_should_be_used): Renamed from symbol_typed_p.
	All used changed.  Check whether the symbol has a destructor,
	not whether it is typed.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Add a destructor, so
	that the values are still reported as unused.  All line numbers
	adjusted.

2006-01-23  Paul Eggert  <eggert@cs.ucla.edu>

	Work around a bug in bro 0.8, which underparenthesizes its
	definition of YYLLOC_DEFAULT.
	* data/glr.c: Change all uses of YYLLOC_DEFAULT to parenthesize
	their arguments.
	* data/lalr1.cc: Likewise.
	* data/yacc.cc: Likewise.

2006-01-22  Paul Eggert  <eggert@cs.ucla.edu>

	Work around a bug in Pike 7.0, and give the Pike folks a
	better way to override the usual int widths.
	* data/yacc.c (b4_int_type): Use yytype_uint8, etc., so that the
	user can override the types.
	(short): #undef, to work around a bug in Pike 7.0.
	(yytype_uint8, yytype_int8, yytype_uint16, yytype_int16): New types.
	(union yyalloc.yyss): Use yytype_int16 rather than short.
	All uses changed.
	(yysigned_char): Remove.
	* src/parse-gram.y (YYTYPE_UINT8, YYTYPE_INT8, YYTYPE_UINT16):
	(YYTYPE_INT16): New macros, to test the new facility in yacc.c.
	* tests/regression.at (Web2c Actions): Adjust to above changes.

	* src/reader.c (check_and_convert_grammar): New function.
	(reader): Close the input file even if something went wrong during
	parsing.  Minor file descriptor leak reported by twlevo.

	* src/assoc.c (assoc_to_string): Use a default: abort (); case
	to pacify gcc -Wswitch-default.
	* src/scan-gram.l (adjust_location): Use a default: break; case
	to pacify gcc -Wswitch-default.
	* src/scan-skel.h (skel_get_lineno, skel_get_in, skel_get_out):
	(skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
	(skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
	Move these decls to scan-skel.l, since they don't need to be
	visible elsewhere.
	* src/scan-skel.l: Accept the above decls.
	(skel_lex): New decl, to pacify GCC when unpatched flex 2.5.31
	is used.

2006-01-21  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.cfg (local-checks-to-skip): Add changelog-check,
	since we don't want to insist on a version number at the start
	of the changelog every time.
	* Makefile.maint: Sync from coreutils a bit better.
	(sc_trailing_blank): Renamed from sc_trailing_space.
	All uses changed.
	(sc_no_if_have_config_h, sc_require_config_h):
	(sc_prohibit_assert_without_use): New rules.
	(sc_obsolete_symbols): Don't catch Makefile.maint itself.
	(sc_dd_max_sym_length): Fix leading spaces in rule.
	(sc_system_h_headers): Prefix with @.
	(sc_useless_cpp_parens, m4-check): Output line numbers.
	(changelog-check): Allow version only in head.
	* data/c.m4: Use "defined FOO" instead of "defined (FOO)", to
	satisfy new Makefile.maint rule.
	* data/glr.c: Likewise.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.
	* lib/ebitsetv.c: Likewise.
	* lib/lbitset.c: Likewise.
	* lib/subpipe.c: Likewise.
	* lib/timevar.c: Likewise.
	* src/system.h: Likewise.
	* data/yacc.c (YYSTYPE): Don't generate trailing spaces in output.
	* djgpp/Makefile.maint: Add copyright notice.
	* djgpp/README.in: Likewise.
	* djgpp/config.bat: Likewise.
	* djgpp/config.site: Likewise.
	* djgpp/config_h.sed: Likewise.
	* djgpp/djunpack.bat: Likewise.
	* djgpp/config.sed: Fix copyright notice to match standard format.
	* djgpp/subpipe.h: Likewise.
	* lib/bitsetv-print.c: Likewise.
	* lib/bitsetv.c: Likewise.
	* lib/subpipe.h: Likewise.
	* lib/timevar.c: Likewise.
	* lib/timevar.h: Likewise.
	* djgpp/subpipe.c: Use standard recipe for config.h.
	* lib/abitset.c: Likewise.
	* lib/bitset.c: Likewise.
	* lib/bitset_stats.c: Likewise.
	* lib/bitsetv-print.c: Likewise.
	* lib/bitsetv.c: Likewise.
	* lib/ebitsetv.c: Likewise.
	* lib/get-errno.c: Likewise.
	* lib/lbitset.c: Likewise.
	* lib/subpipe.c: Likewise.
	* lib/timevar.c: Likewise.
	* lib/vbitset.c: Likewise.
	* tests/local.at: Likewise.
	* src/scan-gram.l: Don't include verify.h, since system.h does
	that for us.
	* .x-sc_require_config_h: New file.
	* .x-sc_unmarked_diagnostics: New file.

2006-01-20  Paul Eggert  <eggert@cs.ucla.edu>

	Be a bit more systematic about using 'abort'.
	* lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
	* lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
	Put 'default: abort ();' before some other case, to satisfy older
	pedantic compilers.
	* lib/bitset_stats.c (bitset_stats_init): Likewise.
	* lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
	* lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
	* src/conflicts.c (resolve_sr_conflict): Likewise.
	* src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
	(get_decision_str, get_orientation_str, get_node_alignment_str):
	(get_arrow_mode_str, get_crossing_type_str, get_view_str):
	(get_linestyle_str, get_arrowstyle_str): Likewise.
	* src/conflicts.c (resolve_sr_conflict):
	Use a default case rather than one for the one remaining enum
	value, to catch invalid enum values as well.
	* src/lalr.c (set_goto_map, map_goto):
	Prefer "assert (FOO);" to "if (!FOO) abort ();".
	* src/nullable.c (nullable_compute, token_definitions_output):
	Likewise.
	* src/reader.c (packgram, reader): Likewise.
	* src/state.c (transitions_to, state_new, state_reduction_find):
	Likewise.
	* src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
	(symbol_pack): Likewise.
	* src/tables.c (conflict_row, pack_vector): Likewise.
	* src/scan-skel.l (QPUTS): Remove unnecessary parens.
	(BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
	* src/system.h: Don't include <assert.h>.
	(assert): New macro.

	* doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
	(Destructor Decl, Parser Function, Pure Calling):
	Describe rules for braces inside C code more carefully.

2006-01-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some porting glitches found by Nelson H. F. Beebe.
	* lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
	compilers that don't understand that abort () does not return.
	* src/state.c (transitions_to): Likewise.
	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
	that '#include <cstdlib>' works.
	* src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
	(INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
	#undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
	for the benefit of some pre-C99 compilers.

	* bootstrap: Undo changes to gnulib files that autoreconf made.

	Minor fixups to get 'make maintainer-check' to work.
	* configure.ac: Don't use -Wnested-externs, as it's incompatible
	with the new verify.h implementation.
	* data/c.m4 (b4_yy_symbol_print_generate): YYUSE (yyoutput).
	* data/glr.c (YYUSE): Depend on __GNUC__ as well.
	* data/yacc.c (YYUSE): Likewise.
	* data/lalr1.cc (yysyntax_error_): YYUSE (yystate).
	* lib/subpipe.c (end_of_output_subpipe): The args are unused.
	* src/parse-gram.y (declaration): Don't pass a string constant
	to a function that expects char *, since GCC might complain
	about the constant value.
	* src/reader.c (symbol_typed_p): Add parens to pacify GCC.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): #undef yylloc and yylval
	before #defining them.
	* tests/glr-regression.at
	(Incorrectly initialized location for empty right-hand side in GLR):
	In yyerror, use the msg arg.
	(Corrupted semantic options if user action cuts parse):
	(Incorrect lookahead during deterministic GLR):
	(Incorrect lookahead during nondeterministic GLR):
	Don't name a local var 'index'; it shadows string.h's 'index'.

2006-01-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_DATA_CALC_Y): Initialize the whole initial
	location, not just parts of it.

2006-01-18  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Document the fact that multiple %unions are now allowed.
	* doc/bison.texinfo (Union Decl): Likewise.
	* TODO: This feature is now implemented, so remove it from
	the wishlist.

	* Makefile.maint: Merge with coreutils Makefile.maint.
	(CVS_LIST): Use build-aux version if available.
	(VERSION_REGEXP): New macro.
	(syntax-check-rules): Add sc_no_if_have_config_h,
	sc_prohibit_assert_without_use, sc_require_config_h,
	sc_useless_cpp_parens.
	(sc_obsolete_symbols): Check for O_NDELAY.
	(sc_dd_max_sym_length): Track coreutils.
	(sc_unmarked_diagnostics): Look in all files, not just *.c.
	(sc_useless_cpp_parens): New rule.
	(news-date-check): Look for version or today's date.
	(changelog-check): Don't require version number near head.
	(copyright-check): Use current year instead of hardwiring 2005.
	(my-distcheck): Depend on $(release_archive_dir)/$(prev-tgz).
	(announcement): Add --gpg-key-ID.

	* djgpp/config.sed: Add copyright notice, and replace "filesystem"
	with "file system".

	Avoid undefined behavior that addressed just before the start of an
	array.  Problem reported by twlevo.
	* src/reader.c (packgram): Prepend a new sentinel before ritem.
	* src/lalr.c (build_relations): Rely on new sentinel.
	* src/gram.c (gram_free): Adjust to new sentinel.

2006-01-12  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to
	yylookaheadNeeds.  All uses updated.
	(yysplitStack): Rename local yynewLookaheadStatuses to
	yynewLookaheadNeeds.
	* data/glr-regression.at (Incorrect lookahead during nondeterministic
	GLR): In comments, change `lookahead status' to `lookahead need'.

2006-01-11  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c (yysplitStack): A little stylistic rewrite.

2006-01-11  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c (yyaddDeferredAction): Flesh out the comment.

2006-01-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo: Fix some typos.
	(GLR Semantic Actions): New subsection discussing special
	considerations because GLR semantic actions might be deferred.
	(Actions): Mention look-ahead usage of yylval.
	(Actions and Locations): Mention look-ahead usage of yylloc.
	(Special Features for Use in Actions): Add YYEOF entry and mention it
	in the yychar entry.
	In the yychar entry, remove mention of the local yychar case (pure
	parser) since this is irrelevant information when writing semantic
	actions and since it's already discussed in `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.
	In the yychar and yyclearin entries, add note about deferred semantic
	actions.
	Add yylloc and yylval entries discussing look-ahead usage.
	(Look-Ahead Tokens): When discussing yychar, don't call it the
	`current' look-ahead, and do mention yylval and yylloc.
	(Error Recovery): Cross-reference `Action Features' when mentioning
	yyclearin.
	(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.

2006-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at: Update copyright year to 2006.

2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyGLRStateSet): Add yybool* yylookaheadStatuses member to
	use during nondeterministic operation to track which stacks have
	actually needed the current lookahead.
	(yyinitStateSet, yyfreeStateSet, yyremoveDeletes, yysplitStack):
	Allocate, deallocate, resize, and otherwise shuffle space for
	yylookaheadStatuses in parallel with yystates member of yyGLRStateSet.
	(yysplitStack, yyprocessOneStack, yyparse): Set lookahead status
	appropriately during nondeterministic operation.
	(yySemanticOption): Add int yyrawchar, YYSTYPE yyval, and YYLTYPE yyloc
	members to store the current lookahead to be used by the deferred
	user action.
	(yyaddDeferredAction): Add size_t yyk parameter specifying the stack
	from which the RHS is taken.  Set the lookahead members of the new
	yySemanticOption according to the lookahead status for stack yyk.
	(yyglrShiftDefer, yyglrReduce): Pass yyk parameter on to
	yyaddDeferredAction.
	(yyresolveAction): Set yychar, yylval, and yylloc to the lookahead
	members of yySemanticOption before invoking yyuserAction, and then set
	them back to their current values afterward.
	(yyparse): Set yychar = YYEMPTY where yytoken = YYEMPTY.
	(yyreportAmbiguity): Add /*ARGSUSED*/ to pacify lint.
	* tests/glr-regression.at: Remove `.' from the ends of recent test case
	titles for consistency.
	(Leaked merged semantic value if user action cuts parse): In order to
	suppress lint warnings, use arguments in merge function, and assign
	char value < 128 in main.
	(Incorrect lookahead during deterministic GLR): New test case.
	(Incorrect lookahead during nondeterministic GLR): New test case.

2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/c.m4 (b4_yy_symbol_print_generate): In yy_symbol_print, accept
	!yyvaluep as signal that no semantic value is available to print.
	* data/glr.c (yydestroyGLRState): If state is not resolved, don't try
	to print a semantic value.

2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at: For consistency with my newer test cases,
	don't thank myself.

2006-01-05  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyresolveValue): When merging semantic options, if at
	least one user action succeeds but a later one cuts the parse, then
	destroy the semantic value before returning rather than leaking it.
	(yyresolveStates): If a user action cuts the parse and thus
	yyresolveValue fails, ignore the (unset) semantic value rather than
	corrupting the yyGLRState, and empty the semantic options list since
	the user actions should have called all necessary destructors.
	Simplify code with YYCHK.
	* tests/glr-regression.at (Corrupted semantic options if user action
	cuts parse): New test case.
	(Undesirable destructors if user action cuts parse): New test case.
	Before applying any of this patch, this test case never actually failed
	for me... but only because the corrupted semantic options usually
	masked this bug.
	(Leaked merged semantic value if user action cuts parse): New test
	case.

2006-01-05  Akim Demaille  <akim@epita.fr>

	* src/reader.c, src/symlist.h, src/symlist.c: s/mid_rule/midrule/.

2006-01-04  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_c_modern): New macro, with a new provision for
	_MSC_VER.  Problem reported by Cenzato Marco.
	(b4_c_function_def): Use it.
	* data/yacc.c (YYMODERN_C): Remove.  All uses replaced by
	b4_c_modern.
	(yystrlen, yystpcpy, yyparse): Use b4_c_function... macros rather
	than rolling our own.

2006-01-04  Akim Demaille  <akim@epita.fr>

	Also warn about non-used mid-rule values.
	* src/symlist.h, src/symlist.c (symbol_list): Add a mid_rule
	member.
	(symbol_list_new): Adjust.
	* src/reader.c (symbol_typed_p): New.
	(grammar_rule_check): Use it.
	(grammar_midrule_action): Bind a mid-rule LHS to its rule.
	Check its rule.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): New.
	Use it.
	* tests/actions.at (Exotic Dollars): Adjust.

2006-01-04  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_midrule_action): If $$ is set in a
	mid-rule, move the `used' bit to its lhs.
	* tests/input.at (Unused values): New.
	* tests/actions.at (Exotic Dollars): Adjust: exp is not typed.

2006-01-03  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Bison Options): Say more accurately what
	--yacc does.
	* src/parse-gram.y (rules_or_grammar_declaration): Don't complain
	about declarations in the grammar when in Yacc mode, as POSIX does
	not require a diagnostic when the grammar uses extensions.

	* src/reduce.c (reduce_grammar): Remove unnecessary cast to bool.

	Warn about dubious constructions like "%token T T".
	Reported by twlevo.
	* src/symtab.h (struct symbol.declared): New member.
	* src/symtab.c (symbol_new): Initialize it to false.
	(symbol_class_set): New arg DECLARING, specifying whether
	this is a declaration that we want to warn about, if there
	is more than one of them.  All uses changed.

	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c:
	Allow multiple %union directives, whose contents concatenate.
	* src/parse-gram.y (grammar_declaration): Likewise.
	Use muscle_code_grow, so that we don't need stype_line any more.
	All uses changed.

	* src/muscle_tab.c (muscle_grow): Fix comment.

	* ChangeLog, data/c.m4, data/glr.c, data/glr.cc, data/location.cc:
	* data/yacc.c, src/getargs.c, src/output.c, tests/cxx-type.at:
	Update copyright year to 2006.

2006-01-03  Akim Demaille  <akim@epita.fr>

	Have glr.cc pass (some of) the calc.at tests.
	* data/glr.cc (b4_parse_param_orig): New.
	(b4_parse_param): Improve its definition, and bound it more
	clearly in the skeleton.
	(b4_epilogue): Append, instead of prepending, in order to keep
	#line consistency.
	Simplify the generation of auxiliary functions: locations and
	purity are mandated.
	(b4_global_tokens_and_yystype): Honor it.
	* data/location.cc (c++.m4): Don't include it.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Define AT_GLR_CC_IF
	and AT_SKEL_CC_IF.
	* tests/calc.at (AT_CHECK_CALC): Rely on AT_SKEL_CC_IF instead of
	AT_LALR1_CC_IF.
	Be sure to initialize the first position's filename.
	(AT_CHECK_CALC_LALR1_CC): Add %location and %defines, they are
	mandated anyway.
	(AT_CHECK_CALC_GLR_CC): New.
	Use it to exercise glr.cc as a lalr1.cc drop-in replacement.

2006-01-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): Don't hard wire the inclusion of
	c.m4.
	* data/c++.m4, data/glr.c, data/yacc.c: Include c.m4.
	* data/glr.cc: Do not include stack.hh.

2006-01-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c: Reformat whitespace with tabs.
	(b4_lpure_formals): Remove this unused m4 macro.
	* tests/cxx-type.at: Reformat whitespace with tabs.
	(_AT_TEST_GLR_CXXTYPES): In union Node, rename node_info to nodeInfo
	since it's a member.  Rename type to isNterm for clarity.

2005-12-29  Akim  <akim@sulaco.local>

	Let glr.cc catch up with symbol_value_print.
	* data/glr.cc (b4_yysymprint_generate): Replace by...
	(b4_yy_symbol_print_generate): this.
	(yy_symbol_print, yy_symbol_value_print): Declare them.

2005-12-28  Paul Eggert  <eggert@cs.ucla.edu>

	* src/location.h (boundary): Note that a line or column equal
	to INT_MAX indicates an overflow.
	* src/scan-gram.l: Include verify.h.  Don't include get-errno.h.
	(rule_length_overflow, increment_rule_length, add_column_width):
	New functions.
	(<INITIAL>{id}, <SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'"):
	(<SC_BRACED_CODE>"}"):
	Use increment_rule_length rather than incrementing it by hand.
	(adjust_location, handle_syncline): Diagnose overflow.
	(handle_action_dollar, handle_action_at):
	Fix bug with monstrosities like $-2147483648.
	Remove now-unnecessary checks.
	(scan_integer): Verify assumptions and remove now-unnecessary checks.
	(convert_ucn_to_byte): Verify assumptions.
	(handle_syncline): New arg LOC.  All callers changed.
	Don't store through a value derived from char const * pointer.

	* src/reader.c (grammar_rule_check): Rewrite slightly to avoid
	GCC warnings.

2005-12-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/reader.c (grammar_midrule_action, grammar_symbol_append):
	Remove unnecessary forward static decls.

2005-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_current_rule_check): Also check that $$
	is used.
	Take the rule to check as argument, hence rename as...
	(grammar_rule_check): this.
	* src/reader.h, src/reader.c (grammar_rule_begin, grammar_rule_end):
	Rename as...
	(grammar_rule_begin, grammar_rule_end): these, for consistency.
	(grammar_midrule_action, grammar_symbol_append): Now static.
	* tests/torture.at (input): Don't rely on the default action
	being always performed.
	* tests/calc.at: "Set" $$ even when the action is "cut" with
	YYERROR or other.
	* tests/actions.at (Exotic Dollars): Instead of using unused
	values, check that the warning is issued.

2005-12-22  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Improve wording for unused-value warnings.

2005-12-22  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc, data/yacc.c, data/glr.c, data/c.m4
	(b4_yysymprint_generate): Rename as...
	(b4_yy_symbol_print_generate): this.
	Generate yy_symbol_print instead of yysymprint.
	Generate also yy_symbol_value_print, and use it.

2005-12-22  Akim Demaille  <akim@epita.fr>

	* NEWS: Warn about unused values.
	* src/symlist.h, src/symlist.c (symbol_list, symbol_list_new): Add
	a `used' member.
	(symbol_list_n_get, symbol_list_n_used_set): New.
	(symbol_list_n_type_name_get): Use symbol_list_n_get.
	* src/scan-gram.l (handle_action_dollar): Flag used symbols.
	* src/reader.c (grammar_current_rule_check): Check that values are
	used.
	* src/symtab.c (symbol_print): Accept 0.
	* tests/existing.at: Remove the type information.
	Empty the actions.
	Remove useless actions (beware of mid-rule actions: perl -000
	-pi -e 's/\s*\{\}(?=[\n\s]*[|;])//g').
	* tests/actions.at (Exotic Dollars): Use unused values.
	* tests/calc.at: Likewise.
	* tests/glr-regression.at (No users destructors if stack 0 deleted):
	Likewise.

	* src/gram.c (rule_useful_p, rule_never_reduced_p): Use
	rule_useful_p.

2005-12-21  Paul Eggert  <eggert@cs.ucla.edu>

	Undo 2005-12-01 tentative license wording change.  The wording is
	still being reviewed by the lawyers, and we don't want to wait for
	them before publishing a test release.  For now, revert to the
	previous wording.
	* NEWS: Undo 2005-12-01 change.
	* data/glr.c: Revert to previous license wording.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/location.cc: Likewise.
	* data/yacc.c: Likewise.

	* NEWS: Reword %destructor vs YYABORT etc.
	* data/glr.c: Use American spacing, for consistency.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.
	* data/yacc.c: Reformat comments slightly.
	* doc/bison.texinfo: Replace "non-" with "non" when that makes sense,
	for consistency.  Fix some spelling errors and reword recently-included
	text slightly.
	* tests/cxx-type.at: Cast results of malloc, for C++.

2005-12-21  Joel E. Denny  <address@hidden>

	* tests/cxx-type.at: Construct a tree, count the parents of shared
	nodes, and free each node once and only once.  Previously, the memory
	for semantic values was leaked instead.

2005-12-21  Joel E. Denny  <address@hidden>

	* data/glr.c (struct yyGLRStack): If pure, add yyval and yyloc members.
	(yylval, yylloc): If pure, #define to yystackp->yyval and
	yystackp->yyloc similar to yychar and yynerrs.
	(yyparse): If pure, remove local yylval and yylloc. Add local
	yystackp to accommodate pure definitions of yylval and yylloc.
	(b4_lex_param, b4_lyyerror_args, b4_lpure_args): If pure, change
	yylvalp and yyllocp to &yylval and &yylloc.
	(nerrs, char, lval, lloc): If pure, add #define's for b4_prefix[]
	namespace. Previously, nerrs and char were missing, but lval and lloc
	weren't necessary.
	(yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Remove
	yylvalp and yyllocp parameters since, if pure, these are now always
	accessible through yystackp.  If not pure, they are still accessible
	globally.
	* data/glr.c, data/yacc.c (YYLLOC_DEFAULT): Change `if (N)' to
	`if (YYID (N))' to pacify lint.

2005-12-21  Akim Demaille  <akim@epita.fr>

	YYACCEPT, YYERROR, and YYABORT, as user actions, should not
	destroy the RHS symbols of a rule.
	* data/yacc.c (yylen): Initialize to 0.
	Keep its value to the number of items to possibly shift.
	In particular, a regular successful parse that ends on YYFINAL by
	a (internal) YYACCEPT must not have yylen != 0.
	(yyerrorlab, yyreturn): Pop the RHS.
	Reorder a bit to emphasize the `shifting' bits of code.
	(YYPOPSTACK): Now accept a number of items to pop.
	* data/lalr1.cc: Likewise.
	* data/glr.c: Formatting changes.
	Use goto instead of fall through.
	* doc/bison.texinfo (Destructor Decl): Complete.

2005-12-20  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* Makefile.am: DJGPP specific files added to EXTRA_DIST.
	* djgpp/Makefile.maint: Fix PACKAGE variable computation.
	* djgpp/config.bat: Replace every occurrence of the file name
	scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with
	c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS.
	* djgpp/config.sed: Replace every occurrence of the file name
	scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with
	c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS.
	* djgpp/djunpack.bat: DJGPP specific file.
	* djgpp/fnchange.lst: DJGPP specific file.
	* djgpp/README.in: Add new information about how to unpack the bison
	source on MSDOS and other systems which have 8.3 file name restrictions
	using djunpack.bat and fnchange.lst.

2005-12-12  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (build_cvs_prefix): Remove; unused.
	(CVS_PREFIX): Adjust to yesterday's Savannah reorganization
	when getting gnulib.

2005-12-12  "Joel E. Denny" <jdenny@ces.clemson.edu>

	* data/glr.c: Reorder typedef declarations for structs to match order
	of struct declarations.
	Rename yystack everywhere to yystackp except in yyparse where it's not
	a pointer.
	(yyglrShift): Change parameter YYSTYPE yysval to YYSTYPE* yyvalp for
	consistency.
	(yyis_table_ninf): Change 0 to YYID (0) to pacify lint.
	(yyreportSyntaxError): Add /*ARGSUSED*/ to pacify lint.
	(yyparse): Change while (yytrue) to while ( YYID (yytrue)) to pacify
	lint.

2005-12-09  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/sets.at (Accept): Fix typos in regular expression used to
	sed out the final state number.

	Work around portability problem on Solaris 10: flex-generated
	files include <stdio.h> before <config.h>, which messes up
	because the latter defines __EXTENSIONS__.  Address the problem
	by creating two new little files that include <config.h> first,
	then include the flex-generated files.  Rewrite everyone else
	to include <config.h> first, as well.
	* lib/timevar.c: Always include "config.h".
	* src/Makefile.am (bison_SOURCES): Replace scan-gram.l with
	scan-gram-c.c, and scan-skel.l with scan-skel-c.c.
	(EXTRA_bison_SOURCES): New macro.
	* src/scan-gram-c.c, src/scan-skel-c.c: New files.
	* src/system.h: Don't include config.h.
	* src/LR0.c: Include <config.h> first.
	* src/assoc.c: Likewise.
	* src/closure.c: Likewise.
	* src/complain.c: Likewise.
	* src/conflicts.c: Likewise.
	* src/derives.c: Likewise.
	* src/files.c: Likewise.
	* src/getargs.c: Likewise.
	* src/gram.c: Likewise.
	* src/lalr.c: Likewise.
	* src/location.c: Likewise.
	* src/main.c: Likewise.
	* src/muscle_tab.c: Likewise.
	* src/nullable.c: Likewise.
	* src/output.c: Likewise.
	* src/parse-gram.y: Likewise.
	* src/print.c: Likewise.
	* src/print_graph.c: Likewise.
	* src/reader.c: Likewise.
	* src/reduce.c: Likewise.
	* src/relation.c: Likewise.
	* src/state.c: Likewise.
	* src/symlist.c: Likewise.
	* src/symtab.c: Likewise.
	* src/tables.c: Likewise.
	* src/uniqstr.c: Likewise.
	* src/vcg.c: Likewise.

	* src/parse-gram.y: Fix minor problems uncovered by lint.
	(current_lhs, current_lhs_location): Now static.
	(current_assoc): Remove unused variable.

	Cleanups so that Bison-generated parsers have less lint.
	* data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate):
	Prepend /*ARGSUSED*/, for lint's sake.
	* data/glr.c (YYUSE): Properly parenthesize, and use an alternate
	definition if 'lint' is defined.
	(YYID): New macro (or function, if lint).
	All uses of /*CONSTCOND*/0 replaced by YYID(0).
	* data/yacc.c: Likewise.
	* data/glr.c (yyuserAction, yyuserMerge, yy_reduce_print):
	(yyrecoverSyntaxError): Prepend /*ARGSUSED*/.
	* data/glr.cc (YYLLOC_DEFAULT): Omit /*CONSTCOND*/ since this code
	is C++ only.
	* data/lalr1.cc (YYUSE): Just use a cast, since this code is C++ only.
	* data/yacc.c (YYSTACK_FREE) [defined YYSTACK_ALLOC]:
	Use YYID(0) rather than 0, for lint.
	(yystrlen): Rewrite to avoid lint warning about ptrdiff_t overflow.
	(yysyntax_error): Rewrite to avoid lint warnings about parenthesization.

2005-12-07  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/glr-regression.at
	(Improper handling of embedded actions and dollar(-N) in GLR parsers):
	Close memory leak reported by twlevo.

2005-12-06  "Joel E. Denny" <jdenny@ces.clemson.edu>

	* data/glr.c (yyprocessOneStack, yyparse): Synchronize the shift for
	all stacks.
	(yyparse): Iterate another stack in order to call user destructors.
	* tests/glr-regression.at (No users destructors if stack 0 deleted):
	New test case.
	(Duplicated user destructor for lookahead): This test now is expected
	to succeed.

2005-12-01  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Document the following change.
	* data/yacc.c: Say "parser skeleton" rather than "file", since
	it's no longer just a file.
	* data/glr.c: Grant a special exception for C GLR parsers, that
	reads like the already-existing exception for C LALR(1) parsers.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/location.cc: Likewise.
	* data/yacc.c: Reword the "written by" statement to clarify that
	it was the parser skeleton, not the entire output file.
	* data/glr.c: Written by Paul Hilfinger.
	* data/glr.cc: Written by Akim Demaille.
	* data/lalr1.cc: Likewise.

2005-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yy_reduce_print, YY_REDUCE_PRINT):
	Fix typos in previous change that broke 'make check'.
	YY_REDUCE_PRINT cannot be a pseudo-varargs macro; that isn't
	supported in C.
	* tests/calc.at (_AT_CHECK_CALC,_AT_CHECK_CALC_ERROR):
	Don't check NUM-STDERR-LINES, since the output format is fluctuating.
	We can revert this once things settle down.

	* src/conflicts.c (conflicts_print): Don't print file name twice
	when %expect fails because there were no conflicts.
	* doc/bison.texinfo (Expect Decl): Tighten up wording in previous
	change.
	* tests/conflicts.at (%expect not enough, %expect too much):
	(%expect with reduce conflicts): Adjust to new behavior.

2005-11-18  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_print): Unsatisfied %expectation are
	errors.
	* NEWS: Document this.
	* doc/bison.texinfo (Expect Decl): Likewise.

2005-11-16  Akim Demaille  <akim@epita.fr>

	Generalize the display of semantic values and locations in traces.
	* data/glr.c (yy_reduce_print): Fix indices (again).
	* data/c++.m4 (b4_rhs_value, b4_rhs_location): Don't expect
	literal integers.
	* data/lalr1.cc (yyreduce_print): Rename as...
	(yy_reduce_print): this.
	Display values and locations.
	* data/yacc.c (yy_reduce_print): Likewise.
	(YY_REDUCE_PRINT): Adjust to pass the required arguments.
	(yysymprint): Move higher to be visible from yy_reduce_print).
	(yyparse): Adjust.
	* tests/calc.at: Adjust the expected length of the traces.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yy_reduce_print): The loop was quite wrong: type are
	from 1 to N, while values and location start at 0.
	(b4_rhs_location, b4_rhs_value): Add parens around $1 and $2.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yy_reduce_print): Fix the $ number.

2005-11-14  Akim Demaille  <akim@epita.fr>

	"Use" parse parameters.
	* data/c.m4 (b4_parse_param_for, b4_parse_param_use): New.
	* data/glr.c, data/glr.cc: Use them.
	* data/glr.c (YYUSE): Have a C++ definition that supports
	non-pointer types.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yyexpandGLRStack): Declare only if defined.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.cc: New.
	* data/m4sugar/m4sugar.m4 (m4_prepend): New.

2005-11-12  Akim Demaille  <akim@epita.fr>

	Let position and location be PODs.
	* data/location.cc (position::initialize, location::initialize): New.
	(position::position, location::location): Define only if
	b4_location_constructors is defined.
	* data/lalr1.cc (b4_location_constructors): Define it for backward
	compatibility.
	* doc/bison.texinfo (Initial Action Decl): Use initialize.

2005-11-12  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Move the body of the ctor and dtor into the
	parser file (instead of the header).
	Wrap the implementations in a "namespace yy".

2005-11-12  Akim Demaille  <akim@epita.fr>

	Have glr.c include its header file when created.
	* data/glr.c (b4_shared_declarations): New.
	Output them verbatim in the parser if !%defines, otherwise
	output then in the header file, and include it instead.

2005-11-11  Akim Demaille  <akim@epita.fr>

	* data/glr.c: Comment changes.

2005-11-11  Akim Demaille  <akim@epita.fr>

	When yydebug, report semantic and location values for reductions.
	* data/glr.c (yy_reduce_print): Report the semantic values and the
	locations.
	(YY_REDUCE_PRINT): Adjust.
	(yyglrReduce): Use them.
	(b4_rhs_value, b4_rhs_location): Remove m4_eval invocations.
	* data/c.m4 (b4_yysymprint_generate): Specify the const arguments.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Remove the reduction
	traces.

2005-11-10  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yynewGLRStackItem, YY_RESERVE_GLRSTACK): New.
	(yyaddDeferredAction, yyglrShift, yyglrShiftDefer): Use them.
	(yyexpandGLRStack, YYRELOC): Define only when YYSTACKEXPANDABLE.

2005-11-09  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/cxx.m4, examples/Makefile.am: Don't build
	examples/calc++ if no C++ compiler is available.  (trivial change)

2005-11-09  Akim Demaille  <akim@epita.fr>

	* src/scan-skel.l: Use a couple of asserts.

2005-11-03  Akim Demaille  <akim@epita.fr>

	In some (weird) cases, the final state number is incorrect.
	Reported by Alexandre Duret-Lutz.
	* src/LR0.c (state_list_append): Remove the computation of
	final_state.
	(save_reductions): Do it here.
	(get_state): Alpha conversion.
	(generate_states): Use a for loop.
	* src/gram.h (item_number_is_rule_number)
	(item_number_is_symbol_number): New.
	* src/state.c: Use assert.
	* src/system.h: Include assert.h.
	* tests/sets.at (Accept): New.

2005-10-30  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c (yyfill): Adjust comment.
	(yyresolveAction): Initialize default location properly
	for empty right-hand sides.
	(yydoAction): Ditto.
	Add comment explaining apparently dead code.
	* tests/glr-regression.at
	(Incorrectly initialized location for empty right-hand side in GLR):
	New test.

2005-10-30  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (cleanup_gnulib): New function.  Use it to clean up
	gnulib when interrupted.  This fixes some race conditions and
	works around some portability problems (one noted by Paul
	Hilfinger).

2005-10-22  Akim  <akim@epita.fr>

	* Makefile.cfg: Adjust to config -> build-aux.
	Reported by twledo.

2005-10-21  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Pass
	the %parse-params.
	* data/glr.c (YY_SYMBOL_PRINT, yydestroyGLRState): Adjust.
	* data/yacc.c (b4_Pure_if): Rename as...
	(b4_yacc_pure_if): this.
	(YY_SYMBOL_PRINT, yyparse): Adjust.
	* doc/bison.texinfo: Formatting changes.

2005-10-21  Akim Demaille  <akim@epita.fr>

	Finish the transition config -> build-aux.
	* configure.ac, Makefile.am: Use build-aux.
	* config/prev-version, config/announce-gen, config/Makefile.am:
	Move to...
	* build-aux/prev-version, build-aux/announce-gen,
	* build-aux/Makefile.am: here.

2005-10-14  Akim Demaille  <akim@epita.fr>

	* examples/calc++/test: Use set -x only when VERBOSE.

2005-10-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison now warns if it finds a stray `$' or `@' in an action.
	* src/scan-gram.l (<SC_BRACED_CODE>[$@]): Implement this.

2005-10-13  Akim Demaille  <akim@epita.fr>

	* src/scan-skel.l: Output the base name parts of the parser and
	header file names.
	* tests/output.at (AT_CHECK_OUTPUT): Support subdirectories, and
	additional checks.
	Use this to exercise C++ outputs in subdirs.
	Reported by Oleg Smolsky.

2005-10-12  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_c_function_def): Look at __C99_FUNC__, not at
	__STDC_VERSION__, as IBM cc 7.0 doesn't define the latter either.
	Problem reported by John P. Hartmann.
	* data/yacc.c (YYMODERN_C): Likewise.  Don't define if the user has
	already defined it.

2005-10-12  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (version_check): Exit 63 to please missing
	(stands for "version mismatch).
	* tests/input.at, doc/bison.texinfo: Adjust.

2005-10-10  Paul Eggert  <eggert@cs.ucla.edu>

	Work around portability problems with Visual Age C compiler
	(xlc and xlC_r) reported by John P. Hartmann.
	* data/location.cc (initial_column, initial_line): Remove.
	All uses replaced by 0 and 1.
	* src/scan-gram.l (gram_wrap): Redefine to avoid bug in flex 2.5.31
	that xlc complains about.
	* src/scan-skel.l (skel_wrap): Likewise.
	* data/c.m4 (b4_c_function_def): Look at __STDC_VERSION__ as well
	as __STDC__.
	* data/yacc.c (YYMODERN_C): New macro, which also looks at
	__STDC_VERSION__.  Use it everywhere instead of looking at
	__STDC__ and __cplusplus.

2005-10-10  Akim Demaille  <akim@epita.fr>

	* examples/calc++/test: Be quiet unless VERBOSE.

2005-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (yydestruct, yysymprint):
	Use YYUSE instead of casting to void.
	* data/glr.c (YYUSE): New macro.
	(yyuserMerge, yyreportAmbiguity, yyreportSyntaxError):
	Use it instead of rolling our own.
	(YYLLOC_DEFAULT, YYCHK, YYDPRINTF, YY_SYMBOL_PRINT, YY_REDUCE_PRINT):
	(YYCHK1):
	Use /*CONSTCOND*/ to suppress lint warnings.
	* data/lalr1.cc (YYLLOC_DEFAULT, YY_SYMBOL_PRINT, YY_REDUCE_PRINT):
	(YY_STACK_PRINT): Use 'false' not '0'.
	(YYUSE): New macro.
	(yysymprint_, yydestruct_): Use it instead of rolling our own.
	* data/yacc.c (YYUSE): New macro.
	(YYCOPY, YYSTACK_RELOCATE, YYBACKUP, YYLLOC_DEFAULT):
	(YYDPRINTF, YY_SYMBOL_PRINT, YY_STACK_PRINT, YY_REDUCE_PRINT):
	(yyerrorlab): Use /*CONSTCOND*/ to suppress lint warnings.


	* data/m4sugar/m4sugar.m4 (_m4_map): New macro.
	(m4_map, m4_map_sep): Use it.  Handle the empty list correctly.

2005-10-04  Paul Eggert  <eggert@cs.ucla.edu>

	Undo the parts of the unlocked-I/O change that substituted
	putc or puts for printf.  This might hurt performance a bit,
	but some people prefer the printf style.
	* data/c.m4 (yysymprint): Prefer printf to puts and putc.
	* data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): Remove.
	All uses replaced by YYFPRINTF and YYDPRINTF.
	* data/yacc.c: Likewise.
	* lib/bitset.c (bitset_print): Likewise.
	* lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer printf to
	putc and puts.
	* lib/lbitset.c (debug_lbitset): Likewise.
	* src/closure.c (print_firsts, print_fderives): Likewise.
	* src/gram.c (grammar_dump): Likewise.
	* src/lalr.c (look_ahead_tokens_print): Likewise.
	* src/output.c (escaped_output): Likewise.
	(user_actions_output): Break apart two printfs.
	* src/parse-gram.y (%printer): Prefer printf to putc and puts.
	* src/reduce.c (reduce_print): Likewise.
	* src/state.c (state_rule_look_ahead_tokens_print): Likewise.
	* src/system.h: Include unlocked-io.h rathe than stdio.h.

	* data/glr.c (yyuserMerge, yyreportAmbiguity, yyreportSyntaxError):
	Use assignments rather than casts-to-void to suppress
	unused-variable warnings.  This pacifies 'lint'.
	* data/lalr1.cc (yysymprint_, yydestruct_): Use a call to suppress
	unused-variable warnings.

2005-10-03  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* Makefile.am: DJGPP specific files added to EXTRA_DIST.

2005-10-02  Paul Eggert  <eggert@cs.ucla.edu>

	Use unlocked I/O for a minor performance improvement on hosts like
	GNU/Linux and Solaris that support unlocked I/O.  The basic idea
	is to use the gnlib unlocked-io module, and to prefer putc and
	puts to printf when either will work (since the latter doesn't
	come in an unlocked flavor).
	* bootstrap (gnulib_modules): Add unlocked-io.
	* data/c.m4 (yysymprint): Prefer puts and putc to printf.
	* data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): New macros.
	Prefer them to YYFPRINTF and YYDPRINTF if either will do,
	and similarly for puts and putc and printf.
	* data/yacc.c: Likewise.
	* lib/bitset.c (bitset_print): Likewise.
	* lib/bitset.h [USE_UNLOCKED_IO]: Include unlocked-io.h.
	* lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer putc and puts
	to printf.
	* lib/lbitset.c (debug_lbitset): Likewise.
	* src/closure.c (print_firsts, print_fderives): Likewise.
	* src/gram.c (grammar_dump): Likewise.
	* src/lalr.c (look_ahead_tokens_print): Likewise.
	* src/output.c (escaped_output): Likewise.
	(user_actions_output): Coalesce two printfs.
	* src/parse-gram.y (%printer): Prefer putc and puts to printf.
	* src/reduce.c (reduce_print): Likewise.
	* src/state.c (state_rule_look_ahead_tokens_print): Likewise.
	* src/system.h: Include unlocked-io.h rather than stdio.h.

	* data/lalr1.cc: Don't put an unmatched ' in a dnl comment, as
	this confuses xgettext.

2005-10-02  Akim Demaille  <akim@epita.fr>

	* bootstrap (gnulib_modules): Add strverscmp.
	* lib/.cvsignore: Add strverscmp.c, strverscmp.h.
	* m4/.cvsignore: Add strverscmp.m4.
	* src/parse-gram.y (%require): New token, new rule.
	(version_check): New.
	* src/scan-gram.l (%require): Adjust.
	* tests/input.at (AT_REQUIRE): New.
	Use it.
	* doc/bison.texinfo (Require Decl): New.
	(Calc++ Parser): Use %require.

2005-10-02  Akim Demaille  <akim@epita.fr>

	* data/location.cc: New.

2005-10-02  Paul Eggert  <eggert@cs.ucla.edu>,
	    Akim Demaille  <akim@epita.fr>

	Make sure -odir/foo.cc creates dir/location.hh etc.
	* src/files.h (spec_outfile, parser_file_name, spec_name_prefix)
	(spec_file_prefix, spec_verbose_file, spec_graph_file)
	(spec_defines_file): Now const.
	(dir_prefix): New.
	(short_base_name): Remove.
	* src/files.c: Adjust.
	(dirname.h): Include.
	(base_name): Don't prototype it.
	(finput): Remove, duplicates gram_in.
	(full_base_name, short_base_name): Replace by...
	(all_but_ext, all_but_tab_ext): these.
	(compute_base_names): Rename as...
	(compute_file_name_parts): this.
	Update to compute the new variables, including dir_prefix.
	Adjust dependencies.
	* src/output.c (prepare): Output them.
	* src/reader.c: Adjust to use gram_in, not finput.
	* src/scan-skel.l (@dir_prefix@): New.

2005-10-02  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* lib/subpipe.c: New function end_of_output_subpipe() added
	to allow support for non-posix systems. This is a no-op function
	for posix systems.

	* lib/subpipe.h: New function end_of_output_subpipe() added
	to allow support for non-posix systems. This is a no-op function
	for posix systems.

	* src/output.c (output_skeleton): Use end_of_output_subpipe() to
	handle the lack of pipe/fork functionality on non-posix systems.

	* djgpp/Makefile.maint: DJGPP specific file.

	* djgpp/README.in: DJGPP specific file.

	* djgpp/config.bat: DJGPP specific configuration file.

	* djgpp/config.sed: DJGPP specific configuration file.

	* djgpp/config.site: DJGPP specific configuration file.

	* djgpp/config_h.sed: DJGPP specific configuration file.

	* djgpp/subpipe.c: DJGPP specific replacement file for lib/subpipe.c.

	* djgpp/subpipe.h: DJGPP specific replacement file for lib/subpipe.h.

2005-10-02  Akim Demaille  <akim@epita.fr>

	* data/location.cc: New, extract from...
	* data/lalr1.cc: here.
	(location.hh): Include it after the user prologue, in case the
	filename type is defined by the user.
	Forward declation location and position before the pre-prologue.
	(yyresult_): Rename as...
	(yyresult): this, it's a local variable, not an attribute.
	* data/Makefile.am (dist_pkgdata_DATA): Adjust.

2005-10-01  Akim Demaille  <akim@epita.fr>

	* examples/extexi: Restore the #line generation.

2005-09-30  Akim Demaille  <akim@epita.fr>,
	    Alexandre Duret-Lutz <adl@gnu.org>

	Move the token type and YYSTYPE in the parser class.
	* data/lalr1.cc (stack.hh, location.hh): Include earlier.
	(parser::token): New, from the moved free definition of tokens.
	(parser::semantic_value): Now a full definition instead of an
	indirection to YYSTYPE.
	(b4_post_prologue): No longer included in the header file, but
	in the implementation file.
	* doc/bison.texi (C+ Language Interface): Update.
	* src/parse-gram.y: Support unary %define.
	* tests/actions.at: Define global_tokens_and_yystype for backward
	compatibility until we update the tests.
	* tests/calc.at: Idem.
	(first_line, first_column, last_line, last_column): Define for lalr1.cc
	to simplify the code.

2005-09-29  Paul Eggert  <eggert@cs.ucla.edu>

	Port to SunOS 4.1.4, which lacks strtoul and strerror.
	Ah, the good old days!  Problem reported by Peter Klein.
	* bootstrap (gnulib_modules): Add strerror, strtoul.
	* lib/.cvsignore: Add strerror.c, strtol.c, strtoul.c
	* m4/.cvsignore: Add strerror.m4, strtol.m4, strtoul.m4.

2005-09-29  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_error_verbose_if): New.
	* data/lalr1.cc: Use it.
	(YYERROR_VERBOSE_IF): Remove.
	(yyn_, yylen_, yystate_, yynerrs_, yyerrstatus_): Remove as
	parser members, replaced by...
	(yyn, yylen, yystate, yynerss, yyerrstatus): these parser::parse
	local variables.
	(yysyntax_error_): Takes the state number as argument.
	(yyreduce_print_): Use the argument yyrule, not the former
	attribute yyn_.

2005-09-26  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (gnulib_modules): Add verify.
	* lib/.cvsignore: Add verify.h.
	* src/getargs.c: Use ARGMATCH_VERIFY rather than verify.
	* src/system.h (verify): Remove.
	Include verify.h instead.
	* src/tables.c (tables_generate): Use new API for 'verify'.

2005-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Do not use
	local variables whose names begin with 'yy'.
	* tests/calc.at (_AT_DATA_CALC_Y): Likewise.
	Trivial changes from Joel E. Denny.

	* bootstrap (gnulib_modules): Remove alloca.  Bison doesn't need
	it itself.
	* src/main.c (main) [C_ALLOCA]: Don't flush alloca'ed memory; we
	don't use alloca any more.

	* data/yacc.c [YYSTACK_USE_ALLOCA && !defined __GNUC__ && ! defined
	__BUILTIN_VA_ARG_INCR && ! defined _AIX && ! defined _MSC_VER &&
	defined _ALLOCA_H]: Don't include <stdlib.h>; not needed in this case.
	* tests/torture.at (Exploding the Stack Size with Alloca): Adjust
	to match yacc.c, to test more hosts.

2005-09-20  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYSIZE_T): Reindent to make it clearer.  This
	doesn't affect behavior.
	(YYSTACK_ALLOC) [YYSTACK_USE_ALLOCA]: Improve support for
	Solaris, AIX, MSC.
	(_STDLIB_H): Renamed from YYINCLUDED_STDLIB_H.  All uses changed.
	This works a bit better with glibc, if user code has already included
	stdlib.h.
	* doc/bison.texinfo (Bison Parser): Document that users can't
	arbitrarily use malloc and free for other purposes.  Document
	that <alloca.h> and <malloc.h> might be included.
	(Table of Symbols): Under YYSTACK_USE_ALLOCA, Don't claim that the
	user must declare alloca.

	* HACKING (release): Forwarn the Translation Project about
	stable releses.

2005-09-20  Akim Demaille  <akim@epita.fr>

	* data/glr.c: Use b4_token_enums, not b4_token_enums_defines.

2005-09-19  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYSIZE_MAXIMUM): New macro.
	(YYSTACK_ALLOC_MAXIMUM): Use it.
	(yysyntax_error): New function.
	(yyparse) [YYERROR_VERBOSE]: Don't leak memory indefinitely if
	multiple syntax errors are reported, and alloca is being used.
	Instead, reallocate buffers twice as big each time, so that
	we waste at most half the allocated memory.  Start with a small
	(128-byte) buffer that will suffice in most cases anyway.
	Use yysyntax_error to do most of the work.

	* doc/bison.texinfo (Error Reporting, Table of Symbols):
	yynerrs is the number of errors reported, not the number of
	errors encountered.

	* tests/glr-regression.at (Duplicated user destructor for lookahead):
	Mark it as expected to fail.
	Cast result of malloc; problem reported by twlevo@xs4all.nl.
	* tests/actions.at, tests/calc.at, tests/glr-regression.at:
	Don't start user-code symbols with "yy", to avoid name space problems.

2005-09-19  Akim Demaille  <akim@epita.fr>

	Remove the traits, failed experiment.
	It never proved useful, and anyway because of the current
	definition, it was not possible to have several specialization of
	this traits, making it useless.
	* data/lalr1.cc (yy:traits): Remove.
	Inline its definitions in the parser class.

2005-09-19  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (LIBS): Pass INTLLIBS to address failures on at
	least Mac OSX with a /usr/local install of gettext.

2005-09-19  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yyparse): Rename yylooka and yyilooka as yychar
	and yytoken for similarity with the other skeletons.

2005-09-19  Akim Demaille  <akim@epita.fr>

	* NEWS, configure.ac: update version number to 2.1a.

2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.1.

	* NEWS: Remove notice of yytname change, since it was never in an
	official release.
	* data/glr.c (yydestroyGLRState): Rename local var to avoid shadowing
	diagnostic.
	* src/output.c (prepare): Likewise.
	* data/lalr1.cc (YYERROR_VERBOSE_IF): New macro.
	(yysyntax_error_): Use it to avoid GCC warning when YYERROR_VERBOSE
	is not defined.  This is an awful hack, but it's enough for now.
	All callers changed.
	* tests/glr-regression-at (make_value): Args are const pointers now,
	to avoid GCC warning.
	(Duplicated user destructor for lookahead): New test.  Currently
	skipped.  It fails on my host but I'm not sure it'll always fail.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* src/symtab.h (struct symbol): Declare the printer and destructor
	as const, to avoid accidental calls to free.
	(symbol_destructor_set, symbol_printer_set): Adjust.
	* src/symtab.c: Adjust.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_token_enums): New.
	(b4_token_defines): Rename as...
	(b4_token_enums_defines): this.
	(b4_token_defines): New, output only the #defines.
	* data/yacc.c, data/glr.c: Adjust.
	* data/lalr1.cc: Use b4_token_enums instead of b4_token_enums_defines.
	* data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Define
	as default values.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yylex_): Remove, inline its code.
	(yyreport_syntax_error_): Remove, replaced by...
	(yysyntax_error_): this which returns a string and leaves to the
	caller the call to the users' error function.
	(yylooka_, yyilooka_, yylval, yylloc, yyerror_range_, yyval, yyloc):
	Move from members of the parser object...
	(yylooka, yyilooka, yylval, yylloc, yyerror_range, yyval, yyloc):
	to local variables of the parse function.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Calc++ Parser): Don't promote defining YYEOF
	since it's in Bison's name space.

2005-09-15  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyresolveValue): Add default case to pacify
	gcc -Wswitch-default.  Problem reported by twlevo@xs4all.nl.

	* NEWS: Document when yyparse started to return 2.
	* doc/bison.texinfo (Parser Function): Document when yyparse
	returns 2.

	* data/lalr1.cc: Revert part of previous change, as it's incompatible.
	(b4_filename_type): Renamed back from b4_file_name_type.  All uses
	changed.
	(class position): file_name -> filename (reverting).  All uses changed.

2005-09-14  Paul Eggert  <eggert@cs.ucla.edu>

	* examples/calc++/Makefile.am ($(calc_sources_generated)): Don't
	do anything if $@ exists.  This reverts part of the 2005-07-07
	patch.

2005-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.am (EXTRA_DIST): Do not distribute REFERENCES; it
	contains obsolete information and isn't worth distributing as a
	separate file anyway.
	* data/glr.c [defined YYSETJMP]: Don't include <setjmp.h>.
	(YYJMP_BUF, YYSETJMP, YYLONGJMP) [!defined YYSETJMP]: New macros.
	All uses of jmp_buf, setjmp, longjmp changed to use these instead.
	(yyparse): Abort if user code uses longjmp to throw an unexpected
	value.

2005-09-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_identification): Define YYBISON_VERSION.
	Suggested by twlevo@xs4all.nl.

	* data/glr.c (YYCHK1): Do not assume YYE is in range.
	This avoids a diagnostic from gcc -Wswitch-enum.
	Problem reported by twlevo@xs4all.nl.

	* doc/bison.texinfo: Don't use "filename", as per GNU coding
	standards.  Use "file name" or "file" or "name", depending on
	the context.
	(Invocation): The output of "bison hack/foo.y" goes to foo.tab.c,
	not to hack/foo.tab.c.
	(Calc++ Top Level): 2nd arg of main is not const.
	* data/glr.c: b4_filename -> b4_file_name.
	* data/lalr1.cc: Likewise.  Also, b4_filename_type -> b4_file_name_type.
	All uses changed.
	(class position): filename -> file_name.  All uses changed.
	* data/yacc.c: b4_filename -> b4_file_name.
	* lib/bitset.h: filename -> file_name in local vars.
	* lib/bitset_stats.c: Likewise.
	* src/files.c: Likewise.
	* src/scan-skel.l ("@output ".*\n): Likewise.
	* src/files.c (file_name_split): Renamed from filename_split.
	* src/muscle_tab.c (muscle_init): Output b4_file_name, not b4_filename.

2005-09-08  Paul Eggert  <eggert@cs.ucla.edu>

	* lib/.cvsignore: Add pipe-safer.c, stdio--.h, unistd--.h,
	to accommodate latest gnulib.

	* tests/glr-regression.at (Duplicate representation of merged trees):
	Add casts to pacify g++.  Problem reported by twlevo@xs4all.nl.

	* bootstrap: Add comment as to why the AM_LANGINFO_CODESET hack is
	needed.

2005-08-26  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yydestroyGLRState): Renamed from yydestroyStackItem.
	All uses changed.  Invoke user destructor after an error during a
	split parse (trivial change from Joel E. Denny).

	* tests/glr-regression.at
	(User destructor after an error during a split parse):  New test case.
	Problem reported by Joel E. Denny in:
	http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html

2005-08-25  Paul Eggert  <eggert@cs.ucla.edu>

	* README-cvs: Give URLs for recommended tools.
	Mention Gzip version problem, and bootstrapping issues.
	Remove troubleshooting section, as it's somewhat obsolete.

	* bootstrap (no_cache): New var, to accommodate different wget
	variants.  Use it instead of '-C off'.  Problem reported by
	twlevo@xs4all.nl.

	* data/glr.c (yydestroyStackItem): New function.
	(yyrecoverSyntaxError, yyreturn): Use it to improve quality of
	debugging information.  Problem reported by Joel E. Denny.

2005-08-25  Akim Demaille  <akim@epita.fr>

	* tests/local.at (AT_COMPILE_CXX): Pass $LINKS too.

2005-08-24  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyrecoverSyntaxError, yyreturn):
	Don't invoke destructor on unresolved entries.
	* tests/glr-regression.at
	(User destructor for unresolved GLR semantic value): New test case.
	Problem reported by Joel E. Denny in:
	http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html

2005-08-21  Paul Eggert  <eggert@cs.ucla.edu>

	* lib/.cvsignore: Remove realloc.c, strncasecmp.c, xstrdup.c.
	Add strnlen.c.
	* m4/.cvsignore: Remove codeset.m4, gettext.m4, lib-ld.m4,
	lib-prefix.m4, po.m4.

	* data/glr.c (yyreturn): Use "Cleanup:" rather than "Error:"
	in yydestruct diagnostic, since it might not be an error.
	Problem reported by Joel Denny near end of
	<http://lists.gnu.org/archive/html/help-bison/2005-07/msg00040.html>.
	* data/lalr1.cc (yyerturn): Likewise.
	* data/yacc.c (yyreturn): Likewise.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Adjust to the above change.

	* src/files.c: Remove obsolete FIXME comment.

	* data/glr.c (YY_SYMBOL_PRINT): Append a newline, for consistency
	with the other templates, and to fix bogus run-on messages such
	as the one reported at the end of
	<http://lists.gnu.org/archive/html/help-bison/2005-07/msg00040.html>.
	All callers changed to avoid the newline.
	(yyprocessOneStack): Output two lines rather than one, to accommodate
	the above change.  This changes the debug output format slightly.

	* data/glr.c (yyresolveValue): Fix redundant parse tree problem
	reported by Joel E. Denny in
	<http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00004.html>
	(trivial change).
	* tests/glr-regression.at (Duplicate representation of merged trees):
	New test, from Joel E. Denny in:
	<http://lists.gnu.org/archive/html/help-bison/2005-07/msg00013.html>.
	* THANKS: Add Joel E. Denny.

	* configure.ac (AC_INIT): Bump to 2.0c.

2005-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.0b.

	* Makefile.am (SUBDIRS): Put examples before tests, so that
	"make check" doesn't finish with "All 1 tests passed".

	* tests/regression.at (Token definitions): Don't rely on
	AT_PARSER_CHECK for data that contains backslashes.  It currently
	uses 'echo', and 'echo' isn't portable if its argument contains
	backslashes.  Problem found on OpenBSD 3.4.  Also, do not assume
	that the byte '\0xff' is not printable in the C locale; it is,
	under OpenBSD 3.4 (!).  Luckily, '\0x80' through '\0x9e' are
	not printable, so use '\0x81' to test.

	* data/glr.c (YYOPTIONAL_LOC): Define even if it's not a recent
	version of GCC, since the macro is used with non-GCC compilers.

	Fix core dump reported by Pablo De Napoli in
	<http://lists.gnu.org/archive/html/bug-bison/2005-07/msg00053.html>.
	* tests/regression.at (Invalid inputs with {}): New test.
	* src/parse-gram.y (token_name): Translate type before using
	it as an index.

	* data/glr.c (ATTRIBUTE_UNUSED): Remove, since it infringes on
	the user's name space.  All uses changed to __attribute__
	((__unused__)).
	(yyFail, yyMemoryExhausted, yyreportAmbiguity):
	Add __attribute__ ((__noreturn__)).

	* etc/clcommit: Remove.  We weren't using it, and it failed
	"make maintainer-distcheck".
	* Makefile.maint: Merge from coreutils.
	(CVS_LIST, CVS_LIST_EXCEPT): New macros.
	(syntax-check-rules): Change list of rules as described below.
	(sc_cast_of_alloca_return_value, sc_dd_max_sym_length):
	(sc_file_system, sc_obsolete_symbols, sc_prohibit_atoi_atof):
	(sc_prohibit_jm_in_m4, sc_root_tests, sc_tight_scope):
	(sc_trailing_space): New rules.
	(sc_xalloc_h_in_src): Remove.
	(sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value):
	(sc_space_tab, sc_error_exit_success, sc_changelog):
	(sc_system_h_headers, sc_sun_os_names, sc_unmarked_diagnostics):
	(makefile-check, po-check, author_mark_check):
	(makefile_path_separator_check, copyright-check):
	Use grep -n, to make it easier to find violations.
	Use CVS_LIST and CVS_LIST_EXCEPT.
	(header_regexp, h_re): Remove.
	(dd_c): New macro.
	(sc_dd_max_sym_length, .re-list, news-date-check): New rules.
	(my-distcheck): Use more-modern GCC flags.
	(signatures, %.asc): Remove.
	(rel-files, announcement): Remove signatures.
	Restore old updating code, even though we don't use it, so
	that we're the same as coreutils.
	(alpha, beta, major): Depend on news-date-check.
	Make the upload commands.

	* data/c.m4, data/lalr1.cc, data/yacc.c: Normalize white space.
	* lib/abitset.h, lib/bbitset.h, lib/bitset.h: Likewise.
	* lib/bitset_stats.c, lib/ebitset.h, lib/lbitset.c: Likewise.
	* lib/libitset.h, lib/timevar.c, lib/vbitset.h: Likewise.
	* src/Makefile.am, src/gram.c, src/muscle_tab.h: Likewise.
	* src/parse-gram.y, src/system.h, src/tables.c, src/vcg.c: Likewise.
	* src/vcg_defaults.h, tests/cxx-type.at, tests/existing.at: Likewise.
	* tests/sets.at: Likewise.

	* data/m4sugar/m4sugar.m4: Sync from Autoconf, except that
	we comment out the Autoconf version number.
	* doc/bison.texinfo (Calc++ Scanner): Don't use atoi, as
	it's error-prone and "make maintainer-distcheck" rejects it.

	* lib/subpipe.c: Include <fcntl.h> without checking for HAVE_FCNTL_H.
	Indent calls to "error" to pacify "make maintainer-distcheck",
	when the calls are not intended to be translated.
	* m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't check for fcntl.h.

	* src/Makefile.am (DEFS): Use +=, to pacify
	"make maintainer-distcheck".
	(bison_SOURCES): Add scan-skel.h.
	(sc_tight_scope): New rule, from coreutils.

	* src/files.c (src_extension, header_extension):
	Now static, not extern.
	* src/getargs.c (short_options): Likewise.
	* src/muscle_tab.c (muscle_table): Likewise.
	* src/parse-gram.y (current_class, current_type, current_prec):
	Likewise.
	* src/reader.c (grammar_end, previous_rule_end): Likewise.
	* src/getargs.h: Redo comments to pacify "make maintainer-distcheck".
	* src/main.c (main): Cast bindtextdomain and textdomain calls to
	void, to avoid warning when NLS is disabled.
	* src/output.c: Include scan-skel.h.
	(scan_skel): Remove decl, since scan-skel.h does this.
	(output_skeleton):
	Indent calls to "error" to pacify "make maintainer-distcheck".
	* src/print_graph.c: Don't include <obstack.h>, as system.h does this.
	* src/reader.h (gram_end, gram_lineno): New decls to pacify
	"make maintainer-distcheck".
	* src/scan-skel.l (skel_lex, skel_get_lineno, skel_get_in):
	(skel_get_out, skel_get_leng, skel_get_text, skel_set_lineno):
	(skel_set_in, skel_set_out, skel_get_debug, skel_set_debug):
	(skel_lex_destroy, scan_skel): Move these decls to...
	* src/scan-skel.h: New file.
	* src/uniqstr.c (uniqstr_assert):
	Indent calls to "error" to pacify "make maintainer-distcheck".

	* tests/Makefile.am ($(srcdir)/package.m4): Use $(VAR),
	not @VAR@.

	* tests/torture.at: Revamp to avoid misuse of atoi that
	"make maintainer-distcheck" complained about.

	* examples/extexi (message): Don't print a message more than once,
	and omit line-number decoration that makes Emacs compile think
	that informative messages are worth worrying about.

2005-07-22  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac: Update version number.

	* Makefile.am (SUBDIRS): Add examples; somehow this got removed
	accidentally.
	* examples/calc++/calc++-parser.yy: Remove from CVS, as it's
	autogenerated by the maintainer.
	* examples/calc++/.cvsignore: Add *.yy.

	* lib/bitset.c (bitset_alloc): Don't cast xcalloc result.
	* lib/bitset_stats.c (bitset_stats_init): Likewise.
	* lib/bitsetv.c (bitsetv_alloc): Likewise.

	* po/POTFILES.in: Add lib/xalloc-die.c; remove lib/xmalloc.c.

	* src/relation.c (relation_transpose): Rewrite to avoid bogus complaint
	from maintainer-distcheck about casting the argument of 'free'.

	* NEWS: Mention recent yytname changes.
	* THANKS: Add Anthony Heading, twlevo@xs4all.nl.

	* bootstrap: For translations that have not yet been upgraded to
	the new runtime-po domain, prime the pump by extracting the
	relevant strings from the obsolete translations.  This code can be
	removed once the bison-runtime domain has been translated by each
	team.

	* src/scan-gram.l (<SC_PRE_CODE>.): Don't double-quote token names,
	now that token names are already quoted.

	Fix problem reported by Anthony Heading.
	* data/glr.c (YYTOKEN_TABLE): New macro.
	(yytname): Define if YYTOKEN_TABLE.
	* data/yacc.c (YYTOKEN_TABLE, yytname): Likewise.
	* data/lalr1.cc (YYTOKEN_TABLE, yytname_): Likewise.
	(YYERROR_VERBOSE): Define the same way the other skeletons do.
	* src/output.c (prepare_symbols): Output token_table_flag.

2005-07-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyinitGLRStack, yyreturn): Don't call malloc
	again if the first call fails.

	* data/glr.c (yytnamerr): New function.
	(yyreportSyntaxError): Use it to dequote most string literals.
	* data/lalr1.c (yytname_): Renamed from yyname_, for compatibility
	with other skeletons.  All uses changed.
	(yytnameerr_): New function.
	(yyreport_syntax_error): Use it to dequote most string literals.
	* data/yacc.c (yytnamerr): New function.
	(yyerrlab): Use it to decode most string literals.
	* doc/bison.texinfo (Decl Summary, Calling Convention):
	Clarify quoting convention of yytname.
	* src/output.c (prepare_symbols): Quote all names.  This undoes
	the 2005-04-17 change, which is now accomplished (mostly) via
	changes in the parsers as described above.
	* tests/regression.at (Token definitions, Web2c Actions):
	Undo most 2005-04-17 change here, too.

2005-07-20  Paul Eggert  <eggert@cs.ucla.edu>

	Fix more problems reported by twlevo@xs4all.nl.
	* tests/cxx-type.at: Don't pipe output of ./types through sed to
	remove trailing spaces.  This loses the exit status of ./types,
	and isn't needed since ./types shouldn't be emitting trailing
	spaces.
	* data/glr.c (yyreturn): Don't pop stack if yyinitStateSet failed,
	as the stack isn't valid in that case.

	* src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
	(gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
	(gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
	Add declarations to pacify "gcc -Wmissing-prototypes" when flex 2.5.31
	is used.
	* src/scan-skel.l (skel_get_lineno, skel_get_in, skel_get_out):
	(skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
	(skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
	Likewise.

	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Work even with
	overly-picky compilers that reject 'char *foo = "bar";'.

	* src/symtab.c (SYMBOL_ATTR_PRINT, symbol_print): Direct output
	to FILE * parameter, not to stderr.  This fixes a typo introduced
	in the 2005-07-12 change.

	* lib/subpipe.c (create_subpipe): Rewrite slightly to avoid
	warnings from GCC 4.

	* data/glr.c (yyexpandGLRStack, yyaddDeferredAction, yyexpandGLRStack):
	(yyglrShiftDefer, yysplitStack):
	Remove unused parameters b4_pure_formals.  All uses changed.
	(yyglrShift): Remove unused parameters b4_user_formals.
	All uses changed.
	(yyglrReduce): Removed unused parameter yylocp.  All uses changed.

2005-07-18  Paul Eggert  <eggert@cs.ucla.edu>

	Destructor cleanups and regularization among the three skeletons.
	* NEWS: Document the behavior changes.
	* data/glr.c (yyrecoverSyntaxError): Don't bother to pop the
	stack before failing, as the cleanup code will do it for us now.
	* data/lalr1.cc (yyerrlab): Likewise.
	* data/glr.c (yyparse): Pop everything off the stack before
	freeing it, so that destructors get called properly.
	* data/lalr1.cc (yyreturn): Likewise.
	* data/yacc.c (yyreturn): Pop and destroy the start symbol, too.
	This is more consistent.
	* doc/bison.texinfo (Destructor Decl): Mention more reasons
	why destructors might be called.  1.875 -> 2.1.
	(Destructor Decl, Decl Summary, Table of Symbols):
	Some English-language cleanups for %destructor.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	Add output line for destructor of start symbol.
	* tests/calc.at (AT_CHECK_CALC): Add one to line counts,
	because of that same extra output line.

	* NEWS: Document minor wording changes in diagnostics of
	Bison-generated parsers.
	* data/glr.c (yyMemoryExhausted): Renamed from yyStackOverflow.
	Remove unused formals.  All uses changed.
	(yyreportAmbiguity): "ambiguity detected" -> "syntax is ambiguous".
	(yyparse): Rename yyoverflowlab to yyexhaustedlab.
	* data/yacc.c (yyparse): "parser stack overflow" -> "memory exhausted".
	Rename yyoverflowab to yyexhaustedlab.
	When memory exhaustion occurs during syntax-error reporting,
	report it separately rather than in a single diagnostic; this
	eases translation.
	* doc/bison.texinfo (Memory Management): Renamed from Stack Overflow.
	(Memory Exhausted): Renamed from Parser Stack Overflow.
	Revamp wording slightly to prefer "memory exhaustion".
	* tests/actions.at: "parser stack overflow" -> "memory exhausted".

	* data/c.m4 (b4_yysymprint_generate): Use YYFPRINTF, not fprintf.

	Add i18n support to the GLR skeleton.  Partially fix the C++
	skeleton; a C++ expert needs to finish this.  Remove debugging
	msgids; there's little point to having them translated, since they
	can be understood only by someone who can read the
	(English-language) source code.

	Generate runtime-po/bison-runtime.pot automatically, so that we
	don't have to worry about garbage getting in that file.  We'll
	make sure after the next official release that old msgids don't
	get lost.  See
	<http://lists.gnu.org/archive/html/bison-patches/2005-07/msg00119.html>.

	* runtime-po/Makefile.in.in, runtime-po/bison-runtime.pot: Remove.
	Now auto-generated.
	* PACKAGING: Don't claim that Gawk, GCC, Perl use this method yet.
	Fix typos in explanations of the runtime file.
	* bootstrap: Change gettext keyword from YYI18N to YY_.
	Use standard Makefile.in.in in runtime-po, since we'll arrange
	for backward-compatible bison-runtime.po files in a different way.
	* data/glr.c (YY_): New macro, from yacc.c.
	(yyuserAction, yyreportAmbiguity, yyreportSyntaxError, yyparse):
	Translate messages intended for users.
	(yyreportSyntaxError): Change "virtual memory" to "memory" to match
	the wording in the other skeletons.  We don't know that the memory
	is virtual.
	* data/lalr1.cc (YY_): Renamed from _.  All uses changed.
	Use same method that yacc.c uses.
	Don't translate debugging messages.
	(yy::yyreport_syntax_error): Put in a FIXME for the i18n stuff;
	it doesn't work (yet), and requires C++ expertise to fix.
	* data/yacc.c (YY_): Renamed from YY18N.  All uses changed.
	Move defn to a more logical place, to be consistent with other
	skeletons.
	Don't translate debugging messages.
	Don't assume line numbers fit in unsigned int; use unsigned long fmts.
	* doc/bison.texinfo: Mention <libintl.h>.  Change glibc cross reference
	to gettext cross reference.  Add indexing terms.  Mention YYENABLE_NLS.
	* runtime-po/POTFILES.in: Add data/glr.c, data/lalr1.cc.

	Fix yyerror / yylex test glitches noted by twlevo@xs4all.nl.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Have yyerror return
	void, not int.
	* tests/glr-regression.at (Badly Collapsed GLR States):
	Likewise.
	(Improper handling of embedded actions and dollar(-N) in GLR parsers):
	yylex should return 0 at EOF rather than aborting.

	Improve tests for stack overflow in GLR parser.
	Problem reported by twlevo@xs4all.nl.
	* data/glr.c (struct yyGLRStack): Remove yyerrflag member.
	All uses removed.
	(yyStackOverflow): Just longjmp, but with value 2 so that caller
	can handle the problem.
	(YYCHK1): Use goto (a la yacc.c) rather than setting a flag.
	(yyparse): New local variable yyresult to record the result.
	Use result of setjmp to set it, rather than storing itinto
	struct.
	(yyDone): Remove label.
	(yyacceptlab, yyabortlab, yyoverflowlab, yyreturn): New labels,
	to mimic yacc.c.  Do not discard lookahead if it's EOF (possible
	if YYABORT is used).
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Exit with
	yyparse status; put status > 1 into diagnostic.
	Check that status==2 works.
	* tests/calc.at, tests/cxx-type.at, tests/glr-regression.at:
	Use exit status 3 for failure to open (which shouldn't happen).

2005-07-17  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/conflicts.at (%nonassoc and eof):  Don't exit with status
	1 on syntax error; just let yyparse do its thing.
	* tests/glr-regression.at (Badly Collapsed GLR States): Likewise.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Likewise.
	(Exploding the Stack Size with Alloca):
	(Exploding the Stack Size with Malloc):
	Expect exit status 2, not 1, since the parser is supposed to blow
	its stack.  Problem reported by twlevo@xs4all.nl.

	* data/glr.c (yyparse): Don't assume that the initial calls
	to YYMALLOC succeed; in that case, yyparse incorrectly returned 0.
	Print a stack-overflow message and fail instead.
	Initialize the line-number information before creating the stack,
	so that the stack-overflow message can report line zero safely.

2005-07-14  Paul Eggert  <eggert@cs.ucla.edu>

	Fix problems reported by twlevo@xs4all.nl.
	* data/glr.c (YYSTACKEXPANDABLE): Don't define if already defined.
	(yyuserMerge): Provide a default case if b4_mergers is empty.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Define YYSTACKEXPANDABLE.
	* tests/glr-regression.at
	(Improper handling of embedded actions and dollar(-N) in GLR parsers):
	Add casts to pacify C++ compilers.
	* tests/glr-regression.at (Improper merging of GLR delayed action
	sets): Declare yylex before using it.
	* tests/Makefile.am (maintainer-check-g++): Fix a stray
	$(GXX) that escaped the renaming of GXX to CXX.  Remove bogus
	test for valgrind; valgrind is independent of g++.
	(maintainer-check-posix): Add _POSIX2_VERSION=200112, to check
	for compatibility with POSIX 1003.1-2001 (if running coreutils).
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Port to stricter C++.
	Use a destructor, so that we can expand the stack.  Change
	YYSTYPE to char * so that we can free it.  Cast result of malloc.

2005-07-13  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* data/glr.c (yyuserAction): Fix uninitialized variable that caused
	a valgrind failure.  Problem reported by twlevo@xs4all.nl.

2005-07-13  Paul Eggert  <eggert@cs.ucla.edu>

	* PACKAGING: New file, suggested by Bruno Haible and taken from
	similar wording in gettext's PACKAGING file.
	* NEWS: Mention PACKAGING.
	* Makefile.am (EXTRA_DIST): Add PACKAGING.

2005-07-12  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Document recent i18n improvements.
	* bootstrap: Get runtime translations into runtime-po.
	Create runtime-po files automatically, if possible.
	* configure.ac: Invoke BISON_I18N, so that we eat our own dog food.
	* data/yacc.c: Rewrite inclusion of <libintl.h> so that ENABLE_NLS
	does not infringe on the user's name space.
	(YYENABLE_NLS): Renamed from ENABLE_BISON_NLS.
	* doc/bison.texinfo (Internationalization): Revamp the English
	and Texinfo syntax a bit, to try to make it clearer.
	(Bison Options, Option Cross Key): Mention --print-localedir.
	* m4/bison-i18n.m4 (BISON_I18N): Rename ENABLE_BISON_NLS to
	YYENABLE_NLS.  Quote a bit more.
	* runtime-po/.cvsignore: New file.
	* runtime-po/Makefile.in.in (mostlyclean): Remove *.old.pot.
	* runtime-po/Rules-quot: Remove; now created by bootstrap.
	* runtime-po/quot.sed: Likewise.
	* runtime-po/boldquot.sed: Likewise.
	* runtime-po/en@quot.header: Likewise.
	* runtime-po/en@boldquot.header: Likewise.
	* runtime-po/insert-header.sin: Likewise.
	* runtime-po/remove-potcdate.sin: Likewise.
	* runtime-po/Makevars: Likewise.
	* runtime-po/LINGUAS: Likewise.
	* runtime-po/de.po: Likewise; we will rely on the translation project
	to maintain this, so "bootstrap" should get it.
	* src/getarg.c (PRINT_LOCALEDIR_OPTION): Let the C compiler determine
	its value.
	* src/main.c (main): Bind the bison-runtime domain, too.

2005-07-12  Bruno Haible  <bruno@clisp.org>

	* data/yacc.c: Include <libintl.h> when NLS is enabled.
	(YYI18N): Renamed from _. Use dgettext when NLS is enabled.
	* po/POTFILES.in: Remove autogenerated file src/parse-gram.c.
	* runtime-po: New directory.
	* runtime-po/Makefile.in.in: New file, copied from po/, with modified
	$(DOMAIN).pot-update rule, so that old messages are never dropped.
	* runtime-po/Rules-quot: New file, copied from po/.
	* runtime-po/quot.sed: Likewise.
	* runtime-po/boldquot.sed: Likewise.
	* runtime-po/en@quot.header: Likewise.
	* runtime-po/en@boldquot.header: Likewise.
	* runtime-po/insert-header.sin: Likewise.
	* runtime-po/remove-potcdate.sin: Likewise.
	* runtime-po/Makevars: New file.
	* runtime-po/POTFILES.in: New file.
	* runtime-po/LINGUAS: New file.
	* runtime-po/bison-runtime.pot: New file.
	* runtime-po/de.po: New file.
	* m4/bison.m4: New file.
	* Makefile.am (SUBDIRS): Add runtime-po.
	(aclocaldir, aclocal_DATA): New variables.
	* configure.ac: Add AC_CONFIG_FILES of runtime-po/Makefile.in.
	Define aclocaldir.
	* src/getargs.c (usage): Document --print-localedir option.
	(PRINT_LOCALEDIR_OPTION): New enum item.
	(long_options): Add --print-localedir option.
	(getargs): Handle --print-localedir option.
	* doc/bison.texinfo (Bison Parser): Remove paragraph about _().
	(Internationalization): New section.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_print): Swap the arguments,
	for consistency with the rest of the code.
	* src/symlist.h, src/symlist.c (symbol_list_print): Ditto.
	Add separators.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y: Use %printer instead of YYPRINT.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_print): New.
	* src/symlist.h, src/symlist.c (symbol_list_print): New.
	* src/symlist.c (symbol_list_n_type_name_get): Report the culprit.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* data/glr.c (b4_syncline): Fix (swap) the definitions of
	b4_at_dollar and b4_dollar_dollar.

2005-07-11  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Mystery Conflicts): Add reference to DeRemer
	and Pennello's paper.

2005-07-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yyparse): Undo previous patch.  Instead,
	set yylsp[0] and yyvsp[0] only if the initial action
	sets yylloc and yylval, respectively.

	* data/yacc.c (yyparse): In the initial action, set
	yylsp[0] and yyvsp[0] rather than yylloc and yylval.
	This avoids the use of undefined variables if the initial
	action does not set yylloc and/or yylval.

2005-07-07  Paul Eggert  <eggert@cs.ucla.edu>

	* examples/calc++/calc++-driver.cc, examples/calc++/calc++-driver.hh:
	* examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc:
	Remove from CVS.  These files are automatically generated.
	* examples/extexi: Clarify that this file is now part of Bison,
	not GNU M4, and that it works with any POSIX-compatible Awk.
	* examples/calc++/Makefile.am (run_extexi): Remove; not used.
	($(calc_extracted)): Renamed from $(calc_sources_extracted),
	so that we also get calc++-parser.yy.  Geneate it.
	Use $(AWK), not gawk, since any conforming Awk will do.
	Put comment before action, since older 'make' can't handle comment
	in action.
	$(BUILT_SOURCES): List all built sources, not just some of them.
	$(MAINTAINERCLEANFILES): Remove *.stamp, and all built sources.
	$($(srcdir)/calc++-parser.stamp): Work even if POSIXLY_CORRECT.
	$($(calc_sources_generated)): Remove unnecessary test for existence
	of target.  (This had a shell syntax error anyway; a stray "x".)
	(calc_extracted): List $(srcdir)/calc++-parser.yy, not
	calc++-parser.yy.
	* examples/.cvsignore, examples/calc++/.cvsignore: New files.

	* bootstrap (gnulib_modules): Add gettext, now that it's no longer
	implied by the other modules.

2005-07-06  Akim Demaille  <akim@epita.fr>

	Bind examples/calc++ to the package.
	* examples/calc++/Makefile: Remove, replaced by...
	* examples/calc++/Makefile.am: ... this new file.
	* examples/calc++/test: Remove input.
	* examples/calc++/compile: Remove.
	* examples/Makefile.am: New.
	* configure.ac, Makefile.am: Adjust.
	* doc/Makefile.am (clean-local): New, for more recent texi2dvis.

2005-07-05  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyFail): Drastically simplify; since the format argument
	never had any % directives, we can simply pass it to yyerror.
	(yyparse): Use "t a; a=b;" rather than "t a = b;" when a will
	be modified later, as that is the usual style in glr.c.
	Problems reported by Paul Hilfinger.

	Rewrite GLR parser to catch more buffer overrun, storage exhaustion,
	and size overflow errors.
	* data/glr.c: Include <stdio.h> etc. after user prolog, not before,
	in case the user prolog sets feature-test macros like _GNU_SOURCE.
	(YYSIZEMAX): New macro.
	(yystpcpy): New function, taken from yacc.c.
	(struct yyGLRStack.yyspaceLeft): Now size_t, not int.
	(yyinitGLRStack, yyfreeGLRstack): Remove unnecessary forward decls,
	so that we don't have to maintain their signatures.
	(yyFail): Check for buffer overflow, by using vsnprintf rather
	than vsprintf.  Allocate a bigger buffer if possible.
	Report an error if buffer allocation fails.
	(yyStackOverflow): New function.
	(yyinitStateSet, yyinitGLRStack): Return a boolean indicating whether
	the initialization was successful.  It might fail if storage was
	exhausted.
	(yyexpandGLRStack): Add more checks for storage allocation failure.
	Use yyStackOverflow to report failures.
	(yymarkStackDeleted, yyglrShift, yyglrShiftDefer, yydoAction):
	(yysplitStack, yyprocessOneStack, yyparse, yypstack):
	Don't assume stack number fits in int.
	(yysplitStack): Check for storage allocation failure.
	(yysplitStack, yyprocessOneStack): Add pure_formals, so that we
	can print diagnostics on storage allocation failure.  All callers
	changed.
	(yyresolveValue): Use yybool for boolean.
	(yyreportSyntaxError): Check for size-calculation overflow.
	This code is taken from yacc.c.
	(yyparse): Check for storage allocation errors when allocating
	the initial stack.

2005-07-05  Akim Demaille  <akim@epita.fr>

	Extract calc++ from the documentation.
	* doc/bison.texinfo (Calc++): Add the extraction marks.
	* examples/extexi: New, from the aborted GNU Programming 2E.
	Separate the different paragraph of a file with empty lines.
	* examples/Makefile: Use it to extract the whole calc++ example.

2005-06-24  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (C++ Parser Interface): Use defcv to define
	class typedefs.

2005-06-22  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (C++ Language Interface): First stab.
	(C++ Parsers): Remove.

2005-06-22  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yylex_): Honor %lex-param.

2005-06-22  Akim Demaille  <akim@epita.fr>

	Start a set of simple examples.
	* examples/calc++/Makefile, examples/calc++/calc++-driver.cc,
	* examples/calc++/calc++-driver.hh,
	* examples/calc++/calc++-parser.yy,
	* examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc,
	* examples/calc++/compile, examples/calc++/test: New.

2005-06-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (malloc, free) [defined __cplusplus]: Wrap inside
	extern "C" {}.  This fixes a problem reported by Paul Hilfinger,
	which stems from the 2005-05-27 patch.

2005-06-06  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c: Modify treatment of unused parameters to permit use
	of g++ (which doesn't allow __attribute__ ((unused)) for parameters).

2005-05-30  Paul Eggert  <eggert@cs.ucla.edu>

	Fix infringement on user name space reported by Janos Zoltan Szabo.
	* data/yacc.c (yyparse): strlen -> yystrlen.

2005-05-30  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (_): New.
	Translate the various messages.

2005-05-27  Paul Eggert  <eggert@cs.ucla.edu>

	Fix infringement on user name space reported by Bruno Haible.
	* data/yacc.c (YYSIZE_T): Define first, so that later decls can use it.
	Prefer GCC's __SIZE_TYPE__ if available, so that we don't infringe on
	the user's name space.
	(alloca): Include <stdlib.h> to get it, if it's not built in.
	(YYMALLOC, YYFREE): Define only if needed.
	(malloc, free): Declare, but only if needed, as this infringes on
	the user name space.

2005-05-25  Paul Eggert  <eggert@cs.ucla.edu>

	Fix BeOS, FreeBSD, MacOS porting problems reported by Bruno Haible.
	* lib/bitset.c (bitset_print): Don't assume size_t can be printed
	with %d format.
	* lib/ebitset.c (min, max): Undef before defining.
	* lib/vbitset.c (min, max): Likewise.
	* lib/subpipe.c (create_subpipe): Save local variables in case
	vfork clobbers them.

2005-05-24  Bruno Haible  <bruno@clisp.org>

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the
	error message syntax used by gcc-4.0.

2005-05-23  Paul Eggert  <eggert@cs.ucla.edu>

	* README: Mention m4 1.4.3.  Remove obsolete advice about
	Sun Forte Developer 6 update 2, VMS, and MS-DOS.

	* bootstrap: Remove workaround for problem I encountered with
	gettext 0.14.1; it seems to be fixed now.

2005-05-22  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.0a.

	* src/files.c: Include "stdio-safer.h"; this fixes a typo in
	the previous change.

	Various maintainer cleanups.
	* .cvsignore: Add a.exe, a.out, b.out,, conf[0-9]*, confdefs*,
	conftest*, for benefit of CVS commands run at the same time as
	"configure".  Add build-aux, since "bootstrap" now creates it and
	its subfiles.
	* Makefile.cfg (move_if_change): Remove.
	* Makefile.maint: Remove the update stuff; we now use "bootstrap".
	(ftp-gnu, www-gnu, move_if_change, local_updates, update):
	(po_repo, do-po-update, po-update, wget_files, get-targets):
	(config.guess-url_prefix, config.sub-url_prefix):
	(ansi2knr.c-url_prefix, texinfo.tex-url_prefix):
	(standards.texi-url_prefix, make-stds.texi-url_prefix, taget, url):
	($(get-targets), cvs-files, automake_repo, wget-update, cvs-update):
	Remove.
	* configure.ac (AC_CONFIG_AUX_DIR): Change from config to build-aux;
	this is now the recommended name.
	* config/.cvsignore: Remove config.guess, config.rpath, config.sub,
	depcomp, install-sh, mdate-sh, missing, mkinstalldirs, texinfo.tex,
	ylwrap.  These files now go into build-aux.
	* config/move-if-change: Remove.
	* config/prev-version.txt: Bump from 1.75 to 2.0.

	* bootstrap: Add stdio-safer, unistd-safer modules.
	Remove m4/glibc2.m4 (introduced by latest gnulib, but
	we don't need it).
	* lib/.cvsignore: Add dup-safer.c, fd-safer.c,
	fopen-safer.c, stdio-safer.h, unistd-safer.h.
	* lib/subpipe.c: Include "unistd-safer.h".
	(create_subpipe): Make sure all the newly-created
	file descriptors are > 2, so that diagnostics don't
	get sent down them (which might cause Bison to hang, in theory).
	* m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4.
	* src/files.c (xfopen): Use fopen_safer, not fopen.

	* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port
	yesterday's yacc.c fix.

2005-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c, data/lalr1.cc: Update copyright date.

	Fix a destructor bug reported by Wolfgang Spraul in
	<http://lists.gnu.org/archive/html/bug-bison/2005-05/msg00042.html>.
	* data/yacc.c (yyabortlab): Don't call destructor, and
	don't set yychar to EMPTY.
	(yyoverflowlab): Don't call destructor.
	(yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY.
	* tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines,
	since we no longer output the message "discarding lookahead token
	end of input ()".

2005-05-20  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* data/glr.c (YY_SYMBOL_PRINT): Don't print newline at end to
	fix a small glitch in debugging output.
	(yyprocessOneStack, yyrecoverSyntaxError, yyparse): Print newline
	after YY_SYMBOL_PRINT where needed.

	(struct yyGLRState): Add some comments.
	(struct yySemanticOption): Add some comments.
	(union yyGLRStackItem): Add comment.

	(yymergeOptionSets): Correct this to properly perform the union,
	avoiding infinite reported by Michael Rosien.
	Update comment.

	* tests/glr-regression.at: Add test for GLR merging error reported
	by M. Rosien.

2005-05-13  Paul Eggert  <eggert@cs.ucla.edu>

	* COPYING, ChangeLog, GNUmakefile, HACKING, Makefile.am,
	Makefile.cfg, Makefile.maint, NEWS, README, README-alpha,
	README-cvs, TODO, bootstrap, configure.ac, data/Makefile.am,
	data/README, data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c,
	data/m4sugar/m4sugar.m4, doc/Makefile.am, doc/bison.texinfo,
	doc/fdl.texi, doc/gpl.texi, doc/refcard.tex, lib/Makefile.am,
	lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c,
	lib/bitset.h, lib/bitset_stats.c, lib/bitset_stats.h,
	lib/bitsetv-print.c, lib/bitsetv-print.h, lib/bitsetv.c,
	lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/get-errno.c,
	lib/get-errno.h, lib/lbitset.c, lib/lbitset.h, lib/libiberty.h,
	lib/main.c, lib/subpipe.c, lib/subpipe.h, lib/timevar.c,
	lib/timevar.def, lib/timevar.h, lib/vbitset.c, lib/vbitset.h,
	lib/yyerror.c, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4, m4/timevar.m4,
	m4/warning.m4, src/LR0.c, src/LR0.h, src/Makefile.am, src/assoc.c,
	src/assoc.h, src/closure.c, src/closure.h, src/complain.c,
	src/complain.h, src/conflicts.c, src/conflicts.h, src/derives.c,
	src/derives.h, src/files.c, src/files.h, src/getargs.c,
	src/getargs.h, src/gram.c, src/gram.h, src/lalr.c, src/lalr.h,
	src/location.c, src/location.h, src/main.c, src/muscle_tab.c,
	src/muscle_tab.h, src/nullable.c, src/nullable.h, src/output.c,
	src/output.h, src/parse-gram.c, src/parse-gram.h,
	src/parse-gram.y, src/print.c, src/print.h, src/print_graph.c,
	src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c,
	src/reduce.h, src/relation.c, src/relation.h, src/scan-gram.l,
	src/scan-skel.l, src/state.c, src/state.h, src/symlist.c,
	src/symlist.h, src/symtab.c, src/symtab.h, src/system.h,
	src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h,
	src/vcg.c, src/vcg.h, src/vcg_defaults.h, tests/Makefile.am,
	tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at,
	tests/cxx-type.at, tests/existing.at, tests/glr-regression.at,
	tests/headers.at, tests/input.at, tests/local.at, tests/output.at,
	tests/reduce.at, tests/regression.at, tests/sets.at,
	tests/synclines.at, tests/testsuite.at, tests/torture.at:
	Update FSF postal mail address.

2005-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/local.at (AT_COMPILE_CXX): Treat LDFLAGS like AT_COMPILE does.
	Problem reported by Ralf Menzel.

2005-05-01  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/actions.at: Test that stack overflow invokes destructors.
	From Marcus Holland-Moritz.
	* data/yacc.c (yyerrlab): Move the code that destroys the stack
	from here....
	(yyreturn): to here.  That way, destructors are called properly
	even if the stack overflows, or the user calls YYACCEPT or
	YYABORT.  Stack-overflow problem reported by Marcus Holland-Moritz.
	(yyoverflowlab): Destroy the lookahead.

2005-04-24  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYSTACK_ALLOC_MAXIMUM): Add more-descriptive comment.

2005-04-17  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison-generated C parsers no longer quote literal strings
	associated with tokens.
	* src/output.c (prepare_symbols): Don't escape strings,
	since users don't want to see C escapes.
	* tests/calc.at (AT_CHECK_CALC): Adjust to lack of quotes
	in diagnostics.
	* tests/input.at (Torturing the Scanner): Likewise.
	* tests/regression.at (Token definitions, Web2c Actions): Likewise.

2005-04-16  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/torture.at (AT_INCREASE_DATA_SIZE): Skip the test if
	the data size is known to be too small and we can't increase it.
	This works around an HP-UX 11.00 glitch reported by Andrew Benham.

2005-04-15  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y: Include quotearg.h.
	(string_as_id): Quote $1 before using it as a key, since the
	lexer no longer quotes it for us.
	(string_content): Don't strip quotes, since lexer no longer
	quotes it for us.
	* src/scan-gram.l: Include quotearg.h.
	("\""): Omit quote.
	("'"<SC_ESCAPED_CHARACTER>): Quote symbol before using it as
	a key, since the rest of the lexer doesn't quote it.
	* src/symtab.c (symbol_get): Don't quote symbol; caller does it now.
	* tests/regression.at (Token definitions): Check for backslashes
	in token strings.

	* data/yacc.c (YYSTACK_ALLOC_MAXIMUM): New macro.
	(YYSIZE_T): Define to unsigned long int when using an older compiler.
	(yyparse): Revamp code to generate long syntax error message, to
	make it easier to translate, and to avoid problems with arithmetic
	overflow.  Change "virtual memory" to "memory" in diagnostic, since
	we don't know whether the memory is virtual.

2005-04-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison-generated C parsers now use the _ macro to
	translate strings.
	* data/yacc.c (_) [!defined _]: New macro.
	All English strings wrapped inside this macro.
	* doc/bison.texinfo (Bison Parser): Document _.
	* po/POTFILES.in: Include src/parse-gram.c, since it now
	includes translateable strings that parse-gram.y doesn't.

2005-04-12  Paul Eggert  <eggert@cs.ucla.edu>

	* src/symtab.c (symbol_make_alias): Call symbol_type_set,
	reverting the 2004-10-11 change to this function.
	(symbol_check_alias_consistency): Don't call symbol_type_set
	if the type name is already correct.
	* tests/input.at (Typed symbol aliases): New test, from Tim Van Holder.

2005-03-25  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/regression.at (Token definitions): Don't use a token named
	c, as that generates a "#define c ..." that runs afoul of buggy
	stdlib.h that uses the identifier c as a member of struct
	drand48_data.  Problem reported by Horst Wente.

2005-03-21  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Change translation URL from
	http://www2.iro.umontreal.ca/~gnutra/po/maint/bison/ to
	http://www.iro.umontreal.ca/translation/maint/bison/ to avoid
	redirection glitches.  Problem reported by twlevo@xs4all.nl.

2005-03-20  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Don't put options
	after operands; POSIX says this isn't portable for the c99 command.

2005-03-18  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/glr-regression.at (glr-regr2a.y): Try to dump core
	immediately if a data overrun has occurred; this may help us track
	down what may be a spurious failure on MacOS.

2005-03-17  Paul Eggert  <eggert@cs.ucla.edu>

	Respond to problems reported by twlevo@xs4all.nl.

	* bootstrap: Use "trap - 0" rather than the unportable "trap 0".

	* src/vcg.h: Comment fix.
	* src/vcg_defaults.h: Parenthesize macro bodies to make them safe.
	(G_CMAX): Change to -1 instead of INT_MAX.

	* data/yacc.c (yyparse): Omit spaces before #line.

2005-03-15  Paul Eggert  <eggert@cs.ucla.edu>

	* src/tables.c (state_number_to_vector_number): Put it inside an
	"#if 0", since it's not currently used.  Problem reported by
	Roland McGrath.

2005-03-06  Paul Eggert  <eggert@cs.ucla.edu>

	* src/output.c (escaped_output): Renamed from
	escaped_file_name_output, since we now use it for symbol tags as
	well.  All uses changed.
	(symbol_destructors_output, symbol_printers_output):
	Escape symbol tags too.
	Problem reported by Matyas Forstner in
	<http://lists.gnu.org/archive/html/bug-bison/2005-03/msg00009.html>.

	* src/muscle_tab.c (muscle_code_grow): Don't quote numbers; it's
	not needed.
	* src/output.c (user_actions_output, token_definitions_output,
	symbol_destructors_output, symbol_printers_output): Likewise.
	* src/reader.c (prologue_augment): Likewise.
	* src/scan-gram.l (handle_action_dollar, handle_action_at): Likewise.

	* src/vcg.c (output_edge): Don't quote linestyle arg.
	Problem reported by twlevo@xs4all.nl.

2005-02-28  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Semantic Tokens): Fix scoping problem in
	example, reported by Derek M Jones.  Also, make the example even
	more outrageous, to better illustrate how bad the problem is.

2005-02-24  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Mfcalc Symtab): Correct the prototype for
	putsym.  Typo reported by Sebastian Piping.

2005-02-23  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Language and Grammar): some -> same
	(Epilogue): int he -> in the
	Typos reported by Sebastian Piping via Justin Pence.

2005-02-07  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/glr-regression.at (Improper handling of embedded actions
	and dollar(-N) in GLR parsers): Renamed from "Improper handling of
	embedded actions and $-N in GLR parsers", work around an Autoconf bug
	with dollar signs in test names.
	* tests/input.at (Invalid dollar-n): Renamed from "Invalid \$n",
	for a similar reason.

2005-01-28  Paul Eggert  <eggert@cs.ucla.edu>

	* src/vcg.c (output_graph): G_VIEW -> normal_view in case someone
	wants to redefine G_VIEW.

2005-01-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/vcg.c (get_view_str): Remove case for normal_view.
	Problem reported by twlevo@xs4all.nl.

2005-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac (O0CFLAGS, O0CXXFLAGS): Fix quoting bug.
	Problem reported by twlevo@xs4all.nl.

	* doc/bison.texinfo: Change @dircategory from "GNU programming
	tools" to "Software development".  Requested by Richard Stallman
	via Karl Berry.

2005-01-23  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/c++.at (AT_CHECK_DOXYGEN): Don't use options after operands.
	Problem reported by twlevo@xs4all.nl.

2005-01-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYCOPY, yystpcpy, yyparse): Remove "register"
	keyword; it's not needed with modern compilers, and it doesn't
	affect correctness with older compilers.  Suggested by
	twlevo@xs4all.nl.

2005-01-17  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyuserAction): Add "default: break;" case to pacify
	gcc -Wswitch-default.
	* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Likewise.
	* data/yacc.c (yyparse): Likewise.

2005-01-12  Paul Eggert  <eggert@cs.ucla.edu>

	* src/system.h (OUTPUT_EXT, TAB_EXT): Define only if not defined
	already.  Let config.h define any nonstandard values.

2005-01-10  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/calc.at (_AT_DATA_CALC_Y): Use alarm (100), not alarm (10),
	for the benefit of slower hosts.  Problem reported by
	Nelson H. F. Beebe.

2005-01-07  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yyparse): Pacify non-GCC compilers about yyerrorlab
	being defined and not used.
	* data/lalr1.cc (yyparse): Likewise.
	Use "if (false)" rather than "if (0)".

2005-01-05  Paul Eggert  <eggert@cs.ucla.edu>

	* TODO: Mention that we should allow NUL bytes in tokens.

2005-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	* src/scan-skel.l (<<EOF>>): Don't close standard output.
	Problem reported by Hans Aberg.

2005-01-01  Paul Eggert  <eggert@cs.ucla.edu>

	* src/getargs.c (version): Happy new year; update overall
	program copyright date from 2004 to 2005.

	* src/scan-skel.l ("@output ".*\n): Don't close standard output.
	Problem reported by Hans Aberg.
	* tests/output.at (AT_CHECK_OUTPUT): New arg SHELLIO.
	(Output file names.): Add a test for the case when standard output
	is closed.

2004-12-26  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (@copying): Update FDL version number to 1.2,
	to fix an oversight in the Bison 2.0 manual.

2004-12-25  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.0.  Reformat the existing news items since
	1.875, so that related items are grouped together.
	* configure.ac (AC_INIT): Bump version to 2.0.
	* src/parse-gram.c, src/parse-gram.h: Regenerate with 2.0.

	* tests/torture.at (Exploding the Stack Size with Alloca): Set
	YYSTACK_USE_ALLOCA to 1 if __GNUC__ or alloca are defined;
	otherwise, we're not testing alloca.  Unfortunately there's no
	simple way to consult HAVE_ALLOCA here.

	* data/lalr1.cc (yydestruct_): Pacify unused variable warning
	for yymsg, too.

	* src/LR0.c (new_itemsets): Use memset rather than zeroing by
	hand.  This avoids a warning about comparing int to size_t when
	GCC warnings are enabled.

2004-12-22  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison-generated parsers no longer default to using the
	alloca function (when available) to extend the parser stack, due
	to widespread problems in unchecked stack-overflow detection.
	* data/glr.c (YYMAXDEPTH): Remove undef when zero.  It's the user's
	responsibility to set it to a positive value.  This lets the user
	specify a value that is not a preprocessor constant.
	* data/yacc.c (YYMAXDEPTH): Likewise.
	(YYSTACK_ALLOC): Define only if YYSTACK_USE_ALLOCA is nonzero.
	* doc/bison.texinfo (Stack Overflow): YYMAXDEPTH no longer needs
	to be a compile-time constant.  However, explain the constraints on it.
	Also, explain the constraints on YYINITDEPTH.
	(Table of Symbols): Explain that alloca is no longer the default.
	Explain the user's responsibility if they define YYSTACK_USE_ALLOCA
	to 1.

	* doc/bison.texinfo (Location Default Action): Mention that n must
	be zero when k is zero.  Suggested by Frank Heckenbach.

2004-12-22  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (parser::token_number_type, parser::rhs_number_type)
	(parser::state_type, parser::semantic_type, parser::location_type):
	Private, not public.
	(parser::parse): Return ints, not bool.
	Returning a bool introduces a problem: 0 corresponds to false, and
	it seems weird to return false on success.  Returning true changes
	the conventions for yyparse.
	Alternatively we could return void and send an exception.
	There is no clear consensus (yet?).
	(state_stack, semantic_stack, location_stack): Rename as...
	(state_stack_type, semantic_stack_type, location_stack_type): these.
	Private, not public.
	* tests/c++.at: New.
	* tests/testsuite.at, tests/Makefile.am: Adjust.

2004-12-21  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (parser::parse): Return a bool instead of an int.

2004-12-21  Akim Demaille  <akim@epita.fr>

	Don't impose std::string for filenames.

	* data/lalr1.cc (b4_filename_type): New.
	(position::filename): Use it.
	(parser.hh): Move the inclusion of stack.hh and location.hh below
	the user code, so that needed headers for the filename type can be
	included first.
	Forward declare them before the user code.
	* tests/Makefile.am (check-local, installcheck-local): Pass
	TESTSUITEFLAGS to the TESTSUITE.

2004-12-20  Akim Demaille  <akim@epita.fr>

	Use more STL like names: my_class instead of MyClass.

	* data/lalr1.cc (LocationStack, LocationType, RhsNumberType)
	(SemanticStack, SemanticType, StateStack, StateType)
	(TokenNumberType, Stack, Slice, Traits, Parser::location)
	(Parser::value): Rename as...
	(location_stack, location_type, rhs_number_type, semantic_stack)
	(semantic_type, state_stack, state_type, token_number_type, stack)
	(slice, traits, parser::yylloc, parser::yylval): these.

	* tests/calc.at, tests/regression.at, tests/actions.at: Adjust.

2004-12-19  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (YYLLOC_DEFAULT): Use GNU spacing conventions.
	* data/yacc.c (YYLLOC_DEFAULT): Likewise.

2004-12-17  Paul Eggert  <eggert@cs.ucla.edu>

	Remove uses of 'short int' and 'unsigned short int'.  This raises
	some arbitrary limits.  It uses more memory but nowadays that's
	not much of an issue.

	This change does not affect the generated parsers; that's a different
	task, as some users will want to conserve memory there.

	Ideally we should use size_t to represent all object counts, and
	something like ptrdiff_t to represent signed differences of object
	counts; but that will require more code-cleanup than I have the
	time to do right now.

	* src/LR0.c (allocate_itemsets, new_itemsets, save_reductions):
	Use size_t, not int or short int, to count objects.
	* src/closure.c (nritemset, closure): Likewise.
	* src/closure.h (nritemset, closure): Likewise.
	* src/nullable.c (nullable_compute): Likewise.
	* src/print.c (print_core): Likewise.
	* src/print_graph.c (print_core): Likewise.
	* src/state.c (state_compare, state_hash): Likewise.
	* src/state.h (struct state): Likewise.
	* src/tables.c (default_goto, goto_actions): Likewise.

	* src/gram.h (rule_number, rule): Use int, not short int.
	* src/output.c (prepare_rules): Likewise.
	* src/state.h (state_number, STATE_NUMBER_MAXIMUM, transitions,
	errs, reductions): Likewise.
	* src/symtab.h (symbol_number, SYMBOL_NUMBER_MAXIMUM, struct symbol):
	Likewise.
	* src/tables.c (vector_number, tally, action_number,
	ACTION_NUMBER_MINIMUM): Likewise.
	* src/output.c (muscle_insert_short_int_table): Remove.

2004-12-17  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Extensive Doxygenation.
	(error_): Rename as...
	(error): this, since it is visible to the user.
	Adjust callers.
	(Parser::message): Now an automatic variable from...
	(Parser::yyreport_syntax_error_): here.
	* tests/actions.at, tests/calc.at, tests/regression.at: Adjust to
	Parser::error.
	* tests/input.at: Escape $.

2004-12-16  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (b4_lhs_value, b4_rhs_value, b4_rhs-location):
	Parenthesize rhs to avoid obscure problems with mistakes like
	"foo$$bar = foo$1bar;".  Problem reported by twlevo at xs4all.
	* data/lalr1.cc (b4_lhs_value, b4_rhs_value, b4_lhs_location,
	b4_rhs_location): Likewise.
	* data/yacc.c (b4_lhs_value, b4_rhs_value, b4_lhs_location,
	b4_rhs_location): Likewise.

2004-12-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yyreport_syntax_error_): Catch up with glr.c and
	yacc.c: be sure to stay within yycheck_.
	* tests/actions.at: Re-enable C++ tests.

2004-12-16  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (print_graph): Remove layoutalgorithm uses for
	real.

2004-12-16  Akim Demaille  <akim@epita.fr>

	Use #define to handle the %name-prefix.

	* data/glr.c, data/yacc.c: Comment changes.
	* data/lalr1.cc (yylex): Use #define to select the name of yylex,
	so that one can refer to yylex in the parser file, and have it
	renamed, as is the case with other skeletons.

2004-12-16  Akim Demaille  <akim@epita.fr>

	Move lalr1.cc internals into yy*.

	* data/lalr1.cc (semantic_stack_, location_stack_, state_stack_)
	(semantic_stack_, location_stack_, pact_, pact_ninf_, defact_)
	(pgoto_, defgoto_, table_, table_ninf_, check_, stos_, r1_, r2_)
	(name_, rhs_, prhs_, rline_, token_number_, eof_, last_, nnts_)
	(empty_, final_, terror_, errcode_, ntokens_)
	(user_token_number_max_, undef_token_, n_, len_, state_, nerrs_)
	(looka_, ilooka_, error_range_, nerrs_):
	Rename as...
	(yysemantic_stack_, yylocation_stack_, yystate_stack_)
	(yysemantic_stack_, yylocation_stack_, yypact_, yypact_ninf_)
	(yydefact_, yypgoto_, yydefgoto_, yytable_, yytable_ninf_)
	(yycheck_, yystos_, yyr1_, yyr2_, yyname_, yyrhs_, yyprhs_)
	(yyrline_, yytoken_number_, yyeof_, yylast_, yynnts_, yyempty_)
	(yyfinal_, yyterror_, yyerrcode_, yyntokens_)
	(yyuser_token_number_max_, yyundef_token_, yyn_, yylen_, yystate_)
	(yynerrs_, yylooka_, yyilooka_, yyerror_range_, yynerrs_):
	these.

2004-12-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some problems reported by twlevo at xs4all.
	* src/symtab.c (symbol_new): Report an error if the input grammar
	contains too many symbols.  This is better than calling abort() later.
	* src/vcg.h (enum layoutalgorithm): Remove.  All uses removed.
	(struct node, struct graph):
	Rename member expand to stretch.  All uses changed.
	(struct graph): Remove member layoutalgorithm.  All uses removed.
	* src/vcg.c (get_layoutalgorithm_str): Remove.  All uses removed.
	* src/vcg_defaults.h (G_STRETCH): Renamed from G_EXPAND.
	All uses changed.
	(N_STRETCH): Rename from N_EXPAND.  All uses changed.

2004-12-15  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Normalize /** \brief ... */ to ///.
	Add more Doxygen comments.
	(symprint_, stack_print_, reduce_print_, destruct_, pop)
	(report_syntax_error_, translate_): Rename as...
	(yysymprint_, yystack_print_, yyreduce_print_, yydestruct_)
	(yypop_, yyreport_syntax_error_, yytranslate_): this.

2004-12-15  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (lex_): Rename as...
	(yylex_): this.
	Move the trace here.
	Take the %name-prefix into account.
	Reported by Alexandre Duret-Lutz.

2004-12-15  Akim Demaille  <akim@epita.fr>

	Simplify the C++ parser constructor.

	* data/lalr1.cc (debug_): Rename as...
	(yydebug_): so that the parser's internals are always in the yy*
	pseudo namespace.
	Adjust uses.
	(b4_parse_param_decl): Remove the leading comma as it is now only
	called as unique argument list.
	(Parser::Parser): Remove the constructor accepting a location and
	an initial debugging level.
	Remove from the other ctor the argument for the debugging level.
	(debug_level_type, debug_level, set_debug_level): New.

	* tests/actions.at, tests/calc.at, tests/regression.at: Adjust
	constructor calls.

2004-12-15  Akim Demaille  <akim@epita.fr>

	Remove b4_root related material: failure experiment
	(which goal was to allow to derive from a class).

	* data/lalr1.cc (b4_root, b4_param, b4_constructor): Remove
	definitions and uses.

2004-12-14  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (struct yyGLRStack): yyerror_range now has 3 items,
	not 2, since it's not portable to subtract 1 from the start of an
	array.  The new item 0 is never set or used.  All uses changed.

	(yyrecoverSyntaxError): Use YYLLOC_DEFAULT instead of assuming
	the default definition of YYLLOC_DEFAULT.  Problem reported
	by Frank Heckenbach.

2004-12-12  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (YYRHSLOC): Don't have two definitions, one for
	the normal case and one for the error case.  Just use the
	first one uniformly.  Problem reported by Frank Heckenbach.
	(YYLLOC_DEFAULT): Use the conventions of yacc.c, so we can
	use exactly the same macro in both places.
	(yyerror_range): Now of type yyGLRStackItem, not YYLTYPE,
	so that the normal-case YYRHSLOC works for the error case too.
	All uses changed.
	* data/yacc.c (YYRHSLOC): New macro, taken from glr.c.
	(YYLLOC_DEFAULT): Use the same macro as glr.c.
	* doc/bison.texinfo (Location Default Action): Don't claim that
	we have an array of locations.  Use the same macro for both glr
	and lalr parsers.  Mention YYRHSLOC.  Mention what happens when
	the index is 0.

2004-12-10  Paul Eggert  <eggert@cs.ucla.edu>

	* HACKING: Update email addresses to send announcements to.

	* configure.ac (AC_INIT): Bump version to 1.875f.

2004-12-10  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 1.875e.
	* src/parse-gram.c, src/parse-gram.h: Regenerate with 1.875e.

	* src/scan-skel.l: Include "complain.h", for "fatal".

	* src/relation.h (relation_print, relation_digraph):
	Relation sizes are of type relation_node, not size_t (this is
	merely a doc fix, since the two types are equivalent).
	(relation_transpose): Relation sizes are of type relation_node,
	not int.
	* src/relation.c: Likewise.
	(top, infinity): Now of type relation_node, not int.
	(traverse, relation_transpose): Use relation_node, not int.

	* data/glr.c (yyuserAction, yyrecoverSyntaxError): Mark args
	with ATTRIBUTE_UNUSED if they're not used, to avoid GCC warning.
	(yyparse): Remove unused local introduced in 2004-10-25 patch.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): New arg
	specifying whether the test should be skipped.  Use it tp
	specify that the [%defines %skeleton "lalr1.cc"] tests currently
	fail on some hosts, and should be skipped.

2004-12-08  Paul Eggert  <eggert@cs.ucla.edu>

	* src/system.h (CALLOC, MALLOC, REALLOC): Remove.  All callers
	changed to use xcalloc, xnmalloc, xnrealloc, respectively,
	unless otherwise specified below.

	* src/LR0.c (allocate_itemsets): Use xnmalloc, not xcalloc,
	to allocate kernel_base, kernel_items, kernel_size, since
	they needn't be initialized to 0.
	(allocate_storgae): Likewise, for shiftset, redset, shift_symbol.
	* src/closure.c (new_closure): Likewise, for itemset.
	* src/derives.c (derives_compute): Likewise, for delts, derives, q.
	* src/lalr.c (set_goto_map): Likewise, for temp_map.
	(initialize_F): Likewise, for reads, edge, reads[i], includes[i].
	(build_relations): Likewise for edge, states1, includes.
	* src/nullable.c (nullable_compute): Likewise, for squeue, relts.
	* src/reader.c (packgram): Likewise, for ritem, rules.
	* src/reduce.c (nonterminals_reduce): Likewise for nontermmap.
	* src/relation.c (relation_digraph): Likewise for VERTICES.
	(relation_transpose): Likewise for new_R, end_R.
	* src/symtab.c (symbols_token_translations_init): Likewise for
	token_translations.
	* src/tables.c (save_row): Likewise for froms, tos, conflict_tos.
	(token_actions): Likewise for yydefact, actrow, conflrow,
	conflict_list.
	(save_column): Likewise for froms[symno], tos[symno].
	(goto_actions): Likewise for state_count.
	(pack_table): Likewise for base, pos, check.
	(tables_generate): Likewise for width.

	* src/LR0.c (set_states): Don't reuse kernel_size and kernel_base
	for initial core.  Just have a separate core, so we needn't worry
	about whether kernel_size and kernel_base are initialized.

	* src/LR0.c (shift_symbol, redset, shiftset, kernel_base,
	kernel_size, kernel_items): Remove unnecessary initialization.
	* src/conflicts.c (conflicts): Likewise.
	* src/derives.c (derives): Likewise.
	* src/muscle_tablc (muscle_insert): Likewise.
	* src/relation.c (relation_digraph): Likewise.
	* src/tables.c (froms, tos, conflict_tos, tally, width, actrow, order,
	conflrow, conflict_table, conflict_list, table, check):
	Likewise.

	* src/closure.c (new_closure): Arg is of type unsigned int, not int.
	This is because all callers pass unsigned int.
	* src/closure.h (new_closure): Likewise.

	* src/lalr.c (initialize_F): Initialize reads[i] in all cases.
	(build_relations): Initialize includes[i] in all cases.
	* src/reader.c (packgram): Always initialize rules[ruleno].prec
	and rules[ruleno].precsym.  Initialize members in order.
	* src/relation.c (relation_transpose): Always initialize new_R[i]
	and end_R[i].
	* src/table.c (conflict_row): Initialize 0 at end of conflict_list.

	* src/output.c (prepare_actions): Pass 0 instead of conflict_list[0];
	conflict_list[0] was always 0, but now it isn't initialized.

	* src/table.c (table_grow): When conflict_table grew, the grown
	area wasn't cleared.  Fix this.

	* lib/.cvsignore: Add strdup.c, strdup.h.
	* m4/.cvsignore: Add strdup.m4.

2004-12-07  Paul Eggert  <eggert@cs.ucla.edu>

	* src/lalr.h (GOTO_NUMBER_MAXIMUM): New macro.
	* src/lalr.c (set_goto_map): Don't allow ngotos to equal
	GOTO_NUMBER_MAXIMUM, since we occasionally compute
	ngotos + 1 without checking for overflow.
	(build_relations): Use END_NODE, not -1, to denote end of edges.
	* src/lalr.c (set_goto_map, map_goto, initialize_F, add_loopback_edge,
	build_relations): Use goto_number, not int, for goto numbers.
	* src/tables.c (save_column, default_goto): Likewise.

2004-11-23  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (YYSTYPE): Define it as is done for C, instead
	of #defining from yystype.
	Don't typedef yystype, C++ does not need it.
	This lets it possible to forward declare it as union.

2004-11-23  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (gnulib_modules): Add extensions.
	Problem reported by Jim Meyering.

2004-11-22  Paul Eggert  <eggert@cs.ucla.edu>

	* src/LR0.c, src/closure.c, src/derives.c, src/gram.c,
	src/lalr.c, src/nullable.c, src/relation.c, src/scan-skel.l,
	src/system.h, src/tables.c: XFREE -> free, to accommodate
	recent change to gnulib xalloc.h.
	Problem reported by Jim Meyering.

2004-11-17  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings.

2004-11-17  Akim Demaille  <akim@epita.fr>,
	    Alexandre Duret-Lutz <adl@gnu.org>

	* data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow
	changes.
	(YYCDEBUG): Adjust.
	Use it instead of cdebug_.
	(Parser::debug_stream, Parser::set_debug_stream): New.
	(Parser::symprint_): Define cdebug_ for temporary backward
	compatibility.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use
	debug_stream ().

2004-11-17  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser:print_): Remove, use %printer instead.
	* tests/regression.at (_AT_DATA_DANCER_Y): Adjust.
	* tests/calc.at (_AT_DATA_CALC_Y): Ditto.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise.

2004-10-27  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyloc_default): Remove; not used.
	Problem reported by Frank Heckenbach.

2004-10-25  Akim Demaille  <akim@epita.fr>

	* data/glr.c (YYRHSLOC): Move its definition next to its uses.
	Introduce another definition to address simple location arrays.
	(yyGLRStack): New member: yyerror_range.
	(yyrecoverSyntaxError, yyparse): Update it.
	(yyrecoverSyntaxError): Use it when shifting the error token to
	have an accurate range, equivalent to the one computed by both
	yacc.c and lalr1.cc.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Change its yylex so
	that column numbers start at column 0, as per GNU Coding
	Standards, the others tests, and the doc.
	(_AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_AMBIG_GLR_OUTPUT_WITH_LOC):
	Adjust to the above change (first column is 0).
	And adjust the location of the "<error>", now covering the whole
	line.

2004-10-22  Akim Demaille  <akim@epita.fr>
	and Paul Eggert  <eggert@cs.ucla.edu>

	Remove some arbitrary limits on goto numbers and relations.
	* src/lalr.c (goto_map, ngotos, from_state, to_state): Omit
	initial values, since they're never used.
	(set_goto_map): ngotos is now unsigned, so test for overflow
	by seeing whether it wraps around to zero.
	* src/lalr.h (goto_number): Now size_t, not short int.
	(GOTO_NUMBER_MAXIMUM): Remove.
	* src/relation.c (relation_print, traverse, relation_transpose):
	Check for END_NODE rather than looking at sign.
	* src/relation.h (END_NODE): New macro.
	(relation_node): Now size_t, not short int.

2004-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Language and Grammar): In example, "int" is a
	keyword, not an identifier.  Problem reported by Baron Schwartz in
	<http://lists.gnu.org/archive/html/bug-bison/2004-10/msg00017.html>.

2004-10-11  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_check_alias_consistency): Also check
	type names, destructors, and printers.
	Reported by Alexandre Duret-Lutz.
	Recode the handling of associativity and precedence in terms
	of symbol_precedence_set.
	Accept no redeclaration at all, not even equal to the previous
	value.
	(redeclaration): New.
	Use it to factor redeclaration complaints.
	(symbol_make_alias): Don't set the type of the alias, let
	symbol_check_alias_consistency do it as for other features.
	* src/symtab.h (symbol): Add new member prec_location, and
	type_location.
	* src/symtab.c (symbol_precedence_set, symbol_type_set): Set them.
	* tests/input.at (Incompatible Aliases): New.

2004-10-09  Paul Eggert  <eggert@cs.ucla.edu>

	.cvsignore fixes to accommodate gnulib changes,
	and the practice of naming build directories "_build".
	* .cvsignore: Add "_*".  Sort.
	* lib/.cvsignore: Add getopt_.h, xalloc-die.c.
	* m4/.cvsignore: Add "*_gl.m4".

2004-10-06  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (add_param): Fix the truncation of trailing
	spaces.

2004-10-05  Akim Demaille  <akim@epita.fr>

	In Bison 1.875's yacc.c, YYLLOC_DEFAULT was called regardless
	whether the reducion was empty or not.  This leaves room to
	improve the use of YYLLOC_DEFAULT in such a case.
	lalr1.cc is still experimental, so changing this is acceptable.
	And finally, there are probably not many users who changed the
	handling of locations in GLR, so changing is admissible too.

	* data/glr.c, data/lalr1.cc, data/yacc.c (YYLLOC_DEFAULT): On an
	empty reduction, set @$ to an empty location ending the previously
	stacked symbol.
	Adjust uses to make sure the code is triggered on empty
	reductions.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust the
	expected output: empty reductions have empty locations.

2004-09-29  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Move towards a more standard C++ coding style
	for templates: Class < T > -> Class<T>.

2004-09-29  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Reinstall the former ctor, for sake of
	compatibility, but warn it will be removed.
	Move towards a more standard C++ coding style (i.e., type *var ->
	type* var).

2004-09-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y (add_param): Rewrite to avoid strchr,
	since it's less likely to work if NULs are involved in the future.

2004-09-27  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (YY_LOCATION_PRINT): Fix its default declaration.

2004-09-27  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (b4_parse_param_decl_1): New.
	(b4_parse_param_decl): Use it to have different names between attribute
	and argument names.
	(b4_cc_constructor_call): Likewise.

2004-09-24  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (add_param): Strip the leading and trailing
	blanks from a formal argument declaration.
	(YY_LOCATION_PRINT): New.

2004-09-24  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yysymprint_generate): Move the YYINPUT invocation
	after the location.

2004-09-24  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Table of Symbols): Sort.

2004-09-21  Akim Demaille  <akim@epita.fr>

	* data/yacc.c, data/glr.c (b4_at_dollar, b4_dollar_dollar): Remove
	the useless parentheses.
	Suggested by Paul Eggert.

2004-09-20  Akim Demaille  <akim@epita.fr>

	Let the initial-action act on the look-ahead, and use it for the
	"initial push" (corresponding to an hypothetical beginning-of-file).
	And let lalr1.cc honor %initial-action.

	* doc/bison.texinfo (Initial Action Decl): Clarify, and add an
	example.
	* data/lalr1.cc (Parser::initlocation_): Remove, bad experiment.
	(Parser::Parser): Remove the ctor that used to initialize it.
	(Parser::parse): Like in the other skeletons, issue the "starting
	parse" message before any action.
	Honor %initial-action.
	Initialize the stacks with the lookahead.
	* data/yacc.c: Let $$ and @$ in %initial-action designate the
	look-ahead.
	Push them in the stacks.
	* tests/actions.at, tests/calc.at: Adjust the C++ ctor invocations.

2004-09-20  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Initial Action Decl): New.

2004-09-20  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (YY_LOCATION_PRINT): Use YYLTYPE_IS_TRIVIAL as a
	clearer criterion to define it.
	(parse): Initialize the initial location when YYLTYPE_IS_TRIVIAL.
	When reducing on an empty RHS, use the latest stacked location as
	location.
	yylloc is not always available.
	* data/glr.c: Likewise.
	Also, honor initial-actions.

2004-09-20  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (YY_LOCATION_PRINT): New.
	Define when we know YYLTYPE's structure, i.e., when the default
	YYLLOC_DEFAULT is used.
	* data/c.m4 (b4_yysymprint_generate): Use it.
	* data/lalr1.cc (YYLLOC_DEFAULT): Stop relying on the initial
	value of the result.
	(error_start_): Replace with...
	(error_range_): this location array.
	This allows to replace code relying on the implementation of
	locations by portable code.
	* data/yacc.c (yylerrsp): Replace with...
	(yyerror_range): this.
	Every time a token is popped, update yyerror_range[0], to have an
	accurate location for the error token.
	* data/glr.c (YY_LOCATION_PRINT): New.
	(yyprocessOneStack): Fix an invocation of YY_SYMBOL_PRINT:
	deference a pointer.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): No longer
	report the location in %printers.

	* src/scan-skel.l: Instead of abort, report error messages to ease
	understanding skeleton scanning failures.

2004-09-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Stack::Iterator, Stack::ConstIterator): Rename as...
	(iterator, const_iterator): these, to be more in the C++ spirit.
	Also, return reverse iterators so that when displaying the stack
	we display its bottom first.
	(Parser::stack_print_, Parser::reduce_print_): Match the messages
	from yacc.c.
	We should probably use vector here though.

2004-09-16  Akim Demaille  <akim@epita.fr>

	Have more complete shift traces.

	* data/yacc.c, data/lalr1.c, data/glr.c: Use YY_SYMBOL_PRINT
	to report Shifts instead of ad hoc YYDPRINTF invocations,
	including for the error token.
	* data/lalr1.cc (symprint_): Output the location.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): In C++, don't
	output the location within the %printer.
	Activate GLR tests, at least to make sure they compile properly.
	They still don't pass though.
	* tests/calc.at: Adjust expect verbose output, since now "Entering
	state..." is on a different line than the "Shifting" message.

2004-09-08  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Move the
	Bison directive from the Bison file to the invocation of this
	macro, so that these directives are passed to
	AT_BISON_OPTION_PUSHDEFS to get correct help macros.
	Use these helping macros (e.g., AT_LOC, AT_VAL and so forth).
	Move the AT_SETUP/AT_CLEANUP outside, to report as test title
	the extra Bison directives instead of the whole series.
	Change the grammar so that there are recoverable errors, and
	unrecoverable errors.  Now we can have the parser give up before
	consuming the whole input.  As a result we now can observe that
	the lookahead is freed when needed.
	Change the parser source to parse argv[1] instead of a hard coded
	string.
	Simplify yylex, and give a value and location to EOF.
	Simplify some invocations of AT_CHECK_PRINTER_AND_DESTRUCTOR that
	passed directives already coded in the file.
	Add some tests to check the location of "error".
	For some tests, the C++ parser is correct, and not yacc.c.
	For other tests, they provide different, but unsatisfying, values,
	so keep the C++ value so that at least one parser is "correct"
	according to the test suite.
	(Actions after errors): Remove, this is subsumed by the
	AT_CHECK_PRINTER_AND_DESTRUCTOR series.

2004-09-06  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Adjust the indentation of the labels.
	(Parser::pop): New.
	Use it.

2004-09-06  Akim Demaille  <akim@epita.fr>

	* data/yacc.cc, data/glr.cc (yydestruct): Accept an additional
	argument, an informative message.
	Call YY_SYMBOL_PRINT.
	Adjust all callers: integrate the associated YY_SYMBOL_PRINT.
	* data/lalr1.cc (destruct_): Likewise.
	In addition, no longer depend on b4_yysymprint_generate and
	b4_yydestruct_generate to generate these functions, do it "by
	hand".

2004-09-03  Akim Demaille  <akim@epita.fr>

	* data/glr.c, data/lalr1.cc, data/yacc.c: When YYABORT was
	invoked, yydestruct the lookahead.
	* tests/calc.at (Calculator $1): Update the expected lengths of
	traces: there is an added line for the discarded lookahead.
	* doc/bison.texinfo (Destructor Decl): Some rewording.
	Define "discarded" symbols.

2004-09-02  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (translate_, destruct_): No reason to be static.

2004-09-02  Akim Demaille  <akim@epita.fr>

	* data/glr.c, yacc.c (YYDSYMPRINT): Remove, not used.
	(YYDSYMPRINTF): Rename as...
	(YY_SYMBOL_PRINT): this.
	* data/lalr1.cc (YY_SYMBOL_PRINT): New, modeled after the previous
	two.
	Use it instead of direct symprint_ calls.
	(yybackup): Tweak the "Now at end of input" case to match yacc.c's
	one.

2004-09-02  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (b4_yysymprint_generate): New.
	(symprint_): New member function, defined when YYDEBUG.
	Use it consistently instead of token/nterm debugging output by
	hand.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust
	%printer calls to use cdebug_ when using lalr1.cc.

2004-08-30  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* data/glr.c: Guard the declarations of yypstack and yypdumpstack
	with #ifdef YYDEBUG.

2004-08-26  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Implementing Loops): Rename as...
	(Implementing Gotos/Loops): this.

2004-08-13  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to latest gnulib.
	* bootstrap (gnulib_modules): Add xalloc-die.
	Set LC_ALL=C so that file names sort consistently.
	Prefer the gnulib copies of gettext.m4, glibc21.m4,
	inttypes_h.m4, lib-ld.m4, lib-prefix.m4, po.m4, stdint_h.m4,
	uintmax_t.m4, ulonglong.m4.
	(intl_files_to_remove): Add gettext.m4, lib-ld.m4, lib-prefix.m4,
	po.m4 since we are now using _gl.m4 instead.

2004-08-10  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* src/scan-action.l: Remove. Scanning of semantic actions is
	handled in scan-gram.l.

2004-08-07  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* src/scan-gram.l (handle_syncline): Use uniqstr_new not xstrdup.

	* src/location.h (struct): The file member is a uniqstr.
	(equal_boundaries): Use UNIQSTR_EQ for comparison.

2004-07-22  Paul Eggert  <eggert@cs.ucla.edu>

	Fix bug with non-%union parsers that have printers or destructors,
	which led to a Bison core dump.  Reported by Peter Fales in
	<http://lists.gnu.org/archive/html/bug-bison/2004-07/msg00014.html>.

	* data/c.m4 (b4_symbol_actions): Don't assume %union was used.
	* data/lalr1.cc (yystype) [defined YYSTYPE]: Define to YYSTYPE,
	not to our own type.
	* src/output.c (symbol_destructors_output, symbol_printers_output):
	Don't assume %union.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR,
	AT_CHECK_PRINTER_AND_DESTRUCTOR): New argument
	UNION-FLAG.  All callers changed.
	(_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't assume %union.
	Use type char, not unsigned int, when declaring an array of char;
	this lets us remove a cast.
	(Printers and Destructors): Add non-%union test cases.

2004-06-21  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo: Minor editorial changes, mostly to the new
	GLR writeups.  E.g., avoid frenchspacing and the future tense,
	change "lookahead" to "look-ahead", and change "wrt" to "with
	respect to".

2004-06-21  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* doc/bison.texinfo (Merging GLR Parses, Compiler Requirements):
	New sections, split off from the GLR Parsers section.  Put the new
	Simple GLR Parser near the start of the GLR section, for clarity.
	Rewrite connective text.

2004-06-21  Frank Heckenbach  <frank@g-n-u.de>

	* doc/bison.texinfo (Simple GLR Parsers): New section.

2004-06-21  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS, TODO, doc/bison.texinfo:
	Use "look-ahead" instead of "lookahead", to be consistent.
	* REFERENCES: Fix incorrect reference to DeRemer and Pennello,
	while we're fixing "look-ahead".
	* src/conflicts.c (shift_set): Renamed from shiftset.
	(look_ahead_set): Renamed from lookaheadset.
	* src/print.c: Likewise.
	* src/getargs.c (report_args): Add "look-ahead" as the new canonical
	name for "lookahead".
	(report_types, usage): Likewise.
	* src/getargs.h (report_look_ahead_tokens): Renamed from
	report_lookaheads.
	* src/lalr.c (compute_look_ahead_tokens): Renamed from
	compute_lookaheads.
	(state_look_ahead_tokens_count): Renamed from state_lookaheads_count.
	(look_ahead_tokens_print): Renamed from lookaheads_print.
	* src/state.c (state_rule_look_ahead_tokens_print): Renamed from
	state_rule_lookaheads_print.
	* src/state.h: Likewise.
	(reductions.look_ahead_tokens): Renamed from lookaheads.
	* tests/torture.at (AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR): Renamed from
	AT_DATA_LOOKAHEADS_GRAMMAR.

2004-06-03  Paul Eggert  <eggert@cs.ucla.edu>

	* README: Update location of patched M4 distribution.

2004-05-30  Albert Chin-A-Young  <china@thewrittenword.com>

	Don't assume the C++ compiler takes the same arguments as the C compiler
	(trivial change).
	* configure.ac (O0CXXFLAGS): New var.
	* tests/atlocal.in (CXXFLAGS): Use it.

2004-05-29  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some "make check" problems with C++ reported by
	Albert Chin-A-Young for Tru64 C++ in this thread:
	http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00049.html

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check for std::cerr.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	Output to a .cc file for C++, not to a .c file.
	* tests/calc.at (AT_CHECK_CALC): Likewise.
	* tests/regression.at (AT_CHECK_DANCER): Likewise.
	* tests/local.at (AT_COMPILE_CXX): Default to OUTPUT.cc, not OUTPUT.c.

2004-05-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* tests/calc.at, tests/actions.at: Workaround for SGI
	C++ compiler.  (trivial change)

2004-05-27  Paul Eggert  <eggert@cs.ucla.edu>

	Spent a few hours checking out which prerequisite versions the
	current sources actually require.  I went all the way back to
	Gettext 0.10.40, Automake 1.4, and Autoconf 2.57 and investigated
	a seemingly endless set of combinations of versions more recent
	than that.  The bottom line is that the current sources require
	fairly recent versions of the build tools, and it'll be some work
	to change this.
	* configure.ac (AC_PREREQ): Increase from 2.58 to 2.59.
	(AM_INIT_AUTOMAKE): Increase from 1.7 to 1.8.
	(AM_GNU_GETTEXT_VERSION): Increase from 0.11.5 to 0.12.
	Add comments explaining why those particular versions are
	currently needed.

	* src/parse-gram.y (lloc_default): Rewrite to avoid compiler bug
	in SGI MIPSpro 7.4.1m.  Problem reported by Albert Chin-A-Young in
	<http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00037.html>.

	* configure.ac (AC_PREREQ): Bump to 2.58, since 2.57 doesn't work
	(it fails with a Autoconf-without-aclocal-m4 diagnostic).

2004-05-26  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Lower it from 0.14.1 to
	0.11.5.  Suggested by Bruno Haible.
	* bootstrap: Remove gettext version checking.

	* doc/bison.texinfo (Decl Summary): Also mention that %union
	can depend on prerequisite types.  Problem reported by Tim
	Van Holder.

2004-05-25  Paul Eggert  <eggert@cs.ucla.edu>

	* README: Mention GNU m4 1.4 bugs and Akim's patched version.
	* README-alpha: Don't tell people not to package this.

	* bootstrap: Don't assume $(...) works; use `...` instead.
	Problem reported by Paul Hilfinger.  Also, diagnose non-GNU
	gettext better.

	* doc/bison.texinfo (Decl Summary, Bison Options): Clarify what's
	put into the -d output file, and mention what to do if YYSTYPE is
	defined as a macro.

2004-05-24  Paul Eggert  <eggert@cs.ucla.edu>

	Undo change made earlier today: it caused autopoint to not bring
	in ABOUT-NLS.  Ouch.  Instead, substitute our own diagnostic for
	autopoint's.

	* bootstrap: Check that gettext version matches what's in
	configure.ac.  Warn users to ignore robots.txt ERROR 404.
	* bootstrap: Undo today's earlier change (logged below).
	* configure.ac (AM_GNU_GETTEXT_VERSION): Likewise.

	The gettext version checking is causing more trouble than it's
	curing; remove it.  Problem reported by Paul Hilfinger.

	* bootstrap: Issue a warning that one can expect a message
	'AM_GNU_GETTEXT is used, but not AM_GNU_GETTEXT_VERSION'.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Remove.

2004-05-23  Paul Eggert  <eggert@cs.ucla.edu>

	Ensure that the C++ compiler used for testing actually works on a
	simple test program; if not, skip the C++-related tests.  Problem
	reported by Vin Shelton in:
	http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00026.html

	* m4/cxx.m4: New file.
	* configure.ac (BISON_TEST_FOR_WORKING_CXX_COMPILER): Add.
	* tests/atlocal.in (BISON_CXX_WORKS): Add.
	* tests/local.at (AT_COMPILE_CXX): Use it.

2004-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yylloc): Output this macro even if locations are not
	being generated, as the GLR parser needs it even in that case.
	Problem reported by Troy A. Johnson
	<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=195946>.

	* configure.ac (AC_INIT): Update to 1.875e.

2004-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 1.875d.
	* configure.ac (AC_INIT): Likewise.
	* src/parse-gram.c, src/parse-gram.h: Regenerate with 1.875d.

	* configure.ac (--enable-gcc-warnings): Do not enable -Wshadow,
	-Wmissing-prototypes, or -Wstrict-prototypes for C++.  The current
	lalr1.cc runs afoul of the first, and the last two are no longer
	supported by GCC 3.4.0.
	* README: Mention GNU m4 1.4 or later; mention m4 patches.
	* HACKING: Use ./bootstrap, not "make update" to import foreign files.

2004-05-06  Paul Eggert  <eggert@cs.ucla.edu>

	* src/muscle_tab.c (hash_muscle): Accept and return size_t, not
	unsigned int, for compatibility with latest gnulib hash module.
	* src/state.c (state_hash, state_hasher): Likewise.
	* src/symtab.c (hash_symbol, hash_symbol_hasher): Likewise.
	* src/uniqstr.c (hash_uniqstr): Likewise.

2004-05-03  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Unescaped newlines are no longer allowed in char & strings.

	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER,
	SC_CHARACTER,SC_STRING>): Reject unescaped newlines in
	character and string literals.
	(unexpected_end): New function.
	(unexpected_eof): Use it.
	(unexpected_newline): New function.
	(<INITIAL,SC_AFTER_IDENTIFIER,SC_PRE_CODE>): Coalesce duplicate
	actions.

	* NEWS: Document %expect-rr.

	* bootstrap (--gnulib-srcdir=*, --cvs-user=*):
	Fix typo by replacing $1 with $option.
	Remove more 'intl'-related files.
	Don't DEFUN AM_INTL_SUBDIR twice.

	* lib/.cvsignore: Add strndup.h.  Remove memchr.c, memcmp.c,
	memrchr.c, strcasecmp.c, strchr.c, strrchr.c, strspn.c, strtol.c,
	strtoul.c.
	* m4/.cvsignore: Add exitfail.m4, extensions.m4, gnulib.m4,
	hard-locale.m4, mbstate_t.m4, strerror_r.m4, strndup.m4,
	xstrndup.m4.  Remove glibc21.m4, intdiv0.m4, inttypes-pri.m4,
	inttypes.m4, inttypes_h.m4, isc-posix.m4, lcmessage.m4,
	stdint_h.m4, uintmax_t.m4, ulonglong.m4.
	* src/.cvsignore: Add *.output.

	* src/parse-gram.y: Put copyright notice inside %{ %} so it
	gets copied to the output file.

2004-04-28  Paul Eggert  <eggert@twinsun.com>

	Get files from the gnulib and po repositories, instead of relying
	on them being in our CVS.  Upgrade to latest versions of gnulib
	and Automake.

	* Makefile.am (SUBDIRS): Remove m4; Automake now does m4.
	* bootstrap: Bootstrap from gnulib and po repositories.
	Much of this code was stolen from GNU diff and GNU tar's bootstrap.
	* README-cvs: Document these changes.  Remove version numbers from
	mentions of build tools, since they change so often.  Mention Flex.

	* configure.ac (AC_CONFIG_MACRO_DIR): Add, with m4 as arg.
	(gl_USE_SYSTEM_EXTENSIONS): Add.
	(AC_GNU_SOURCE, AC_AIX, AC_MINIX):
	Remove; no longer needed, as gl_USE_SYSTEM_EXTENSIONS
	does this for us.
	(AC_ISC_POSIX): Remove; we no longer support this
	ancient OS, as it gets in the way of latest Autoconf & gnulib.
	(AC_HEADER_STDC): Remove: we now assume C89 or better.
	(AC_CHECK_HEADERS_ONCE): Use instead of AC_CHECK_HEADERS.
	Do not check for C89 headers, except for locale.h which is used
	by the Yacc library and must port to K&R hosts.
	(AC_CHECK_FUNCS_ONCE): Use instead of AC_CHECK_FUNCS.
	Do not check for C89 functions, except for setlocale which is
	used by the Yacc library.
	(AC_CHECK_DECLS, AC_REPLACE_FUNCS): Remove; no longer needed.
	(gl_DIRNAME, gl_ERROR, gl_FUNC_ALLOCA, gl_FUNC_MEMCHR,
	gl_FUNC_MEMRCHR, gl_FUNC_STPCPY, gl_FUNC_STRNLEN, gl_FUNC_STRTOL,
	gl_GETOPT, gl_HASH, gl_MBSWIDTH, gl_OBSTACK, gl_QUOTE,
	gl_QUOTEARG, gl_XALLOC, jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_MALLOC,
	AM_GNU_GETTEXT): Remove; now done by:
	(GNULIB_AUTOCONF_SNIPPET): Add.  "bootstrap" builds this for us.
	(AC_CONFIG_FILES): Remove m4/Makefile, as Automake now does this
	for us.

	* lib/Makefile.am: Include gnulib.mk, built for us by "bootstrap".
	(BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES):
	Define to empty, as gnulib.mk will do the rest for us.
	($(libbison_a_OBJECTS), stdbool.h): Remove, as gnulib.mk does this
	for us.
	(libbison_a_SOURCES): Define to $(lib_SOURCES) now.
	(lib_SOURCES): New symbol, containing only the non-gnulib libs.

	* src/files.c: Include gnulib's xstrndup.h.

	* src/system.h (MALLOC): Use xnmalloc, for better overflow checking.
	(REALLOC): Use xnrealloc, for likewise.
	(xstrndup, stpcpy): Remove decls, as gnulib does this for us now.
	(strnlen, memrchr): Remove decls; functions no longer used.
	Include <stpcpy.h>.

	* config/depcomp, config/install-sh, lib/alloca.c, lib/argmatch.c,
	lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
	lib/error.c, lib/error.h, lib/getopt.c, lib/getopt.h,
	lib/getopt1.c, lib/gettext.h, lib/hash.c, lib/hash.h,
	lib/malloc.c, lib/mbswidth.c, lib/mbswidth.h, lib/memchr.c,
	lib/memcmp.c, lib/memrchr.c, lib/obstack.c, lib/obstack.h,
	lib/quote.c, lib/quote.h, lib/quotearg.c, lib/quotearg.h,
	lib/realloc.c, lib/stdbool_.h, lib/stpcpy.c, lib/strcasecmp.c,
	lib/strchr.c, lib/strncasecmp.c, lib/strnlen.c, lib/strrchr.c,
	lib/strspn.c, lib/strtol.c, lib/strtoul.c, lib/unlocked-io.h,
	lib/xalloc.h, lib/xmalloc.c, lib/xstrdup.c, lib/xstrndup.c,
	m4/Makefile.am, m4/alloca.m4, m4/dirname.m4, m4/dos.m4,
	m4/error.m4, m4/getopt.m4, m4/hash.m4, m4/malloc.m4,
	m4/mbrtowc.m4, m4/mbswidth.m4, m4/memchr.m4, m4/memcmp.m4,
	m4/memrchr.m4, m4/obstack.m4, m4/onceonly.m4, m4/prereq.m4,
	m4/quote.m4, m4/quotearg.m4, m4/realloc.m4, m4/stdbool.m4,
	m4/stpcpy.m4, m4/strnlen.m4, m4/strtol.m4, m4/strtoul.m4,
	m4/unlocked-io.m4, m4/xalloc.m4, po/LINGUAS, po/Makefile.in.in,
	po/Makevars, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po,
	po/hr.po, po/id.po, po/it.po, po/ja.po, po/ms.po, po/nl.po,
	po/pt_BR.po, po/ro.po, po/ru.po, po/sv.po, po/tr.po:
	Remove, as these files are now generated automatically
	by bootstrap or automake.

	* po/ChangeLog: Remove: all but one entry was a duplicate
	of this file, and I moved that 2000-11-02 entry here.

	* config/.cvsignore: Add Makefile, depcomp, install-sh.
	* lib/.cvsignore: Add alloca.c, alloca.h, alloca_.h, argmatch.c,
	argmatch.h, basename.c, dirname.c, dirname.h, error.c, error.h,
	exit.h, exitfail.c, exitfail.h, getopt.c, getopt.h, getopt1.c,
	getopt_int.h, gettext.h, gnulib.mk, hard-locale.c, hard-locale.h,
	hash.c, hash.h, malloc.c, mbswidth.c, mbswidth.h, memchr.c,
	memcmp.c, memrchr.c, obstack.c, obstack.h, quote.c, quote.h,
	quotearg.c, quotearg.h, realloc.c, stdbool_.h, stpcpy.c, stpcpy.h,
	strcasecmp.c, strchr.c, stripslash.c, strncasecmp.c, strndup.c,
	strnlen.c, strrchr.c, strspn.c, strtol.c, strtoul.c,
	unlocked-io.h, xalloc.h, xmalloc.c, xstrdup.c, xstrndup.c,
	xstrndup.h.
	* m4/.cvsignore: Remove Makefile, Makefile.in.  Add alloca.m4,
	dirname.m4, dos.m4, error.m4, getopt.m4, hash.m4, mbrtowc.m4,
	mbswidth.m4, obstack.m4, onceonly.m4, quote.m4, quotearg.m4,
	stdbool.m4, stpcpy.m4, strnlen.m4, unlocked-io.m4, xalloc.m4.
	* po/.cvsignore: Add *.po, LINGUAS, Makefile.in.in, Makevars.
	* src/.cvsignore: Remove *_.c.


	* Makefile.maint (GZIP_ENV): Don't use --rsyncable if gzip doesn't
	support it.  (The latest stable gzip doesn't.)

2004-04-27  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc (Parser::stos_) [! YYDEBUG]: Define even in this
	case, as stos_ is now used by destructors due to the 2004-02-09
	change.

	Remove more K&R C support.
	* lib/libiberty.y (PARAMS): Remove.  All uses removed.
	* lib/subpipe.c (errno): Remove decl.
	Include <stdlib.h> unconditionally.
	(EXIT_FAILURE): Remove macro.
	* src/complain.c (vfprintf, strerror): Remove.
	* src/system.h: Include limits.h, stdlib.h, string.h, locale.h
	unconditionally.
	(EXIT_FAILURE, EXIT_SUCCESS, setlocale): Remove defns.
	Use latest Autoconf recommendations for including inttypes.h, stdint.h.
	(strchr, strspn, memchr): Remove decls.
	* tests/calc.at (_AT_DATA_CALC_Y): Include stdlib.h, string.h
	unconditionally.  Do not declare perror.
	* tests/conflicts.at (%nonassoc and eof): Include stdlib.h
	unconditionally.

	* src/complain.c (_): Remove useless defn, as system.h defines this.

	* lib/bitset.h (__INT_TO_PTR): Remove; workaround no longer needed
	with latest obstack.h.
	* lib/ebitset.c (ebitset_elt_alloc): Don't bother to cast args
	to procedure types, as obstack.h now does that for us.
	* lib/lbitset.c (lbitset_elt_alloc): Likewise.

	* lib/subpipe.h [HAVE_SYS_TYPES_H]: Include <sys/types.h>,
	so that this include file can stand alone.
	* lib/subpipe.c: Do not include <sys/types.h>, as subpipe.h
	does this now.  Include subpipe.h first after config.h, to
	test whether it can stand alone.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't
	declare yyerror when using lalr.cc, as GCC 3.4.0 warns about the
	unused declaration.

	* tests/synclines.at (%union synch line): Put a dummy member in
	the union, because empty unions aren't allowed in C.  Caught
	by GCC 3.4.0.

2004-04-13  Jim Meyering  <jim@meyering.net>

	* src/conflicts.c (conflicts_print): Correct format string typo:
	use `%%' to produce literal `%'.  (trivial change)

2004-03-30  Paul Eggert  <eggert@twinsun.com>

	* src/getargs.c (version): Update copyright year to 2004.

	* data/c.m4 (b4_int_type): Use 'short int' rather than
	'short', and similarly for 'long', 'unsigned', etc.
	* data/glr.c (YYTRANSLATE, yyconfl, yySymbol, yyItemNum,
	yygetLRActions, yyprocessOneStack, yyrecoverSyntaxError,
	yy_yypstack, yydumpstack): Likewise.
	* data/lalr1.cc (user_token_number_max_, user_token_number_max_,
	translate_, seq_, [], pop, Slice, range_, operator+, operator+=):
	Likewise.
	* data/yacc.c (b4_int_type, yyss, YYSTACK_BYTES, yysigned_char,
	yy_stack_print, yyparse): Likewise.
	* doc/bison.texinfo (Prologue, Multiple Types): Likewise.
	* lib/bbitset.h (bitset_word, BITSET_WORD_BITS): Likewise.
	* lib/bitset.c (bitset_print): Likewise.
	* lib/bitset_stats.c (bitste_log_histogram_print): Likewise.
	* lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
	* lib/bitsetv.c (bitsetv_dump): Likewise.
	* lib/ebitset.c (EBITSET_ELT_BITS, ebitset_elt_alloc): Likewise.
	* lib/lbitset.c (LBITSET_ELT_BITS, lbitset_elt_alloc, debug_lbitset):
	Likewise.
	* src/LR0.c (allocate_itemsets): Likewise.
	* src/gram.h (rule_number, rule): Likewise.
	* src/lalr.h (goto_number): Likewise.
	* src/nullable.c (nullable_compute): Likewise.
	* src/output.c (prepare_rules): Likewise.
	* src/relation.c (relation_print, relation_digraph): Likewise.
	* src/relation.h (relation_node): Likewise.
	* src/state.h (state_number, transitions, errs, reductions,
	struct state): Likewise.
	* src/symtab.h (symbol_number, struct symbol): Likewise.
	* src/tables.c (vector_number, tally, action_number,
	default_goto, goto_actions): Likewise.
	* tests/existing.at (GNU Cim Grammar): Likewise.
	* tests/regression.at (Web2c Actions): Likewise.

	* src/output.c (muscle_insert_short_int_table): Renamed from
	muscle_insert_short_table.  All uses changed.

2004-03-25  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* src/parse-gram.y: Define PERCENT_EXPECT_RR.
	(declaration): Replace expected_conflicts with expected_sr_conflicts.
	Add %expect-rr rule.

	* src/scan-gram.l: Recognize %expect-rr.

	* src/conflicts.h (expected_sr_conflicts): Rename from
	expected_conflicts.
	(expected_rr_conflicts): Declare.

	* src/conflicts.c (expected_sr_conflicts): Rename from
	expected_conflicts.
	(expected_rr_conflicts): Define.
	(conflicts_print): Check r/r conflicts against expected_rr_conflicts
	for GLR parsers.
	Use expected_sr_conflicts in place of expected_conflicts.
	Warn if expected_rr_conflicts used in non-GLR parser.

	* doc/bison.texinfo: Add documentation for %expect-rr.

2004-03-08  Paul Eggert  <eggert@gnu.org>

	Add support for hex token numbers.  Suggested by Odd Arild Olsen in
	<http://lists.gnu.org/archive/html/bison-patches/2004-03/msg00000.html>.

	* NEWS: Document hexadecimal tokens, no NUL bytes, %destructor
	in lalr1.cc.
	* doc/bison.texinfo (Token Decl): Add hexadecimal token numbers.
	* src/scan-gram.l (scan_integer): New function.
	({int}): Use it.
	(0[xX][0-9abcdefABCDEF]+): New pattern, to support hex numbers.
	(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>, \\x[0-9abcdefABCDEF]+,
	handle_action_dollar, handle_action_at, convert_ucn_to_byte):
	Say "long int", not "long", for uniformity with GNU style.

2004-02-25  Paul Eggert  <eggert@twinsun.com>

	* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Ignore stdout from
	compilers.  This fixes a problem with Intel's C++ compiler being
	chatty, reported by Guido Trentalancia in
	<http://lists.gnu.org/archive/html/bug-bison/2004-02/msg00030.html>.

2004-02-09  Alexandre Duret-Lutz  <adl@gnu.org>

	Support %destructor and merge error locations in lalr1.cc.

	* data/lalr1.cc (b4_cxx_destruct_def): New macro.
	(Parser::stos_): Define unconditionally.
	(Parser::destruct_): New method.  Generate its body with
	b4_yydestruct_generate.
	(Parser::error_start_): New attribute.
	(Parser::parse) <yyerrlab, yyerrlab1>: Call destruct_ on erroneous
	token which are discarded.
	(Parser::parse) <yyerrlab, yyerrorlab, yyerrlab1>: Update
	error_start_ when erroneous token are discarded.
	(Parser::parse) <yyerrlab1>: Compute the location of the error
	token so that it covers all the discarded tokens.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust so
	it can be called with `%skeleton "lalr1.cc"', and do that.

2004-02-02  Paul Eggert  <eggert@twinsun.com>

	* src/Makefile.am (AM_CPPFLAGS): New macro.  It mentions
	$(top_srcdir)/lib and ../lib.  This fixes a bug reported
	by Paul Hilfinger; the old INCLUDES value didn't mention ../lib.
	There's no need to mention top_builddir since Automake does that
	for us.
	(INCLUDES): Remove, as Automake says it's obsolescent.
	Contents migrated into AM_CPPFLAGS as described above.
	* lib/Makefile.am (INCLUDES): Remove; obsolescent.

2004-01-14  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* data/glr.c (yytokenName): Bullet-proof against YYEMPTY token.
	(yyreportSyntaxError): Handle case where lookahead token is
	YYEMPTY.

2004-01-13  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c: Put casts on uses of YYREALLOC and YYMALLOC so that
	resulting parsers are compilable with C++.

2003-12-23  Paul Eggert  <eggert@twinsun.com>

	* config/depcomp, config/install-sh: Sync with Automake 1.8.
	* src/output.c (output_skeleton): Rename local var.
	* tests/input.at (Torturing the Scanner): Don't use \x0 or \0 in
	Bison tokens, as this runs afoul of the 2003-10-07 change that
	disallowed NUL bytes in character constants or string literals.

	* tests/local.at: Require Autoconf 2.59's Autotest.
	* tests/testsuite.at: Don't include local.at, since we now assume
	Autoconf 2.59 or later.  Autoconf 2.59 had some problems with
	including it.
	* tests/Makefile.am ($(TESTSUITE)): Remove warning about ignoring
	multiple inclusion warnings.

2003-12-02  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (How Can I Reset the Parser): More about start
	conditions.
	From Bruno Haible.

2003-11-18  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/bison.texinfo (Bison Options): Escape `@' in `$@'.

2003-10-07  Paul Eggert  <eggert@twinsun.com>

	* tests/Makefile.am (clean-local): Don't run 'testsuite --clean'
	if testsuite doesn't exist.

	* doc/bison.texinfo (Symbols): NUL bytes are not allowed in string
	literals, unfortunately.
	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>):
	Complain about NUL bytes in character constants or string literals.

2003-10-05  Paul Eggert  <eggert@twinsun.com>

	* NEWS: Don't document %no-default-prec, as it's still
	too experimental.
	* doc/bison.texinfo: Document %no-default-prec only if
	the defaultprec flag is set.  Normally it's not.

2003-10-04  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (b4_rhs_value, b4_rhs_location): Yield a
	non-modifiable lvalue, instead of a modifiable one.
	* doc/bison.texinfo (Actions): Document that $$ can
	be assigned to.  Do not claim that $$ and $N are
	array element references: user code should not rely on this.

2003-10-01  Paul Eggert  <eggert@twinsun.com>

	* src/parse-gram.h (PERCENT_NO_DEFAULT_PREC): New token.
	(grammar_declaration): Use it.
	* src/scan-gram.l: New token %no-default-prec.
	* tests/conflicts.at: Revamp tests to use %no-default-prec.
	* NEWS, doc/bison.texinfo: Document the above.

2003-10-01  Akim Demaille  <akim@epita.fr>

	VCG no longer supports long_straight_phase.

	* src/vcg.c, src/vcg.h: Remove the handling of long_straight_phase.
	* src/print_graph.c (print_graph): Adjust.

2003-09-30  Frank Heckenbach  <frank@g-n-u.de>
	and Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Decl Summary, Contextual Precedence,
	Table of Symbols): Document %default-prec.
	* src/parse-gram.y (PERCENT_DEFAULT_PREC): New token.
	(grammar_declaration): Set default_prec on %default-prec.
	* src/scan-gram.l (%default-prec): New token.
	* src/reader.h (default_prec): New flag.
	* src/reader.c: Likewise.
	(packgram): Handle it.
	* tests/conflicts.at (%default-prec without %prec,
	%default-prec with %prec, %default-prec 1): New tests.

2003-09-30  Paul Eggert  <eggert@twinsun.com>

	* tests/testsuite.at: Include local.at, not input.at, fixing
	a typo in the 2003-08-25 patch.

2003-08-27  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yyparse) [__GNUC__]: "Use" yyerrorlab to pacify
	GCC warnings.

2003-08-26  Akim Demaille  <akim@epita.fr>

	* config/announce-gen (print_changelog_deltas): Neutralize "<#" as
	"<\#" to avoid magic from Gnus when posting parts of this script.

2003-08-26  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::report_syntax_error_): New, extracted from
	(Parser::parse): here.
	Adjust: nerrs and errstatus is now replaced by...
	(Parser::nerrs_, Parser::errstatus_): New.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* config/announce-gen, Makefile.cfg: New.
	* Makefile.am: Adjust.
	* GNUmakefile, Makefile.maint: Update from CVS Autoconf, but
	keeping local WGET and WGETFLAGS modifications from Paul Eggert.

2003-08-25  Akim Demaille  <akim@epita.fr>

	When reducing initial empty rules, Bison parser read an initial
	location that is not defined.  This results in garbage, and that
	affects Bison's own parser.  Therefore we need (i) to extend Bison
	to support a means to initialize this location, and (ii) to use
	this CVS Bison to fix CVS Bison's parser.

	* src/reader.h, reader.c (epilogue_augment): Remove, replace
	with...
	* src/muscle_tab.h, src/muscle_tab.c (muscle_code_grow): this.
	* src/parse-gram.y: Adjust.
	(%initial-action): New.
	(%error-verbose): Since we require CVS Bison, there is no reason
	not to use it.
	* src/scan-gram.l: Adjust.
	* src/Makefile.am (YACC): New, to make sure we use our own parser.
	* data/yacc.c (yyparse): Use b4_initial_action.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Don't promote stdout for error messages.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::reduce_print_): Remove unused yyi.
	From Alexandre Duret-Lutz.

2003-08-25  Akim Demaille  <akim@epita.fr>

	Version 1.875c.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::stack_print_, YY_STACK_PRINT): New.
	Use them.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::reduce_print_): New.
	Use it.

2003-08-25  Akim Demaille  <akim@epita.fr>

	Have lalr1.cc catch with Paul Eggert's patch to fix the infinite
	error recovery loops.  This patch is based on
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00000.html>.
	Also, augment the similarity between lalr1.cc and yacc.c.
	Note: the locations of error recovery rules are not correct yet.

	* data/lalr1.cc: Comment changes to augment the similarity between
	lalr1.cc and yacc.c.
	(YYERROR): Goto to yyerrorlab, not yyerrlab1.
	(yyerrlab1): Remove, but where it used to be (now the bottom part of
	yyerrlab), when hitting EOF, pop the whole stack here instead of
	merely falling through the default error handling mechanism.
	(yyerrorlab): New label, with the old contents of YYERROR,
	plus the following change: pop the stack of rhs corresponding
	to the production that invoked YYERROR.  That is how Yacc
	behaves (required by POSIX).
	* tests/calc.at (AT_CHECK_CALC_LALR1_CC): No longer expected to
	fail.

2003-08-25  Akim Demaille  <akim@epita.fr>

	Tune local.at so that people can "autom4te -l autotest calc.at -o
	calc" for instance, to extract a sub test suite.

	* tests/testsuite.at: Move the initialization, Autotest version
	requirement, and AT_TESTED invocation into...
	* tests/local.at: here.
	* tests/testsuite.at: Include it for compatibility with Autoconf
	2.57.
	* tests/Makefile.am ($(TESTSUITE)): Report that the warning should
	be ignore.

2003-08-04  Paul Eggert  <eggert@twinsun.com>

	Rework code slightly to avoid gcc -Wtraditional warnings.
	* data/glr.c (yyuserMerge): Return void, not YYSTYPE.
	The returned value is now stored in *YY0.  All callers changed.
	* src/output.c (merge_output): Adjust to the above change.

2003-07-26  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (YYASSERT): New macro.
	(yyfillin, yydoAction, yyglrReduce, yysplitStack,
	yyresolveStates, yyprocessOneStack):
	Use `YYASSERT (FOO);' rather than `if (! (FOO)) abort ();'.
	Derived from a suggestion by Frank Heckenbach.

2003-07-25  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yyglrReduce): Don't use C89 string concatenation,
	for portability to K&R C (after ansi2knr, presumably).  See
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00041.html>
	by Frank Heckenbach, though I have omitted the structure-initialization
	part of his glr-knr.diff patch since I recall that the Portable
	C Compiler didn't require that change.

	Let the user specify how to allocate and free memory.
	Derived from a suggestion by Frank Heckenbach in
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00041.html>.
	* data/glr.c (YYFREE, YYMALLOC, YYREALLOC): New macros.
	All uses of free, malloc, realloc changed to use these macros,
	and unnecessary casts removed.
	* data/yacc.c (YYFREE, YYMALLOC): Likewise.

2003-07-06  Matthias Mann  <MatthiasMann@gmx.de>

	* data/lalr1.cc (operator<<(std::ostream&, const Position&)):
	use s.empty() rather than s == "" to test for empty string; see
	<http://lists.gnu.org/archive/html/bison-patches/2003-07/msg00003.html>
	(trivial change)

2003-06-25  Akim Demaille  <akim@epita.fr>

	* config/depcomp, config/install-sh: Update from masters.

2003-06-20  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (YYLLOC_DEFAULT): Parenthesize arguments as needed,
	and return properly parenthesized result.
	* data/lalar1.cc (YYLLOC_DEFAULT): Likewise.
	* data/yacc.c (YYLLOC_DEFAULT): Likewise.
	Remove unnecessary parentheses from uses.
	* doc/bison.texinfo (Location Default Action): Describe the
	conventions for parentheses.

2003-06-19  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yyremoveDeletes, yy_reduce_print, yyglrReduce,
	yyreportTree): Do not assume that size_t is the same width as int,
	when printing sizes.  Print sizes using an unsigned format.
	Problem reported by Frank Heckenbach in
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00035.html>.

	Port to Forte Developer 7 C compiler.
	* data/glr.c (struct YYLTYPE): If locations are not being used,
	declare a single dummy member, as empty structs do not conform
	to the C standard.
	(YYERROR, YYBACKUP): Do not use "do { ...; return foo; } while (0)";
	the Forte Developer 7 C compiler complains that end-of-loop
	code is not reached.

2003-06-17  Paul Eggert  <eggert@twinsun.com>

	* lib/libiberty.h (PARAMS): Spell argument as Args, not as X, to
	avoid warnings from picky compilers about redefinition of PARAMS.

2003-06-17  Paul Eggert  <eggert@twinsun.com>

	Version 1.875b.

	* NEWS: Document 1.875b.

	* lib/bbitset.h: Do not include config.h; that's the includer's job.
	Do not include <sys/types.h>; shouldn't be needed on a C89 host.
	* lib/bitset.h (bitset_compatible_p): Indent as per GNU standard.
	Don't use 'index' in comments, as it's a builtin fn on some hosts.
	* lib/bitset_stats.c: Include gettext.h unconditionally, as
	per recent gettext manual's suggestion.
	* lib/ebitset.c (ebitset_resize, ebitset_unused_clear):
	Use prototypes, not old-style definitions.
	* lib/lbitset.c (lbitset_unused_clear): Likewise.
	* lib/vbitset.c (vbitset_resize, vbitset_ones, vbitset_zero,
	vbitset_empty_p, vbitset_copy1, vbitset_not, vbitset_equal_p,
	vbitset_subset_p, vbitset_disjoint_p, vbitset_and, vbitset_and_cmp,
	vbitset_andn, vbitset_andn_cmp, vbitset_or, vbitset_or_cmp,
	vbitset_xor, vbitset_xor_cmp, vbitset_and_or, vbitset_and_or_cmp,
	vbitset_andn_or, vbitset_andn_or_cmp, vbitset_or_and,
	vbitset_or_and_cmp, vbitset_copy): Likewise.

	* lib/libiberty.h: Do not include config.h; that's the includer's job.
	Do not include <stdlib.h>.
	(PARAMS): Define unconditionally for C89.
	(ATTRIBUTE_NORETURN): Remove.
	(ATTRIBUTE_UNUSED): Define unconditionally.

	Upgrade to 2003-06-08 libbitset, submitted by Michael Hayes in:
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00005.html>
	* lib/Makefile.am (bitsets_sources): Add vbitset.c, vbitset.h.
	* lib/vbitset.c, lib/vbitset.h: New files.
	* lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
	lib/bitset_stats.c, lib/ebitset.c, lib/lbitset.c: Import
	from libbitset.

	* doc/bison.texinfo (How Can I Reset the Parser): Renamed from
	`How Can I Reset @code{yyparse}', since texinfo does not allow
	arbitrary @ in node names.

	* m4/Makefile.am (EXTRA_DIST): Add the following files, which
	shouldn't be needed according to the gettext 0.12.1 documentation
	but which seem to be needed anyway: codeset.m4 glibc21.m4
	intdiv0.m4 inttypes-pri.m4 inttypes.m4 inttypes_h.m4 isc-posix.m4
	lcmessage.m4 nls.m4 po.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4.
	* po/Makefile.in.in: Upgrade to gettext 0.12.1 version.

	* lib/.cvsignore: Add stdbool.h.
	* m4/.cvsignore: Add nls.m4, po.m4.

	Upgrade to CVS gnulib.
	* stdbool_.h: File renamed from stdbool.h.in.
	* configure.ac (AM_STDBOOL_H): Invoke this instead of
	AC_HEADER_STDBOOL.
	(AM_GNU_GETTEXT): Put brackets around args, as latest manual suggests.
	(AM_GNU_GETTEXT_VERSION): Update to 0.12.1.
	* lib/Makefile.am (EXTRA_DIST): Add stdbool_.h.
	(MOSTLYCLEANFILES): New var.
	($(libbison_a_OBJECTS)): Depend on $(STDBOOL_H).
	(stdbool.h): New rule.
	* lib/dirname.c, lib/dirname.h, lib/hash.c, lib/hash.h,
	lib/malloc.c, lib/obstack.h, lib/quote.c, lib/realloc.c,
	lib/strcasecmp.c, lib/xalloc.h, m4/alloca.m4, m4/onceonly.m4,
	m4/quote.m4: Upgrade to today's gnulib.

	* tests/calc.at (AT_CHECK_CALC): New option EXPECTED-TO-FAIL.
	(AT_CHECK_CALC_LALR1_CC): Use it, since the C++ LALR parser fails
	the tests right now.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Ensure yylex and
	yyerror are declared before use; C99 requires this.

2003-06-09  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c (YYERROR): Update definition to reset yyerrState to 0
	first.
	(yyrecoverSyntaxError): Correct the logic for setting and testing
	yyerrState.
	Correct comment on handling EOF.
	Allow states with only a default reduction, rather than failing
	(I can't quite reconstruct why these were not allowed before).

	Fixes to avoid problem that $-N rules in GLR parsers can cause
	buffer overruns, corrupting state.

	* src/output.c (prepare_rules): Output max_left_semantic_context
	definition.
	* src/reader.h (max_left_semantic_context): New variable declaration.
	* src/scan-gram.l (max_left_semantic_context): Define.
	(handle_action_dollar): Update max_left_semantic_context.
	* data/glr.c (YYMAXLEFT): New definition.
	(yydoAction): Increase size of yyrhsVals by YYMAXLEFT.
	(yyresolveAction): Ditto.

	Fixes to problems with location handling in GLR parsers reported by
	Frank Heckenbach (2003/06/05).

	* data/glr.c (YYLTYPE): Make trivial if locations not used.
	(YYRHSLOC): Add parentheses, and define only if locations used.
	(YYLLOC_DEFAULT): Add parentheses, and give trivial definition if
	locations not used.
	(yyuserAction): Use YYLLOC_DEFAULT to set *yylocp.
	(yydoAction): Remove redundant initialization of *yyvalp and *yylocp.

	* tests/cxx-type.at: Exercise location information; update tests
	to differentiate output with and without locations.
	Remove forward declarations of yylex and yyerror---caused errors
	because default YYLTYPE not yet defined.
	Change semantic actions to compute strings, rather than printing
	them directly (to test proper passing of semantics values).  Change
	output to prefix notation and update test data and expected results.
	(yylex): Track locations.
	(stmtMerge): Return value rather than printing, and include arguments
	in value.

2003-06-03  Paul Eggert  <eggert@twinsun.com>

	Avoid warnings generated by GCC 2.95.4 when Bison is
	configured with --enable-gcc-warnings.
	* data/lalr1.cc (yy::]b4_parser_class_name[::parse,
	yy::]b4_parser_class_name[::translate_,
	yy::Stack::operator[] (unsigned),
	yy::Stack::operator[] (unsigned) const,
	yy::Slice::operator[] (unsigned),
	yy::Slice::operator[] (unsigned) const):
	Rename local vars to avoid warnings.
	* tests/glr-regression.at (Improper handling of embedded actions
	and $-N in GLR parsers): Remove unused local variable from yylex.
	* tests/regression.at (_AT_DATA_DANCER_Y): Declare yylex to take
	(void) as arg when not pure, since we now assume C89 when building
	Bison.  Pacify GCC by using parameter.

2003-06-02  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc (yy::Position::lines, yy::Position::columns,
	yy::Location::lines, yy::Location::columns): Rename arguments
	to avoid shadowing; this removes a warning generated by GCC 3.3.

2003-06-01  Paul Eggert  <eggert@twinsun.com>

	Don't pass C-only warning optins (e.g., -Wmissing-declarations)
	to g++, as GCC 3.3 complains if you do it.
	* configure.ac (WARNING_CXXFLAGS): New subst.  Set it to
	everything that WARNING_CFLAGS has, except omit warnings
	not suitable for C++.
	(AC_PROG_CXX): Use this instead of AC_CHECK_PROGS([CXX], [g++]).
	* tests/atlocal.in (CXXFLAGS): New var.
	* tests/local.at (AT_COMPILE_CXX): Use it instead of CFLAGS.

	Fix a GLR parser bug I reported in February; see
	<http://lists.gnu.org/archive/html/bison-patches/2003-02/msg00008.html>.
	The problem was that GLR parsers did not conform to the C standard,
	because actions like { $1 = $2 + $3; } expanded to expressions
	that invoked YYFILL in separate subexpressions, and YYFILL assigned
	to a local variable.  The C standard says that expressions
	like (var = f ()) + (var = f ()) have undefined behavior.
	Another problem was that GCC sometimes issues warnings that
	yyfill and its parameters are unused.

	* data/glr.c (yyfillin): Renamed from the old yyfill.  Mark
	as possibly unused.
	(yyfill): New function.
	(YYFILL): Use it.
	(yyuserAction): Change type of yynormal to bool, so that it matches
	the new yyfill signature.  Mark it as possibly unused.


	Follow up on a bug I reported in February, where a Bison-generated
	parser can loop.  Provide a test case and a fix for yacc.c.  I
	don't have a fix for lalr1.cc or for glr.c, unfortunately.
	The original bug report is in:
	<http://lists.gnu.org/archive/html/bison-patches/2003-02/msg00044.html>

	* data/yacc.c (YYERROR): Now just 'goto yyerrorlab', since the
	macro's size was becoming unwieldy.
	(yyerrlab): Do not discard an empty lookahead symbol, as this
	might destroy garbage.
	(yyerrorlab): New label, with the old contents of YYERROR,
	plus the following change: pop the stack of rhs corresponding
	to the production that invoked YYERROR.  That is how Yacc
	behaves, and POSIX requires this behavior.
	(yyerrlab1): Use YYPOPSTACK instead of its definiens.
	* tests/calc.at (_AT_DATA_CALC_Y): Include unistd.h if available.
	Define 'alarm' to do nothing if unistd.h is not available.
	Add a new rule "exp: '-' error;" to test the above change to
	data/yacc.c.  Use 'alarm' to abort any test taking longer than
	10 seconds, as it's probably looping.
	(AT_CHECK_CALC): Test recovery from error in new grammar rule.
	Also, the new yacc.c generates two fewer diagnostics for an
	existing test.

2003-05-24  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (YYSTACKEXPANDABLE): Do not evaluate
	YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined.
	This fixes a problem reported by John Bowman when the Compaq/HP
	Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM
	-ansi -Wall -gall).
	* data/yacc.c (union yyalloc): Likewise.
	(YYCOPY): Do not evaluate __GNUC__ unless it is defined.

	Switch from 'int' to 'bool' where that makes sense.

	* lib/abitset.c (abitset_test, abitset_empty_p, abitset_equal_p,
	abitset_subset_p, abitset_disjoint_p, abitset_and_cmp,
	abitset_andn_cmp, abitset_or_cmp, abitset_xor_cmp, abitset_and_or,
	abitset_and_or_cmp, abitset_andn_or_cmp, abitset_or_and_cmp):
	Return or accept bool, not int.  All callers changed.
	* lib/bbitset.h: (bitset_toggle_, bitset_copy_, bitset_and_or_cmp_,
	bitset_andn_or_cmp_, bitset_or_and_cmp_): Likewise.
	* lib/bitset.c (bitset_only_set_p, bitset_print, bitset_toggle_,
	bitset_copy_, bitset_op4_cmp, bitset_and_or_cmp_, bitset_andn_or_cmp_,
	bitset_or_and_cmp_): Likewise.
	* lib/bitset.h (bitset_test, bitset_only_set_p): Likewise.
	* lib/bitset_stats.c (bitset_stats_print, bitset_stats_toggle,
	bitset_stats_test, bitset_stats_empty_p, bitset_stats_disjoint_p,
	bitset_stats_equal_p, bitset_stats_subset_p, bitset_stats_and_cmp,
	bitset_stats_andn_cmp, bitset_stats_or_cmp, bitset_stats_xor_cmp,
	bitset_stats_and_or_cmp, bitset_stats_andn_or_cmp,
	bitset_stats_or_and_cmp): Likewise.
	* lib/ebitset.c (ebitset_elt_zero_p, ebitset_equal_p, ebitset_copy_cmp,
	ebitset_test, ebitset_empty_p, ebitset_subset_p, ebitset_disjoint_p,
	ebitset_op3_cmp, ebitset_and_cmp, ebitset_andn_cmp, ebitset_or_cmp,
	ebitset_xor_cmp): Likewise.
	* lib/lbitset.c (lbitset_elt_zero_p, lbitset_equal_p, lbitset_copy_cmp,
	lbitset_test, lbitset_empty_p, lbitset_subset_p, lbitset_disjoint_p,
	lbitset_op3_cmp, lbitset_and_cmp, lbitset_andn_cmp, lbitset_or_cmp,
	lbitset_xor_cmp): Likewise.
	* lib/bbitset.h: Include <stdbool.h>.
	(struct bitset_vtable): The following members now return bool, not
	int: toggle, test, empty_p, disjoint_p, equal_p, subset_p,
	and_cmp, andn_cmp, or_cmp, xor_cmp, and_or_cmp, andn_or_cmp,
	or_and_cmp).
	* src/conflicts.c (count_rr_conflicts): Likewise.
	* lib/bitset_stats.h (bitset_stats_enabled): Now bool, not int.
	All uses changed.
	* lib/ebitset.c (ebitset_obstack_init): Likewise.
	* lib/lbitset.c (lbitset_obstack_init): Likewise.
	* src/getargs.c (debug_flag, defines_flag, locations_flag,
	no_lines_flag, no_parser_flag, token_table_flag, yacc_flag,
	graph_flag): Likewise.
	* src/getargs.h (debug_flag, defines_flag, locations_flag,
	no_lines_flag, no_parser_flag, token_table_flag, yacc_flag,
	graph_flag): Likewise.
	* src/output.c (error_verbose): Likewise.
	* src/output.h (error_verbose): Likewise.
	* src/reader.c (start_flag, typed): Likewise.
	* src/reader.h (typed): Likewise.
	* src/getargs.c (LOCATIONS_OPTION): New constant.
	(long_options, getargs): Use it.
	* src/lalr.c (build_relations): Use bool, not int.
	* src/nullable.c (nullable_compute): Likewise.
	* src/print.c (print_reductions): Likewise.
	* src/tables.c (action_row, pack_vector): Likewise.
	* src/muscle_tab.h (MUSCLE_INSERT_BOOL): New macro.
	* src/output.c (prepare): Use it.
	* src/output.c (token_definitions_output,
	symbol_destructors_output, symbol_destructors_output): Use string,
	not boolean integer, to keep track of whether to output separator.
	* src/print_graph.c (print_core): Likewise.
	* src/state.c (state_rule_lookaheads_print): Likewise.

	* config/install-sh: Sync from automake 1.7.5.

2003-05-14  Paul Eggert  <eggert@twinsun.com>

	* src/parse-gram.y (rules_or_grammar_declaration): Require a
	semicolon after a grammar declaration, in the interest of possible
	future changes to the Bison input language.
	Do not allow a stray semicolon at the start of the grammar.
	(rhses.1): Allow one or more semicolons after any rule, including
	just before "|" as required by POSIX.
	* tests/input.at (Torturing the Scanner): Add tests for ";|" in a
	grammar.

2003-05-14  Alexandre Duret-Lutz  <adl@gnu.org>

	%parse-param support for lalr1.cc.

	* data/lalr1.cc (b4_parse_param_decl, b4_parse_param_cons,
	b4_cc_constructor_calls, b4_cc_constructor_call,
	b4_parse_param_vars, b4_cc_var_decls, b4_cc_var_decl): New m4
	definitions.
	(yy::b4_parser_class_name::b4_parser_class_name): Take extra
	parse-param arguments.
	(yy::b4_parser_class_name): Declare instance variables to
	hold parse-param arguments.
	* tests/calc.at: s/value/semantic_value/ because value clashes
	with a member of yy::b4_parser_class_name.  Adjust C++ code
	to handle %parse-param.  Enable %parse-param test in C++.

2003-05-12  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (How Can I Reset @code{yyparse}): Reword the
	English a bit.  Fix fclose typo.  Change "const char" to "char
	const", and use ANSI C rather than K&R for "main".  Suggest
	YY_FLUSH_BUFFER over yyrestart (as that is what Flex recommends)
	and suggest yy_switch_to_buffer.

2003-05-05  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset.h (__INT_TO_PTR): Define to a value that presumes
	C89.  This avoids a diagnostic on compilers that define __STDC__
	to 0, fixing a problem with Tru64 cc reported by Martin Mokrejs in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.

2003-05-03  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset.h (BITSET_FOR_EACH, BITSET_FOR_EACH_REVERSE):
	Do not overrun array bounds.
	This should fix a bug reported today by Olatunji Oluwabukunmi in
	<http://lists.gnu.org/archive/html/bug-bison/2003-05/msg00004.html>.

2003-04-29  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (pure_parser, glr_parser): Move to...
	* src/getargs.c, src/getargs.h: here, as bool, not int.
	(nondeterministic_parser): New.
	* src/parse-gram.y, src/scan-gram.l: Support
	%nondeterministic-parser.
	* src/output.c (prepare): Use nondeterministic_parser instead
	of glr_parser where appropriate.
	* src/tables.c (conflict_row, action_row, save_row)
	(token_actions, token_actions, pack_vector): Ditto.

2003-04-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (C++ Parsers, Implementing Loops): New.

2003-04-29  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Also test yacc.c and glr.c (but not lalr1.cc yet)
	with %pure-parser and %locations to exercise the patch from Yakov
	Markovitch below.

2003-04-28  Tim Van Holder <tim.van.holder@pandora.be>

	* data/yacc.c: (b4_lex_param): Corrected for the case where
	%lex-param is provided and %pure-parser isn't.

2003-04-27  Paul Eggert  <eggert@twinsun.com>

	Avoid gcc -Wundef warnings reported by Gerald Pfeifer in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00044.html>.
	* data/yacc.c (YYSTACK_ALLOC): Don't evaluate YYSTACK_USE_ALLOCA
	if it is not defined.
	(YYMAXDEPTH): Don't evaluate YYMAXDEPTH if it is not defined.

2003-04-26  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc (yy::Parser::pact_ninf_, yy::Parser::table_ninf_):
	Declare to be of type suitable for the ninf value itself, not of
	type suitable for the corresponding table, since the latter might
	be unsigned but the ninf value might be negative.  This fixes a
	bug reported by Alexandre Duret-Lutz in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00017.html>.

	* configure.ac (AC_FUNC_ERROR_AT_LINE): Remove, since gl_ERROR
	invokes it.  We shouldn't invoke it twice because it will attempt
	to put error.o in the archive twice.  This fixes a glitch reported
	by Martin Mokrejs in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.

2003-04-21  Paul Eggert  <eggert@twinsun.com>

	* m4/error.m4: Update from Bruno Haible's 2003-04-14 patch
	to gnulib.

2003-04-21  Yakov Markovitch <Markovitch@iso.ru>

	* data/glr.c (yyexpandGLRStack) [!YYSTACKEXPANDABLE]:
	Fix obvious typo that results in uncompilable GLR parsers
	when both %pure-parser and %locations are used.  (trivial change)

2003-04-17  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l: Add %option nounput, since we no longer use unput.
	(unexpected_eof): Renamed from unexpected_end_of_file, for brevity.
	Do not insert the expected token via unput, as this runs afoul
	of a POSIX-compatibility bug in flex 2.5.31.
	All uses changed to BEGIN the parent state,
	since we no longer insert the expected token via unput.
	* tests/regression.at (Invalid inputs): Remove cascaded diagnostic
	that is no longer emitted after the above change.

	* src/conflicts.c (set_conflicts): Resolve all conflicts, not just
	the first one.  This change is from Paul Hilfinger, and it fixes
	regression reported by Werner Lemberg in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.

	(resolve_sr_conflict): Don't invoke state_errs_set
	unless one or more tokens have been explicitly made errors.
	Otherwise, the above change causes Bison to abort.

	* tests/existing.at (GNU pic Grammar): New test case, taken from
	Lemberg's email.

2003-03-31  Akim Demaille  <akim@epita.fr>

	* doc/Makefile.am (AM_MAKEINFOFLAGS): Don't split the info file.

2003-03-31  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare_symbols): Avoid trailing spaces in the
	output.

2003-03-31  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Strings are Destroyed): s/losses/loses/.
	From Paul Hilfinger.

2003-03-29  Akim Demaille  <akim@epita.fr>

	* m4/error.m4: Do not put under dynamic conditions some code which
	expansion is under static control.

2003-03-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (How Can I Reset @code{yyparse}): New.

2003-03-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Strings are Destroyed): New.

2003-03-13  Paul Eggert  <eggert@twinsun.com>

	* .cvsignore: Add configure.lineno.
	* src/.cvsignore: Add yacc.
	* tests/.cvsignore: Add testsuite.log.
	* doc/fdl.texi: Sync with latest FSF version.

2003-03-12  Paul Eggert  <eggert@twinsun.com>

	* scan-gram.l (YY_USER_INIT): Initialize code_start, too.
	(<INITIAL><<EOF>>, <SC_PRE_CODE><<EOF>>): Set *loc to the scanner
	cursor, instead of leaving it undefined.  This fixes a bug
	reported by Tim Van Holder in
	<http://lists.gnu.org/archive/html/bug-bison/2003-03/msg00023.html>.
	* tests/input.at (Torturing the Scanner): Test the scanner on
	an empty input file, which was Tim Van Holder's test case.

	* m4/timevar.m4 (BISON_PREREQ_TIMEVAR): When checking whether
	<sys/resource.h> can be included, include sys/time.h and
	sys/times.h first, if available.  This works around the SunOS
	4.1.4 porting bug reported by Bruce Becker in
	<http://lists.gnu.org/archive/html/bug-bison/2003-03/msg00018.html>.

	* m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't
	AC_CHECK_HEADERS([sys/wait.h]), as this interferes with
	AC_HEADER_SYS_WAIT.

	Merge changes from gnulib.  This was prompted because the CVS
	snapshot didn't build on Solaris 7 due to strnlen problems.

	These changes need to be merged back into gnulib:
	* lib/hash.c: Include <stdbool.h> unconditionally.
	* m4/onceonly.m4 (m4_quote): New macro.
	(AC_CHECK_HEADERS_ONCE, AC_CHECK_FUNCS_ONCE, AC_CHECK_DECLS_ONCE):
	Quote AC_FOREACH variable-expansions properly.
	The 2003-01-03 obstack.h change also needs merging.
	{end of changes requiring merging}

	* lib/stdbool.h.in, m4/alloca.m4, m4/dirname.m4, m4/dos.m4,
	m4/getopt.m4, m4/hash.m4, m4/malloc.m4, m4/memchr.m4,
	m4/memrchr.m4, m4/obstack.m4, m4/onceonly.m4, m4/quote.m4,
	m4/quotearg.m4, m4/realloc.m4, m4/stpcpy.m4, m4/strnlen.m4,
	m4/strtol.m4, m4/strtoul.m4, m4/unlocked-io.m4, m4/xalloc.m4:
	New files, imported from gnulib.
	* m4/Makefile.am (EXTRA_DIST): Add the new m4/*.m4 files mentioned
	above.

	* lib/mbswidth.c, m4/error.m4, m4/mbrtowc.m4, m4/mbswidth.m4,
	m4/memcmp.m4, m4/prereq.m4, m4/stdbool.m4: Update to current
	gnulib sources.

	* configure.ac (gl_DIRNAME, gl_GETOPT, gl_HASH, gl_QUOTE, gl_XALLOC):
	Add.
	(gl_ERROR): New, replacing jm_PREREQ_ERROR.
	(gl_FUNC_ALLOCA): New, replacing AC_FUNC_ALLOCA.
	(gl_FUNC_STPCPY): New, replacing AC_REPLACE_FUNCS(stpcpy).
	(gl_FUNC_STRNLEN): New, replacing AC_FUNC_STRNLEN.
	(gl_MBSWIDTH): New, replacing jm_PREREQ_MBSWIDTH.
	(gl_OBSTACK): New, replacing AC_FUNC_OBSTACK.
	(gl_QUOTEARG): New, replacing jm_PREREQ_QUOTEARG.
	(jm_FUNC_GLIBC_UNLOCKED_IO, gl_FUNC_STPCPY, gl_FUNC_STRTOL): New.
	(jm_FUNC_MALLOC): New, replacing AC_FUNC_MALLOC.
	(jm_FUNC_REALLOC): New, replacing AC_FUNC_REALLOC.
	(jm_PREREQ_ARGMATCH): Remove.
	(AC_REPLACE_FUNCS): Remove memchr, memrchr, stpcpy, strtol, strtoul.
	* lib/Makefile.am (libbison_a_SOURCES): Add argmatch.c, argmatch.h.

	* src/system.h: Include <stdbool.h> unconditionally.

	* lib/bbitset.h: Include <limits.h> unconditionally.  We have been
	assuming at least C89 in the bitset code for some time now.

2003-03-03  Akim Demaille  <akim@epita.fr>

	* ro.po: New.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Table of Symbols): Reactivate the
	documentation for %lex-param, and %parse-param.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* data/yacc.c, data/glr.c, data/lal1.cc: Use similar code to
	generate verbose error messages.
	Use the number of tokens as an upper bound in yytname, as it
	cannot be a non terminal.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (_AT_DATA_DANCER_Y): Fix the expected error
	message.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (_AT_DATA_DANCER_Y, AT_CHECK_DANCER): New.
	Use them to exercise yycheck overrun.
	Based on Andrew Suffield's grammar.

2003-03-02  Akim Demaille  <akim@epita.fr>

	Create tests/local.at for Bison generic testing macros.

	* tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Move to...
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	This new file.
	* tests/calc.at (AT_CHECK_CALC): Adjust.
	* tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR)
	(AT_COMPILE, AT_COMPILE_CXX, AT_PARSER_CHECK): Move to...
	* tests/local.at: here.
	(AT_COMPILE_CXX): Tags the tests using it as c++.
	Ignore the test if CXX is not functional.

2003-03-01  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (code_start): Initialize it to scanner_cursor,
	not loc->end, since loc->end might contain garbage and this leads
	to undefined behavior on some platforms.
	(id_loc, token_start): Use (IF_LINTed) initial values that do not
	depend on *loc, so that the reader doesn't give the the false
	impression that *loc is initialized.
	(<INITIAL>"%%"): Do not bother setting code_start, since its value
	does not survive the return.

2003-03-01  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (code_start): Always initialize it when entering
	into yylex, as SC_EPILOGUE is activated *before* the corresponding
	yylex invocation.  An alternative would be making it static, but
	then it starts with the second %%'s beginning, instead of its end.

2003-02-28  Paul Eggert  <eggert@twinsun.com>

	* lib/mbswidth.c: Include <wchar.h> before "mbswidth.h", to work
	around a UnixWare 7.1.1 porting bug reported by John Hughes in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00030.html>.

2003-02-26  Paul Eggert  <eggert@twinsun.com>

	* README: Mention compiler bug in Sun Forte Developer 6 update 2.
	Remove Sequent/Pyramid discussion (nobody uses them any more).
	Merge VMS and MS-DOS discussion; these ports may well be dead
	but let's keep mentioning them for now.  Put <> around email
	addresses.  Add copyright notice.

2003-02-24  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yy_reduce_print): yylineno -> yylno,
	to avoid collision with flex use of yylineno.
	Problem reported by Bruce Lilly in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00016.html>.
	* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Likewise.
	* data/yacc.c (yy_reduce_print): Likewise.

	* config/depcomp: Sync with Automake 1.7.3.

2003-02-21  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Use temporary variables instead of casts to
	change integer types.
	Suggested by Paul Eggert.

2003-02-21  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Use "location" consistently to refer to @n,
	to avoid confusions with lalr1.cc's notion of Position.
	Suggested by Paul Eggert.

2003-02-20  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (position.hh): Make sure "columns" never pushes
	before initial_columns.
	(location.hh): Use consistent variable names when defining the
	operator<<.
	Use "last" so that we subtract from Positions, not from unsigned.

2003-02-20  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (position.hh): New subfile, including the extended
	and Doxygen'ed documentation of class Position.
	(location.hh): Use it.
	Document a` la Doxygen.
	With the help of Benoit Perrot.

2003-02-20  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Define
	AT_YACC_IF.
	Redefine AT_YYERROR_SEES_LOC_IF using it.
	(_AT_DATA_CALC_Y): Don't declare yyerror when lalr1.cc, as it is
	not defined.
	Don't use the location in yy::Parser::error_ and
	yy::Parser::print_ when not %locations.
	Activate more lalr1.cc tests.

2003-02-19  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: When displaying a line number, be sure to make it
	an int.

2003-02-19  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (b4_stack_depth_init, yy::Parser::initdepth_):
	Remove, useless.
	(YYABORT, YYACCEPT, YYERROR): New.
	* tests/calc.at: Renable the lalr1.cc test.

2003-02-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (AT_CHECK_CALC): Check different scenarios of
	error recovery, mixing with/without pops and discarding of the
	lookahead.
	Exercise YYERROR.
	Disable the lalr1.cc tests as currently it doesn't support YYERROR.

2003-02-17  Paul Eggert  <eggert@twinsun.com>

	* tests/atlocal.in (LDFLAGS, LIBS): New vars.
	* tests/testsuite.at (AT_COMPILE): Use them.
	This fixes the testsuite problem reported by Robert Lentz in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00011.html>.

2003-02-12  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyerrlab) [YYERROR_VERBOSE]:
	Avoid subscript error in yycheck.  Bug reported by Andrew Suffield in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00003.html>.
	* data/glr.c (yyreportSyntaxError) [YYERROR_VERBOSE]: Likewise.
	Check for malloc failure, for consistency with yacc.c.
	(yytname_size): Remove, for consistency with yacc.c.

	The bug still remains in data/lalr1.cc, as I didn't have time
	to fix it there.

2003-02-06  Akim Demaille  <akim@epita.fr>

	* configure.ac (GXX): Rename as...
	(CXX): this, to keep the original Autoconf semantics.
	Require 2.57.
	* data/lalr1.cc: Fix b4_copyright invocations.
	If YYDEBUG is not defined, don't depend upon name_ being defined.
	(location.hh): Include string and iostream.
	(Position::filename): New member.
	(Position::Position ()): New.
	(operator<< (Position)): New.
	(operator- (Position, int)): New.
	(Location::first, Location::last): Rename as...
	(Location::begin, Location::end): these, to mock the conventional
	iterator names.
	(operator<< (Location)): New.
	* tests/atlocal.in (CXX): New.
	* tests/testsuite.at (AT_COMPILE_CXX): New.
	* tests/calc.at (_AT_DATA_CALC_Y): Adjust yyerror to report the
	locations in a more synthetic way.
	(AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF is positive if
	lalr1.cc is used.
	Adjust the C locations to match those from Emacs: first column is
	column 0.
	Change all the expected results.
	Conform to the GCS: simplify the locations when applicable.
	(LOC, VAL, YYLLOC_FORMAL, YYLLOC_ARG, USE_YYLLOC, LEX_FORMALS)
	(LEX_ARGS, USE_LEX_ARGS, LEX_PRE_FORMALS, LEX_PRE_ARGS): Replace
	these CPP macros with the m4 macros new defined by...
	(AT_CHECK_PUSHDEFS): this, i.e.:
	(AT_LALR1_CC_IF, AT_PURE_LEX_IF, AT_LOC, AT_VAL, AT_LEX_FORMALS)
	(AT_LEX_ARGS, AT_USE_LEX_ARGS, AT_LEX_PRE_FORMALS, AT_LEX_PRE_ARGS)
	New macros.
	(AT_CHECK_POPDEFS): Undefine them.
	(AT_CHECK_CALC_LALR1_CC): New.
	Use it for the first lalr1.cc test.

2003-02-04  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (YYLLOC_DEFAULT): Fix its definition: be based on
	Location as is defined.

2003-02-04  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: If YYDEBUG is not defined, don't depend upon
	name_ being defined.

2003-02-03  Paul Eggert  <eggert@twinsun.com>

	* src/gram.h (start_symbol): Remove unused decl.

	Use more-consistent naming conventions for local vars.

	* src/derives.c (derives_compute): Change type of local var from
	int to rule_number.
	* src/gram.c (grammar_rules_partial_print): Likewise.
	* src/print.c (print_core): Likewise.
	* src/reduce.c (reduce_grammar_tables): Likewise.

	* src/gram.c (grammar_dump): Change name of item_number *
	local var from r to rp.
	* src/nullable.c (nullable_compute): Likewise.

	* src/gram.h (ISTOKEN, ISVAR): Use i, not s, for int var.

	* src/gram.h (symbol_number_as_item_number): Use sym, not s,
	for symbol or symbol_number var.
	* src/reader.c (grammar_start_symbol_set): Likewise.
	* src/reader.h (grammar_start_symbol_set, grammar_symbol_append):
	Likewise.
	* src/state.c (transitions_to): Likewise.
	* src/state.h: Likewise.
	* src/tables.c (symbol_number_to_vector_number): Likewise.

	* src/muscle_tab.h (MUSCLE_OBSTACK_SGROW): Use p, not s, for
	char * var.

	* src/parse-gram.y (lloc_default): Use loc, not r, for YYLTYPE
	var.

	* src/scan-gram.l (no_cr_read): Use bytes_read, not s, for size
	var.

	* src/system.h (xstrndup, strchr, strspn, strnlen, memchr, memrchr):
	Use str, not s, for char * var.  Use ch, not c, for character var.
	Use size for size var.

	* src/uniqstr.c (uniqstr_new, uniqstr_assert): Use str, not s, for
	char * var.
	(uniqstr_print, uniqst_print_processor): Use ustr, not s, for
	uniqstr var.
	* src/uniqstr.h: Likewise.

	* src/vcg.c (get_color_str, get_textmode_str, get_shape_str,
	get_layoutalgorithm_str, get_decision_str, get_orientation_str,
	get_node_alignment_str, get_arrow_mode_str, get_crossing_type_str,
	get_view_str, get_linestyle_str, get_arrowstyle_str): Rename
	param to have same name as that of enum, so that we don't use
	"s" to stand for a non-state.

2003-02-02  Akim Demaille  <akim@epita.fr>

	* src/scan-skel.l: Scan more than one inert character per yylex
	invocation.

2003-02-01  Paul Eggert  <eggert@twinsun.com>

	Version 1.875a.

	* po/LINGUAS: Add ms.

2003-01-30  Akim Demaille  <akim@epita.fr>

	* doc/Makefile.am (CLEANFILES): Add bison.fns for distcheck.

2003-01-29  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* tests/cxx-type.at: Correct apparent typo in Bison input: $$ instead
	of $1.

	Changes in response to error report by S. Eken: GLR mode does not
	handle negative $ indices or $ indices in embedded rules correctly.
	See <http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00076.html>.

	* data/glr.c (b4_rhs_value): Change to use YYFILL macro.
	(b4_rhs_location): Ditto.
	(yyfill): New function to copy from stack tree into array
	incrementally.
	(yyuserAction): Modify to allow incremental move of semantic values
	to rhs array when in GLR mode.
	Define YYFILL to use in user-defined actions to fill semantic array
	as needed.
	Remove dummy use of yystack, as there is now a guaranteed use.
	(yydoAction): Modify to allow incremental move of semantic values
	to rhs array when in GLR mode.
	(yyresolveAction): Ditto.
	(yyglrShiftDefer): Update comment.
	(yyresolveStates): Use X == NULL for pointers, not !X.
	(yyglrReduce): Ditto.
	(yydoAction): Ditto

	* tests/glr-regr1.at: Rename to ...
	* tests/glr-regression.at: Add new regression test for the problems
	described above (adapted from S. Eken).
	Update copyright notice.
	* tests/testsuite.at: Rename glr-regr1.at to glr-regression.at.
	* tests/Makefile.am: Ditto.

2003-01-28  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc: Do not use @output_header_name@ unless
	b4_defines_flag is set.  This fixes two bugs reported by
	Tim Van Holder in
	<http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00071.html>
	and <http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00073.html>.

2003-01-21  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (YYERROR): Move code from yyerrlab1 to here, so that
	we don't need to worry about yyerrlab1 being reported as an
	"unused label" by non-GCC C compilers.  The downside is that if
	locations are used then a couple of statements are duplicated each
	time YYERROR is invoked, but the upside is that the warnings
	should vanish.
	(yyerrlab1): Move code to YERROR.
	(yyerrlab2): Remove.  Change uses back to yyerrlab1.
	This reverts some of the 2002-12-27 change.

2003-01-17  Paul Eggert  <eggert@twinsun.com>

	* src/output.c (symbol_printers_output): Fix typo that led
	to core dump.  Problem reported by Antonio Rus in
	<http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00058.html>.

2003-01-13  Akim Demaille  <akim@epita.fr>,
		Quoc Peyrot <chojin@lrde.epita.fr>,
		Robert Anisko <anisko_r@lrde.epita.fr>

	* data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop
	when the stacks contain one element, as the loop would otherwise
	free the last state, and then use the top state (the one we just
	popped).  This means that the initial elements will not be freed
	explicitly, as is the case in yacc.c; it is not a problem, as
	these elements have fake values.

2003-01-11  Paul Eggert  <eggert@twinsun.com>

	* NEWS: %expect-violations are now just warnings, reverting
	to Bison 1.30 and 1.75 behavior.  This fixes the GCC 3.2
	bootstrapping problem reported by Matthias Klose; see
	<http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00053.html>.
	* src/conflicts.c (conflicts_print): Likewise.
	* tests/conflicts.at (%expect not enough, %expect too much,
	%expect with reduce conflicts): Likewise.
	* doc/bison.texinfo (Expect Decl): Document this.  Also mention
	that the warning is enabled if the number of conflicts changes
	(not necessarily increases).

	* src/getargs.c (version): Update copyright year.

2003-01-09  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am, lib/Makefile.am: Use $(VAR) instead of @VAR@.

2003-01-08  Paul Eggert  <eggert@twinsun.com>

	* Makefile.maint (WGETFLAGS):
	New macro, containing "-C off" to disable proxy caches.
	All uses of $(WGET) changed to $(WGET) $(WGETFLAGS).
	(rel-check): Use $(WGET) instead of wget.

2003-01-06  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Generalized LR Parsing): Add a reference to
	the GLR paper of Scott, Johnstone and Hussain.

2003-01-04  Paul Eggert  <eggert@twinsun.com>

	* configure.ac (AC_ARG_ENABLE): Add --disable-yacc.
	(YACC_SCRIPT, YACC_LIBRARY): New vars to AC_SUBST.
	* lib/Makefile.am (lib_LIBRARIES): liby.a -> @YACC_LIBRARY@.
	(EXTRA_LIBRARIES): New var, for liby.a.
	* src/Makefile.am (bin_SCRIPTS): yacc -> @YACC_SCRIPT@.
	(EXTRA_SCRIPTS): New var, for yacc.

	* data/yacc.c (yyerrlab1): Omit attribute if __cplusplus is defined,
	since GNU C++ (as of 3.2.1) does not allow attributes on labels.
	Problem reported by Nelson H. F. Beebe.

2003-01-03  Paul Eggert  <eggert@twinsun.com>

	* lib/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to
	(void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
	when compiling Bison 1.875's `bitset bset = obstack_alloc
	(bobstack, bytes);'.  Problem reported by Nelson H. F. Beebe.

	* src/scan-skel.l (QPUTS): Omit redundant `;' from macro definition.
	([^@\n]): Renamed from [^@\n]+ so that the token buffer does not
	grow to a huge size with typical invocation.

	* lib/hash.c (_Bool, bool, false, true, __bool_true_false_are_defined):
	Use the pattern recommended by Autoconf 2.57, except also protect
	against double-definition.
	* src/system.h: Likewise.
	Portability issues reported by Nelson H. F. Beebe.

	* data/glr.c (yybool): Renamed from bool, to avoid collisions in C.
	All uses changed.  Provide a definition in both C and C++.
	(yytrue, yyfalse): Define even if defined (__cplusplus).

	* lib/bitset_stats.c (bitset_stats_list): Remove unused var.
	Reported by Nelson H. F. Beebe.

	* src/scan-skel.l ("@oline@"): Output lineno+1, not lineno.

2003-01-02  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyerrlab1): Append `;' after attribute, to
	pacify the buggy "smart preprocessor" in MacOS 10.2.3.
	Bug reported by Nelson H. F. Beebe.

2003-01-01  Paul Eggert  <eggert@twinsun.com>

	* Version 1.875.

2002-12-30  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (<INITIAL,SC_AFTER_IDENTIFIER,SC_PRE_CODE>","):
	Moved here from...
	(<INITIAL>","): Here.  This causes stray "," to be treated
	more uniformly.

	* src/scan-gram.l (<SC_BRACED_CODE>"}"): Output ";" before the
	last brace in braced code when not in Yacc mode, for compatibility
	with Bison 1.35.  This resurrects the 2001-12-15 patch to
	src/reader.c.

	* src/reader.h (YYDECL): Use YYSTYPE, not its deprecated alias
	yystype.  This follows up the 2002-12-24 YYSTYPE bug fix.

2002-12-28  Paul Eggert  <eggert@twinsun.com>

	* src/symtab.c (symbol_make_alias): Set type of SYMVAL to be
	that of SYM's type.  This fixes Debian bug 168069, reported by
	Thomas Olsson.

2002-12-28  Paul Eggert  <eggert@twinsun.com>

	Version 1.75f.

	Switch back to the Yacc style of conflict reports, undoing some
	of the 2002-07-30 change.
	* doc/bison.texinfo (Understanding): Use Yacc style for
	conflict reports.  Also, use new way of locating rules.
	* src/conflicts.c (conflict_report):
	Renamed from conflict_report_yacc, removing the old
	'conflict_report'.  Translate the entire conflict report at once,
	so that we don't assume that "," has the same interpretation in
	all languages.
	(conflicts_output): Use Yacc-style conflict report for each state,
	instead of our more-complicated style.
	(conflicts_print): Use Yacc-style conflict report, except print
	the input file name when not emulating Yacc.
	* tests/conflicts.at (Unresolved SR Conflicts, Defaulted
	Conflicted Reduction, %expect not enough, %expect too much,
	%expect with reduce conflicts): Switch to Yacc-style conflict reports.
	* tests/existing.at (GNU Cim Grammar): Likewise.
	* tests/glr-regr1.at (Badly Collapsed GLR States): Likewise.

	* src/complain.c (warn_at, warn, complain_at, complain, fatal_at,
	fatal): Don't invoke fflush; it's not needed and it might even be
	harmful for stdout, as stdout might not be open.
	* src/reduce.c (reduce_print): Likewise.

2002-12-27  Paul Eggert  <eggert@twinsun.com>

	Fix a bug where error locations were not being recorded correctly.
	This problem was originally reported by Paul Hilfinger in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00086.html>.

	* data/yacc.c (yyparse): New local var yylerrsp, to record the
	top of the location stack's error locations.
	(yyerrlab): Set it.  When discarding a token, push its location
	onto yylerrsp so that we don't lose track of the error's end.
	(yyerrlab1): Now is only the target of YYERROR, so that we can
	properly record the location of the action that failed.  For GCC
	2.93 and later, insert an __attribute__ ((__unused__)) to avoid
	GCC warning about yyerrlab1 being unused if YYERROR is unused.
	(yyerrlab2): New label, which yyerrlab now falls through to.
	Compute the error's location by applying YYLLOC_DEFAULT to
	the locations of all the symbols that went into the error.
	* doc/bison.texinfo (Location Default Action): Mention that
	YYLLOC_DEFAULT is also invoked for syntax errors.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	Error locations include the locations of all the tokens that were
	discarded, not just the last token.

2002-12-26  Paul Eggert  <eggert@twinsun.com>

	* src/files.c: Include quote.h.
	(compute_output_file_names): Warn if we detect conflicting
	outputs to the same file.  This should catch the misunderstanding
	exemplified by Debian Bug 165349, reported by Bruce Stephens..

	* src/conflicts.c (conflicts_print): If the user specifies
	"%expect N", report an error if there are any reduce/reduce
	conflicts.  This is what the manual says should happen.
	This fixes Debian bug 130890, reported by Anthony DeRobertis.
	* tests/conflicts.at (%expect with reduce conflicts): New test.

	Don't use m4_include on relative file names, as it doesn't work as
	desired if there happens to be a file with that name under ".".

	* m4sugar/version.m4: Remove; it was included but it wasn't used.
	* data/Makefile.am (dist_m4sugar_DATA): Remove m4sugar/version.m4.
	* data/m4sugar/m4sugar.m4: Don't include m4sugar/version.m4.
	* data/glr.c, data/lalr1.cc, data/yacc.c: Don't include c.m4.
	* src/output.c (output_skeleton): Use full path names when
	specifying a file to include; don't rely on include path, as
	it's unreliable when the working file contains a file with
	that name.

2002-12-25  Paul Eggert  <eggert@twinsun.com>

	Remove obsolete references to bison.simple and bison.hairy.
	Problem mentioned by Aubin Mahe in
	<http://lists.gnu.org/archive/html/help-bison/2002-12/msg00010.html>.
	* data/glr.c: Comment fix.
	* doc/bison.1: Remove references.  Also, mention "yacc".

	* src/getargs.c (getargs) [MSDOS]: Don't assume optarg != NULL
	with -g option.

	* src/parse-gram.y (declaration): Use enum "report_states" rather
	than its numeric value 1.

	* src/scan-skel.l ("@output ".*\n): Close any old yyout before
	opening a new one.  This fixes Debian bug 165349, reported by
	Bruce Stephens.

2002-12-24  Paul Eggert  <eggert@twinsun.com>

	Version 1.75e.

	* Makefile.maint (cvs-update): Don't assume that the shell
	supports $(...), as Solaris sh doesn't.

	* src/parse-gram.y (lloc_default): Remove test for empty
	nonterminals at the end, since it didn't change the result.

2002-12-24  Paul Eggert  <eggert@twinsun.com>

	If the user does not define YYSTYPE as a macro, Bison now declares it
	using typedef instead of defining it as a macro.  POSIX requires this.
	For consistency, YYLTYPE is also declared instead of defined.

	%union directives can now have a tag before the `{', e.g., the
	directive `%union foo {...}' now generates the C code
	`typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility.
	The default union tag is `YYSTYPE', for compatibility with Solaris 9
	Yacc.  For consistency, YYLTYPE's struct tag is now `YYLTYPE'
	instead of `yyltype'.

	`yystype' and `yyltype' are now obsolescent macros instead of being
	typedefs or tags; they are no longer documented and will be
	withdrawn in a future release.

	* data/glr.c (b4_location_type): Remove.
	(YYSTYPE): Renamed from yystype.
	(YYSTYPE_IS_DECLARED): New macro, used to prevent double-typedef.
	(struct YYLTYPE): Renamed from struct yyltype.
	(YYLTYPE): Renamed from yyltype.
	(yyltype, yystype): New (and obsolescent) macros,
	for backward compatibility.
	* data/yacc.c: Likewise.

	* data/yacc.c (YYSTYPE): Declare as union YYSTYPE if the user
	does not specify a union tag.  This is for compatibility with
	Solaris 9 yacc.

	* src/parse-gram.y (add_param): 2nd arg is now char * not char
	const *, since it is now modified by stripping surrounding { }.
	(current_braced_code): Remove.
	(PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_UNION,
	PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Change names to include
	trailing " {...}".  Now of type <chars>.
	(grammar_declaration): Adjust to bundled tokens.
	(code_content): Remove; stripping is now done by add_param.
	(print_token_value): Print contents of bundled tokens.
	(token_name): New function.

	* src/reader.h (braced_code, current_braced_code): Remove.
	(token_name): New decl.

	* src/scan-gram.l (handle_dollar, handle_at): Now takes int
	token_type, not braced_code code_kind.  All uses changed.
	(SC_PRE_CODE): New state, for scanning after a keyword that
	has (or usually has) an immediately-following braced code.
	(token_type): New local var, to keep track of which token type
	to return when scanning braced code.
	(<INITIAL>"%destructor", <INITIAL>"%lex-param",
	<INITIAL>"%parse-param", <INITIAL>"%printer",
	<INITIAL>"%union"): Set token type and BEGIN SC_PRE_CODE
	instead of returning a token type immediately.
	(<INITIAL>"{"): Set token type.
	(<SC_BRACED_CODE>"}"): Use it.
	(handle_action_dollar, handle_action_at): Now returns bool
	indicating success.  Fail if ! current_rule; this prevents a core dump.
	(handle_symbol_code_dollar, handle_symbol_code_at):
	Remove; merge body into caller.
	(handle_dollar, handle_at): Complain in invalid contexts.

	* NEWS, doc/bison.texinfo: Document the above.
	* NEWS: Fix years and program names in copyright notice.

2002-12-17  Paul Eggert  <eggert@twinsun.com>

	* NEWS, doc/bison.texinfo (Parser Function, Pure Calling, Error
	Reporting, Table of Symbols): Omit mentions of %lex-param and
	%parse-param from the documentation for now.

2002-12-15  Paul Eggert  <eggert@twinsun.com>

	Undo most of the 2002-11-12 yychar -> yytoken patch, as it broke
	GCC 3.2.1 (which depends on yychar == YYEMPTY when there is no
	lookahead symbol, and which sets yychar in parser actions) and it
	disagreed with the Bison documentation.  Bug
	reported by Andrew Walrond.

	* data/yacc.c (YYTRANSLATE): Don't check for negative argument,
	as the caller now does that.
	(yyclearin, YYBACKUP, yyparse): Use yychar, not yytoken.
	(YYEMPTY): Parenthesize right hand side, since others use it.
	(yyparse): Don't assume that our generated code is the only code
	that sets yychar.

2002-12-13  Paul Eggert  <eggert@twinsun.com>

	Version 1.75d.

	POSIX requires a "yacc" command.
	* src/Makefile.am (bin_SCRIPTS): New macro, for yacc.
	(MOSTLYCLEANFILES): Add yacc.
	(yacc): New rule.
	* doc/bison.texinfo (Invocation, Bison Options): Mention yacc
	as an alias for bison y.

	* po/LINGUAS: Add da.

	* src/getargs.c (__GNU_LIBRARY__) [lint]: Define to work around
	problem with latest <getopt.h>.
	(HACK_FOR___GNU_LIBRARY___PROTOTYPE): New macro.

	* doc/fdl.texi: Upgrade to 1.2.
	* lib/alloca.c, lib/error.c, lib/getopt.c, lib/getopt.h
	lib/getopt1.c, lib/gettext.h, lib/memrchr.c, lib/obstack.c,
	lib/obstack.h, lib/strnlen.c, lib/unlocked-io.h: Sync with
	gnulib.
	* config/install-sh: Sync with autotools.

	Fix a bad interaction with flex 2.5.23 reported by Bruce Lilly in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00114.html>.
	* data/yacc.c (YYLTYPE, struct yyltype): Do not define unless
	locations are requested.
	(union yyalloc): Do not depend on YYLTYPE_IS_TRIVIAL unless
	locations are requested.

2002-12-12  Paul Eggert  <eggert@twinsun.com>

	Remove unportable casts and storage allocation tricks.
	While we're at it, remove almost all casts, since they
	usually aren't needed and are a sign of trouble.

	* configure.ac (AC_CHECK_TYPES): Check for uintptr_t.

	* src/derives.c (derives_compute): Do not subtract NTOKENS from
	the pointer DSET returned by malloc; this isn't portable.
	Instead, always use DSET[i - NTOKENS] rather than DSET[i].
	Similarly for DERIVES.
	* src/lalr.c (set_goto_map): Likewise, for GOTO_MAP and TEMP_MAP.
	* src/nullable.c (nullable_compute): Likewise, for RSETS and NULLABLE.
	* src/reduce.c (reduce_grammar_tables): Likewise, for nontermmap

	* src/derives.c (derives_compute): Do not bother invoking
	int_of_rule_number, since rule numbers are integers.

	* src/files.c (concat2, tr, compute_base_name): Use xmalloc (N)
	rather than XMALLOC (char, N).

	* src/files.c (filename_split): Rewrite to avoid cast.

	* src/gram.h (symbol_number_as_item_number,
	item_number_as_symbol_number, rule_number_as_item_number,
	item_number_as_rule_number):
	Now inline functions rather than macros, to avoid casts.
	* src/state.h (state_number_as_int): Likewise.
	* src/tables.c (state_number_to_vector_number,
	symbol_number_to_vector_number): Likewise.

	* src/gram.h (int_of_rule_number): Remove; no longer used.

	* src/lalr.c (add_lookback_edge): Use malloc rather than calloc,
	since the resulting storage is always stored into.

	* src/main.c (alloca) [C_ALLOCA]: Add decl here, the only place
	where it's needed.

	* src/muscle_tab.c (muscle_m4_output):
	Now inline.  Return bool, not int.
	* src/state.c (state_compare): Likewise.
	* src/symtab.c (symbol_check_defined,
	symbol_check_alias_consistency, symbol_pack, symbol_translation,
	hash_compare_symbol, hash_symbol):
	Likewise.
	* src/uniqstr.c (uniqstr_print): Likewise.
	* src/muscle_tab.c (muscle_m4_output_processor):
	New function, to avoid casts.
	* src/state.c (state_comparator, stage_hasher): Likewise.
	* src/symtab.c (symbol_check_defined_processor,
	symbol_check_alias_consistency_processor, symbol_pack_processor,
	symbol_translation_processor, hash_symbol_comparator,
	hash_symbol_hasher): Likewise.
	* src/uniqstr.c (uniqstr_print_processor): Likewise.
	* src/muscle_tab.c (muscles_m4_output):
	Use new functions instead of casting old functions unportably.
	* src/state.c (state_hash_new): Likewise.
	* src/symtab.c (symbols_new, symbols_do, symbols_check_defined,
	symbols_token_translations_init):
	Likewise.
	* src/uniqstr.c (uniqstrs_new, hash_initialize, uniqstrs_do): Likewise.

	* src/output.c (GENERATE_MUSCLE_INSERT_TABLE): Use long local
	var instead of casting to long, to avoid casts.
	(prepare_states): Use MALLOC rather than alloca, so that we don't
	have to worry about alloca.
	* src/state.c (state_hash_lookup): Likewise.

	* src/scan-gram.l (<SC_ESCAPED_CHARACTER>"'"): Use unsigned char
	local var instead of casting to unsigned char, to avoid casts.

	* src/state.c (TRANSITIONS_ALLOC, ERRS_ALLOC, REDUCTIONS_ALLOC,
	STATE_ALLOC): Remove.
	(transitions_new, errs_new, reductions_new, state_new): Use malloc
	rather than calloc, and use offsetof to avoid allocating slightly
	too much storage.
	(state_new): Initialize all members.

	* src/state.c (state_hash): Use unsigned accumulator, not signed.

	* src/symtab.c (symbol_free): Remove; unused.
	(symbol_get): Remove cast in lhs of assignment.
	(symbols_do): Now static.  Accept generic arguments, not
	hashing-related ones.

	* src/symtab.h: (NUMBER_UNDEFINED): Remove unnecessary cast.
	(symbol_processor): Remove.
	(symbols_do): Remove decl; now static.

	* src/system.h (alloca): Remove; decl no longer needed.
	(<stddef.h>): Include, for offsetof.
	(<inttypes.>, <stdint.h>): Include if available.
	(uintptr_t): New type, if system lacks it.
	(CALLOC, MALLOC, REALLOC): New macros.
	All uses of XCALLOC, XMALLOC, and XREALLOC changed to use these
	new macros.

	* src/tables.c (table_size): Now int, to pacify GCC.
	(table_grow, table_ninf_remap): Use signed table size.
	(save_row): Don't bother initializing locals when not needed.
	(default_goto, goto_actions, pack_vector): Remove unnecessary casts.
	* src/uniqstr.c (hash_compare_uniqstr):  Likewise.

	* src/vcg.h: Correct misspellings.

	* src/vcg_defaults.h (G_CMAX): Now INT_MAX.


	* src/getargs.c (getargs): Don't assume EOF == -1.

2002-12-09  Paul Eggert  <eggert@twinsun.com>

	Change identifier spellings to avoid collisions with names
	that are reserved by POSIX.

	Don't use names ending in _t, since POSIX reserves them.
	For consistency, remove _e and _s endings -- they're weren't
	needed to remove ambiguity.  All uses changed.
	* src/uniqstr.h (uniqstr): Renamed from uniqstr_t, which in
	turn was just renamed from struniq_t.
	* src/uniqstr.c (uniqstr_processor): Renamed from struniq_processor,
	which in turn was just renamed from struniq_processor_t.
	(hash_compare_uniqstr): Renamed from hash_compare_struniq, which
	in turn was renamed from hash_compare_struniq_t.
	* src/LR0.c (struct state_list): Renamed from struct state_list_s.
	(state_list): Renamed from state_list_t.
	* src/assoc.h (assoc): Renamed from assoc_t.
	* src/conflicts.c (enum conflict_resolution): Renamed from
	enum conflict_resolution_e.
	* src/derives.c (struct rule_list): Renamed from struct rule_list_s.
	(rule_list): Renamed from rule_list_t.
	* src/getargs.h (enum trace): Renamed from enum trace_e.
	(enum report): Renamed from enum report_e.
	* src/gram.h (item_number): Renamed from item_number_t.
	(rule_number): Renamed from rule_number_t.
	(struct rule_s): Remove the "rule_s" part; not used.
	(rule): Renamed from rule_t.
	(rule_filter): Renamed from rule_filter_t.
	* src/lalr.c (struct goto_list): Renamed from struct goto_list_s.
	(goto_list): Renamed from goto_list_t.
	* src/lalr.h (goto_number): Renamed from goto_number_t.
	* src/location.h (location): Renamed from location_t.
	* src/muscle_tab.c (muscle_entry): Renamed from muscle_entry_t,
	and moved here from:
	* src/muscle_tab.h (muscle_entry_t): here.
	* src/nullable.c (struct rule_list): Renamed from struct rule_list_s.
	(rule_list): Renamed from rule_list_t.
	* src/print_graph.c (static_graph): Renamed from graph.
	* src/reader.h (braced_code): Renamed from braced_code_t.
	Remove brace_code_e tag.
	* src/relation.h (relation_node): Renamed from relation_node_t.
	(relation_nodes): Renamed from relation_nodes_t.
	(relation): Renamed from relation_t.
	* src/state.h (state_number): Renamed from state_number_t.
	(struct state): Renamed from struct state_s.
	(state): Renamed from state_t.
	(transitions): Renamed from transitions_t.  Unused (and
	misspelled) transtion_s tag removed.
	(errs): Renamed from errs_t.  Unused errs_s tag removed.
	(reductions): Renamed from reductions_t.  Unused tag
	reductions_s removed.
	* src/symlist.h (symbol_list): Renamed from symbol_list_t.
	(struct symbol_list): Renamed from struct symbol_list_s.
	* src/symtab.h (symbol_number): Renamed from symbol_number_t.
	(struct symbol): Renamed from struct symbol_s.
	(symbol): Renamed from symbol_t.
	* src/tables.c (vector_number): Renamed from vector_number_t.
	(action_number): Renamed from action_t.
	* src/tables.h (base_number): Renamed from base_t.
	* src/vcg.h (enum color): Renamed from enum color_e.
	(enum textmode): Renamed from enum textmode_e.
	(enum shape): Renamed from enum shape_e.
	(struct colorentry): Renamed from struct colorentry_s.
	(struct classname): Renamed from struct classname_s.
	(struct infoname): Renamed from struct infoname_s.
	(enum layoutalgorithm): Renamed from enum layoutalgorithm_e.
	(enum decision): Renamed from enum decision_e.
	(enum orientation): Renamed from enum orientation_e.
	(enum alignment): Renamed from enum alignment_e.
	(enum arrow_mode): Renamed from enum arrow_mode_e.
	(enum crossing_type): Renamed from enum crossing_type_e.
	(enum view): Renamed from enum view_e.
	(struct node): Renamed from struct node_s.
	(node): Renamed from node_t.
	(enum linestyle): Renamed from enum linestyle_e.
	(enum arrowstyle): Renamed from enum arrowstyle_e.
	(struct edge): Renamed from struct edge.
	(edge): Renamed from edge_t.
	(struct graph): Renamed from struct graph_s.
	(graph): Renamed from graph_t.
	* tests/calc.at (_AT_DATA_CALC_Y, Simple LALR Calculator):
	Rename value_t -> value.
	* tests/input.at (Torturing the Scanner): Rename value_t -> value,
	value_t_as_yystype -> value_as_yystype.

	Don't include <errno.h> in the mainstream code, since it
	reserves E[A-Z0-9]* and we want to use symbols like 'EQUALS'.
	* lib/get-errno.c, lib/get-errno.h: New files.
	* lib/Makefile.am (libbison_a_SOURCES): Add get-errno.h,
	get-errno.c.
	* src/files.c (xfopen, xfclose): Use get_errno instead of errno.
	* src/output.c (output_skeleton): Likewise.
	* src/scan-gram.l (<INITIAL>{int}): Use set_errno and get_errno
	instead of errno.
	(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>\\x[0-9abcdefABCDEF]+):
	Likewise.
	(handle_action_dollar, handle_action_at): Likewise.
	* src/system.h: Do not include <errno.h>.
	(TAB_EXT): Renamed from EXT_TAB.
	(OUTPUT_EXT): Renamed from EXT_OUTPUT.

	Avoid str[a-z]*, since <string.h> reserves that name space.
	Change all instances of "struniq" in names to "uniqstr", and
	likewise for "STRUNIQ" and "UNIQSTR".
	* src/uniqstr.c: Renamed from src/struniq.c.
	* src/uniqstr.h: Renamed from src/struniq.h.
	* src/Makefile.am (bison_SOURCES): Adjust to these renamings.
	* src/files.c (strsuffix): Remove; unused.
	(concat2): Renamed from stringappend.  Now static.
	* src/files.h (strsuffix, stringappend): Remove; unused.
	* src/parse-gram.y (<chars>): Renamed from <string>.
	(<uniqstr>): Renamed from <struniq>.
	* src/scan-gram.l (obstack_for_string): Renamed from string_obstack.
	* src/vcg.h (struct node_s.expand): Renamed from struct node_s.stretch.
	(struct graph_s.expand): Renamed from struct graph_s.stretch.
	* src/vcg_defaults.h (G_EXPAND): Renamed from G_STRETCH.
	(G_LONG_STRAIGHT_PHASE): Renamed from G_STRAIGHT_PHASE.
	(N_EXPAND): Renamed from N_STRETCH.

	Avoid *_MAX and *_MIN, since <limits.h> reserves that name space.
	* data/yacc.c (YYSTACK_GAP_MAXIMUM): Renamed from YYSTACK_GAP_MAX.
	* src/gram.h (ITEM_NUMBER_MAX, ITEM_NUMBER_MIN, RULE_NUMBER_MAX):
	Remove; unused.
	* src/lalr.h (GOTO_NUMBER_MAXIMUM): Renamed from GOTO_NUMBER_MAX.
	* src/state.h (STATE_NUMBER_MAXIMUM): Renamed from STATE_NUMBER_MAX.
	* src/symtab.h (SYMBOL_NUMBER_MAXIMUM): Renamed from SYMBOL_NUMBER_MAX.
	* src/tables.c (VECTOR_NUMBER_MAX, VECTOR_NUMBER_MIN): Remove; unused.
	(BASE_MAXIMUM): Renamed from BASE_MAX.
	(BASE_MINIMUM): Renamed from BASE_MIN.
	(ACTION_MAX): Remove; unused.
	(ACTION_NUMBER_MINIMUM): Renamed from ACTION_MIN.
	Unnecessary casts removed from above defines.


	Fix misspelling in names.
	* src/vcg.h (enum_alignment_e): Renamed from enum_alignement_e.
	* src/vcg_defaults.h (G_NODE_ALIGNMENT): Renamed from
	G_NODE_ALIGNEMENT.


	* lib/timevar.c (timevar_report): Renamed from time_report,
	for consistency with other names.
	* lib/timevar.h (timevar_report): New decl.
	* src/system.h (time_report): Remove; decl is now in lib/timevar.h.


	Sort include-file uses.

	Reorder all include files under src to be in the order "system.h".
	then the ../lib include files in angle brackets (alphabetized),
	then the . include files in double-quotes (alphabetized).  Fix
	dependency breakages encountered in this process, as follows:
	* src/closure.h, src/derives.h, src/state.h: Include "gram.h".
	* src/complain.c: Don't include stdlib.h, string.h _LIBC stuff.
	* src/state.h: Include "symtab.h".

2002-12-08  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c, data/lalr1.cc, data/yacc.c: Do not use __file__,
	since this causes problems when __file__ contains character
	sequences like "@" that are treated specially by src/scan-skel.l.
	Instead, just use the file's basename.  This fixes the bug
	reported by Martin Mokrejs in
	<http://lists.gnu.org/archive/html/bug-bison/2002-12/msg00007.html>.

2002-12-06  Paul Eggert  <eggert@twinsun.com>

	Add support for rules that do not have trailing semicolons, as
	POSIX requires.  Improve the quality of locations in Bison
	diagnostics.

	* src/location.c: Include <quotearg.h>.
	(empty_location): Now const.
	(location_print): New function.  Follow the recommendation of the
	GNU Coding Standards for locations that span file boundaries.
	* src/location.h: Do not include <quotearg.h>; no longer needed.
	(boundary): New type.
	(location_t): Use it.  This allows locations to span file boundaries.
	All member uses changed: file -> start.file or end.file (as needed),
	first_line -> start.line, first_column -> start.column,
	last_line -> end.line, last_column -> end.column.
	(equal_boundaries): New function.
	(LOCATION_RESET, LOCATION_STEP): Remove.
	(LOCATION_PRINT): Remove.  All callers changed to use location_print.
	(empty_location): Now const.
	(location_print): New decl.
	* src/parse-gram.y (lloc_default): New function, which handles
	empty locations more accurately.
	(YYLLOC_DEFAULT): Use it.
	(%token COLON): Remove.
	(%token ID_COLON): New token.
	(rules): Use it.
	(declarations, rules): Remove trailing semicolon.
	(declaration, rules_or_grammar_declaration):
	Allow empty (";") declaration.
	(symbol_def): Remove empty actions; no longer needed.
	(rules_or_grammar_declaration): Remove trailing semicolon.
	(semi_colon.opt): Remove.
	* src/reader.h: Include location.h.
	(scanner_cursor): New decl.
	* src/reduce.c (nonterminals_reduce): Use warn_at rather than
	rolling our own.
	* src/scan-gram.l (YY_USER_INIT): Initialize scanner_cursor instead
	of *loc.
	(STEP): Remove.  No longer needed, now that adjust_location does
	the work.  All uses removed.
	(scanner_cursor): New var.
	(adjust_location): Renamed from extend_location.  It now sets
	*loc and adjusts the scanner cursor.  All uses changed.
	Don't bother testing for CR.
	(handle_syncline): Remove location arg; now updates scanner cursor.
	All callers changed.
	(unexpected_end_of_file): Now accepts start boundary of token or
	comment, not location.  All callers changed.  Update scanner cursor,
	not the location.
	(SC_AFTER_IDENTIFIER): New state.
	(context_state): Renamed from c_context.  All uses changed.
	(id_loc, code_start, token_start): New local vars.
	(<INITIAL,SC_AFTER_IDENTIFIER>): New initial context.  Move all
	processing of Yacc white space and equivalents here.
	(<INITIAL>{id}): Save id_loc.  Begin state SC_AFTER_IDENTIFIER
	instead of returning ID immediately, since we need to search for
	a subsequent colon.
	(<INITIAL>"'", "\""): Save token_start.
	(<INITIAL>"%{", "{", "%%"): Save code_start.
	(<SC_AFTER_IDENTIFIER>): New state, looking for a colon.
	(<SC_YACC_COMMENT>, <SC_COMMENT>, <SC_LINE_COMMENT>):
	BEGIN context_state at end, not INITIAL.
	(<SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'",
	<SC_BRACED_CODE>"}", <SC_PROLOGUE>"%}", <SC_EPILOGUE><<EOF>>):
	Return correct token start.
	(<SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>): Save start boundary when
	the start of a character, string or multiline comment is found.
	* tests/conflicts.at (S/R in initial, Defaulted Conflicted
	Reduction): Adjust reported locations to match the more-precise
	results now expected.
	* tests/input.at (Invalid $n, Invalid @n, Type Clashes): Likewise.
	* tests/reduce.at (Useless Rules, Reduced Automaton,
	Underivable Rules): Likewise.
	* tests/regression.at (Invalid inputs): No longer `expecting ";"
	or "|"' now that so many other tokens are allowed by the new grammar.

	* src/complain.h (current_file): Remove duplicate decl;
	current_file is now owned by files.h.
	* src/complain.c, src/scan-gram.l: Include files.h.

2002-12-06  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yy_reduce_print): Don't assume that yyrline[yyrule]
	promotes to int; it might be unsigned int.
	* data/yacc.c (yy_reduce_print): Likewise.

	* doc/bison.texinfo (Table of Symbols): YYERROR_VERBOSE should
	be #defined in the prologue, not in the Bison declarations.
	This fixes Debian Bug 102878, reported by Shaul Karl.

2002-12-02  Paul Eggert  <eggert@twinsun.com>

	* configure.ac (AC_REPLACE_FUNCS): Add strtoul.
	* lib/strtoul.c: New file, from gnulib.
	This fixes a porting bug reported by Peter Klein in
	<http://lists.gnu.org/archive/html/bug-bison/2002-12/msg00000.html>.

2002-11-30  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (no_cr_read, extend_location): Move to epilogue,
	and put only a forward declaration in the prologue.  This is for
	consistency with the other scanner helper functions.

	Type clashes now generate warnings, not errors, since it
	appears that POSIX may allow some grammars with type clashes.
	* src/reader.c (grammar_current_rule_check): Warn about
	type clashes instead of complaining.
	* tests/input.at (Type Clashes): Expect warnings, not complaints.

	Add Yacc library, since POSIX requires it.
	* doc/bison.texinfo (Yacc Library): New node.  Regenerate top menu.
	* lib/Makefile.am (lib_LIBRARIES, liby_a_SOURCES): New macros.
	* lib/main.c, lib/yyerror.c: New files.

	gram_error can be static; it need not be extern.
	* src/reader.h (gram_error): Remove decl.
	* src/parse-gram.y (gram_error): Now static.  Add static decl.
	(print_token_value): Omit parameter names from forward decl,
	for consistency.

2002-11-29  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo: Emphasize that yylex and yyerror must
	be declared before being used.  E.g., one should typically
	declare them in the prologue.  Use GNU coding style in examples.
	Put "const" consistently after the type it modifies.  Mention
	that C99 supports "inline".  Mention that yyerror traditionally
	returns "int".

	%parse-param and %lex-param now take just one argument, the
	declaration; the argument name is deduced from the declaration.

	* doc/bison.texinfo (Parser Function, Pure Calling, Error
	Reporting, Table of Symbols): Document this.
	* src/parse-gram.y (add_param): New function.
	(COMMA): Remove.
	(declaration): Implement new rule for %parse-param and %lex-param.
	* src/scan-gram.l: "," now elicits a warning, rather than being
	a token; this is more compatible with byacc.
	* tests/calc.at (Simple LALR Calculator): Adopt new convention.

2002-11-27  Paul Eggert  <eggert@twinsun.com>

	Rename identifiers to avoid real and potential collisions.

	* data/c.m4 (b4_yysymprint_generate): yyout -> yyoutput,
	to avoid collision with lex macro described by Bruce Lilly in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00114.html>.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise.
	* doc/bison.texinfo (Prologue, Tracing): yyprint -> print_token_value.
	* src/parse-gram.y (print_token_value): Renamed from yyprint.
	All uses changed.
	(YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove.  All uses changed.
	The name "yycontrol" violates the name space rules, and this stuff
	wasn't being used anyway.
	(input): Remove action; this stuff wasn't being used.
	(gram_error): Rename local variable yylloc -> loc.
	* src/reader.h (struct gram_control_s, gram_control_t): Remove.
	(YY_DECL): Don't use "yy" at start of local variables.
	All uses changed, e.g., yylloc -> loc.
	* src/scan-gram.l (STEP): Renamed from YY_STEP.  All uses changed.
	(STRING_GROW): Renamed from YY_OBS_GROW.  All uses changed.
	(STRING_FINISH): Renamed from YY_OBS_FINISH.  All uses changed.
	(STRING_FREE): Renamed from YY_OBS_FREE.  All uses changed.

	* src/parse-gram.y (gram_error): loc is now const *.
	* src/reader.h (gram_error): Likewise.

2002-11-24  Paul Eggert  <eggert@twinsun.com>

	Version 1.75c.

	* tests/actions.at (Actions after errors): Use an output format
	more similar to that of the Printers and Destructors test.
	Test the position of the ';' token too.
	(Printers and Destructors): Likewise.
	(Printers and Destructors: %glr-parser): Remove for now, to avoid
	unnecessarily alarming people when the test fails.

	* data/yacc.c (yyerrlab1): Move this label down, so that the
	parser does not discard the lookahead token if the user code
	invokes YYERROR.  This change is required for POSIX conformance.

	* lib/error.c: Sync with gnulib.

2002-11-22  Paul Eggert  <eggert@twinsun.com>

	* lib/quotearg.c, lib/quotearg.h: Sync with gnulib.
	* lib/mbswidth.c, lib/mbswidth.h: Likewise.
	* lib/xmalloc.c: Likewise.

2002-11-20  Paul Eggert  <eggert@twinsun.com>

	* lib/argmatch.c, lib/argmatch.h: Sync with gnulib.

2002-11-20  Paul Eggert  <eggert@twinsun.com>

	Avoid use of <assert.h>, as the GNU Coding Standards hint that one
	should use `if (! x) abort ();' rather than `assert (x);', and
	anyway it's one less thing to worry about configuring.

	* data/glr.c, lib/hash.c, src/system.h: Do not include <assert.h>.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise,
	and replace all instances of assert with abort.
	* tests/calc.at (_AT_DATA_CALC_Y): Likewise.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise.

	* data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates,
	yyresolveAction, yyprocessOneStack): Use abort rather than assert.
	* lib/hash.c (hash_lookup, hash_get_first, hash_get_next,
	hash_find_entry, hash_rehash, hash_insert): Likewise.
	* src/conflicts.c (resolve_sr_conflict): Likewise.
	* src/lalr.c (set_goto_map, map_goto): Likewise.
	* src/nullable.c (nullable_compute): Likewise.
	* src/output.c (prepare_rules, token_definitions_output): Likewise.
	* src/reader.c (packgram, reader): Likewise.
	* src/state.c (state_new, state_free, state_transitions_set,
	state_reduction_find): Likewise.
	* src/symtab.c (symbol_user_token_number_set, symbol_make_alias,
	symbol_pack): Likewise.
	* src/tables.c (conflict_row, pack_vector): Likewise.
	* src/vcg.c (get_color_str, get_textmode_str, get_shape_str,
	get_layoutalgorithm_str, get_decision_str, get_orientation_str,
	get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str,
	get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise.

	* lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef.
	(ARGMATCH_CONSTRAINT): New macro.
	(ARGMATCH_ASSERT): Use it.

	* src/system.h (verify): New macro.
	* src/getargs.c (trace_argmatch, report_argmatch): Use verify
	rather than assert.
	* src/tables.c (tables_generate): Likewise.

	* src/struniq.c (struniq_assert): Now returns void, and aborts
	if the assertion is false.
	(struniq_assert_p): Remove.
	* src/struniq.h: Likewise.

2002-11-18  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yygetLRActions): Replace `yyindex' with
	`yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch.
	This fixes the regression with Sun ONE Studio 7 cc that I reported in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00077.html>.

2002-11-18  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a
	space.
	From Tim Van Holder.

2002-11-17  Paul Eggert  <eggert@twinsun.com>

	Pacify Sun ONE Studio 7 lint.  Also, rename "ParseError"
	to "SyntaxError" for consistency with my 2002-11-15 change.

	* data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do
	not define to {}, since this breaks the common use of `YYDPRINTF
	((...));' if a single statement is desired (e.g. before `else').
	Work around GCC warnings by surrounding corresponding calls with
	{} if needed.
	(yyhasResolvedValue): Remove unused function.
	(yymergeOptionSets, yyresolvStack): Use `continue;' for empty
	loop body.
	(yyreportSyntaxError): Renamed from yyreportParseError.
	(yyrecoverSyntaxError): Renamed from yyrecoverParseError.
	All uses changed.
	* tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of
	extern when possible.  Remove unused initializations.

2002-11-16  Akim Demaille  <akim@epita.fr>

	Augment the similarity between GLR and LALR traces.

	* data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print)
	(YY_REDUCE_PRINT): New.
	(yyparse): Use them.
	* data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for
	YYDPRINT here.
	(yyglrReduce, yyrecoverParseError, yyparse): Don't report the
	state reached after the reduction/recovery, since...
	(yyparse, yyprocessOneStack): Report the state we are entering in.

2002-11-16  Akim Demaille  <akim@epita.fr>

	* src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
	Add support for --trace=skeleton.
	* src/scan-skel.l: %option debug.
	Scan strings of non-@ or \n instead of character by character.
	(scan_skel): Handle trace_skeleton.
	(QPUTS): New.
	(@output_parser_name@, @output_header_name@): ``Restore'' their
	support (used to be M4 macros).
	* data/yacc.c: Quote larger chunks, a la glr.c.
	* data/lalr1.cc: Likewise.
	The header guards are no longer available, so use some other
	string than `YYLSP_NEEDED'.

2002-11-16  Akim Demaille  <akim@epita.fr>

	Make the ``Printers and Destructors'' test more verbose, taking
	`yacc.c''s behavior as (possibly wrong) reference.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf
	instead of fprint on stdout.
	Set and report the last_line of the symbols.
	Consistently display values and locations.

2002-11-16  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c: Avoid over-quoting of __line__ and __file__.

2002-11-15  Paul Eggert  <eggert@twinsun.com>

	* tests/actions.at (Actions after errors): New test case.

	* data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo,
	src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h,
	tests/action.at, tests/calc.at, tests/conflicts.at,
	tests/cxx-type.at, tests/regression.at:
	"parse error" -> "syntax error" for POSIX compatibility.
	"parsing stack overflow..." -> "parser stack overflow" so
	that code matches Bison documentation.

2002-11-15  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (declaration): Have %parse-param and %lex-param
	take two BRACED_CODE, not two string_content.
	Free the scanner's obstack when we are done.
	(code_content): New.
	* tests/calc.at: Adjust.
	* doc/bison.texinfo: Adjust.
	Also, make sure to include the `,' for these declarations.

2002-11-15  Tim Van Holder  <tim.van.holder@pandora.be>

	* m4/prereq.m4: Removed the commented jm_PREREQ_HASH
	definition; avoids potential autoreconf problems.

2002-11-15  Akim Demaille  <akim@epita.fr>

	Always check the value returned by yyparse.

	* tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value
	returned by yyparse.
	(_AT_CHECK_CALC_ERROR): Take the expected exit value as argument.
	Adjust calls.
	* tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value
	returned by yyparse.

2002-11-14  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c (yyFail): Always set yyerrflag.  Corrects regression
	on input.at test.

2002-11-14  Paul Eggert  <eggert@twinsun.com>

	* src/output.c (output_skeleton): Call xfopen instead of
	duplicating xfopen's body.

	Fix bugs reported by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00078.html>.

	* tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that
	"$CC -E foo.h" is allowed, as this doesn't work with the Portland
	Group compiler.  Instead, use "$CC -E bar.c".  Include the .h
	file twice in the grammar, as an extra check.

	* tests/input.at (Torturing the Scanner): Surround the
	backslash-newline tests with "#if 0", to make it less likely that
	we'll run into compiler bugs.  Bring back solitary \ inside
	comment, but add a closing comment to work around HP C bug.  Don't
	test backslash-newline in C character constant.

2002-11-14  Akim Demaille  <akim@epita.fr>

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit
	status of the compiler.
	Calling `exit 1' is no longer needed.
	Reported by Nelson H. F. Beebe.

2002-11-14  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (CPPFLAGS): We have config.h.
	* tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR):
	New.
	* tests/actions.at, tests/calc.at, tests/conflicts.at,
	* tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at,
	* tests/regression.at, tests/torture.at: Use them for all the
	grammars that are to be compiled.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as...
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this.
	* doc/bison.texinfo (GLR Parsers): Document `inline'.

2002-11-14  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Various formatting changes (alignments in
	samples, additional @group/@end group, GCS in samples.
	Use @deffn instead of simple @table to define the directives,
	macros, variables etc.

2002-11-13  Paul Eggert  <eggert@twinsun.com>

	Fix some bugs reported by Albert Chin-A-Young in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00066.html>.

	* tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c
	-o c"; the HP C compiler chatters during compilation.
	Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c".
	* tests/headers.at (export YYLTYPE): Likewise.

	* tests/input.at (Torturing the Scanner): Remove lines containing
	solitary backslashes, as they tickle a bug in the HP C compiler.

	* tests/glr-regr1.at (Badly Collapsed GLR States): Avoid //
	comments, since they're not portable.  Use GNU coding style.

2002-11-13  Akim Demaille  <akim@epita.fr>

	* data/yacc.c: Leave bigger chunks of quoted text.
	(YYDSYMPRINTF): New.
	Use it to report symbol activities.
	* data/glr.c (YYDSYMPRINTF): New.
	Use it.

2002-11-12  Paul Eggert  <eggert@twinsun.com>

	Version 1.75b.

	* data/glr.c (yydoAction): Return YYRESULTTAG, not int.
	(yyglrReduce): Return yyok, not 0.
	This should avoid the enumerated-type warnings reported
	by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00057.html>.

	* lib/bbitset.h (BITSET_INLINE): Remove.
	* lib/bitset.h [! BITSET_INLINE]: Remove.
	(bitset_set, bitset_reset, bitset_test): Rename local vars
	to avoid shadowing warnings by GCC.

	* data/glr.c (inline): Remove #define.  It's the user's
	responsibility to #define it away, just like 'const'.
	This fixes one of the bugs reported by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00058.html>.

	* Makefile.maint (po-check): Scan .l and .y files instead of the
	.c and the .h files that they generate.  This fixes the bug
	reported by Tim Van Holder in:
	<http://lists.gnu.org/archive/html/bison-patches/2002-11/msg00062.html>
	Look for N_ as well as for _.  Try to avoid matching #define for
	N_ and _.
	* po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c,
	src/system.h.  Add src/parse-gram.y, src/scan-gram.l.
	* src/scan-gram.l: Revamp regular expressions so that " and '
	do not confuse xgettext.

	* src/struniq.h (struniq_new): Do not declare the return type
	to be 'const'; this violates the C standard.
	* src/struniq.c (struniq_new): Likewise.

2002-11-12  Albert Chin-A-Young <china@thewrittenword.com>

	* src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the
	duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq
	linker.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Sync with Autoconf:
	(local_updates): New.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* po/POTFILES.in (src/lalr.c, src/state.c): Remove

2002-11-12  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
	locations.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
	not yyvalue.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
	Use it to test the GLR parser.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
	defines it.
	* data/glr.c (yystos): New.
	(b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
	(YYDSYMPRINT): New.
	(yyval): Don't define it, it is handled via M4.
	(yyrecoverParseError): Free verbosely the discarded symbols.
	* data/yacc.c (yysymprint): Remove, rather...
	(b4_yysymprint_generate): invoke.
	* data/c.m4 (b4_yysymprint_generate): New.
	Accept pointers as arguments, as opposed to the version from
	yacc.c.
	(b4_yydestruct_generate): Likewise.
	* tests/cations.at (Printers and Destructors): Use Bison directives
	instead of CPP macros.
	Don't rely on internal details.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
	* data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
	Don't work on yychar (i.e., do set it to YYEMPTY, don't match
	it against YYEMPTY and so forth), work on yytoken (i.e., set
	it to YYEMPTY etc.).
	(yydestruct): Replace with a b4_yydestruct_generate invocation.
	(b4_symbol_actions): Remove.
	* data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
	for 0, end-of-input.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Destructor Decl): New.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/tables.c (tables_generate): Use free for pointers that
	cannot be NULL, not XFREE.
	(pack_vector): Use assert, not fatal, for bound violations.
	* src/state.c (state_new): Likewise.
	* src/reader.c (reader): Likewise.
	* src/lalr.c (set_goto_map): Likewise.
	* src/location.h (LOCATION_PRINT): If first_line is 0, just issue
	the file name.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l, src/reader.h (scanner_last_string_free):
	Restore.
	* src/scan-gram.l (last_string): Is global to the file, not to
	yylex.
	* src/parse-gram.y (input): Don't append the epilogue here,
	(epilogue.opt): do it here, and free the scanner's obstack.
	* src/reader.c (epilogue_set): Rename as...
	(epilogue_augment): this.
	* data/c.m4 (b4_epilogue): Defaults to empty.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (long_options): Remove duplicates.
	* src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
	Remove.
	* doc/bison.rnh: Remove.
	* doc/bison.texinfo (VMS Invocation): Remove.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/struniq.h, src/struniq.c (struniq_t): Is const.
	(STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.

	Use struniq for symbols.

	* src/symtab.h (symbol_t): The tag member is a struniq.
	(symbol_type_set): Adjust.
	* src/symtab.c (symbol_new): Takes a struniq.
	(symbol_free): Don't free the tag member.
	(hash_compare_symbol_t, hash_symbol_t): Rename as...
	(hash_compare_symbol, hash_symbol): these.
	Use the fact that tags as struniqs.
	(symbol_get): Use struniq_new.
	* src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
	Returns a strniq.
	* src/reader.h (merger_list, grammar_currentmerge_set): The name
	and type members are struniqs.
	* src/reader.c (get_merge_function)
	(grammar_current_rule_merge_set): Adjust.
	(TYPE, current_type): Are struniq.

	Use struniq for file names.

	* src/files.h, src/files.c (infile): Split into...
	(grammar_file, current_file): these.
	* src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
	* src/reduce.c (reduce_print): Likewise.
	* src/getargs.c (getargs): Likewise.
	* src/complain.h, src/complain.c: Likewise.
	* src/main.c (main): Call struniqs_new early enough to use it for
	file names.
	Don't free the input file name.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_free): Remove dead deactivated code:
	type_name are properly removed.
	Don't use XFREE to free items that cannot be NULL.
	* src/struniq.h, src/struniq.c: New.
	* src/main.c (main): Initialize/free struniqs.
	* src/parse-gram.y (%union): Add astruniq member.
	(yyprint): Adjust.
	* src/scan-gram.l (<{tag}>): Return a struniq.
	Free the obstack bit that used to store it.
	* src/symtab.h (symbol_t): The 'type_name' member is a struniq.

2002-11-11  Paul Eggert  <eggert@twinsun.com>

	Revamp to fix many (but not all) of the C- and M4-related quoting
	problems.  Among other things, this fixes the Bison bug reported
	by Jan Hubicka when processing the Bash grammar; see:
	<http://lists.gnu.org/archive/html/bison-patches/2002-11/msg00039.html>

	Use new @ escapes consistently.  Represent brackets with @{ and @}
	rather than @<:@ and @:>@, since this works a bit better with dumb
	editors like vi.  Represent @ with @@, since @ is now consistently
	an escape.  Use @oline@ and @ofile@ rather than __oline__ and
	__ofile__, to avoid unexpected expansions.  Similarly, use @output
	rather than #output.

	* data/c.m4 (b4_copyright): Omit file name from comment, since
	the file name could contain "*/".
	(b4_synclines_flag): Don't quote the 2nd argument; it should already
	be quoted.  All uses changed.

	* data/glr.c: Use new @ escapes consistently.
	(b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
	b4_output_header_suffix, b4_output_header_name, b4_header_guard):
	Remove, since they couldn't handle arbitrary characters in file
	names.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.

	* src/files.c (output_infix): Remove; all uses removed.
	* src/files.h: Likewise.

	* data/glr.c: Remove use of "#ifdef b4_header_guard", since it
	mishandled funny characters in file names, and anyway it isn't
	needed any more.
	* data/yacc.c: Likewise.
	* data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.

	* data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
	* data/yacc.c: Likewise.

	* src/muscle_tab.c: Include quotearg.h, since we need to quote C
	strings now.
	(muscle_init): Quote filename as a C string.
	* src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
	(MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
	* src/output.c (escaped_file_name_output): New function.
	(prepare_symbols): Quote tokens for M4.
	(prepare): Don't insert output_infix, output_prefix,
	output_parser_name, output_header_name; this is now down by scan-skel.
	Insert skeleton as a C string.

	* src/output.c (user_actions_output, symbol_destructors_output,
	symbol_printers_output): Quote filenames for C and M4.
	* src/reader.c (prologue_augment, epilogue_set): Likewise.

	* src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
	escapes other than \\ and \'; this simplifies the code.
	(<SC_STRING>): Likewise, for \\ and \".
	(<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
	SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
	Use new escapes @{ and @} for [ and ].

	* src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
	them with auto vars.
	Switch to new escape scheme, where @ is the escape character uniformly.
	Abort if a stray escape character is found.  Avoid unbounded input
	buffer when parsing non-escaped text.

	* tests/input.at (Torturing the Scanner): Add tests that @oline@,
	__oline__, #output, $@, and @{ do not have unintended meanings.

2002-11-09  Paul Eggert  <eggert@twinsun.com>

	Fix the test failure due to GCC warnings described in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00000.html>.
	* data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which
	evaluate to 0 if it's impossible for NINF to be in the respective
	table.
	(yygetLRActions, yyrecoverParseError): Use them.

	* src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
	counted in the token inserted at end of file.  Now takes
	location_t *, not location_t, so that the location can be
	adjusted.  All uses changed.

	* tests/regression.at (Invalid inputs): Adjust wording in
	diagnostic to match the new behavior.

	* tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
	AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
	AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
	abort ();'.  This reduces the runtime of the "Many lookaheads"
	test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
	GCC 3.2.

2002-11-07  Paul Eggert  <eggert@twinsun.com>

	* src/parse-gram.y (CHARACTER): Remove unused token.
	All uses removed.

	* src/scan-gram.l: Remove stack option.  We no longer use the
	stack, since the stack was never deeper than 1; instead, use the
	new auto var c_context to record the stacked value.

	Remove nounput option.  At an unexpected end of file, we now unput
	the minimal input necessary to end cleanly; this simplifies the
	code.

	Avoid unbounded token sizes where this is easy.

	(unexpected_end_of_file): New function.
	Use it to systematize the error message on unexpected EOF.
	(last-string): Now auto, not static.
	(YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
	(scanner_last_string_free): Remove; not used.
	(percent_percent_count): Move decl to just before use.
	(SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
	not the (never otherwised-used) CHARACTER.

2002-11-07  Akim Demaille  <akim@epita.fr>

	Let yyerror always receive the msg as last argument, so that
	yyerror can be variadic.

	* data/yacc.c (b4_yyerror_args): New.
	Use it when calling yyerror.
	* data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
	Use it when calling yyerror.
	* doc/bison.texinfo (Error Reporting): Adjust.
	* tests/calc.at (_AT_DATA_CALC_Y): Adjust.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.

2002-11-06  Akim Demaille  <akim@epita.fr>

	#line should have quoted strings.
	Ideally, this should be done by m4_quotearg.

	* src/scan-skel.l: Include quotearg.h.
	Quote __ofile__.
	* src/output.c (symbol_printers_output)
	(symbol_destructors_output): Quote the file name.

2002-11-06  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid inputs): Adjust to the recent
	messages.

2002-11-06  Akim Demaille  <akim@epita.fr>

	Restore --no-lines.
	Reported by Jim Kent.

	* data/c.m4 (b4_syncline): New.
	* data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
	* src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
	* src/output.c (user_actions_output): Likewise.
	(prepare): Define 'b4_synclines_flag'.
	* src/muscle_tab.c (muscle_init): Don't define b4_linef.

2002-11-06  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): Free `infile'.
	* src/scan-gram.l (handle_syncline): New.
	Recognize `#line'.
	* src/output.c (user_actions_output, symbol_destructors_output)
	(symbol_printers_output): Use the location's file name, not
	infile.
	* src/reader.c (prologue_augment, epilogue_set): Likewise.

2002-11-05  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/tables.c (matching_state): Don't allow states to match if
	either has GLR conflict entries.

2002-11-05  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l: Use more accurate diagnostics, e.g.
	"integer out of range" rather than "invalid value".
	* tests/input.at (Invalid $n, Invalid @n): Change expected wording
	accordingly.

	Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
	Also, remove one static variable in the scanner.

	* src/scan-gram.l (braces_level): Now auto, not static.
	Initialize to zero if the compiler is being picky.
	(INITIAL): Clear braces_level instead of incrementing it.
	(SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
	as POSIX 1003.1-2001 requires.
	* src/system.h (IF_LINT): New macro, taken from coreutils.
	* configure.ac: Define "lint" if --enable-gcc-warnings.

2002-11-05  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: When it starts with `%', complain about the
	whole directive, not just that `invalid character: %'.

2002-11-04  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Update from Autoconf.
	(update, cvs-update, po-update, do-po-update): New.

2002-11-04  Akim Demaille  <akim@epita.fr>

	* tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
	and yyerror.
	Have yyerror `use' its arguments.
	* tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
	returns true when location & yacc & pure & parse-param.
	(_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.

2002-11-04  Akim Demaille  <akim@epita.fr>

	* src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
	clashes.
	* src/scan-gram.l: Use [\'] instead of ['] to pacify
	font-lock-mode.
	Use complain_at.
	Use quote, not quote_n since LOCATION_PRINT no longer uses the
	slot 0.

2002-11-03  Paul Eggert  <eggert@twinsun.com>

	* src/reader.c (get_merge_function, grammar_current_rule_check):
	Use consistent diagnostics for reporting type name clashes.
	Quote the types with <>, for consistency with Yacc.
	* tests/input.at (Type Clashes): Adjust to diagnostic changes.

2002-11-03  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
	New.
	* data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
	(b4_parse_param): Remove.
	Use b4_identification.
	Propagate b4_pure_args where needed to pass them to yyerror.
	* data/glr.m4 (b4_parse_param): Remove.
	(b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
	(b4_lpure_formals): New.
	Use b4_identification.
	(YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
	b4_user_formals and b4_user_args.
	(yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
	(yyreportAmbiguity): When using a pure parser, also need
	the location, and the parse-params.
	Adjust callers.
	(yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
	When using a pure parser, also need the parse-params.
	Adjust callers.
	* tests/calc.at: Test pure (%pure-parser) and absolutely pure
	(%pure-parser + %parse-param) LALR and GLR parsers.
	(AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
	AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
	AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
	(_AT_DATA_CALC_Y): Equip for purity of yyerror.
	(_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
	* doc/bison.texinfo: Untabify the whole file.
	(Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
	(Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
	(Error Reporting): Adjust to these new directives.
	Document %error-verbose, deprecate YYERROR_VERBOSE.

2002-11-03  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Change all the AT_CHECK_CALC_LALR and
	AT_CHECK_CALC_GLR invocations to use % directives, instead of
	command line options.
	* tests/cxx-type.at: Formatting changes.

2002-11-03  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l: Revamp to fix POSIX incompatibilities,
	to count columns correctly, and to check for invalid inputs.

	Use mbsnwidth to count columns correctly.  Account for tabs, too.
	Include mbswidth.h.
	(YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
	(extend_location): New function.
	(YY_LINES): Remove.

	Handle CRLF in C code rather than in Lex code.
	(YY_INPUT): New macro.
	(no_cr_read): New function.

	Scan UCNs, even though we don't fully handle them yet.
	(convert_ucn_to_byte): New function.

	Handle backslash-newline correctly in C code.
	(SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
	(eols, blanks): Remove.  YY_USER_ACTION now counts newlines etc.;
	all uses changed.
	(tag, splice): New EREs.  Do not allow NUL or newline in tags.
	Use {splice} wherever C allows backslash-newline.
	YY_STEP after space, newline, vertical-tab.
	("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).

	(letter, id): Don't assume ASCII; e.g., spell out a-z.

	({int}, handle_action_dollar, handle_action_at): Check for integer
	overflow.

	(YY_STEP): Omit trailing semicolon, so that it's more like C.

	(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
	as well as \000.  Check for UCHAR_MAX, not 255.
	Allow \x with an arbitrary positive number of digits, as in C.
	Check for overflow here.
	Allow \? and UCNs, for compatibility with C.

	(handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
	with quote slot used by complain_at.

	* tests/input.at: Add tests for backslash-newline, m4 quotes
	in symbols, long literals, and funny escapes in strings.

	* configure.ac (jm_PREREQ_MBSWIDTH): Add.
	* lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
	* lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
	* m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
	* m4/mbswidth.m4: New file, from GNU coreutils.

	* doc/bison.texinfo (Grammar Outline): Document // comments.
	(Symbols): Document that trigraphs have no special meaning in Bison,
	nor is backslash-newline allowed.
	(Actions): Document that trigraphs have no special meaning.

	* src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
	no longer used.

2002-11-02  Paul Eggert  <eggert@twinsun.com>

	* src/reader.c: Don't include quote.h; not needed.
	(get_merge_function): Reword warning to be consistent with
	type clash diagnostic in grammar_current_rule_check.

	* lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
	bug in trigraph handling.

	* src/output.c (prepare_symbols): When printing token names,
	escape "[" as "@<:@" and likewise for "]".

	* src/system.h (errno): Remove declaration, as we are now
	assuming C89 or better, and C89 guarantees errno.

2002-10-30  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
	Check for close failures.
	* src/files.h (xfclose): Return void, not int, since it always
	returned zero.
	* src/files.c (xfclose): Likewise.  Report I/O error if ferror
	indicates one.
	* src/output.c (output_skeleton): Use xfclose rather than fclose
	and ferror.  xfclose now checks ferror.

	* data/glr.c (YYLEFTMOST_STATE): Remove.
	(yyreportTree): Use a stack-based leftmost state.  This avoids
	our continuing battles with bogus warnings about initializers.

2002-10-30  Akim Demaille  <akim@epita.fr>

	* src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
	#if.

2002-10-29  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* tests/glr-regr1.at: New test for reported regressions.
	* tests/testsuite.at: Add glr-regr1.at test.
	* tests/Makefile.am: Add glr-regr1.at test.

2002-10-24  Paul Eggert  <eggert@twinsun.com>

	Version 1.75a.

	* tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
	we use malloc.  Don't assume 'A' through 'Z' are contiguous.
	Don't assume strdup exists; POSIX says its an XSI extension.
	Check for buffer overflow on input.

2002-10-24  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): Don't disable M4sugar comments
	too soon: it results in comments being expanded.
	* data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
	first output.

2002-10-24  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (m4_int_type): New.
	* data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
	char' as only yacc.c wants K&R portability.
	* data/glr.c (yysigned_char): Remove.
	* data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
	Reported by Quoc Peyrot.

2002-10-23  Paul Eggert  <eggert@twinsun.com>

	* src/main.c (main): With --trace=time, report times even if a
	non-fatal error occurs.  Formerly, the times were reported in some
	such cases but not in others.
	* src/reader.c (reader): Just return if a complaint has been issued,
	instead of exiting, so that 'main' can report times.

2002-10-22  Akim Demaille  <akim@epita.fr>

	* src/system.h: Include sys/types.
	Reported by Bert Deknuydt.

2002-10-23  Paul Eggert  <eggert@twinsun.com>

	* configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
	Suggested by Art Haas.

2002-10-22  Paul Eggert  <eggert@twinsun.com>

	* src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
	decl; not needed any more.
	* src/main.c (main): Use return to exit, undoing yesterday's change.
	The last OS that we could find where this wouldn't work is
	SunOS 3.5, and that's too old to worry about now.

	* data/glr.c (struct yyltype): Define members even when not
	doing locations.  This is more consistent with yacc.c, and it
	works around the following bug reports:
	http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00106.html
	http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00111.html

	* doc/bison.texinfo: Minor spelling and typographical fixes.  Use
	@acronym consistently.  Standardize on "Yacc" instead of "YACC",
	"Algol" instead of "ALGOL".  Give a bit more history about BNF.

2002-10-22  Akim Demaille  <akim@epita.fr>

	* data/README: New.

2002-10-21  Paul Eggert  <eggert@twinsun.com>

	Be consistent about 'bool'; the old code used an enum in one
	module and an int in another, and this violates the C standard.
	* m4/stdbool.m4: New file, from coreutils 4.5.3.
	* configure.ac (AC_HEADER_STDBOOL): Add.
	* m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
	* src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
	* src/symtab.c (hash_compare_symbol_t): Likewise.
	* src/system.h (bool, false, true): Use a definition consistent
	with ../lib/hash.c.  All uses changed.

	* src/complain.c (warning_issued): Renamed from warn_message_count,
	so that we needn't worry about integer overflow (!).
	Now of type bool.  All uses changed.
	(complaint_issued): Renamed from complain_message_count; likewise.

	* src/main.c (main): Use exit to exit with failure.

	* src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
	rather than 1 and 0.
	* src/main.c (main): Likewise.
	* src/getargs.c (getargs): Likewise.
	* src/reader.c (reader): Likewise.

	* src/getarg.c (getargs): Remove duplicate code for
	"Try `bison --help'".

	* src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
	What was that "2" for?

	* src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
	* src/getargs.c (usage): Likewise.

	* src/getargs.c (getargs): When there are too few operands, report
	the last one.  When there are too many, report the first extra
	one.  This is how diffutils does it.

2002-10-20  Paul Eggert  <eggert@twinsun.com>

	Remove K&R vestiges.
	* configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
	* src/complain.c (VA_START): Remove.  Assume prototypes.
	(vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
	(private_strerror, warn_at, warn, complain_at, complain, fatal_at,
	fatal): Assume prototypes.
	* src/complain.h: Assume prototypes.
	* src/system.h (PARAMS): Remove.
	Include <limits.h> unconditionally, since it's guaranteeed even
	for a freestanding C89 compiler.
	(SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
	* src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
	* data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
	(yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
	(yyresolveStates, yyresolveAction, yyresolveStack)
	(yyprocessOneStack): Use them.
	(yy_reduce_print): New.
	* tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_c_ansi_args): Recognize functions with no
	arguments and output `void'.
	(b4_c_function): Rename as...
	(b4_c_function_def): this.
	(b4_c_function_decl, b4_c_ansi_function_def)
	(b4_c_ansi_function_decl): New.
	Change the interpretation of the arguments: before `int, foo', now
	`int foo, foo'.
	* data/yacc.c (yyparse): Prototype and define thanks to these.
	Adjust b4_c_function_def uses.
	* data/glr.c (yyparse): Likewise, but ANSI only.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare): Move the definition of `tokens_number',
	`nterms_number', `undef_token_number', `user_token_number_max'
	to...
	(prepare_tokens): Here.
	(prepare_tokens): Rename as...
	(prepare_symbols): this.
	(prepare): Move the definition of `rules_number' to...
	(prepare_rules): here.
	(prepare): Move the definition of `last', `final_state_number',
	`states_number' to...
	(prepare_states): here.
	* data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/tables.h, src/tables.c, src/output.c: Comment changes.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
	* data/c.m4: here.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare): Use MUSCLE_INSERT_STRING.
	* src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
	`pair'.
	(muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
	`name' to...
	* data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
	(b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
	These.

2002-10-19  Paul Eggert  <eggert@twinsun.com>

	Do not create a temporary file, as that involves security and
	cleanup headaches.  Instead, use a pair of pipes.
	Derived from a suggestion by Florian Krohm.
	* lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
	* lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
	* configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
	(BISON_PREREQ_SUBPIPE): Add.
	* lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
	Add subpipe.h, subpipe.c.
	* m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4.  Add subpipe.m4.
	* po/POTFILES.in: Add lib/subpipe.c.
	* src/output.c: Include "subpipe.h".
	(m4_invoke): Remove decl.
	(scan_skel): New decl.
	(output_skeleton): Use pipe rather than temporary file for m4 input.
	Check that m4sugar.m4 is readable, to avoid deadlock.
	Check for pipe I/O error.
	* src/scan-skel.l (readpipe): Remove decl.
	(scan_skel): New function, to be used in place of m4_invoke.
	Read from stream rather than file.

	* lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
	float, as this generates a warning on Solaris 8 + GCC 3.2 with
	--enable-gcc-warnings.  Instead, divide into 1.0 rather than 1;
	this generates a more-accurate value anyway.

	* lib/timevar.c (timervar_accumulate): Rename locals to
	avoid confusion with similarly-named more-global.
	* src/muscle_tab.c (muscle_pair_list_grow): Likewise.

	* src/output.c (prepare): Use xstrdup to convert char const *
	to char *, to avoid GCC warning.

2002-10-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
	LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
	Use them to have `calc.y' ready for %pure-parser.
	* data/yacc.c (YYLEX): Pass a yylex return type to
	b4_c_function_call.

2002-10-19  Akim Demaille  <akim@epita.fr>

	Prototype support of %lex-param and %parse-param.

	* src/parse-gram.y: Add the definition of the %lex-param and
	%parse-param tokens, plus their rules.
	Drop the `_' version of %glr-parser.
	Add the "," token.
	* src/scan-gram.l (INITIAL): Scan them.
	* src/muscle_tab.c: Comment changes.
	(muscle_insert, muscle_find): Rename `pair' as `probe'.
	* src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
	(muscle_entry_s): The `value' member is no longer const.
	Adjust all dependencies.
	* src/muscle_tab.c (muscle_init): Adjust: use
	MUSCLE_INSERT_STRING.
	Initialize the obstack earlier.
	* src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
	(muscle_pair_list_grow): New.
	* data/c.m4 (b4_c_function_call, b4_c_args): New.
	* data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
	* tests/calc.at: Use %locations, not --locations.
	(AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.

2002-10-19  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (usage): Take status as argument and exit
	accordingly.
	Report the traditional `Try ... --help' message when status != 0.
	(usage, version): Don't take a FILE * as arg, it is pointless.
	(getargs): When there is an incorrect number of arguments, make it
	an error, and report it GNUlically thanks to `usage ()'.

2002-10-18  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yyreportParseError): Don't assume that sprintf
	yields the length of the printed string, as this is not true
	on SunOS 4.1.4.  Reported by Peter Klein.

	* tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
	* tests/conflicts.at (%nonassoc and eof): Likewise.
	Fixes SunOS 4.1.4 test failure reported by Peter Klein.

2002-10-17  Akim Demaille  <akim@epita.fr>

	* src/getargs.h (trace_e): Add trace_scan, and trace_parse.
	* src/getargs.c (trace_types, trace_args): Adjust.
	* src/reader.c (grammar_current_rule_prec_set)
	(grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
	Standardize error messages.
	And s/@prec/%prec/!
	(reader): Use trace_flag to enable scanner/parser debugging,
	instead of an adhoc scheme.
	* src/scan-gram.l: Remove trailing debugging code.

2002-10-16  Paul Eggert  <eggert@twinsun.com>

	* src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
	MUSCLE_TAB_H.

	* NEWS: Officially drop support for building Bison with K&R C,
	since it didn't work anyway and it's not worth worrying about.
	* Makefile.maint (wget_files): Remove ansi2knr.c.
	(ansi2knr.c-url_prefix): Remove.
	* lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
	* lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
	* src/Makefile.am (AUTOMAKE_OPTIONS): Remove.

2002-10-15  Paul Eggert  <eggert@twinsun.com>

	Stop using the "enum_" trick for K&R-style function definitions;
	it confused me, and I was the author!  Instead, assume that people
	who want to use K&R C compilers (when using these modules in GCC,
	perhaps?) will run ansi2knr.

	* lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
	All uses of "enum_" changed to "enum ".
	* lib/ebitset.c (enum_ebitset_find_mode): Likewise.
	* lib/lbitset.c (enum_lbitset_find_mode): Likewise.

	* lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
	abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
	abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
	abitset_copy1, abitset_disjoint_p, abitset_empty_p,
	abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
	abitset_not, abitset_ones, abitset_or, abitset_or_and,
	abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
	abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
	abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
	Use function prototypes; this removes the need for declaring
	static functions simply to provide their prototypes.
	* lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
	bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
	bitset_count_, bitset_create, bitset_dump, bitset_first,
	bitset_free, bitset_init, bitset_last, bitset_next,
	bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
	bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
	bitset_print, bitset_release_memory, bitset_toggle_,
	bitset_type_choose, bitset_type_get, bitset_type_name_get,
	debug_bitset): Likewise.
	* lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
	* lib/bitset_stats.c (bitset_log_histogram_print,
	bitset_percent_histogram_print, bitset_stats_and,
	bitset_stats_and_cmp, bitset_stats_and_or,
	bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
	bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
	bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
	bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
	bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
	bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
	bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
	bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
	bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
	bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
	bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
	bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
	bitset_stats_zero): Likewise.
	* lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
	bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
	bitsetv_dump, debug_bitsetv): Likewise.
	* lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
	ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
	ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
	ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
	ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
	ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
	ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
	ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
	ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
	ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
	ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
	Likewise.
	* lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
	lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
	lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
	lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
	lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
	lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
	lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
	lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
	lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
	lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
	lbitset_xor_cmp, lbitset_zero): Likewise.

2002-10-14  Akim Demaille  <akim@epita.fr>

	Version 1.75.

2002-10-14  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (maintainer-check-posix): New.

2002-10-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
	member.

2002-10-14  Akim Demaille  <akim@epita.fr>

	* src/tables.c (table_ninf_remap): base -> tab.
	Reported by Matt Rosing.

2002-10-14  Paul Eggert  <eggert@twinsun.com>

	* tests/action.at, tests/calc.at, tests/conflicts.at,
	tests/cxx-type.at, tests/headers.at, tests/input.at,
	tests/regression.at, tests/synclines.at, tests/torture.at:
	Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
	so that the tests still work even if POSIXLY_CORRECT is set.
	* doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.

	* data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
	for portability to K&R hosts.  Fix typo: signed char is guaranteed
	only to 127, not to 128.
	* data/glr.c (yysigned_char): New type.
	* data/yacc.c (yysigned_char): Likewise.
	* tests/regression.at (Web2c Actions): signed char -> yysigned_char.

2002-10-13  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyparse): Rewrite to avoid "comparison is always
	true due to limited range of data type" warning from GCC.

	* data/c.m4 (b4_token_defines): Protect against double-inclusion
	by wrapping enum yytokentype's definition inside #ifndef
	YYTOKENTYPE.  This undoes a bug I introduced on 2002-10-12.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
	Un yy- yyrhs to avoid the name clash with the global YYRHS.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Update from Autoconf 2.54.
	* m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_state): Separate the list of solved conflicts
	from the other items.
	* tests/conflicts.at (Resolved SR Conflicts): Adjust.

2002-10-13  Akim Demaille  <akim@epita.fr>

	Let nondeterministic skeletons be usable with deterministic
	tables.

	With the patch, GAWK compiled by GCC without -O2 passes its test
	suite using a GLR parser driven by LALR tables.  It fails with -O2
	because `struct stat' gives two different answers on my machine:
	88 (definition of an auto var) and later 96 (memset on this var).
	Hence the stack is badly corrumpted.  The headers inclusion is to
	blame: if I move the awk.h inclusion before GLR's system header
	inclusion, the two struct stat have the same size.

	* src/tables.c (pack_table): Always create conflict_table.
	(token_actions): Always create conflict_list.
	* data/glr.c (YYFLAG): Remove, unused.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
	(O0FLAGS): New.
	(VALGRIND, GXX): New.
	* tests/atlocal.in (CFLAGS): Use O0FLAGS.
	* tests/bison.in: Run $PREBISON a pre-command.
	* tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
	(maintainer-check-g++): New.
	* Makefile.am (maintainer-check): New.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* data/glr.c: Formatting changes.
	Tweak some trace messages to match yacc.c's.

2002-10-13  Akim Demaille  <akim@epita.fr>

	GLR parsers sometimes raise parse errors instead of performing the
	default reduction.
	Reported by Charles-Henry de Boysson.

	* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
	check the length of the traces when %glr.
	(_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
	GLR's traces.
	(AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
	Test GLR parsers.
	* data/glr.c (YYLEFTMOST_STATE): Fix its value.
	(yyltype): Remove the yy prefix from the member names.
	(yytable): Complete its comment.
	(yygetLRActions): Map error action number from YYTABLE from
	YYTABLE_NINF to 0.
	(yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
	(which was a bug: it should have been YYTABEL_NINF, and yet it was
	not satisfying as we could compare an YYACTION computed from
	YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
	only value for error actions.
	(yyreportParseError): In verbose parse error messages, don't issue
	`error' in the list of expected tokens.
	* data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
	next action to perform to match glr.c's decoding.
	(yytable): Complete its comment.

2002-10-13  Paul Eggert  <eggert@twinsun.com>

	Fix problem reported by Henrik Grubbstroem in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00098.html>:
	"nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
	because the Bison parser reads the second action before reducing
	the first one.
	* src/scan-gram.l (rule_length): New static var.
	Use it to keep track of the rule length in the scanner, since
	we can't expect the parser to be in lock-step sync with the scanner.
	(handle_action_dollar, handle_action_at): Use this var.
	* tests/actions.at (Exotic Dollars): Test for the problem.

2002-10-12  Paul Eggert  <eggert@twinsun.com>

	* lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
	* m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
	Include <sys/time.h> when checking for clock_t and struct tms.
	Use same include order as source.
	This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00016.html>.

	* lib/timevar.c: Update copyright date and clarify comments.
	(get_time) [IN_GCC]: Keep the GCC version for reference.

	* lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
	GCC version as of today, then merge Bison's changes.
	Change "GCC" to "Bison" in copyright notice.  timevar.def's
	author is Akim, so change that too.

	* src/reader.c (grammar_current_rule_check):
	Don't worry about the default action if $$ is untyped.
	Prevents bogus warnings reported by Jim Gifford in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00015.html>.

	* data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
	* data/glr.c, data/lalr1.cc, data/yacc.c:
	Output token definitions before the first part of user declarations.
	Fixes compatibility problem reported by Jim Gifford for kbd in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00014.html>.

2002-10-11  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyreport_parse_error): Remove, putting its body into...
	(yyparse): here.  This undoes some of the 2002-07-25 change.
	Compatibility problem reported by Ralf S. Engelschall with
	OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.

2002-10-11  Akim Demaille  <akim@epita.fr>

	* tests/regression.at Characters Escapes): New.
	* src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
	characters.
	Reported by Jan Nieuwenhuizen.

2002-10-11  Akim Demaille  <akim@epita.fr>

	* po/id.po: New.

2002-10-10  Paul Eggert  <eggert@twinsun.com>

	Portability fixes for bitsets; this also avoids several GCC
	warnings.

	* lib/abitset.c: Include <stddef.h>, for offsetof.
	* lib/lbitset.c: Likewise.

	* lib/abitset.c (abitset_bytes): Return a size that is aligned
	properly for vectors of objects.  Do not assume that adding a
	header size to a multiple of a word size yields a value that is
	properly aligned for the whole union.
	* lib/bitsetv.c (bitsetv_alloc): Likewise.

	* lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
	unique names for structures.
	* lib/ebitset.c (ebitset_bytes): Likewise.
	* lib/lbitset.c (lbitset_bytes): Likewise.

	* lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
	abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
	abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
	abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
	abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
	abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
	abitset_or_and_cmp, abitset_copy): Supply prototype decls,
	to improve the type-checking that GCC can do.
	* lib/bitset.c (bitset_op4_cmp): Likewise.
	* lib/bitset_stats.c (bitset_stats_count,
	bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
	bitset_stats_copy, bitset_stats_disjoint_p,
	bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
	bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
	bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
	bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
	bitset_stats_and_or_cmp, bitset_stats_andn_or,
	bitset_stats_andn_or_cmp, bitset_stats_or_and,
	bitset_stats_or_and_cmp): Likewise.
	* lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
	lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
	lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
	lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.

	* lib/abitset.h: Include bitset.h, not bbitset.h.
	* lib/ebitset.h: Likewise.
	* lib/lbitset.h: Likewise.

	* lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
	All instances of parameters of type enum bitset_opts are now of
	type enum_bitset_opts, to conform to the C Standard, and similarly
	for enum_bitset_type.
	* lib/ebitset.c (enum_ebitset_find_mode): Likewise.
	* lib/lbitset.c (enum_lbitset_find_mode): Likewise.

	Do not use "struct bitset_struct" to mean different things in
	different modules.  Not only is this confusing, it violates
	the C Standard, which requires that structure types in different
	modules must be compatible if one is to be passed to the other.
	* lib/bbitset.h (bitset): Now points to a union, not to a struct.
	All instances of "struct bitset_struct *" replaced with "bitset".
	* lib/bitset.h (struct bitset_struct): Remove, replacing with....
	(union bitset_union, struct abitset_struct, struct ebitset_struct,
	struct lbitset_struct, struct bitset_stats_struct): New types.
	All uses of struct bitset_struct changed to union bitset_union,
	etc.
	* lib/abitset.c (struct abitset_struct, abitset,
	struct bitset_struct): Remove.
	* lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
	struct bitset_struct): Remove.
	* lib/ebitset.c (struct ebitset_struct, ebitset, struct
	bitset_struct): Remove.
	* lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
	Likewise.

	Do not call a function of type T using a call that assumes the
	function is of a different type U.  Standard C requires that a
	function must be called with a type that is compatible with its
	definition.
	* lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
	New decls.
	* lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
	New functions.
	* lib/ebitset.c (PFV): Remove.
	* lib/lbitset.c (PFV): Likewise.
	* lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
	ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
	decls.
	(ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
	(ebitset_vtable): Use them.
	* lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
	lbitset_xor): New functions.
	(lbitset_vtable): Use them.

	* lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
	Declare.

	* lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
	GCC warning.
	* lib/lbitset.c (LBITSET_CURRENT1): Likewise.
	Use offsetof, for simplicity.

2002-10-06  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset.h (bitset_reset): Do not assume that bitset_word is
	the same width as int.  This reapplies a hunk of the 2002-08-12 patch
	<http://lists.gnu.org/archive/html/bison-patches/2002-08/msg00007.html>,
	which was inadvertently undone by the 2002-09-30 patch.
	* lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
	the same width as int.

2002-10-04  Paul Eggert  <eggert@twinsun.com>

	Version 1.50.

	* configure.ac (AC_INIT), NEWS: Increment version number.

	* doc/bison.texinfo: Minor spelling, grammar, and white space
	fixes.
	(Symbols): Mention that any negative value returned from yylex
	signifies end-of-input.  Warn about negative chars.  Mention
	the portable Standard C character set.

	The GNU coding standard says CFLAGS and YFLAGS are reserved
	for the installer to set.
	* lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
	* src/Makefile.am (AM_CFLAGS): Likewise.
	(AM_YFLAGS): Renamed from YFLAGS.

	Fix some MAX and MIN problems.
	* src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
	* src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
	* src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
	* src/reader.c (reader): Use it.

	* tests/regression.at (Braces parsing): Use grep, not fgrep, as
	POSIX 1003.1-2001 has removed fgrep.

2002-10-04  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
	interpreted as signed.
	* lib/ebitset.c (ebitset_list): Fix bug.

2002-10-01  Paul Eggert  <eggert@twinsun.com>

	More fixes for 64-bit hosts and large bitsets.

	* lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
	abitset_size, abitset_list, abitset_list_reverse, abitset_list):
	Use bitset_bindex, not int or unsigned int or size_t, to count bits.
	* lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
	struct bitset_vtable.list, struct bitset_vtable.list_reverse,
	bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
	bitset_count_): Likewise.
	* lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
	bitset_first, bitset_last): Likewise.
	* lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
	bitset_stats_list_reverse, bitset_stats_size,
	bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
	Likewise.
	* lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
	* lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
	bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
	bitsetv_reflexive_transitive_closure): Likewise.
	* lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
	* lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
	Likewise.
	* lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
	Likewise.

	* lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
	Use size_t, not unsigned int, to count bytes.
	* lib/abitset.h (abitset_bytes): Likewise.
	* lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
	Likewise.
	* lib/bitset.h (bitset_bytes): Likewise.
	* lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
	* lib/bitset_stats.h (bitset_stats_bytes): Likewise.
	* lib/bitsetv.c (bitsetv_alloc): Likewise.
	* lib/ebitset.c (ebitset_bytes): Likewise.
	* lib/ebitset.h (ebitset_bytes): Likewise.
	* lib/lbitset.c (lbitset_bytes): Likewise.
	* lib/lbitset.h (lbitset_bytes): Likewise.

	* lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
	abitset_subset_p, abitset_disjoint_p, abitset_and,
	abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
	abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
	abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
	abitset_or_and, abitset_or_and_cmp):
	Use bitset_windex instead of unsigned int.
	* lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
	* lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
	ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
	ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
	Likewise.
	* lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.

	* lib/bitset.c (bitset_print):
	Use proper printf formats for widths of integer types.
	* lib/bitset_stats.c (bitset_percent_histogram_print,
	bitset_log_histogram_print, bitset_stats_print_1): Likewise.
	* lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
	* lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
	* lib/lbitset.c (lbitset_bytes): Likewise.

	* lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
	BITSET_SIZE_MAX): New macros.
	(BITSET_INDEX_MAX): Remove.  It wasn't right, since it assumed that
	sizeof (bitset_word) == sizeof (bitset_windex).  All uses changed
	to BITSET_WINDEX_MAX.

	* lib/bitset.c (bitset_next, bitset_prev, bitset_first,
	bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
	since we now return the bitset_bindex type (not int).

	* lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
	when computing sizes.
	* lib/ebitset.c (ebitset_elts_grow): Likewise.

	* lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
	and avoid cast to unsigned.

2002-09-30  Akim Demaille  <akim@epita.fr>

	* lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
	* lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
	Updates from Michael Hayes.

2002-09-30  Art Haas  <ahaas@neosoft.com>

	* configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
	invocations.
	* tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
	defined.

2002-09-27  Akim Demaille  <akim@epita.fr>

	Version 1.49c.

2002-09-27  Akim Demaille  <akim@epita.fr>

	* configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
	(Because of AC_LIBSOURCE).

2002-09-27  Akim Demaille  <akim@epita.fr>

	Playing with Autoscan.

	* configure.ac: Remove the old LIBOBJ tweaks.
	(AC_REPLACE_FUNCS): Add strrchr and strtol.
	* lib/strrchr.c: New.
	* lib/strtol.c: New, from the Coreutils 4.5.1.

2002-09-27  Akim Demaille  <akim@epita.fr>

	Playing with Autoscan.

	* m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
	* lib/Makefile.am (libbison_a_SOURCES): No longer include
	argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
	* lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
	Coreutils 4.5.1.

2002-09-24  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Stack Overflow): xref to Recursion.
	(Frequently Asked Questions, Parser Stack Overflow): New.

2002-09-13  Akim Demaille  <akim@epita.fr>

	Playing with autoscan.

	* src/reader.c (get_merge_function): Use xstrdup, not strdup.
	* src/files.c (skeleton_find): Remove, unused.
	* m4/memcmp.m4: New, from the Coreutils 4.5.1.
	* m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.

2002-09-13  Akim Demaille  <akim@epita.fr>

	* configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
	* Makefile.am (AUTOMAKE_OPTIONS): Don't.

2002-09-13  Akim Demaille  <akim@epita.fr>

	* configure.ac: Require 2.54.
	s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
	s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
	* m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
	Remove, provided by Autoconf macros.

2002-09-12  Akim Demaille  <akim@epita.fr>

	* m4/prereq.m4: Update, from Coreutils 4.5.1.

2002-09-12  Akim Demaille  <akim@epita.fr>

	* m4/prereq.m4: Update, from Fileutils 4.1.5.
	* configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
	Reported by Martin Mokrejs.

2002-09-10  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y: Associate a human readable string to each
	token type.
	* tests/regression.at (Invalid inputs): Adjust.

2002-09-10  Gary V. Vaughan  <gary@gnu.org>

	* tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
	with an Autoconf-2.5x style configure.ac.

2002-09-06  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Conditions): Make explicit that the GPL
	exception applies only to yacc.c.  This is a modification of a
	patch originally suggested by Akim Demaille.

2002-09-06  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_copyright): Move the GPL exception comment from
	here to...
	* data/yacc.c: here.

	* data/lalr1.cc (struct yyltype): Don't define it, since we use
	LocationType.
	(b4_ltype): Default to yy::Location from location.hh.

2002-09-04  Jim Meyering  <jim@meyering.net>

	* data/yacc.c: Guard the declaration of yytoknum also with
	`#ifdef YYPRINT', so it is declared only when used.

2002-09-04  Akim Demaille  <akim@epita.fr>

	* configure.in: Rename as...
	* configure.ac: this.
	Bump to 1.49c.

2002-09-04  Akim Demaille  <akim@epita.fr>

	* src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
	* src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
	translate maintainer only messages.

2002-08-12  Paul Eggert  <eggert@twinsun.com>

	Version 1.49b.

	* Makefile.am (SUBDIRS): Remove intl.
	(DISTCLEANFILES): Remove.
	* NEWS: Mention that GNU M4 is now required.  Clarify what is
	meant by "larger grammars".  Mention the pt_BR translation.
	* configure.in (AC_CHECK_DECLS): Add getenv, getopt.
	(AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
	Bump version from 0.11.2 to 0.11.5.
	(BISON_PREREQ_STAGE): Remove.
	(AM_GNU_GETTEXT): Use external gettext.
	(AC_OUTPUT): Remove intl/Makefile.

	* config/depcomp, config/install-sh: Sync with Automake 1.6.3.

	* data/glr.c: Include string.h, for strlen.
	(yyreportParseError): Use size_t for yysize.
	(yy_yypstack): No longer nested inside yypstates, as nested
	functions are not portable.  Do not assume size_t is the
	same width as int.
	(yypstates): Do not assume that ptrdiff_t is the same width
	as int, and similarly for yyposn and YYINDEX.

	* data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.

	* lib/Makefile.am (INCLUDES): Do not include from the intl
	directory, which has been removed.
	* src/Makefile.am (INCLUDES): Likewise.

	* lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
	(bitsets_sources, additional_bitsets_sources, timevars_sources):
	New vars.

	* lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
	* tests/Makefile.am (EXTRA_DIST): Likewise.

	* lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
	Do not assume that bitset_windex is the same width as unsigned.

	* lib/abitset.c (abitset_unused_clear): Do not assume that
	bitset_word is the same width as int.
	* lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
	* lib/bitset.h (bitset_set, bitset_reset): Likewise.
	* lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
	* lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
	* lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.

	* lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
	portability to one's complement hosts!).
	* lib/ebitset.c (ebitset_op1): Likewise.
	* lib/lbitset.c (lbitset_op1): Likewise.

	* lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
	* lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
	lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
	Sync with fileutils.
	* lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
	lib/gettext.h: Sync with diffutils.

	* lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
	lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.

	* lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
	PROTOTYPES to check for prototypes, and "defined __STDC__" to
	check for void *.

	* lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
	size_t; the old version tried to do this but casted improperly.
	(bitset_bindex, bitset_windex): Now size_t, not unsigned long.
	(bitset_test): Now returns int, not unsigned long.

	* lib/bitset_stats.c: Include "gettext.h".
	(_): New macro.
	(bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
	name locals "index", as it generates unnecessary warnings on some
	hosts that have an "index" function.

	* lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
	bitset_stats_read, bitset_stats_write): Wrap strings in _() if
	they need translation.
	* src/LR0.c (state_list_append, new_itemsets, get_state,
	append_states, generate_states): Likewise.
	* src/assoc.c (assoc_to_string): Likewise.
	* src/closure.c (print_closure, set_firsts, closure): Likewise.
	* src/gram.c (grammar_dump): Likewise.
	* src/injections.c (injections_compute): Likewise.
	* src/lalr.c (lookaheads_print): Likewise.
	* src/relation.c (relation_transpose): Likewise.
	* src/scan-gram.l: Likewise.
	* src/tables.c (table_grow, pack_vector): Likewise.

	* m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
	glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
	* m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
	* m4/mbstate_t.m4: Sync with fileutils.
	* m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.

	* po/LINGUAS: Add pt_BR.
	* po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
	src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
	lib/timevar.c.
	Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
	manual recommends.
	Similarly, use src/scan-gram.l instead of src/scan-gram.c.

	* src/complain.c (strerror_r): Remove decl; not needed.
	(strerror): Use same pattern as ../lib/error.c.

	* src/files.c, src/files.h (compute_header_macro): Remove; unused.

	* src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.

	* src/main.c (main): Cast result of bindtextdomain and textdomain
	to void, to avoid a GCC warning when --disable-nls is in effect.

	* src/scan-gram.l: Use strings rather than escapes when possible,
	to minimize the number of warnings from xgettext.
	(handle_action_dollar, handle_action_at): Don't use isdigit,
	as it mishandles negative chars and it may not work as expected
	outside the C locale.

	* src/symtab.c (symbol_get): Don't cast LHS of an assignment;
	this is a GCC extension and is not portable to other compilers.

	* src/system.h (alloca): Use same pattern as ../lib/error.c.
	Do not include <ctype.h>; no longer needed.
	Do not include <malloc.h>; no longer needed (and generates
	warnings on OpenBSD 3.0).

	* tests/cxx-type.at (yylex): Do not pass signed char to isupper;
	it's not portable.

	* tests/regression.at: Do not use 'cc -c input.c -o input';
	Sun C rejects this.  Instead, use 'cc -c input.c -o input.o'.

	* tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
	exit status as failure, not just exit status 1.  Sun C exits
	with status 2 sometimes.

	* tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
	Use it for the two large tests.

2002-08-02  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_output): Don't output rules never
	reduced here, since anyway that computation doesn't work.
	* src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
	(rule_useless_p, rule_never_reduced_p): New.
	(grammar_rules_partial_print): Use a filter instead of a range.
	Display the title only if needed.
	(grammar_rules_print): Adjust.
	(grammar_rules_never_reduced_report): New.
	* src/tables.c (action_row): Move the computation of rules never
	reduced to...
	(token_actions): here.
	* src/main.c (main): Make the parser before making the report, so
	that rules never reduced are computed.
	Call grammar_rules_never_reduced_report.
	* src/print.c (print_results): Report rules never reduced.
	* tests/conflicts.at, tests/reduce.at: Adjust.

2002-08-01  Akim Demaille  <akim@epita.fr>

	Instead of attaching lookaheads and duplicating the rules being
	reduced by a state, attach the lookaheads to the reductions.

	* src/state.h (state_t): Remove the `lookaheads',
	`lookaheads_rule' member.
	(reductions_t): Add a `lookaheads' member.
	Use a regular array for the `rules'.
	* src/state.c (reductions_new): Initialize the lookaheads member
	to 0.
	(state_rule_lookaheads_print): Adjust.
	* src/state.h, src/state.c (state_reductions_find): New.
	* src/conflicts.c (resolve_sr_conflict, set_conflicts)
	(count_rr_conflicts): Adjust.
	* src/lalr.c (LArule): Remove.
	(add_lookback_edge): Adjust.
	(state_lookaheads_count): New.
	(states_lookaheads_initialize): Merge into...
	(initialize_LA): this.
	(lalr_free): Adjust.
	* src/main.c (main): Don't free nullable and derives too early: it
	is used by --verbose.
	* src/print.c, src/print_graph.c, src/tables.c: Adjust.

2002-08-01  Akim Demaille  <akim@epita.fr>

	* src/derives.h, src/derives.c (derives): A `rule_t***' instead of
	`rule_number_t**'.
	(set_derives, free_derives): Rename as...
	(derives_compute, derives_free): this.
	Adjust all dependencies.
	* src/nullable.c (set_nullable, free_nullable): Rename as...
	(nullable_compute, nullable_free): these.
	(rule_list_t): Store rule_t *, not rule_number_t.
	* src/state.c (state_rule_lookaheads_print): Directly compare rule
	pointers, instead of their numbers.
	* src/main.c (main): Call nullable_free, and derives_free earlier,
	as they were lo longer used.

2002-08-01  Akim Demaille  <akim@epita.fr>

	* lib/timevar.c (get_time): Include children time.
	* src/lalr.h (LA, LArule): Don't export them: used with the
	state_t.
	* src/lalr.c (LA, LArule): Static.
	* src/lalr.h, src/lalr.c (lalr_free): New.
	* src/main.c (main): Call it.
	* src/tables.c (pack_vector): Check whether loc is >= to the
	table_size, not >.
	(pack_tables): Don't free froms, tos, conflict_tos, and pos...
	(tables_generate): do it, since that's also it which allocates
	them.
	Don't free LA and LArule, main does.

2002-07-31  Akim Demaille  <akim@epita.fr>

	Separate parser tables computation and output.

	* src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
	(conflict_list, conflict_list_cnt, table, check, table_ninf)
	(yydefgoto, yydefact, high): Move to...
	* src/tables.h, src/tables.c: here.
	* src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
	(VECTOR_NUMBER_MIN, state_number_to_vector_number)
	(symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
	(froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
	(ACTION_MIN, actrow, order, nentries, pos, conflrow)
	(conflict_list_free, table_size, lowzero, table_grow, conflict_row)
	(action_row, save_row, token_actions, save_column, default_goto)
	(goto_actions, sort_actions, matching_state, pack_vector)
	(table_ninf_remap, pack_table, prepare_actions): Move to...
	* src/tables.c: here.
	* src/tables.h, src/tables.c(tables_generate, tables_free): New.
	* src/output.c (token_actions, output_base, output_conflicts)
	(output_check): Merge into...
	(prepare_actions): this.
	(actions_output): Rename as...
	(user_actions_output): this.
	* src/main.c (main): Call tables_generate and tables_free.

2002-07-31  Akim Demaille  <akim@epita.fr>

	Steal GCC's --time-report support.

	* lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
	stolen/adjusted from GCC.
	* m4/stage.m4: Remove time related checks.
	* m4/timevar.m4: New.
	* configure.in: Adjust.
	* src/system.h: Adjust to using timevar.h.
	* src/getargs.h, src/getargs.c: Support trace_time for
	--trace=time.
	* src/main.c (stage): Remove.
	(main): Replace `stage' invocations with timevar calls.
	* src/output.c: Insert pertinent timevar calls.

2002-07-31  Akim Demaille  <akim@epita.fr>

	Let --trace have arguments.

	* src/getargs.h (enum trace_e): New.
	* src/getargs.c (trace_args, trace_types, trace_argmatch): New.
	(long_options, short_options): --trace/-T takes an optional
	argument.
	Change all the uses of trace_flag to reflect the new flags.
	* tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.

	Strengthen `stage' portability.

	* m4/stage.m4 (BISON_PREREQ_STAGE): New.
	* configure.in: Use it.
	Don't check for malloc.h and sys/times.h.
	* src/system.h: Include them when appropriate.
	* src/main.c (stage): Compile only when mallinfo, struct mallinfo,
	times and struct tms are available.

2002-07-30  Akim Demaille  <akim@epita.fr>

	In verbose parse error message, don't report `error' as an
	expected token.
	* tests/actions.at (Printers and Destructors): Adjust.
	* tests/calc.at (Calculator $1): Adjust.
	* data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
	error message, do not report the parser accepts the error token in
	that state.

2002-07-30  Akim Demaille  <akim@epita.fr>

	Normalize conflict related messages.

	* src/complain.h, src/complain.c (warn, complain): New.
	* src/conflicts.c (conflicts_print): Use them.
	(conflict_report_yacc): New, extracted from...
	(conflicts_print): here.
	* tests/conflicts.at, tests/existing.at: Adjust.

2002-07-30  Akim Demaille  <akim@epita.fr>

	Report rules which are never reduced by the parser: those hidden
	by conflicts.

	* src/LR0.c (save_reductions): Don't make the final state too
	different: save its reduction (accept) instead of having a state
	without any action (no shift or goto, no reduce).
	Note: the final state is now a ``regular'' state, i.e., the
	parsers now contain `reduce 0' as default reduction.
	Nevertheless, since they decide to `accept' when yystate =
	final_state, they still will not reduce rule 0.
	* src/print.c (print_actions, print_reduction): Adjust.
	* src/output.c (action_row): Track reduced rules.
	(token_actions): Report rules never reduced.
	* tests/conflicts.at, tests/regression.at: Adjust.

2002-07-30  Akim Demaille  <akim@epita.fr>

	`stage' was accidentally included in a previous patch.
	Initiate its autoconfiscation.

	* configure.in: Look for malloc.h and sys/times.h.
	* src/main.c (stage): Adjust.
	Report only when trace_flag.

2002-07-29  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
	state_number_t.
	(errs_t): symbol_t*, not symbol_number_t.
	(reductions_t): rule_t*, not rule_number_t.
	(FOR_EACH_SHIFT): New.
	* src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
	* src/print.c, src/print_graph.c: Adjust.

2002-07-29  Akim Demaille  <akim@epita.fr>

	Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.

	* src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
	(endtoken, accept): these.
	* src/reader.c (reader): Set endtoken's default tag to "$end".
	Set undeftoken's tag to "$undefined" instead of "$undefined.".
	* doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
	Adjust.

2002-07-29  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_grammar): When the language is empty,
	complain about the start symbol, not the axiom.
	Use its location.
	* tests/reduce.at (Empty Language): New.

2002-07-26  Akim Demaille  <akim@epita.fr>

	* src/reader.h, src/reader.c (gram_error): ... can't get
	yycontrol without making too strong assumptions on the parser
	itself.
	* src/output.c (prepare_tokens): Use the real 0th value of
	token_translations instead of `0'.
	* src/parse-gram.y (yyerror): Don't rely on yycontrol being
	visible here.
	* data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
	for the time being: %locations ought to provide it to yyerror.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
	* doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
	* tests/regression.at (Web2c Actions): Adjust.

2002-07-25  Akim Demaille  <akim@epita.fr>

	Stop storing rules from 1 to nrules + 1.

	* src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
	* src/nullable.c, src/output.c, src/print.c, src/reader.c
	* src/reduce.c: Allocate and free from &rules[0], not &rules[1].
	Iterate from 0 to nrules.
	Use rule_number_as_item_number and item_number_as_rule_number.
	Adjust to `derive' now containing possibly 0.
	* src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
	Handle the `- 1' part in rule numbers from/to item numbers.
	* src/conflicts.c (log_resolution): Fix the message which reversed
	shift and reduce.
	* src/output.c (action_row): Initialize default_rule to -1.
	(token_actions): Adjust.
	* tests/sets.at (Nullable, Firsts): Fix the previously bogus
	expected output.
	* tests/conflicts.at (Resolved SR Conflicts): Likewise.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
	(b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
	(b4_c_knr_arg_decl): New.
	* data/yacc.c: Use it to define yysymprint, yydestruct, and
	yyreport_parse_error.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (yyreport_parse_error): New, extracted from...
	(yyparse): here.
	(yydestruct, yysymprint): Move above yyparse.
	Be K&R compliant.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
	replace...
	(b4_sint_type, b4_uint_type): these.
	* data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
	* tests/regression.at (Web2c Actions): Adjust.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* src/gram.h (TIEM_NUMBER_MAX): New.
	(item_number_of_rule_number, rule_number_of_item_number): Rename
	as...
	(rule_number_as_item_number, item_number_as_rule_number): these.
	Adjust dependencies.
	* src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
	(VECTOR_NUMBER_MIN, state_number_to_vector_number)
	(symbol_number_to_vector_number): New.
	(order): Of vector_number_t* type.
	(base_t, BASE_MAX, BASE_MIN): New.
	(froms, tos, width, pos, check): Of base_t type.
	(action_number_t, ACTION_MIN, ACTION_MAX): New.
	(actrow): Of action_number_t type.
	(conflrow): Of unsigned int type.
	(table_ninf, base_ninf): New.
	(GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
	(muscle_insert_int_table, muscle_insert_base_table)
	(muscle_insert_rule_number_table): New.
	(prepare_tokens): Output `toknum' as int_table.
	(action_row): Returns a rule_number_t.
	Use ACTION_MIN, not SHRT_MIN.
	(token_actions): yydefact is rule_number_t*.
	(table_ninf_remap): New.
	(pack_table): Use it for `base' and `table'.
	* data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
	replaced with...
	(YYPACT_NINF, YYTABLE_NINF): these.
	(yypact, yytable): Compute their types instead of hard-coded
	`short'.
	* tests/regression.at (Web2c Actions): Adjust.

2002-07-19  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (id): Can start with an underscore.

2002-07-16  Akim Demaille  <akim@epita.fr>

	* src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
	Adjust all former `associativity' dependencies.
	* src/symtab.c (symbol_new): Default associativity is `undef', not
	`right'.
	(symbol_check_alias_consistence): Adjust.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Properly set the ``header'' part.
	Use @dircategory ``GNU programming tools'' as per Texinfo's
	documentation.
	Use @copying.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* lib/quotearg.h: Protect against multiple inclusions.
	* src/location.h (location_t): Add a `file' member.
	(LOCATION_RESET, LOCATION_PRINT): Adjust.
	* src/complain.c (warn_at, complain_at, fatal_at): Drop
	`error_one_per_line' support.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* src/complain.h, src/complain.c (warn, complain): Remove, unused.
	* src/reader.c (lineno): Remove.
	Adjust all dependencies.
	(get_merge_function): Take a location and use complain_at.
	* src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
	* tests/regression.at (Invalid inputs, Mixing %token styles):
	Adjust.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (rules_or_grammar_declaration): Add an error
	recovery rule, and forbid extensions when --yacc.
	(gram_error): Use complain_at.
	* src/reader.c (reader): Exit if there were parse errors.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* tests/synclines.at (AT_SYNCLINES_COMPILE): New.
	(AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
	Reported by R Blake <blakers@mac.com>.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* data/yacc.c: Output the copyright notive in the header.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/output.c (froms, tos): Are state_number_t.
	(save_column): sp, sp1, and sp2 are state_number_t.
	(prepare): Rename `final' as `final_state_number', `nnts' as
	`nterms_number', `nrules' as `rules_number', `nstates' as
	`states_number', and `ntokens' as `tokens_number'.  Remove `nsym',
	unused.
	* data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
	* data/lalr1.cc (nsym_): Remove, unused.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/lalr.h, src/lalr.c (goto_number_t): New.
	* src/lalr.c (goto_list_t): New.
	Propagate them.
	* src/nullable.c (rule_list_t): New.
	Propagate.
	* src/types.h: Remove.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_fderives): Use rule_rhs_print.
	* src/derives.c (print_derives): Use rule_rhs_print.
	(rule_list_t): New, replaces `shorts'.
	(set_derives): Add comments.
	* tests/sets.at (Nullable, Firsts): Adjust.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare_actions): Free `tally' and `width'.
	(prepare_actions): Allocate and free `order'.
	* src/symtab.c (symbols_free): Free `symbols'.
	* src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
	* src/output.c (m4_invoke): Move to...
	* src/scan-skel.l: here.
	(<<EOF>>): Close yyout, and free its name.

2002-07-03  Akim Demaille  <akim@epita.fr>

	Fix some memory leaks, and fix a bug: state 0 was examined twice.

	* src/LR0.c (new_state): Merge into...
	(state_list_append): this.
	(new_states): Merge into...
	(generate_states): here.
	(set_states): Don't ensure a proper `errs' state member here, do it...
	* src/conflicts.c (conflicts_solve): here.
	* src/state.h, src/state.c: Comment changes.
	(state_t): Rename member `shifts' as `transitions'.
	Adjust all dependencies.
	(errs_new): For consistency, also take the values as argument.
	(errs_dup): Remove.
	(state_errs_set): New.
	(state_reductions_set, state_transitions_set): Assert that no
	previous value was assigned.
	(state_free): New.
	(states_free): Use it.
	* src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
	temporary storage: use `errs' and `nerrs' as elsewhere.
	(set_conflicts): Allocate and free this `errs'.

2002-07-02  Akim Demaille  <akim@epita.fr>

	* lib/libiberty.h: New.
	* lib: Update the bitset implementation from upstream.
	* src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
	* src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
	* src/main.c: Adjust bitset stats calls.

2002-07-01  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
	char, so that negative chars don't collide with $.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Have the GLR tests be `warning' checked, and fix the warnings.

	* data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
	(yyuserAction, yyreportAmbiguity): `Use' all the arguments.
	(yyremoveDeletes): `yyi' and `yyj' are size_t.
	Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
	(yyaddDeferredAction): static.
	(yyglrReduce): yyi, yyk, amd yyposn are size_t.
	(yyreportParseError): yyprefix is const.
	yytokenp is used only when verbose.
	(yy__GNUC__): Replace with __GNUC__.
	(yypdumpstack): yyi is size_t.
	(yypreference): Un-yy local variables and arguments, to avoid
	clashes with `yyr1'.  Anyway, we are not in the user name space.
	(yytname_size): be an int, as is compared with ints.
	* tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
	Use them.
	* tests/cxx-gram.at: Use quotation to protect $1.
	Use AT_COMPILE to enable warnings hunts.
	Prototype yylex and yyerror.
	`Use' argc.
	Include `string.h', not `strings.h'.
	Produce and prototype stmtMerge only when used.
	yylex takes a location.

2002-06-30  Akim Demaille  <akim@epita.fr>

	We spend a lot of time in quotearg, in particular when --verbose.

	* src/symtab.c (symbol_get): Store a quoted version of the key.
	(symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
	Adjust all callers.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h (reductions_t): Rename member `nreds' as num.
	(errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
	* src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
	(SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
	(shifts_to): Rename as...
	(transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
	(TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
	(TRANSITION_IS_DISABLED, transitions_to): these.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_shifts, print_gotos): Merge into...
	(print_transitions): this.
	(print_transitions, print_errs, print_reductions): Align the
	lookaheads columns.
	(print_core, print_transitions, print_errs, print_state,
	print_grammar): Output empty lines separator before, not after.
	(state_default_rule_compute): Rename as...
	(state_default_rule): this.
	* tests/conflicts.at (Defaulted Conflicted Reduction),
	(Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
	* tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Display items as we display rules.

	* src/gram.h, src/gram.c (rule_lhs_print): New.
	* src/gram.c (grammar_rules_partial_print): Use it.
	* src/print.c (print_core): Likewise.
	* tests/conflicts.at (Defaulted Conflicted Reduction),
	(Unresolved SR Conflicts): Adjust.
	(Unresolved SR Conflicts): Adjust and rename as...
	(Resolved SR Conflicts): this, as was meant.
	* tests/regression.at (Web2c Report): Adjust.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/print.c (state_default_rule_compute): New, extracted from...
	(print_reductions): here.
	Pessimize, but clarify the code.
	* tests/conflicts.at (Defaulted Conflicted Reduction): New.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row): Let default_rule be always a rule
	number.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_firsts, print_fderives, closure):
	Use BITSET_EXECUTE.
	* src/lalr.c (lookaheads_print): Likewise.
	* src/state.c (state_rule_lookaheads_print): Likewise.
	* src/print_graph.c (print_core): Likewise.
	* src/print.c (print_reductions): Likewise.
	* src/output.c (action_row): Likewise.
	Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c: Use report_flag.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (traverse, digraph, matrix_print, transpose): Move
	to...
	* src/relation.h, src/relation.c (traverse, relation_digraph)
	(relation_print, relation_transpose): New.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (shifts_to): New.
	* src/lalr.c (build_relations): Use it.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
	(item_number_of_rule_number, rule_number_of_item_number): New.
	* src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
	* src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
	* src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
	Propagate their use.
	Much remains to be done, in particular wrt `shorts' from types.h.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_new): Initialize the `printer' member.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (save_reductions): Remove, replaced by...
	* src/state.h, src/state.c (state_reductions_set): New.
	(reductions, errs): Rename as...
	(reductions_t, errs_t): these.
	Adjust all dependencies.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (state_list_t, state_list_append): New.
	(first_state, last_state): Now symbol_list_t.
	(this_state): Remove.
	(new_itemsets, append_states, save_reductions): Take a state_t as
	argument.
	(set_states, generate_states): Adjust.
	(save_shifts): Remove, replaced by...
	* src/state.h, src/state.c (state_shifts_set): New.
	(shifts): Rename as...
	(shifts_t): this.
	Adjust all dependencies.
	* src/state.h (state_t): Remove the `next' member.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/vcg.c (quote): Use slot 2, since we often pass symbol tag
	escaped in slot 0.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Use hash.h for the state hash table.

	* src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
	(allocate_storage): Use state_hash_new.
	(free_storage): Use state_hash_free.
	(new_state, get_state): Adjust.
	* src/lalr.h, src/lalr.c (states): Move to...
	* src/states.h (state_t): Remove the `link' member, no longer
	used.
	* src/states.h, src/states.c: here.
	(state_hash_new, state_hash_free, state_hash_lookup)
	(state_hash_insert, states_free): New.
	* src/states.c (state_table, state_compare, state_hash): New.
	* src/output.c (output_actions): Do not free states now, since we
	still need to know the final_state number in `prepare', called
	afterwards.  Do it...
	* src/main.c (main): here: call states_free after `output'.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (state_new): New, extracted from...
	* src/LR0.c (new_state): here.
	* src/state.h (STATE_ALLOC): Move to...
	* src/state.c: here.
	* src/LR0.h, src/LR0.c (nstates, final_state): Move to...
	* src/state.h, src/state.c: here.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/reader.c (gensym): Rename as...
	* src/symtab.h, src/symtab.c (dummy_symbol_get): this.
	(getsym): Rename as...
	(symbol_get): this.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_number_t, STATE_NUMBER_MAX): New.
	* src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
	* src/output.c, src/print.c, src/print_graph.c: Propagate.
	* src/LR0.h, src/LR0.h (final_state): Is a state_t*.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Make the test suite pass with warnings checked.

	* tests/actions.at (Printers and Destructors): Improve.
	Avoid unsigned vs. signed issues.
	* tests/calc.at: Don't exercise the scanner here, do it...
	* tests/input.at (Torturing the Scanner): here.

2002-06-28  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c: Correct typo in Emacs-mode directive.  Slightly
	reorganize first lines parallel to yacc.c.

2002-06-28  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
	(b4_token_enum, b4_token_defines): New, factored from...
	* data/lalr1.cc, data/yacc.c, glr.c: here.

2002-06-28  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
	unused variables.
	* src/output.c (merger_output): static.

2002-06-28  Akim Demaille  <akim@epita.fr>

	* src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
	* src/conflicts.c (conflicts_total_count): `i' is unsigned, to
	pacify GCC.
	* src/output.c (save_row): Initialize all the variables to pacify GCC.

2002-06-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	Accumulated changelog for new GLR parsing features.

	* src/conflicts.c (count_total_conflicts): Change name to
	conflicts_total_count.
	* src/conflicts.h: Ditto.
	* src/output.c (token_actions): Use the new name.
	(output_conflicts): Change conflp => conflict_list_heads, and
	confl => conflict_list for better readability.
	* data/glr.c: Use the new names.
	* NEWS: Add self to GLR announcement.

	* src/reader.c (free_merger_functions): Cleanup: XFREE->free.

	* doc/bison.texinfo (GLR Parsers): Make corrections suggested by
	Akim Demaille.

	* data/bison.glr: Change name to glr.c
	* data/glr.c: Renamed from bison.glr.
	* data/Makefile.am: Add glr.c

	* src/getargs.c:

	* src/symlist.h:  Add dprec and merger fields to symbol_list_s.
	* src/symlist.c (symbol_list_new): Initialize dprec and merger fields.

	Originally 2002-06-16  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.glr: Be sure to restore the
	current #line when returning to the skeleton contents after having
	exposed the input file's #line.

	Originally 2002-06-13  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.glr: Bring up to date with changes to bison.simple.

	Originally 2002-06-03  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.glr: Correct definitions that use b4_prefix.
	Various reformatting.
	(GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
	(yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
	yytokenp argument; now part of stack.
	(yychar): Define to behave as documented.
	(yyclearin): Ditto.

	Originally 2002-05-14  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/reader.h: Add declaration for free_merger_functions.

	* src/reader.c (merge_functions): New variable.
	(get_merge_function): New function.
	(free_merger_functions): New function.
	(readgram): Check for %prec that is not followed by a symbol.
	Handle %dprec and %merge declarations.
	(packgram): Initialize dprec and merger fields in rules array.

	* src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
	conflict_list_cnt, conflict_list_free): New variables.
	(table_grow): Also grow conflict_table.
	(prepare_rules): Output dprec and merger tables.
	(conflict_row): New function.
	(action_row): Output conflict lists for GLR parser.  Don't use
	default reduction in conflicted states for GLR parser so that there
	are spaces for the conflict lists.
	(save_row): Also save conflict information.
	(token_actions): Allocate conflict list.
	(merger_output): New function.
	(pack_vector): Pack conflict table, too.
	(output_conflicts): New function to output yyconflp and yyconfl.
	(output_check): Allocate conflict_tos.
	(output_actions): Output conflict tables, also.
	(output_skeleton): Output b4_mergers definition.
	(prepare): Output b4_max_rhs_length definition.
	Use 'bison.glr' as default skeleton for GLR parsers.

	* src/gram.c (glr_parser): New flag.
	(grammar_free): Call free_merger_functions.

	* src/conflicts.c (count_rr_conflicts): Augment to optionally count
	all pairs of conflicting reductions, rather than just all tokens
	causing conflicts.  Needed to size conflict tables.
	(conflicts_output): Modify call to count_rr_conflicts for new
	interface.
	(conflicts_print): Ditto.
	(count_total_conflicts): New function.

	* src/reader.h (merger_list): New type.
	(merge_functions): New variable.

	* src/lex.h (tok_dprec, tok_merge): New token types.

	* src/gram.h (rule_s): Add dprec and merger fields.
	(glr_parser): New flag.

	* src/conflicts.h (count_total_conflicts): New function.

	* src/options.c (option_table): Add %dprec, %merge, and %glr-parser.

	* doc/bison.texinfo (Generalized LR Parsing): New section.
	(GLR Parsers): New section.
	(Language and Grammar): Mention GLR parsing.
	(Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
	Correct typo ("tge" -> "the").

	* data/bison.glr: New skeleton for GLR parsing.

	* tests/cxx-gram.at: New tests for GLR parsing.

	* tests/testsuite.at: Include cxx-gram.at.

	* tests/Makefile.am: Add cxx-gram.at.

	* src/parse-gram.y:

	* src/scan-gram.l: Add %dprec, %glr-parser, %merge.

	* src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.

2002-06-27  Akim Demaille  <akim@epita.fr>

	* src/options.h, src/options.c: Remove.
	* src/getargs.c (short_options, long_options): New.

2002-06-27  Akim Demaille  <akim@epita.fr>

	* data/bison.simple, data/bison.c++: Rename as...
	* data/yacc.c, data/lalr1.cc: these.
	* doc/bison.texinfo (Environment Variables): Remove.

2002-06-25  Raja R Harinath  <harinath@cs.umn.edu>

	* src/getargs.c (report_argmatch): Initialize strtok().

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_symbol_actions): New, replaces...
	(b4_symbol_destructor, b4_symbol_printer): these.
	(yysymprint): Be sure to call YYPRINT only for tokens, and using
	user token numbers.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yydestructor): Rename as...
	(yydestruct): this.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_type_set)
	(symbol_destructor_set, symbol_precedence_set): The location is
	the last argument.
	Adjust all callers.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
	internals.
	* src/reader.h, src/reader.c (grammar_current_rule_prec_set):
	Takes a location.
	* src/symtab.h, src/symtab.c (symbol_class_set)
	(symbol_user_token_number_set): Likewise.
	Adjust all callers.
	Promote complain_at.
	* tests/input.at (Type Clashes): Adjust.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (YYLEX): Fix the declaration when
	%pure-parser.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yysymprint): Don't print the token number,
	just its name.
	* tests/actions.at (Destructors): Rename as...
	(Printers and Destructors): this.
	Also exercise %printer.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (YYDSYMPRINT): New.
	Use it to remove many of the #if YYDEBUG/if (yydebug).

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_t): printer and
	printer_location are new members.
	(symbol_printer_set): New.
	* src/parse-gram.y (PERCENT_PRINTER): New token.
	Handle its associated rule.
	* src/scan-gram.l: Adjust.
	(handle_destructor_at, handle_destructor_dollar): Rename as...
	(handle_symbol_code_at, handle_symbol_code_dollar): these.
	* src/output.c (symbol_printers_output): New.
	(output_skeleton): Call it.
	* data/bison.simple (yysymprint): New.  Cannot be named yyprint
	since there are already many grammar files with a user `yyprint'.
	Replace the calls to YYPRINT to calls to yysymprint.
	* tests/calc.at: Adjust.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
	taking advantage of parser very internal details (stack size!).

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: Complete the scanner with the missing patterns
	to pacify Flex.
	Use `quote' and `symbol_tag_get' where appropriate.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (Destructors): Augment to test locations.
	* data/bison.simple (yydestructor): Pass it the current location
	if locations are enabled.
	Prototype only when __STDC__ or C++.
	Change the argument names to move into the yy name space: there is
	user code here.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_pure_if): New.
	Use it instead of #ifdef YYPURE.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_location_if): New.
	Use it instead of #ifdef YYLSP_NEEDED.

2002-06-19  Akim Demaille  <akim@epita.fr>

	Prepare @$ in %destructor, but currently don't bind it in the
	skeleton, as %location use is not cleaned up yet.

	* src/scan-gram.l (handle_dollar, handle_destructor_at)
	(handle_action_at): New.
	(handle_at, handle_action_dollar, handle_destructor_dollar): Take
	a braced_code_t and a location as additional arguments.
	(handle_destructor_dollar): Instead of requiring `b4_eval', just
	unquote one when outputting `b4_dollar_dollar'.
	Adjust callers.
	* data/bison.simple (b4_eval): Remove.
	(b4_symbol_destructor): Adjust.
	* tests/input.at (Invalid @n): Adjust.

2002-06-19  Zack Weinberg  <zack@codesourcery.com>

	* doc/bison.texinfo: Document ability to have multiple
	prologue sections.

2002-06-18  Akim Demaille  <akim@epita.fr>

	* src/files.c (compute_base_names): When computing the output file
	names from the input file name, strip the directory part.

2002-06-18  Akim Demaille  <akim@epita.fr>

	* data/bison.simple.new: Comment changes.
	Reported by Andreas Schwab.

2002-06-18  Matt Kraai  <kraai@alumni.cmu.edu>

	* data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
	there are no `label `yyoverflowlab' defined but not used' warnings
	when yyoverflow is defined.

2002-06-18  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
	new member.
	(symbol_destructor_set): Adjust.
	* src/output.c (symbol_destructors_output): Output the destructor
	locations.
	Output the symbol name.
	* data/bison.simple (b4_symbol_destructor): Adjust.

2002-06-18  Cris Bailiff  <c.bailiff@awayweb.com>
	and Akim Demaille  <akim@epita.fr>

	* data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
	what's left on the stack when the error recovery hits EOF.
	* tests/actions.at (Destructors): Complete to exercise this case.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
	arguments is really empty, not only equal to `[]'.
	* src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
	member.
	(symbol_destructor_set): New.
	* src/output.c (symbol_destructors_output): New.
	* src/reader.h (brace_code_t, current_braced_code): New.
	* src/scan-gram.l (BRACED_CODE): Use it to branch on...
	(handle_dollar): Rename as...
	(handle_action_dollar): this.
	(handle_destructor_dollar): New.
	* src/parse-gram.y (PERCENT_DESTRUCTOR): New.
	(grammar_declaration): Use it.
	* data/bison.simple (yystos): Is always defined.
	(yydestructor): New.
	* tests/actions.at (Destructors): New.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* src/symlist.h, src/symlist.c (symbol_list_length): New.
	* src/scan-gram.l (handle_dollar, handle_at): Compute the
	rule_length only when needed.
	* src/output.c (actions_output, token_definitions_output): Output
	the full M4 block.
	* src/symtab.c: Don't access directly to the symbol tag, use
	symbol_tag_get.
	* src/parse-gram.y: Use symbol_list_free.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* src/reader.h, src/reader.c (symbol_list, symbol_list_new)
	(symbol_list_prepend, get_type_name): Move to...
	* src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
	(symbol_list_prepend, symbol_list_n_type_name_get): here.
	Adjust all callers.
	(symbol_list_free): New.
	* src/scan-gram.l (handle_dollar): Takes a location.
	* tests/input.at (Invalid $n): Adjust.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* src/reader.h, src/reader.c (symbol_list_new): Export it.
	(symbol_list_prepend): New.
	* src/parse-gram.y (%union): `list' is a new member.
	(symbols.1): New, replaces...
	(terms_to_prec.1, nterms_to_type.1): these.
	* src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
	Take a location as additional argument.
	Adjust all callers.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y: Move %token in the declaration section so that
	we don't depend upon CVS Bison.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (state_rule_lookaheads_print): New.
	* src/print.c (print_core): Use it.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (log_resolution): Accept the rule involved in
	the sr conflicts instead of the lookahead number that points to
	that rule.
	(flush_reduce): Accept the current lookahead vector as argument,
	instead of the index in LA.
	(resolve_sr_conflict): Accept the current number of lookahead
	bitset to consider for the STATE, instead of the index in LA.
	(set_conflicts): Adjust.
	* src/lalr.c, src/lalr.h, src/state.h: Comment changes.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_t): Replace the `lookaheadsp' member, a
	short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
	Adjust all dependencies.
	* src/lalr.c (initialize_lookaheads): Split into...
	(states_lookaheads_count, states_lookaheads_initialize): these.
	(lalr): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
	out of...
	(grammar_rules_print): here.
	* src/reduce.c (reduce_output): Use it.
	* tests/reduce.at (Useless Rules, Reduced Automaton)
	(Underivable Rules): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	Copy BYacc's nice way to report the grammar.

	* src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
	New.
	Don't print the rules' location, it is confusing and useless.
	(rule_print): Use grammar_rhs_print.
	* src/print.c (print_grammar): Use grammar_rules_print.

2002-06-15  Akim Demaille  <akim@epita.fr>

	Complete and rationalize `useless thing' warnings.

	* src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
	(symbol_tag_print): New.
	Use them everywhere in place of accessing directly the tag member.
	* src/gram.h, src/gram.c (rule_print): New.
	Use it where a rule used to be printed `by hand'.
	* src/reduce.c (nonterminals_reduce): Report the use nonterminals.
	(reduce_grammar_tables): Report the useless rules.
	(reduce_print): Useless things are a warning, not an error.
	Report it as such.
	* tests/reduce.at (Useless Nonterminals, Useless Rules):
	(Reduced Automaton, Underivable Rules): Adjust.
	* tests/regression.at (Web2c Report, Web2c Report): Adjust.
	* tests/conflicts.at (Unresolved SR Conflicts)
	(Solved SR Conflicts): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	Let symbols have a location.

	* src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
	(getsym): Adjust.
	Adjust all callers.
	* src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
	Use location_t, not int.
	* src/symtab.c (symbol_check_defined): Take advantage of the
	location.
	* tests/regression.at (Invalid inputs): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
	(input): Don't try to initialize yylloc here, do it in the
	scanner.
	* src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
	* src/gram.h (rule_t): Change line and action_line into location
	and action_location, of location_t type.
	Adjust all dependencies.
	* src/location.h, src/location.c (empty_location): New.
	* src/reader.h, src/reader.c (grammar_start_symbol_set)
	(grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
	(grammar_current_rule_symbol_append)
	(grammar_current_rule_action_append): Expect a location as argument.
	* src/reader.c (grammar_midrule_action): Adjust to attach an
	action's location as dummy symbol location.
	* src/symtab.h, src/symtab.c (startsymbol_location): New.
	* tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
	the line numbers.

2002-06-14  Akim Demaille  <akim@epita.fr>

	Grammar declarations may be found in the grammar section.

	* src/parse-gram.y (rules_or_grammar_declaration): New.
	(declarations): Each declaration may end with a semicolon, not
	just...
	(grammar_declaration): `"%union"'.
	(grammar): Branch to rules_or_grammar_declaration.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): Invoke scanner_free.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/output.c (m4_invoke): Extracted from...
	(output_skeleton): here.
	Free tempfile.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (directives, directive, gram)
	(grammar_directives, precedence_directives, precedence_directive):
	Rename as...
	(declarations, declaration, grammar, grammar_declaration)
	(precedence_declaration, precedence_declarator): these.
	(symbol_declaration): New.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/files.c (action_obstack): Remove, unused.
	(output_obstack): Remove it, and all its dependencies, as it is no
	longer needed.
	* src/reader.c (epilogue_set): Build the epilogue in the
	muscle_obstack.
	* src/output.h, src/output.c (muscle_obstack): Move to...
	* src/muscle_tab.h, src/muscle_tab.h: here.
	(muscle_init): Initialize muscle_obstack.
	(muscle_free): New.
	* src/main.c (main): Call it.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/location.h: New, extracted from...
	* src/reader.h: here.
	* src/Makefile.am (noinst_HEADERS): Merge into
	(bison_SOURCES): this.
	Add location.h.
	* src/parse-gram.y: Use location_t instead of Bison's.
	* src/reader.h, src/reader.c (prologue_augment, epilogue_set):
	Use location_t instead of ints.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* data/bison.simple, data/bison.c++: Be sure to restore the
	current #line when returning to the skeleton contents after having
	exposed the input file's #line.

2002-06-12  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
	eager.
	* tests/actions.at (Exotic Dollars): New.

2002-06-12  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
	['"/] too eagerly.
	* tests/input.at (Torturing the Scanner): New.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
	[SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
	[SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
	* src/reader.h, src/scan-gram.l (scanner_initialize): this.
	* src/reader.c (reader): Use it.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
	Adjust all callers.
	(scanner_last_string_free): New.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
	(YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
	(last_string, YY_OBS_FREE): New.
	Use them when returning an ID.

2002-06-11  Akim Demaille  <akim@epita.fr>

	Have Bison grammars parsed by a Bison grammar.

	* src/reader.c, src/reader.h (prologue_augment): New.
	* src/reader.c (copy_definition): Remove.

	* src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
	(grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
	(grammar_current_rule_prec_set, grammar_current_rule_check)
	(grammar_current_rule_symbol_append)
	(grammar_current_rule_action_append): Export.
	* src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
	(symbol_list_action_append): Remove.
	Hook the routines from reader.
	* src/scan-gram.l: In INITIAL, characters and strings are tokens.
	* src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.

	* src/reader.c (read_declarations): Remove, unused.

	* src/parse-gram.y: Handle the epilogue.
	* src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
	(grammar_start_symbol_set): this.
	* src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
	* src/reader.c (readgram): Remove, unused.
	(reader): Adjust to insert eoftoken and axiom where appropriate.

	* src/reader.c (copy_dollar): Replace with...
	* src/scan-gram.h (handle_dollar): this.
	* src/parse-gram.y: Remove `%thong'.

	* src/reader.c (copy_at): Replace with...
	* src/scan-gram.h (handle_at): this.

	* src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
	New.

	* src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
	time being.

	* src/reader.h, src/reader.c (grammar_rule_end): New.

	* src/parse.y (current_type, current_class): New.
	Implement `%nterm', `%token' support.
	Merge `%term' into `%token'.
	(string_as_id): New.
	* src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
	type name.

	* src/parse-gram.y: Be sure to handle properly the beginning of
	rules.

	* src/parse-gram.y: Handle %type.
	* src/reader.c (grammar_rule_end): Call grammar_current_rule_check.

	* src/parse-gram.y: More directives support.
	* src/options.c: No longer handle source directives.

	* src/parse-gram.y: Fix %output.

	* src/parse-gram.y: Handle %union.
	Use the prologue locations.
	* src/reader.c (parse_union_decl): Remove.

	* src/reader.h, src/reader.c (epilogue_set): New.
	* src/parse-gram.y: Use it.

	* data/bison.simple, data/bison.c++: b4_stype is now either not
	defined, then default to int, or to the contents of %union,
	without `union' itself.
	Adjust.
	* src/muscle_tab.c (muscle_init): Don't predefine `stype'.

	* src/output.c (actions_output): Don't output braces, as they are
	already handled by the scanner.

	* src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
	characters to themselves.

	* tests/reduce.at (Reduced Automaton): End the grammars with %% so
	that the epilogue has a proper #line.

	* src/parse-gram.y: Handle precedence/associativity.

	* src/symtab.c (symbol_precedence_set): Requires the symbol to be
	a terminal.
	* src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
	* tests/calc.at: Do not use `%token "foo"' as it makes not sense
	at all to define terminals that cannot be emitted.

	* src/scan-gram.l: Escape M4 characters.

	* src/scan-gram.l: Working properly with escapes in user
	strings/characters.

	* tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
	(AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
	grammar.
	Use more modest sizes, as for the time being the parser does not
	release memory, and therefore the process swallows a huge amount
	of memory.

	* tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
	stricter %token grammar.

	* src/symtab.h (associativity): Add `undef_assoc'.
	(symbol_precedence_set): Do nothing when passed an undef_assoc.
	* src/symtab.c (symbol_check_alias_consistence): Adjust.

	* tests/regression.at (Invalid %directive): Remove, as it is now
	meaningless.
	(Invalid inputs): Adjust to the new error messages.
	(Token definitions): The new grammar doesn't allow too many
	eccentricities.

	* src/lex.h, src/lex.c: Remove.
	* src/reader.c (lastprec, skip_to_char, read_signed_integer)
	(copy_character, copy_string2, copy_string, copy_identifier)
	(copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
	(parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
	(parse_action): Remove.
	* po/POTFILES.in: Adjust.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_action): Don't store directly into the
	rule's action member: return the action as a string.
	Don't require `rule_length' as an argument: compute it.
	(grammar_current_rule_symbol_append)
	(grammar_current_rule_action_append): New, eved out from
	(readgram): here.
	Remove `action_flag', `rulelength', unused now.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_current_rule_prec_set).
	(grammar_current_rule_check): New, eved out from...
	(readgram): here.
	Remove `xaction', `first_rhs': useless.
	* tests/input.at (Type clashes): New.
	* tests/existing.at (GNU Cim Grammar): Adjust.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_midrule_action): New, Eved out from
	(readgram): here.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_rule_begin, previous_rule, current_rule):
	New.
	(readgram): Use them as replacement of inlined code, crule and
	crule1.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_end, grammar_symbol_append): New.
	(readgram): Use them.
	Make the use of `p' as local as possible.

2002-06-10  Akim Demaille  <akim@epita.fr>

	GCJ's parser requires the tokens to be defined before the prologue.

	* data/bison.simple: Output the token definition before the user's
	prologue.
	* tests/regression.at (Braces parsing, Duplicate string)
	(Mixing %token styles): Check the output from bison.
	(Early token definitions): New.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_user_token_number_set): Don't complain when
	assigning twice the same user number to a token, so that we can
	use it in...
	* src/lex.c (lex): here.
	Also use `symbol_class_set' instead of hand written code.
	* src/reader.c (parse_assoc_decl): Likewise.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* src/symtab.c, src/symtab.c (symbol_class_set)
	(symbol_user_token_number_set): New.
	* src/reader.c (parse_token_decl): Use them.
	Use a switch instead of ifs.
	Use a single argument.

2002-06-10  Akim Demaille  <akim@epita.fr>

	Remove `%thong' support as it is undocumented, unused, duplicates
	`%token's job, and creates useless e-mail traffic with people who
	want to know what it is, why it is undocumented, unused, and
	duplicates `%token's job.

	* src/reader.c (parse_thong_decl): Remove.
	* src/options.c (option_table): Remove "thong".
	* src/lex.h (tok_thong): Remove.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* src/symtab.c, src/symtab.c (symbol_type_set)
	(symbol_precedence_set): New.
	* src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
	(value_components_used): Remove, unused.

2002-06-09  Akim Demaille  <akim@epita.fr>

	Move symbols handling code out of the reader.

	* src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
	(axiom): Move to...
	* src/symtab.h, src/symtab.c: here.

	* src/gram.c (start_symbol): Remove: use startsymbol->number.
	* src/reader.c (startval): Rename as...
	* src/symtab.h, src/symtab.c (startsymbol): this.
	* src/reader.c: Adjust.

	* src/reader.c (symbol_check_defined, symbol_make_alias)
	(symbol_check_alias_consistence, symbol_pack, symbol_translation)
	(token_translations_init)
	Move to...
	* src/symtab.c: here.
	* src/reader.c (packsymbols): Move to...
	* src/symtab.h, src/symtab.c (symbols_pack): here.
	* src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
	argument.

2002-06-03  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
	then statements.

2002-06-03  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
	structs with non literals.
	* src/scan-skel.l: never-interactive.
	* src/conflicts.c (enum conflict_resolution_e): No trailing
	comma.
	* src/getargs.c (usage): Split long literal strings.
	Reported by Hans Aberg.

2002-05-28  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Use C++ ostreams.
	(cdebug_): New member.

2002-05-28  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): Be sure to allocate enough room
	for `/' _and_ for `\0' in full_skeleton.

2002-05-28  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Catch up with bison.simple:
	2002-05-24  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
	and Paul Eggert  <eggert@twinsun.com>: `error' handing.
	2002-05-26  Akim Demaille  <akim@epita.fr>: stos_, token_number_,
	and popping traces.

2002-05-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/output.c (output_skeleton): Put an explicit path in front of
	the skeleton file name, rather than relying on the -I directory,
	to partially alleviate effects of having a skeleton file lying around
	in the current directory.

2002-05-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/conflicts.c (log_resolution): Correct typo:
	obstack_printf should be obstack_fgrow1.

2002-05-26  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_t): `solved_conflicts' is a new member.
	* src/LR0.c (new_state): Set it to 0.
	* src/conflicts.h, src/conflicts.c (print_conflicts)
	(free_conflicts, solve_conflicts): Rename as...
	(conflicts_print, conflicts_free, conflicts_solve): these.
	Adjust callers.
	* src/conflicts.c (enum conflict_resolution_e)
	(solved_conflicts_obstack): New, used by...
	(log_resolution): this.
	Adjust to attach the conflict resolution to each state.
	Complete the description with the precedence/associativity
	information.
	(resolve_sr_conflict): Adjust.
	* src/print.c (print_state): Output its solved_conflicts.
	* tests/conflicts.at (Unresolved SR Conflicts)
	(Solved SR Conflicts): Exercise --report=all.

2002-05-26  Akim Demaille  <akim@epita.fr>

	* src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
	* src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/reduce.c, src/state.h, src/symtab.h
	(token_number_t, item_number_as_token_number)
	(token_number_as_item_number, muscle_insert_token_number_table):
	Rename as...
	(symbol_number_t, item_number_as_symbol_number)
	(symbol_number_as_item_number, muscle_insert_symbol_number_table):
	these, since it is more appropriate.

2002-05-26  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
	`Error:' lines.
	* data/bison.simple (yystos) [YYDEBUG]: New.
	(yyparse) [YYDEBUG]: Display the symbols which are popped during
	error recovery.
	* tests/regression.at (Web2c Actions): Adjust: yystos is output now.

2002-05-25  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Debugging): Split into...
	(Tracing): this new section, its former contents, and...
	(Understanding): this new section.
	* src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
	by...
	(report_flag): this.
	Adjust all dependencies.
	(report_args, report_types, report_argmatch): New.
	(usage, getargs): Report/support -r, --report.
	* src/options.h
	(struct option_table_struct): Rename as..,
	(struct option_table_s): this.
	Rename the `set_flag' member to `flag' to match with getopt_long's
	struct.
	* src/options.c (option_table): Split verbose into an entry for
	%verbose, and another for --verbose.
	Support --report/-r, so remove -r from the obsolete --raw.
	* src/print.c: Attach full item sets and lookaheads reports to
	report_flag instead of trace_flag.
	* lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.

2002-05-24  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
	and Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple (yyparse): Correct error handling to conform to
	POSIX and yacc.  Specifically, after syntax error is discovered,
	do not reduce further before shifting the error token.
	Clean up the code a bit by removing the labels yyerrdefault,
	yyerrhandle, yyerrpop.
	* NEWS: Document the above.

2002-05-20  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.simple (yyr1): Don't use yy_token_number_type as element
	type; it isn't always big enough, since it doesn't necessarily
	include non-terminals.
	(yytranslate): Expand definition of yy_token_number_type, so that
	the latter can be removed.
	(yy_token_number_type): Remove, only one use.
	* data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
	don't use TokenNumberType as element type.

	* tests/regression.at: Modify expected output to agree with change
	to yyr1 and yytranslate.

2002-05-13  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* src/reader.c (parse_action): Use copy_character instead of
	obstack_1grow.

2002-05-13  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Token definitions): Prototype yylex and
	yyerror.

2002-05-12  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/scan-skel.l: Correct off-by-one error in handling of __oline__.
	* data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
	32-bit arithmetic.
	* data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.

2002-05-07  Akim Demaille  <akim@epita.fr>

	* tests/synclines.at: Be sure to prototype yylex and yyerror to
	avoid GCC warnings.

2002-05-07  Akim Demaille  <akim@epita.fr>

	Kill GCC warnings.

	* src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
	over the RHS of each rule.
	* src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
	* src/state.h (state_t): Member `nitems' is unsigned short.
	* src/LR0.c (get_state): Adjust.
	* src/reader.c (packgram): Likewise.
	* src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
	`Type'.
	(muscle_insert_int_table): Remove, unused.
	(prepare_rules): Remove `max'.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_firsts): Display of the symbol tags.
	(bitmatrix_print): Move to...
	* lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
	here.
	* tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_m4_output): Must return TRUE for
	hash_do_for_each.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state, get_state): Instead of using the global
	`kernel_size' and `kernel_base', have two new arguments:
	`core_size' and `core'.
	Adjust callers.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/reader.c (packgram): No longer end `ritem' with a 0
	sentinel: it is not used.

2002-05-05  Akim Demaille  <akim@epita.fr>

	New experimental feature: display the lookaheads in the report and
	graph.

	* src/print (print_core): When --trace-flag, display the rules
	lookaheads.
	* src/print_graph.c (print_core): Likewise.
	Swap the arguments.
	Adjust caller.

2002-05-05  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (Many lookaheads): New test.

2002-05-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
	(GENERATE_MUSCLE_INSERT_TABLE): this.
	(output_int_table, output_unsigned_int_table, output_short_table)
	(output_token_number_table, output_item_number_table): Replace with...
	(muscle_insert_int_table, muscle_insert_unsigned_int_table)
	(muscle_insert_short_table, muscle_insert_token_number_table)
	(muscle_insert_item_number_table): these.
	Adjust all callers.
	(prepare_tokens): Don't free `translations', since...
	* src/reader.h, src/reader.c (grammar_free): do it.
	Move to...
	* src/gram.h, src/gram.c (grammar_free): here.
	* data/bison.simple, data/bison.c++: b4_token_number_max is now
	b4_translate_max.

2002-05-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_unsigned_int_table): New.
	(prepare_rules): `i' is unsigned.
	`prhs', `rline', `r2' are unsigned int.
	Rename muscle `rhs_number_max' as `rhs_max'.
	Output muscles `prhs_max', `rline_max', and `r2_max'.
	Free rline and r1.
	* data/bison.simple, data/bison.c++: Adjust to use these muscles
	to compute types instead of constant types.
	* tests/regression.at (Web2c Actions): Adjust.

2002-05-04  Akim Demaille  <akim@epita.fr>

	* src/symtab.h (SALIAS, SUNDEF): Rename as...
	(USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
	Adjust dependencies.
	* src/output.c (token_definitions_output): Be sure not to output a
	`#define 'a'' when fed with `%token 'a' "a"'.
	* tests/regression.at (Token definitions): New.

2002-05-03  Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
	for K&R C.

2002-05-03  gettextize  <bug-gnu-gettext@gnu.org>

	* Makefile.am (SUBDIRS): Remove intl.
	(EXTRA_DIST): Add config/config.rpath.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (m4_if): Don't output empty enums.
	And actually, output valid enum definitions :(.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* configure.bat: Remove, completely obsolete.
	* Makefile.am (EXTRA_DIST): Adjust.
	Don't distribute config.rpath...
	* config/Makefile.am (EXTRA_DIST): Do it.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* configure.in (GETTEXT_VERSION): New.
	Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_token_enum): New.
	(b4_token_defines): Use it to output tokens both as #define and
	enums.
	Suggested by Paul Eggert.
	* src/output.c (token_definitions_output): Don't output spurious
	white spaces.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.

2002-05-02  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
	Update the stack class, give a try to deque as the default container.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yyparse): Do not implement @$ = @1.
	(YYLLOC_DEFAULT): Adjust to do it.
	* doc/bison.texinfo (Location Default Action): Fix.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_braces): Merge into...
	(parse_action): this.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* configure.in (ALL_LINGUAS): Remove.
	* po/LINGUAS, hr.po: New.

2002-05-02  Akim Demaille  <akim@epita.fr>

	Remove the so called hairy (semantic) parsers.

	* src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
	* src/gram.h, src/gram.c (semantic_parser): Remove.
	(rule_t): Remove the guard and guard_line members.
	* src/lex.h (token_t): remove tok_guard.
	* src/options.c (option_table): Remove %guard and %semantic_parser
	support.
	* src/output.c, src/output.h (guards_output): Remove.
	(prepare): Adjust.
	(token_definitions_output): Don't output the `T'
	tokens (???).
	(output_skeleton): Don't output the guards.
	* src/files.c, src/files.c (attrsfile): Remove.
	* src/reader.c (symbol_list): Remove the guard and guard_line
	members.
	Adjust dependencies.
	(parse_guard): Remove.
	* data/bison.hairy: Remove.
	* doc/bison.texinfo (Environment Variables): Remove occurrences of
	BISON_HAIRY.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
	(parse_guard): Rename the formal argument `stack_offset' as
	`rule_length', which is more readable.
	Adjust callers.
	(copy_at, copy_dollar): Instead of outputting the hard coded
	values of $$, $n and so forth, output invocation to b4_lhs_value,
	b4_lhs_location, b4_rhs_value, and b4_rhs_location.
	Note: this patch partially drops `semantic-parser' support: it
	always does `rule_length - n', where semantic parsers ought to
	always use `-n'.
	* data/bison.simple, data/bison.c++ (b4_lhs_value)
	(b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* configure.in (AC_INIT): Bump to 1.49b.
	(AM_INIT_AUTOMAKE): Short invocation.

2002-05-02  Akim Demaille  <akim@epita.fr>

	Version 1.49a.

2002-05-01  Akim Demaille  <akim@epita.fr>

	* src/skeleton.h: Remove.

2002-05-01  Akim Demaille  <akim@epita.fr>

	* src/skeleton.h: Fix the #endif.
	Reported by Magnus Fromreide.

2002-04-26  Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
	Define if we define YYSTYPE and YYLTYPE, respectively.
	(YYCOPY): Fix [] quoting problem in the non-GCC case.

2002-04-25  Robert Anisko  <robert@lrde.epita.fr>

	* src/scan-skel.l: Postprocess quadrigraphs.

	* src/reader.c (copy_character): New function, used to output
	single characters while replacing `[' and `]' with quadrigraphs, to
	avoid troubles with M4 quotes.
	(copy_comment): Output characters with copy_character.
	(read_additionnal_code): Likewise.
	(copy_string2): Likewise.
	(copy_definition): Likewise.

	* tests/calc.at: Exercise M4 quoting.

2002-04-25  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
	between `!' and the command.
	Reported by Paul Eggert.

2002-04-24  Robert Anisko  <robert@lrde.epita.fr>

	* tests/calc.at: Exercise prologue splitting.

	* data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
	`b4_post_prologue' instead of `b4_prologue'.

	* src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
	muscles.
	(output): Free pre_prologue_obstack and post_prologue_obstack.
	* src/files.h, src/files.c (attrs_obstack): Remove.
	(pre_prologue_obstack, post_prologue_obstack): New.
	* src/reader.c (copy_definition): Add a parameter to specify the
	obstack to fill, instead of using attrs_obstack unconditionally.
	(read_declarations): Pass pre_prologue_obstack to copy_definition if
	`%union' has not yet been seen, pass post_prologue_obstack otherwise.

2002-04-23  Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple: Remove unnecessary commentary and white
	space differences from 1_29-branch.
	Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).

	(union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
	YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
	if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
	constructors or destructors.

	(yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.

2002-04-23  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
	* tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
	location with columns.
	* tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
	All reported by Paul Eggert.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (dump_grammar): Move to...
	* src/gram.h, src/gram.c (grammar_dump): here.
	Be sure to separate long item numbers.
	Don't read the members of a rule's prec if its nil.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/output.c (table_size, table_grow): New.
	(MAXTABLE): Remove, replace uses with table_size.
	(pack_vector): Instead of dying when the table is too big, grow it.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yyr1): Its type is that of a token number.
	* data/bison.c++ (r1_): Likewise.
	* tests/regression.at (Web2c Actions): Adjust.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/reader.c (token_translations_init): 256 is now the default
	value for the error token, i.e., it will be assigned another
	number if the user assigned 256 to one of her tokens.
	(reader): Don't force 256 to error.
	* doc/bison.texinfo (Symbols): Adjust.
	* tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
	(AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
	etc. instead of 10, 20, 30 (which was used to `jump' over error
	(256) and undefined (2)).

2002-04-22  Akim Demaille  <akim@epita.fr>

	Propagate more token_number_t.

	* src/gram.h (token_number_as_item_number)
	(item_number_as_token_number): New.
	* src/output.c (GENERATE_OUTPUT_TABLE): New.
	Use it to create output_item_number_table and
	output_token_number_table.
	* src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
	* src/lex.c, src/nullable.c, src/output.c, src/print.c,
	* src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
	* src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/output.h, src/output.c (get_lines_number): Remove.

2002-04-19  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Actions): Make clear that `|' is not the same
	as Lex/Flex'.
	(Debugging): More details about enabling the debugging features.
	(Table of Symbols): Describe $$, $n, @$, and @n.
	Suggested by Tim Josling.

2002-04-19  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Remove the uses of the obsolete @refill.

2002-04-10  Akim Demaille  <akim@epita.fr>

	* src/system.h: Rely on HAVE_LIMITS_H.
	Suggested by Paul Eggert.

2002-04-09  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
	full stderr, and strip it according to the bison options, instead
	of composing the error message from different bits.
	This makes it easier to check for several error messages.
	Adjust all the invocations.
	Add an invocation exercising the error token.
	Add an invocation demonstrating a stupid error message.
	(_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
	Adjust the tests.
	Error message are for stderr, not stdout.

2002-04-09  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (error_token_number): Remove, use
	errtoken->number.
	* src/reader.c (reader): Don't specify the user token number (2)
	for $undefined, as it uselessly prevents using it.
	* src/gram.h (token_number_t): Move to...
	* src/symtab.h: here.
	(state_t.number): Is a token_number_t.
	* src/print.c, src/reader.c: Use undeftoken->number instead of
	hard coded 2.
	(Even though this 2 is not the same as above: the number of the
	undeftoken remains being 2, it is its user token number which
	might not be 2).
	* src/output.c (prepare_tokens): Rename the `maxtok' muscle with
	`user_token_number_max'.
	Output `undef_token_number'.
	* data/bison.simple, data/bison.c++: Use them.
	Be sure to map invalid yylex return values to
	`undef_token_number'.  This saves us from gratuitous SEGV.

	* tests/conflicts.at (Solved SR Conflicts)
	(Unresolved SR Conflicts): Adjust.
	* tests/regression.at (Web2c Actions): Adjust.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
	Adding #line.
	Remove the duplicate `typedefs'.
	(RhsNumberType): Fix the declaration and various other typos.
	Use __ofile__.
	* data/bison.simple: Use __ofile__.
	* src/scan-skel.l: Handle __ofile__.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* src/gram.h (item_number_t): New, the type of item numbers in
	RITEM.  Note that it must be able to code symbol numbers as
	positive number, and the negation of rule numbers as negative
	numbers.
	Adjust all dependencies (pretty many).
	* src/reduce.c (rule): Remove this `short *' pointer: use
	item_number_t.
	* src/system.h (MINSHORT, MAXSHORT): Remove.
	Include `limits.h'.
	Adjust dependencies to using SHRT_MAX and SHRT_MIN.
	(shortcpy): Remove.
	(MAXTABLE): Move to...
	* src/output.c (MAXTABLE): here.
	(prepare_rules): Use output_int_table to output rhs.
	* data/bison.simple, data/bison.c++: Adjust.
	* tests/torture.at (Big triangle): Move the limit from 254 to
	500.
	* tests/regression.at (Web2c Actions): Ajust.

	Trying with bigger grammars shows various phenomena: at 3000 (28Mb
	of grammar file) bison is killed by my system, at 2000 (12Mb) bison
	passes, but produces negative #line number, once fixed, GCC is
	killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
	C), it passes.
	* src/state.h (state_h): Code input lines on ints, not shorts.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_grammar): First reduce the nonterminals,
	and then the grammar.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* src/system.h: No longer using strndup.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
	* src/output.c (output_table_data): Return the longest number.
	(prepare_tokens): Output `token_number_max').
	* data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
	New.
	Use them to define yy_token_number_type/TokenNumberType.
	Use this type for yytranslate.
	* tests/torture.at (Big triangle): Push the limit from 124 to
	253.
	* tests/regression.at (Web2c Actions): Adjust.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (Big triangle): New.
	(GNU AWK Grammar, GNU Cim Grammar): Move to...
	* tests/existing.at: here.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (nitems): Remove, it is an alias of
	nritems.
	Adjust dependencies.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/reader.c: Normalize increments to prefix form.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/reader.c, symtab.c: Remove debugging code.

2002-04-07  Akim Demaille  <akim@epita.fr>

	Rename all the `bucket's as `symbol_t'.

	* src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
	* src/reader.c, src/reader.h, src/reduce.c, src/state.h,
	* src/symtab.c, src/symtab.h (bucket): Rename as...
	(symbol_t): this.
	(symbol_list_new, bucket_check_defined, bucket_make_alias)
	(bucket_check_alias_consistence, bucket_pack, bucket_translation)
	(bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
	(buckets_new, buckets_free, buckets_do): Rename as...
	(symbol_list_new, symbol_check_defined, symbol_make_alias)
	(symbol_check_alias_consistence, symbol_pack, symbol_translation)
	(symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
	(symbols_new, symbols_free, symbols_do): these.

2002-04-07  Akim Demaille  <akim@epita.fr>

	Use lib/hash for the symbol table.

	* src/gram.c (ntokens): Initialize to 1, to reserve a slot for
	EOF.
	* src/lex.c (lex): Set the `number' member of new terminals.
	* src/reader.c (bucket_check_defined, bucket_make_alias)
	(bucket_check_alias_consistence, bucket_translation): New.
	(reader, grammar_free, readgram, token_translations_init)
	(packsymbols): Adjust.
	(reader): Number the predefined tokens.
	* src/reduce.c (inaccessable_symbols): Just use hard coded numbers
	for predefined tokens.
	* src/symtab.h (bucket): Remove all the hash table related
	members.
	* src/symtab.c (symtab): Replace by...
	(bucket_table): this.
	(bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
	(buckets_new, buckets_do): New.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
	(start_symbol, max_user_token_number, semantic_parser)
	(error_token_number): Initialize.
	* src/reader.c (grammar, start_flag, startval, typed, lastprec):
	Initialize.
	(reader): Don't.
	(errtoken, eoftoken, undeftoken, axiom): Extern.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_s): prec and precsym are now pointers
	to the bucket giving the priority/associativity.
	Member `associativity' removed: useless.
	* src/reduce.c, src/conflicts.c: Adjust.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
	Properly escape the symbols' TAG when outputting them.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (LA): Is a bitsetv, not bitset*.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/lalr.h, src/lalr.c (LAruleno): Replace with...
	(LArule): this, which is an array to rule_t*.
	* src/print.c, src/conflicts.c: Adjust.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): Rename `number' as `user_number'.
	`number' is a new member.
	Adjust dependencies.
	* src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.

2002-04-07  Akim Demaille  <akim@epita.fr>

	As a result of the previous patch, it is no longer needed
	to reorder ritem itself.

	* src/reduce.c (reduce_grammar_tables): Don't sort RITEM.

2002-04-07  Akim Demaille  <akim@epita.fr>

	Be sure never to walk through RITEMS, but use only data related to
	the rules themselves. RITEMS should be banished.

	* src/output.c (output_token_translations): Rename as...
	(prepare_tokens): this.
	In addition to `translate', prepare the muscles `tname' and
	`toknum', which were handled by...
	(output_rule_data): this.
	Remove, and move the remainder of its outputs into...
	(prepare_rules): this new routines, which also merges content from
	(output_gram): this.
	(prepare_rules): Be sure never to walk through RITEMS.
	(output_stos): Rename as...
	(prepare_stos): this.
	(output): Always invoke prepare_states, after all, just don't use it
	in the output if you don't need it.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state): Display `nstates' as the name of the
	newly created state.
	Adjust to initialize first_state and last_state if needed.
	Be sure to distinguish the initial from the final state.
	(new_states): Create the itemset of the initial state, and use
	new_state.
	* src/closure.c (closure): Now that the initial state has its
	items properly set, there is no need for a special case when
	creating `ruleset'.

	As a result, now the rule 0, reducing to $axiom, is visible in the
	outputs.  Adjust the test suite.

	* tests/conflicts.at (Solved SR Conflicts)
	(Unresolved SR Conflicts): Adjust.
	* tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
	* tests/conflicts.at (S/R in initial): New.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
	the RHS of the rules.
	* src/output.c (output_gram): Likewise.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
	bucket.
	Adjust all dependencies.
	* src/reduce.c (nonterminals_reduce): Don't forget to renumber the
	`number' of the buckets too.
	* src/gram.h: Include `symtab.h'.
	(associativity): Move to...
	* src/symtab.h: here.
	No longer include `gram.h'.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (rules_rhs_length): New.
	(ritem_longest_rhs): Use it.
	* src/gram.h (rule_t): `number' is a new member.
	* src/reader.c (packgram): Set it.
	* src/reduce.c (reduce_grammar_tables): Move the useless rules at
	the end of `rules', and count them out of `nrules'.
	(reduce_output, dump_grammar): Adjust.
	* src/print.c (print_grammar): It is no longer needed to check for
	the usefulness of a rule, as useless rules are beyond `nrules + 1'.
	* tests/reduce.at (Reduced Automaton): New test.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
	lacking `+ 1' to nrules, Bison reported as useless a token if it
	was used solely to set the precedence of the last rule...

2002-04-07  Akim Demaille  <akim@epita.fr>

	* data/bison.c++, data/bison.simple: Don't output the current file
	name in #line, to avoid useless diffs between two identical
	outputs under different names.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/print.c, src/reader.c, src/reduce.c:
	Normalize loops to using `< nrules + 1', not `<= nrules'.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* TODO: Update.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
	bucket.value as bucket.number.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
	* src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
	RHS, instead of being an index in RITEMS.

2002-04-04  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo: Update copyright date.
	(Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
	(Symbols): Warn about running Bison in one character set,
	but compiling and/or running in an incompatible one.
	Warn about character code 256, too.

2002-04-03  Paul Eggert  <eggert@twinsun.com>

	* src/bison.data (YYSTACK_ALLOC): Depend on whether
	YYERROR_VERBOSE is nonzero, not whether it is defined.

	Merge changes from bison-1_29-branch.

2002-03-20  Paul Eggert  <eggert@twinsun.com>

	Merge fixes from Debian bison_1.34-1.diff.

	* configure.in (AC_PREREQ): 2.53.

2002-03-20  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (log_resolution): Argument `resolution' is const.

2002-03-19  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYCOPY): New macro.
	(YYSTACK_RELOCATE): Use it.
	Remove Type arg; no longer needed.  All callers changed.
	(yymemcpy): Remove; no longer needed.

	* Makefile.am (AUTOMAKE_OPTIONS): 1.6.
	* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.

2002-03-19  Akim Demaille  <akim@epita.fr>

	Test and fix the #line outputs.

	* tests/atlocal.at (GCC): New.
	* tests/synclines.at (AT_TEST_SYNCLINE): New macro.
	(Prologue synch line, %union synch line, Postprologue synch line)
	(Action synch line, Epilogue synch line): New tests.
	* src/reader.c (parse_union_decl): Define the muscle stype_line.
	* data/bison.simple, data/bison.c++: Use it.

2002-03-19  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
	(Solved SR Conflicts, %expect not enough, %expect right)
	(%expect too much): Move to...
	* tests/conflicts.at: this new file.

2002-03-19  Akim Demaille  <akim@epita.fr>

	* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
	* data/bison.simple, data/bison.c++: Handle the `#define' part, so
	that we can move to enums for instance.
	* src/output.c (token_definitions_output): Output a list of
	`token-name, token-number' instead of the #define.
	(output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.

2002-03-14  Akim Demaille  <akim@epita.fr>

	Use Gettext 0.11.1.

2002-03-09  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Make the user able to add members to the generated
	parser by subclassing.

2002-03-05  Robert Anisko  <robert@lrde.epita.fr>

	* src/reader.c (read_additionnal_code): `c' should be an integer, not
	a character.
	Reported by Nicolas Tisserand and Nicolas Burrus.

2002-03-04  Robert Anisko  <robert@lrde.epita.fr>

	* src/reader.c: Warn about lacking semi-colons, do not complain.

2002-03-04  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Remove a debug line.

2002-03-04  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Unmerge value as yylval and value as yyval.  Unmerge
	location as yylloc and location as yyloc.  Use YYLLOC_DEFAULT, and
	provide a default implementation.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
	* tests/output.at (AT_CHECK_OUTPUT): Likewise.
	* tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
	* tests/semantic.at (Parsing Guards): Similarly.
	* src/reader.at (readgram): Complain if the last rule is not ended
	with a semi-colon.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
	* src/closure.c: here.
	(set_firsts): Use bitsetv_reflexive_transitive_closure instead of
	RTC.
	* src/warshall.h, src/warshall.c: Remove.
	* tests/sets.at (Broken Closure): Adjust.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): tempdir is const.
	bytes_read is unused.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
	* lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
	Update.
	From Michael Hayes.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): `r' is unused.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (Broken Closure): Add the ending `;'.
	* src/reader.at (readgram): Complain if a rule is not ended with a
	semi-colon.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
	(count_sr_conflicts): Use bitset_count.
	* src/reduce.c (inaccessable_symbols): Ditto.
	(bits_size): Remove.
	* src/warshall.h, src/warshall.c: Convert to bitsetv.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
	* src/reduce.c: Remove the `bitset_zero's following the
	`bitset_create's, as now it is performed by the latter.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
	* lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
	* lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
	latest sources from Michael.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/output.c (output): Don't free the grammar.
	* src/reader.c (grammar_free): New.
	* src/main.c (main): Call it and don't free symtab here.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
	before returning.
	Reported by Benoit Perrot.

2002-03-04  Akim Demaille  <akim@epita.fr>

	Use bitset operations when possible, not loops over bits.

	* src/conflicts.c (set_conflicts, count_sr_conflicts): Use
	bitset_or.
	* src/print.c (print_reductions): Use bitset_and, bitset_andn.
	* src/reduce.c (useless_nonterminals): Formatting changes.
	* src/warshall.c (TC): Use bitset_or.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
	* src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
	Ditto.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (F): Now a bitset*.
	Adjust all dependencies.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (shiftset, lookaheadset): Now bitset.
	Adjust all dependencies.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/L0.c, src/LR0.h (nstates): Be size_t.
	Adjust comparisons (signed vs unsigned).
	* src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
	bitset*.
	Adjust all dependencies.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c (firsts): Now, also a bitset.
	Adjust all dependencies.
	(varsetsize): Remove, now unused.
	* src/warshall.h, src/warshall.c: Now work on arrays of bitsets.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/print.c: Convert to use bitset.h, not hand coded iterations
	over ints.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/reduce.c: Convert to use bitset.h, not hand coded BSet.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c (ruleset): Be a bitset.
	(rulesetsize): Remove.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
	* lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
	* lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
	* src/closure.c (fderives): Be an array of bitsets.

2002-02-28  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Merge the two generated headers.  Insert a copyright
	notice in each output file.

2002-02-28  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Copy the prologue of bison.simple to fetch
	useful M4 definitions, such as b4_header_guard.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (version): Give the name of the authors, and use a
	translator friendly scheme for the bgr
	copyright notice.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* src/output.c (header_output): Remove, now handled completely via
	M4.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* m4/m4.m4: New, from CVS Autoconf.
	* configure.in: Invoke it.
	* src/output.c (output_skeleton): Use its result instead of the
	hard coded name.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
	Fileutils 4.1.5.
	* configure.in: Invoke UTILS_FUNC_MKSTEMP.
	* src/output.c (output_skeleton): Use mkstemp to create a real
	temporary file.
	Move the filling of `skeleton' and its muscle to...
	(prepare): here.
	(output): Move the definition of the prologue muscle to...
	(prepare): here.
	* src/system.h (DEFAULT_TMPDIR): New.

2002-02-14  Paul Eggert  <eggert@twinsun.com>

	Remove the support for C++ namespace cleanliness; it was
	causing more problems than it was curing, since it didn't work
	properly on some nonstandard C++ compilers.  This can wait
	for a proper C++ parser.

	* NEWS: Document this.
	* doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
	of C++, as it's treated like C now.
	* src/bison.simple (YYSTD): Remove.
	(YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
	Treat C++ just like Standard C instead of trying to support
	namespace cleanliness.

2002-02-14  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (else): Adjust to Andreas' change.

2002-02-14  Akim Demaille  <akim@epita.fr>

	* lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.

2002-02-13  Andreas Schwab  <schwab@suse.de>

	* src/output.c (output_rule_data): Don't output NULL, it might
	not be defined yet.

2002-02-11  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
	(Copyright notice): Update.

2002-02-11  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (%nonassoc and eof): Don't include
	nonportable headers.

2002-02-08  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Correct error recovery.  Make the user able to
	initialize the starting location.

2002-02-07  Akim Demaille  <akim@epita.fr>

	* tests/input.at: New.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Replace some direct m4 expansions by constants.  Be
	more consistent when naming methods and variables.  Put preprocessor
	directives around tables only needed for debugging.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
	C++ parsers.
	(yy::b4_name::parse): Use print_.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (yy::b4_name::parse): Error recovery is back.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
	C++ parsers.
	(yy::b4_name::parse): Build verbose error messages, and use error_.

2002-02-06  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Fix m4 quoting in comments.

2002-02-06  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Adjust the parser code.  Fix some muscles that were
	not expanded by m4.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Adjust to the M4 back end.
	More is certainly needed.

2002-02-05  Akim Demaille  <akim@epita.fr>

	Give a try to M4 as a back end.

	* lib/readpipe.c: New, from wdiff.
	* src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
	BISON_HAIRY.
	* src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
	specific values.  Now it is m4 that performs the lookup.
	* src/parse-skel.y: Remove.
	* src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
	* src/output.c (actions_output, guards_output)
	(token_definitions_output): No longer keeps track of the output
	line number, hence remove the second argument.
	(guards_output): Check against the guard member of a rule, not the
	action member.
	Adjust callers.
	(output_skeleton): Don't look for the skeleton location, let m4 do
	that.
	Create `/tmp/muscles.m4'.  This is temporary, a proper temporary
	file will be used.
	Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
	(prepare): Given that for the time being changesyntax is not
	usable in M4, rename the muscles using `-' to `_'.
	Define `defines_flag', `output_parser_name' and `output_header_name'.
	* src/output.h (actions_output, guards_output)
	(token_definitions_output): Adjust prototypes.
	* src/scan-skel.l: Instead of scanning the skeletons, it now
	processes the output of m4: `__oline__' and `#output'.
	* data/bison.simple: Adjust to be used by M4(sugar).
	* tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
	to date.
	* tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
	instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
	* data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
	shamelessly stolen from CVS Autoconf.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
	* configure.in: Check for the declarations of free and malloc.
	* src/muscle_tab.c: Adjust.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_init): Don't default to NULL muscle
	which have no values.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
	* data/: here.

2002-01-29  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSIZE_T): Do not define merely because
	YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
	On some platforms, <alloca.h> does not declare YYSTD (size_t).

2002-01-27  Akim Demaille  <akim@epita.fr>

	Fix `%nonassoc and eof'.

	* src/state.c (errs_dup): Aaaah!  The failure was due to bytes
	which were not properly copied!  Replace
	memcpy (res->errs, src->errs, src->nerrs);
	with
	memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
	!!!
	* tests/regression.at (%nonassoc and eof): Adjust to newest
	Autotest: `.' is not in the PATH.

2002-01-27  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (AT_EXTRACT_SETS): New.
	(Nullable): Use it.
	(Firsts): New.

2002-01-26  Akim Demaille  <akim@epita.fr>

	* tests/actions.at, tests/calc.at, tests/headers.at,
	* tests/torture.at: Adjust to the newest Autotest which no longer
	forces `.' in the PATH.

2002-01-25  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (%nonassoc and eof): New.
	Suggested by Robert Anisko.

2002-01-24  Akim Demaille  <akim@epita.fr>

	Bison dumps core when trying to complain about broken input files.
	Reported by Cris van Pelt.

	* src/lex.c (parse_percent_token): Be sure to set token_buffer.
	* tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
	into...
	(Invalid inputs): Strengthen: exercise parse_percent_token.

2002-01-24  Robert Anisko  <robert.anisko@epita.fr>

	* src/Makefile.am: Add bison.c++.
	* src/bison.c++: New skeleton.

2002-01-21  Paolo Bonzini <bonzini@gnu.org>

	* po/it.po: New.

2002-01-21  Kees Zeelenberg  <kzlg@users.sourceforge.net>

	* src/files.c (skeleton_find) [MSDOS]: Fix cp definition.

2002-01-20  Marc Autret  <marc@gnu.org>

	* src/files.c (compute_output_file_names): Fix

2002-01-20  Marc Autret  <marc@gnu.org>

	* tests/output.at: New test.
	* src/files.c (compute_base_names): Don't map extensions when
	the YACC flag is set, use defaults.
	Reported by Evgeny Stambulchik.

2002-01-20  Marc Autret  <marc@gnu.org>

	* src/system.h: Need to define __attribute__ away for non-GCC
	compilers as well (i.e., the vendor C compiler).
	Suggested by Albert Chin-A-Young.

2002-01-11  Tim Van Holder  <tim.van.holder@pandora.be>

	* lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
	canonical definition.
	* src/system.h: Use the canonical definition for PARAMS (avoids
	a conflict with the macro from lib/hash.h).

2002-01-11  Akim Demaille  <akim@epita.fr>

	* configure.in: Use AC_FUNC_STRNLEN.
	Fixes the failures observed on AIX 4.3 by H.Merijn Brand.

2002-01-09  Akim Demaille  <akim@epita.fr>

	* src/files.c, src/files.h (output_infix): New.
	(tab_extension): Remove.
	(compute_base_names): Compute the former, drop the latter.
	* src/output.c (prepare): Insert the muscles `output-infix', and
	`output-suffix'.
	* src/parse-skel.y (string, string.1): New.
	(section.header): Use it.
	(section.yacc): Remove.
	(prefix): Remove too.
	* src/scan-skel.l: Adjust.
	* src/bison.simple, src/bison.hairy: Adjust.

2002-01-09  Akim Demaille  <akim@epita.fr>

	* configure.in (WERROR_CFLAGS): Compute it.
	* src/Makefile.am (CFLAGS): Pass it.
	* tests/atlocal.in (CFLAGS): Idem.
	* src/files.c: Fix a few warnings.
	(get_extension_index): Remove, unused.

2002-01-08  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (AS_FILE_NAME): New.
	(getargs): Use it to convert DOSish file names.
	* src/files.c (base_name): Rename as full_base_name to avoid
	clashes with `base_name ()'.
	(filename_split): New.
	(compute_base_names): N-th rewrite, using filename_split.

2002-01-08  Akim Demaille  <akim@epita.fr>

	* lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
	New, stolen from the Fileutils 4.1.
	* lib/Makefile.am (libbison_a_SOURCES): Adjust.
	* configure.in: Check for the presence of memrchr, and of its
	prototype.

2002-01-07  Tim Van Holder  <tim.van.holder@pandora.be>

	* lib/hash.h (__P): Added definition for this macro.
	* src/Makefile.am: Add parse-skel.c and scan-skel.c to
	BUILT_SOURCES, to ensure they are generated first.
	* src/parse-skel.y: Use YYERROR_VERBOSE instead of
	%error-verbose to allow bootstrapping with bison 1.30x.

2002-01-06  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_braces): Don't fetch the next char, the
	convention is to fetch on entry.
	* tests/torture.at (GNU Cim Grammar): Reintroduce their weird
	'switch' without a following semicolon.
	* tests/regression.at (braces parsing): New.

2002-01-06  Akim Demaille  <akim@epita.fr>

	Bison is dead wrong in its RR conflict reports.

	* tests/torture.at (GNU Cim Grammar): New.
	* src/conflicts.c (count_rr_conflicts): Fix.

2002-01-06  Akim Demaille  <akim@epita.fr>

	Creating package.m4 from configure.ac causes too many problems.

	* tests/Makefile.am (package.m4): Create it by hand,
	AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.

2002-01-06  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (bison_SOURCES): Add parse-skel.h and
	skeleton.h.

2002-01-04  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Debugging):
	Remove YYSTDERR; it's no longer defined or used.
	Also, s/cstdio.h/cstdio/.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* src/parse-skel.y (process_skeleton): Don't bind the parser's
	tracing code to --trace, wait for a better --trace option, with
	args.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTDERR): Remove, replace `stderr'.
	The ISO C++ standard is extremely clear about it: stderr is
	considered a macro, not a regular symbol (see table 94 `Header
	<cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
	Therefore std:: does not apply to it.  It still does with fprintf.
	Also, s/cstdio.h/cstdio/.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
	for non system headers.

2002-01-02  Akim Demaille  <akim@epita.fr>

	Equip the skeleton chain with location tracking, runtime trace,
	pure parser and scanner.

	* src/parse-skel.y: Request a pure parser, locations, and prefix
	renaming.
	(%union): Having several members with the same type does not help
	type mismatches, simplify.
	(YYPRINT, yyprint): New.
	(yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
	(skel_error): this.
	Handle locations.
	* src/scan-skel.l: Adjust to these changes.
	* src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
	(LOCATION_PRINT, skel_control_t): New.

2001-12-30  Akim Demaille  <akim@epita.fr>

	* src/parse-skel.y: Get rid of the shift/reduce conflict:
	replace `gb' with BLANKS.
	* src/scan-skel.l: Adjust.

2001-12-30  Akim Demaille  <akim@epita.fr>

	* src/system.h: We don't need nor want bcopy.
	Throw away MS-DOS crap: we don't need getpid.
	* configure.in: We don't need strndup.  It was even causing
	problems: because Flex includes the headers *before* us,
	_GNU_SOURCE is not defined by config.h, and therefore strndup was
	not visible.
	* lib/xstrndup.c: New.
	* src/scan-skel.l: Use it.
	Be sure to initialize yylval.muscle member when scanning a MUSCLE.
	* src/parse-skel.y: Use %directives instead of #defines.

2001-12-30  Akim Demaille  <akim@epita.fr>

	* src/skeleton.h: New.
	* src/output.c (output_parser, output_master_parser): Remove, dead
	code.
	* src/output.h (get_lines_number, actions_output, guards_output)
	(token_definitions_output): Prototype them.
	* src/parse-skel.y: Add the license notice.
	Include output.h and skeleton.h.
	(process_skeleton): Returns void, and takes a single parameter.
	* src/scan-skel.l: Add the license notice.
	Include skeleton.h.
	Don't use %option yylineno: it seems that then Flex imagines
	REJECT has been used, and therefore it won't reallocate its
	buffers (which makes no other sense to me than a bug).  It results
	in warnings for `unused: yy_flex_realloc'.

2001-12-30  Robert Anisko  <robert.anisko@epita.fr>

	* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
	(MUSCLE_INSERT_PREFIX): ...to there.
	* src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
	(MUSCLE_INSERT_PREFIX): Move from here...

	* src/bison.hairy: Add a section directive.  Put braces around muscle
	names.  This parser skeleton is still broken, but Bison should not
	choke on a bad muscle 'syntax'.
	* src/bison.simple: Add a section directive.  Put braces around muscle
	names.

	* src/files.h (strsuffix, stringappend): Add declarations.
	(tab_extension): Add declaration.
	(short_base_name): Add declaration.

	* src/files.c (strsuffix, stringappend): No longer static.  These
	functions are used in the skeleton parser.
	(tab_extension): New.
	(compute_base_names): Use the computations done in this function
	to guess if the generated parsers should have '.tab' in their
	names.
	(short_base_name): No longer static.

	* src/output.c (output_skeleton): New.
	(output): Disable call to output_master_parser, and give a try to
	a new skeleton handling system.
	(guards_output, actions_output): No longer static.
	(token_definitions_output, get_lines_number): No longer static.

	* configure.in: Use AM_PROG_LEX and AC_PROG_YACC.

	* src/Makefile.am (bison_SOURCES): Add scan-skel.l and
	parse-skel.y.

	* src/parse-skel.y: New file.
	* src/scan-skel.l: New file.

2001-12-29  Akim Demaille  <akim@epita.fr>

	%name-prefix is broken.

	* src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
	Adjust all dependencies.
	* tests/headers.at (export YYLTYPE): Strengthen this test: use
	%name-prefix.

	Renaming yylval but not yylloc is not consistent.  Now we do.

	* src/bison.simple: Prefix yylloc if used.
	* doc/bison.texinfo (Decl Summary): Document that.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Promote `%long-directive' over
	`%long_directive'.
	Remove all references to fixed-output-files, yacc is enough.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
	user prologue.  These are defaults.
	* tests/actions.at (Mid-rule actions): Make sure the user can
	define YYDEBUG and YYERROR_VERBOSE.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/output.c (header_output): Don't forget to export YYLTYPE and
	yylloc.
	* tests/headers.at (export YYLTYPE): New, make sure it does.
	* tests/regression.at (%union and --defines, Invalid CPP headers):
	Move to...
	* tests/headers.at: here.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_s): Member `assoc' is of type `associativity'.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (Mid-rule actions): Output on a single line
	instead of several.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Formatting changes.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Don't store the token defs in a muscle, just be ready to output it
	on command.  Now possible via `symbols'.  Fixes a memory leak.

	* src/output.c (token_definitions_output): New.
	(output_parser, header_output): Use it.
	* src/reader.c (symbols_save): Remove.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/bison.simple: Do not provide a default for YYSTYPE and
	YYLTYPE before the user's prologue.  Otherwise it's hardly... a
	default.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Mid-rule actions are simply... ignored!

	* src/reader.c (readgram): Be sure to attach mid-rule actions to
	the empty-rule associated to the dummy symbol, not to the host
	rule.
	* tests/actions.at (Mid-rule actions): New.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Memory leak.

	* src/reader.c (reader): Free grammar.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Memory leak.

	* src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
	since it allocates it for each state, although only one is needed.
	(allocate_storage): Do it here.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/options.h, src/options.c (create_long_option_table): Rename
	as...
	(long_option_table_new): this, with a clearer prototype.
	(percent_table): Remove, unused,
	* src/getargs.c (getargs): Adjust.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
	* src/print.c, src/print_graph.c, src/state.h: Rename state_table
	as states.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (build_relations): Rename `states' as `states1'.
	Sorry, I don't understand exactly what it is, no better name...

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
	* src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
	* src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
	as rules.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
	ago.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c, src/reader.h (user_toknums): Remove.
	Adjust all users to use symbols[i]->user_token_number.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.c, src/gram.h (sprec, sassoc): Remove.
	Adjust all users to use symbols[i]->prec or ->assoc.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c, src/reader.h (tags): Remove.
	Adjust all users to use symbols[i]->tag.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (symbols): New, similar to state_table
	and rule_table.
	* src/reader.c (packsymbols): Fill this table.
	Drop sprec.
	* src/conflicts.c (resolve_sr_conflict): Adjust.
	* src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
	single table.
	Use symbols[i]->tag instead of tags[i].

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
	In addition, put a comment in there, to replace...
	* tests/regression.at (%union and C comments): Remove.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Web2c Actions): Blindly move the actual
	output as expected output.  The contents *seem* right to me, but I
	can't pretend reading perfectly parser tables...  Nonetheless, all
	the other tests pass correctly, the table look OK, even though the
	presence of `$axiom' is to be noted: AFAICS it is useless (but
	harmless).

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Don't add the rule 0 if there were no
	rules read.  In other words, add it _after_ having performed
	grammar sanity checks.
	Fixes the `tests/regression.at (Invalid input: 1)' Failure.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
	visible, and some states have now a different number.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Bind the initial rule's lineno to that
	of the first rule.
	* tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
	(Solved SR Conflicts): Adjust rule 0's line number.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Fix the `GAWK Grammar' failure.

	* src/LR0.c (final_state): Initialize to -1 so that we do compute
	the reductions of the first state which was mistakenly confused
	with the final state because precisely final_state was initialized
	to 0.
	* tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
	now noticed by Bison.
	* tests/regression.at (Rule Line Numbers): Adjust: state 0 does
	have a reduction on $default.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
	rule line numbers.
	* src/closure.c (print_closure): Likewise.
	* src/derives.c (print_derives): Likewise.
	* tests/sets.at (Nullable): Adjust: the rule numbers are correct
	now.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (lookaheads_print): New.
	(lalr): Call it when --trace-flag.
	* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
	are dumped.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
	when walking through ritem, even via rule->rhs.
	* src/reduce.c (dump_grammar, useful_production, reduce_output)
	(useful_production, useless_nonterminals): Likewise.
	(reduce_grammar_tables): Likewise, plus update nritems.
	* src/nullable.c (set_nullable): Likewise.
	* src/lalr.c (build_relations): Likewise.
	* tests/sets.at (Nullable): Adjust.
	Fortunately, now, the $axiom is no longer nullable.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (generate_states): Use nritems, not nitems, nor using
	the 0-sentinel.
	* src/gram.c (ritem_longest_rhs): Likewise.
	* src/reduce.c (nonterminals_reduce): Likewise.
	* src/print_graph.c (print_graph): Likewise.
	* src/output.c (output_rule_data): Likewise.
	* src/nullable.c (set_nullable):  Likewise.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/output.c: Comment changes.

2001-12-27  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
	cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
	Sparc, as they were causing more porting problems than the
	(minor) performance improvement was worth.

	Also, catch up with 1.31's YYSTD.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_gram): Rely on nritems, not the
	0-sentinel.  See below.
	Use -1 as separator, not 0.
	* src/bison.simple (yyparse): Subtract 1 to the rule numbers.
	Rely on -1 as separator in yyrhs, instead of 0.
	* tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
	twice `Now at end of input', therefore there are two lines less to
	expect.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Unresolved SR Conflicts):
	(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
	below.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state): Recognize the final state by the fact it
	is reached by eoftoken.
	(insert_start_shifting_state, insert_eof_shifting_state)
	(insert_accepting_state, augment_automaton): Remove, since now
	these states are automatically computed from the initial state.
	(generate_states): Adjust.
	* src/print.c: When reporting a rule number to the user, subtract
	1, so that the axiom rule is rule 0, and the first user rule is 1.
	* src/reduce.c: Likewise.
	* src/print_graph.c (print_core): For the time being, just as for
	the report, depend upon --trace-flags to dump the full set of
	items.
	* src/reader.c (readgram): Once the grammar read, insert the rule
	0: `$axiom: START-SYMBOL $'.
	* tests/set.at: Adjust: rule 0 is now displayed, and since the
	number of the states has changed (the final state is no longer
	necessarily the last), catch up.

2001-12-27  Akim Demaille  <akim@epita.fr>

	Try to make the use of the eoftoken valid.  Given that its value
	is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
	is used instead of > 0 where appropriate, (ii), depend upon nritems
	instead of the 0-sentinel.

	* src/gram.h, src/gram.c (nritems): New.
	Expected to be duplication of nitems, but for the time being...
	* src/reader.c (packgram): Assert nritems and nitems are equal.
	* src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
	* src/closure.c (print_closure, print_fderives): Likewise.
	* src/gram.c (ritem_print): Likewise.
	* src/print.c (print_core, print_grammar): Likewise.
	* src/print_graph.c: Likewise.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): If there are complains after grammar
	reductions, then output the report anyway if requested, then die.
	* src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
	* src/reader.c (eoftoken): New.
	(parse_token_decl): If the token being defined has value `0', it
	is the eoftoken.
	(packsymbols): No longer hack `tags' to insert `$' by hand.
	Be sure to preserve the value of the eoftoken.
	(reader): Make sure eoftoken is defined.
	Initialize nsyms to 0: now eoftoken is created just like the others.
	* src/print.c (print_grammar): Don't special case the eof token.
	* src/regression.at: Adjust: `$' has value 0, not -1, which was a
	lie anyway, albeit pleasant.
	* tests/calc.at: Exercise error messages with eoftoken.
	Change the grammar so that empty input is invalid.
	Adjust expectations.
	When yyungeting, be sure to use a valid yylloc: use last_yylloc.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* configure.in: Check the protos of strchr ans strspn.
	Replace strchr if needed.
	* src/system.h: Provide the protos of strchr, strspn and memchr if
	missing.
	* lib/strchr.c: New.
	* src/reader.c (symbols_save): Use strchr.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/print.c, src/print_graph.c (escape): New.
	Use it to quote the TAGS outputs.
	* src/print_graph.c (print_state): Now errors are in red, and
	reductions in green.
	Prefer high to wide: output the state number on a line of its own.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (reductions_new): New.
	* src/LR0.c (set_state_table): Let all the states have a
	`reductions', even if reduced to 0.
	(save_reductions): Adjust.
	* src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
	* src/print.c (print_reductions, print_actions): Adjust.
	* src/output.c (action_row): Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (errs_new, errs_dup): New.
	* src/LR0.c (set_state_table): Let all the states have an errs,
	even if reduced to 0.
	* src/print.c (print_errs, print_reductions): Adjust.
	* src/output.c (output_actions, action_row): Adjust.
	* src/conflicts.c (resolve_sr_conflict): Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
	* src/print.c: here.
	(lookaheadset, shiftset): New, used as additional storage by
	print_reductions.
	(print_results): Adjust.
	(print_shifts, print_gotos, print_errs): New, extracted from...
	(print_actions): here.
	* src/print_graph.c (print_actions): Remove dead code.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
	`$n' and `@n'.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
	(build_relations): Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_goto_map): Remove a wrong but benign loop
	duplication.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (packgram): Catch nitems overflows.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/files.c, src/files.h (guard_obstack): Remove.
	* src/output.c (output): Adjust.
	* src/reader.c (parse_braces): New, factoring...
	(copy_action, copy_guard): these two which are renamed as...
	(parse_action, parse_guard): these.
	As a voluntary consequence, using braces around guards is now
	mandatory.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): `guard' and `guard_line' are new members.
	* src/reader.c (symbol_list): `guard' and `guard_line' are new
	members.
	(symbol_list_new): Adjust.
	(copy_action): action_line is the first line, not the last.
	(copy_guard): Just as for actions, store the `action' only, not
	the switch/case/break flesh.
	Don't parse the user action that might follow the guard, let...
	(readgram): do it, i.e., now, there can be an action after a
	guard.
	In other words the guard is just explicitly optional.
	(packgram): Adjust.
	* src/output.c (guards_output): New.
	(output_parser): Call it when needed.
	(output): Also free the guard and attrs obstacks.
	* src/files.c, src/files.h (obstack_save): Remove.
	(output_files): Remove.
	As a result, if one needs the former `.act' file, using an
	appropriate skeleton which requires actions and guards is now
	required.
	* src/main.c (main): Adjust.
	* tests/semantic.at: New.
	* tests/regression.at: Use `input.y' as input file name.
	Avoid 8+3 problems by requiring input.c when the test needs the
	parser.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (symbol_list_new): Be sure to initialize all the
	fields.

2001-12-27  Akim Demaille  <akim@epita.fr>

	All the hacks using a final pseudo state are now useless.

	* src/LR0.c (set_state_table): state_table holds exactly nstates.
	* src/lalr.c (nLA): New.
	(initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
	instead of lookaheadsp from the pseudo state (nstate + 1).

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row, token_actions): Use a state_t instead
	of a integer, and nlookaheads instead of the following state's
	lookaheadsp.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (log_resolution, flush_shift)
	(resolve_sr_conflict, set_conflicts, solve_conflicts)
	(count_sr_conflicts, count_rr_conflicts, conflicts_output)
	(conflicts_print, print_reductions): Use a state_t instead of an
	integer when referring to a state.
	As much as possible, depend upon nlookaheads, instead of the
	`lookaheadsp' member of the following state (since lookaheads of
	successive states are successive, the difference between state n + 1
	and n served as the number of lookaheads for state n).
	* src/lalr.c (add_lookback_edge): Likewise.
	* src/print.c (print_core, print_actions, print_state)
	(print_results): Likewise.
	* src/print_graph.c (print_core, print_actions, print_state)
	(print_graph): Likewise.
	* src/conflicts.h: Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/bison.hairy: Formatting/comment changes.
	ANSIfy.
	Remove `register' indications.
	Add plenty of `static'.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare): Drop the muscle `ntbase' which
	duplicates ntokens.
	* src/bison.simple: Formatting/comment changes.
	Use YYNTOKENS only, which is documented, but not YYNTBASE, which
	is an undocumented synonym.

2001-12-22  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_table_data): Change the prototype to use
	`int' for array ranges: some invocations do pass an int, not a
	short.
	Reported by Wayne Green.

2001-12-22  Akim Demaille  <akim@epita.fr>

	Some actions of web2c.y are improperly triggered.
	Reported by Mike Castle.

	* src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
	* tests/regression.at (Web2c): Rename as...
	(Web2c Report): this.
	(Web2c Actions): New.

2001-12-22  Akim Demaille  <akim@epita.fr>

	Reductions in web2c.y are improperly reported.
	Reported by Mike Castle.

	* src/conflicts.c (print_reductions): Fix.
	* tests/regression.at (Web2c): New.

2001-12-18  Akim Demaille  <akim@epita.fr>

	Some host fail on `assert (!"foo")', which expands to
	((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
	Reported by Nelson Beebee.

	* src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
	`#define it_succeeded 0' and `assert (it_succeeded)'.

2001-12-17  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Don't hard code the skeleton line and filename.
	* src/output.c (output_parser): Rename 'line' as 'output_line'.
	New line counter 'skeleton_line' (skeleton-line muscle).

2001-12-17  Paul Eggert  <eggert@twinsun.com>

	* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
	YYDEBUG must be defined to a nonzero value.

	* src/bison.simple (yytname): Do not assume that the user defines
	YYDEBUG to a properly parenthesized expression.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_t): Rename lookaheads as lookaheadsp.
	nlookaheads is a new member.
	Adjust all users.
	* src/lalr.h (nlookaheads): Remove this orphan declaration.
	* src/lalr.c (initialize_lookaheads): Set nlookaheads for each
	state.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/files.h, src/files.c (open_files, close_files): Remove.
	* src/main.c (main): Don't open/close files, nor invoke lex_free,
	let...
	* src/reader.c (reader): Do it.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Formatting changes.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (flush_shift): Also adjust lookaheadset.
	(flush_reduce): New.
	(resolve_sr_conflict): Adjust.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_obstack): Be static and rename as...
	(format_obstack): this, to avoid any confusion with files.c's
	output_obstack.
	* src/reader.h (muscle_obstack): Move to...
	* src/output.h: here, since it's defined in output.c.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row, save_column, default_goto)
	(sort_actions, matching_state, pack_vector): Better variable
	locality.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/output.c: Various formatting changes.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/files.c (output_files): Free the output_obstack.
	* src/main.c (main): Call print and print_graph conditionally.
	* src/print.c (print): Work unconditionally.
	* src/print_graph.c (print_graph): Work unconditionally.
	* src/conflicts.c (log_resolution): Output only if verbose_flag.

2001-12-16  Marc Autret  <autret_m@epita.fr>

	* src/output.c (actions_output): Fix. When we use %no-lines,
	there is one less line per action.

2001-12-16  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Remove a useless #line directive.
	s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
	* src/output.c (get_lines_number): New.
	(output_parser): Adjust, now takes care about the lines of a
	output muscles.
	Fix line numbering.
	(actions_output): Computes the number of lines taken by actions.
	(output_master_parser): Insert new skeleton which is the name of
	the output parser file name.

2001-12-15  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.

2001-12-15  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_gram): Keep track of the hairy one.

2001-12-15  Akim Demaille  <akim@epita.fr>

	Make `make distcheck' work.

	* lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
	system.h which uses libgettext.h.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (set_nullable): Useless rules must be skipped,
	otherwise, since we range over their symbols, we might look at a
	nonterminal which no longer ``exists'', i.e., it is not counted in
	`nvars', hence we overflow our arrays.

2001-12-15  Akim Demaille  <akim@epita.fr>

	The header can also be produced directly, without any obstack!
	Yahoo!

	* src/files.c, src/files.h (defines_obstack): Remove.
	(compute_header_macro): Global.
	(defines_obstack_save): Remove.
	* src/reader.c (parse_union_decl): No longer output to
	defines_obstack: its content can be found in the `stype' muscle
	anyway.
	(output_token_translations): Merge into...
	(symbols_output): this.
	Rename as...
	(symbols_save): this.
	(reader): Adjust.
	* src/output.c (header_output): New.
	(output): Call it.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_union_decl): Instead of handling two obstack
	simultaneously, use one to define the `stype' muscle, and use the
	value of the latter to fill defines_obstack.
	(copy_comment): Remove.
	(copy_comment2): Work for a single obstack.
	Rename as...
	(copy_comment): this.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/lex.c, src/lex.h (xgetc): No longer static.
	* src/reader.c (parse_union_decl): Revamp.

2001-12-15  Akim Demaille  <akim@epita.fr>

	Still making progress in separating Bison into (i) input, (ii)
	process, (iii) output: now we can directly output the parser file
	without using table_obstack at all.

	* src/files.c, src/files.h (table_obstack): Bye bye.
	(parser_file_name): New.
	* src/files.c (compute_output_file_names): Compute it.
	* src/output.c (actions_output, output_parser)
	(output_master_parser): To a file instead of an obstack.

2001-12-15  Akim Demaille  <akim@epita.fr>

	Attach actions to rules, instead of pre-outputting them to
	actions_obstack.

	* src/gram.h (rule_t): action and action_line are new members.
	* src/reader.c (symbol_list): Likewise.
	(copy_action): Save the actions within the rule.
	(packgram): Save them in rule_table.
	* src/output.c (actions_output): New.
	(output_parser): Use it on `%%actions'.
	(output_rule_data): Don't free rule_table.
	(output): Do it.
	(prepare): Don't save the `action' muscle.
	* src/bison.simple: s/%%action/%%actions/.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_action): When --yacc, don't append a `;'
	to the user action: let it fail if lacking.
	Suggested by Arnold Robbins and Tom Tromey.

2001-12-14  Akim Demaille  <akim@epita.fr>

	* src/lex.c (literalchar): Simply return the char you decoded, non
	longer mess around with obstacks and int pointers.
	Adjust all callers.

2001-12-14  Akim Demaille  <akim@epita.fr>

	* src/lex.c (literalchar): Don't escape the special characters,
	just decode them, and keep them as char (before, eol was output as
	the 2 char string `\n' etc.).
	* src/output.c (output_rule_data): Use quotearg to output the
	token strings.

2001-12-13  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
	Do not infringe on the global user namespace when using C++.
	(YYFPRINTF, YYSTDERR): New macros, needed for the above.
	All uses of `fprintf' and `stderr' changed.

	* doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.

2001-12-13  Akim Demaille  <akim@epita.fr>

	The computation of nullable is broken: it doesn't handle empty
	RHS's properly.

	* tests/torture.at (GNU AWK Grammar): New.
	* tests/sets.at (Nullable): New.
	* src/nullable.c (set_nullable): Instead of blindly looping over
	`ritems', loop over the rules, and then over their rhs's.

	Work around Autotest bugs.

	* src/warshall.c (bitmatrix_print): Don't use `+--+' as table
	frame, because Autotest understand lines starting with a `+' as
	traces from the shell.  Then, they are not processed properly.
	Admittedly an Autotest bug, but we don't have time to wait for
	Autotest to catch up.
	* tests/regression.at (Broken Closure): Adjust to the new table
	frames.
	Move to...
	* tests/sets.at: here.

2001-12-13  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): Use nrules instead of playing tricks
	with BITS_PER_WORD.

2001-12-13  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_actions): Output the handling of `$' as the
	traces do: shifting the token EOF.  Before EOF was treated as a
	nonterminal.
	* tests/regression.at: Adjust some tests.
	* src/print_graph.c (print_core): Complete the set of items via
	closure.  The next-to-final and final states are still unsatisfying,
	but that's to be addressed elsewhere.
	No longer output the rule numbers, but do output the state number.
	A single loop for the shifts + gotos is enough, but picked a
	distinct color for each.
	(print_graph): Initialize and finalize closure.

2001-12-13  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Remove dead code, an strip useless
	braces.
	(get_type): Remove, unused.

2001-12-12  Akim Demaille  <akim@epita.fr>

	* src/complain.h, src/complain.c: Remove error_one_per_line, rely
	on that of lib/error.c.

2001-12-12  Akim Demaille  <akim@epita.fr>

	Some hosts don't like `/' in includes.

	* src/system.h: Include libgettext.h without qualifying the path.
	* src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
	$(top_srcdir).

2001-12-11  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_parser): Remove useless muscle.

2001-12-11  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Remove #line just before %%epilogue. It
	is now handled in ...
	* src/reader.c (read_additionnal_code): Add the output of a
	#line for the epilogue.

2001-12-10  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (copy_definition): Re-use CPP-outed code which
	replace precedent remove.
	* src/bison.simple: Remove #line before %%prologue because
	%%input-line is wrong at this time.

2001-12-10  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (symbols_output): Clean up.
	* src/output.c (output_gram, output): Clean up.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (initialize_lookaheads): New.  Extracted from...
	* src/LR0.c (set_state_table): here.
	* src/lalr.c (lalr): Call it.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/state.h (shifts): Remove the `number' member: shifts are
	attached to state, hence no longer need to be labelled with a
	state number.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Now that states have a complete set of members, the linked list of
	shifts is useless: just fill directly the state's shifts member.

	* src/state.h (shifts): Remove the `next' member.
	* src/LR0.c (first_state, last_state): Remove.
	Adjust the callers.
	(augment_automaton): Don't look for the shifts that must be added
	a shift on EOF: it is those of the state we looked for!  But now,
	since shifts are attached, it is no longer needed to looking
	merely by its id: its number.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Better variable locality.
	Remove an impossible branch: if there is a state corresponding to
	the start symbol being shifted, then there is shift for the start
	symbol from the initial state.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
	only when appropriate: when insert_start_shifting_state' is not
	invoked.
	* tests/regression.at (Rule Line Numbers): Adjust.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Now that all states have shifts,
	merge the two cases addition shifts to the initial state.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_state_table): Move to...
	* src/LR0.c: here.
	* src/lalr.c (lalr): Don't call it...
	* src/LR0.c (generate_states): do it.
	* src/LR0.h (first_state): Remove, only the table is used.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.h (first_shift, first_reduction): Remove.
	* src/lalr.c: Don't use first_shift: find shifts through the
	states.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c: Attach shifts to states as soon as they are
	computed.
	* src/lalr.c (set_state_table): Instead of assigning shifts to
	state, just assert that the mapping was properly done.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (insert_start_shift): Rename as...
	(insert_start_shifting_state): this.
	(insert_eof_shifting_state, insert_accepting_state): New.
	(augment_automaton): Adjust.
	Better locality of the variables.
	When looking if the start_symbol is shifted from the initial
	state, using `while (... symbol != start_symbol ...)' sounds
	better than `while (... symbol < start_symbol ...)': If fail
	to see how the order between symbols could be relevant!

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/getargs.h: Don't declare `spec_name_prefix' and
	`spec_file_prefix', declared by src/files.h.
	* src/files.c, src/files.h: Default for spec_name_prefix is "yy".
	* src/muscle_tab.c (muscle_init): Default prefix to NULL.
	* src/output.c (prepare): Adjust.
	* src/reader.c (symbols_output): Likewise.
	* src/vmsgetargs.c: Vaguely adjust, but who cares?

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_init): NULL is a better default than
	`"0"'.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/reader.c (reader): Calling symbols_output once is enough.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Now that states have a complete set of members, the linked list of
	reductions is useless: just fill directly the state's reductions
	member.

	* src/state.h (struct reductions): Remove member `number' and
	`next'.
	* src/LR0.c (first_reduction, last_reduction): Remove.
	(save_reductions): Don't link the new reductions, store them in
	this_state.
	* src/lalr.c (set_state_table): No need to attach reductions to
	states, it's already done.
	* src/output.c (output_actions): No longer free the shifts, then
	the reductions, then the states: free all the states and their
	members.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/options.c (OPTN, DRTV, BOTH): New.
	(option_table): Use them.

	* src/muscle_tab.c: Don't include xalloc.h and string.h: that's
	the job of system.h.
	* src/options.c: Don't include stdio.h and xalloc.h for the same
	reasons.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/output.c (output, prepare): Make sure the values of the
	muscles `action' and `prologue' are 0-terminated.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Clean up GCC warnings.

	* src/reader.c (copy_action): `buf' is not used.
	(parse_skel_decl): Be static.
	* src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
	* src/options.h (create_long_option_table): Have a real prototype.
	* lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
	(hash_delete_at): Return const void *.
	Adjust casts to preserve the const.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* configure.in: Require 2.52g.
	M4 is not needed, but AUTOM4TE is.
	* m4/m4.m4: Remove.
	* tests/Makefile.am: Adjust.

2001-12-10  Akim Demaille  <akim@epita.fr>

	One structure for states is enough, even though theoretically
	there are LR(0) states and LALR(1) states.

	* src/lalr.h (state_t): Remove.
	(state_table): Be state_t **, not state_t *.
	* src/state.h (core, CORE_ALLOC): Rename as...
	(state_t, STATE_ALLOC): this.
	Add the LALR(1) members: shifts, reductions, errs.
	* src/LR0.c (state_table): Rename as...
	(state_hash): this, to avoid name clashes with the global
	`state_table'.
	* src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
	* src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Bison dumps core on bash.y.
	Reported by Pascal Bart.

	* src/warshall.c (bitmatrix_print): New.
	(TC): Use it.
	When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
	j must be the outer loop.
	* tests/regression.at (Broken Closure): New.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
	its argument.
	Reported by Peter Hamorsky.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (err_table): Remove.
	(resolve_sr_conflict): Adjust.
	* src/lalr.h (state_t.reduction_table, state_t.shift_table):
	Rename as...
	(state_t.reductions, state_t.shifts): this.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_grammar_tables): No longer disable the
	removal of useless rules via CPP but via `if (0)', so that the
	compiler still check the code is valid.
	For instance, it should have noticed `rline' no longer exists: use
	the `line' member of rule_t.
	* src/gram.c (dummy, rline): Remove, unused.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (pack_vector): Use assert, not berror.
	* src/main.c (berror): Remove, unused.

2001-12-05  Akim Demaille  <akim@epita.fr>

	New experimental feature: if --verbose --trace output all the
	items of a state, not only its kernel.

	* src/print.c (print_core): If `trace_flag', then invoke closure
	before outputting the items of the state (print_core is no longer
	a correct name them).
	(print_results): Invoke new_closure/free_closure if needed.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_itemsets): Use nshifts only, not shiftcount.
	* src/closure.c, src/closure.h (itemsetsize): Rename as...
	(nitemset): for consistency with the rest of the project.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_closure): Improve.
	(closure): Use it for printing input and output.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are
	indexed by nonterminals.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/warshall.c (TC, RTC): De-obsfucate (source reduced to 22% of
	what it was!).
	* src/warshall.h: Remove accidental duplication of the content.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (set_fderives): De-obfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_firsts, print_fderives): De-obfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (set_firsts): De-obfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row): De-obfuscate
	using the good o' techniques: arrays not pointers, variable
	locality, BITISSET, RESETBIT etc.

2001-12-05  Akim Demaille  <akim@epita.fr>

	Pessimize the code to simplify it: from now on, all the states
	have a valid SHIFTS, which NSHIFTS is possibly 0.

	* src/LR0.c (shifts_new): Be global and move to..
	* src/state.c, src/state.h: here.
	* src/conflicts, src/lalr.c, src/output.c, src/print.c,
	* src/print_graph: Adjust.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/state.h (SHIFT_DISABLE, SHIFT_IS_DISABLED): New.
	* src/conflicts.c: Use it.
	Restore a few missing `if (!SHIFT_IS_DISABLED)' which were
	incorrectly ``simplified''.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate
	using the good o' techniques: arrays not pointers, variable
	locality, BITISSET, RESETBIT etc.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/state.h (SHIFT_SYMBOL): New.
	* src/conflicts.c: Use it to deobfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (count_sr_conflicts, count_rr_conflicts)
	(print_reductions): De-obfuscate using the good o' techniques:
	arrays not pointers, variable locality, BITISSET.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Arrays, not pointers.
	Use BITISSET.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Pessimize, but clarify.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Improve variable locality.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Pessimize, but clarify.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Improve variable locality.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/state.h (SHIFT_IS_ERROR, SHIFT_IS_GOTO, SHIFT_IS_SHIFT): New.
	* src/lalr.c: Use them.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Formatting changes.
	Better variable locality.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (matrix_print): New.
	(transpose): Use it.
	Use arrays instead of pointers.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (maxrhs): Move to...
	* src/gram.c, src/gram.h (ritem_longest_rhs): here.
	* src/lalr.c (build_relations): Adjust.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (transpose): Free the memory allocated to the
	argument, as it is replaced by the results by the unique caller.
	(build_relations): Merely invoke transpose: it handles the memory
	deallocation.
	Improve variable locality.
	Avoid variables used as mere abbreviations.
	(compute_lookaheads): Use arrays instead of pointers.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (initialize_F): Improve variable locality.
	Avoid variables used as mere abbreviations.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/derives.c (print_derives): Display the ruleno.
	* src/lalr.c (initialize_F, transpose): Better variable locality
	to improve readability.
	Avoid variables used as mere abbreviations.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (traverse): Use arrays instead of pointers.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (set_nullable): Use a for loop to de-obfuscate
	the handling of squeue.
	`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

2001-12-05  Akim Demaille  <akim@epita.fr>

	Because useless nonterminals are now kept alive (instead of being
	`destroyed'), we now sometimes examine them, and store information
	related to them.  Hence we need to know their number, and adjust
	memory allocations.

	* src/reduce.c, src/reduce.h (nuseless_nonterminals): No longer
	static.
	* src/LR0.c (allocate_itemsets): The memory allocated to
	`symbol_count' was used for two different purpose: once to count
	the number of occurrences of each symbol, and later reassigned to
	`shift_symbol', containing the symbol that can be shifted from a
	given state.
	Deobfuscate, i.e., allocate, use and free `symbol_count' here
	only, and...
	(new_itemsets): Allocate `shift_symbol' here.
	(allocate_itemsets): symbol_count includes useless nonterminals.
	Make room for them.
	(free_storage): Use `free', not `XFREE', for pointers that cannot
	be null.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (set_nullable): Deobfuscate the handling of
	ritem.
	`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/gram.c, src/gram.h (ritem_print): New.
	* src/gram.c (dummy): Remove, now there is actual code in gram.c.
	(This useless function was defined only to work around VMS linkers
	that can't handle compilation units with variables only).
	* src/reduce.c (dump_grammar): Use it to trace the construction of
	ritem.

2001-12-04  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (union yyalloc): Change member names
	to be the same as the stack names.
	(yyparse): yyptr is now union yyalloc *, not char *.
	(YYSTACK_RELOCATE): Likewise.  This avoids a GCC warning,
	and may generate better code on some machines.
	(yystpcpy): Use prototype if __STDC__ is defined, not just
	if __cplusplus is defined.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* configure.in (WARNING_CFLAGS): Add -Werror when possible.
	(CFLAGS): Do not include the WARNING_CFLAGS here, since GNU
	Gettext doesn't compile cleanly, and dies with -Werror.
	* src/Makefile.am, lib/Makefile.am, tests/atlocal.in (CFLAGS):
	Include WARNING_CFLAGS here.
	* lib/xstrdup.c: Include xalloc.h, so that xstrdup be declared
	before being defined.

2001-11-27  Paul Eggert  <eggert@twinsun.com>

	* lib/quotearg.h (quotearg_n, quotearg_n_style):
	First arg is int, not unsigned.
	* lib/quotearg.c (quotearg_n, quotearg_n_style): Likewise.
	(SIZE_MAX, UINT_MAX): New macros.
	(quotearg_n_options): Abort if N is negative.
	Avoid overflow check on hosts where size_t is 64 bits and int
	is 32 bits, as overflow is impossible there.
	Fix off-by-one typo that caused unnecessary reallocation.

2001-11-29  Paul Eggert  <eggert@twinsun.com>

	Name space cleanup in generated parser.

	* doc/bison.texinfo (Bison Parser): Discuss system headers
	and their effect on the user name space.

	* src/bison.simple:
	(YYSTACK_ALLOC, YYSTACK_FREE, union yyalloc, YYSTACK_GAP_MAX,
	YYSTACK_BYTES, YYSTACK_RELOCATE): Do not define unless necessary,
	i.e. unless ! defined (yyoverflow) || defined (YYERROR_VERBOSE).

	(YYSIZE_T): New macro.  Use it instead of size_t, to avoid infringing
	on user names when possible.

	(YYSTACK_USE_ALLOCA): Do not define; just use any existing defn.
	Simplify test for whather <alloca.h> exists.

	(<stdlib.h>): Include if we will use malloc, and if standard C or C++.

	(<stdio.h>): Include if YYDEBUG.

	(yymemcpy): Renamed from __yy_memcpy.  Do not define unless
	! defined (yyoverflow) && ! defined (yymemcpy).

	(yymemcpy, yyparse): Rename local variables as needed so that
	they all begin with 'yy'.

	(yystrlen, yystpcpy): New functions.

	(YY_DECL_NON_LSP_VARIABLES): Renamed from _YY_DECL_VARIABLES.
	All uses changed.

	(yyparse): size_t -> YYSIZE_T.  Use yystrlen and yystpcpy
	instead of relying on string.h functions.  Use YYSTACK_ALLOC
	and YYSTACK_FREE instead of malloc and free.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTYPE, YYLTYPE): Move their definitions
	before their first uses.
	(YYBISON, YYPURE): Move to the top of the output.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* tests/reduce.at (Useless Nonterminals): Fix.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTACK_FREE): Use `do {;} while (0)' as empty
	if body instead of `;' to pacify GCC's warnings.

2001-11-30  Akim Demaille  <akim@epita.fr>

	Instead of mapping the LHS of unused rules to -1, keep the LHS
	valid, but flag the rules as invalid.

	* src/gram.h (rule_t): `useful' is a new member.
	* src/print.c (print_grammar): Adjust.
	* src/derives.c (set_derives): Likewise.
	* src/reader.c (packgram, reduce_output): Likewise.
	* src/reduce.c (reduce_grammar_tables): Likewise.
	* tests/reduce.at (Underivable Rules, Useless Rules): New.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_output): Formatting changes.
	* src/print.c (print_results, print_grammar): Likewise.
	* tests/regression.at (Rule Line Numbers)
	(Solved SR Conflicts, Unresolved SR Conflicts): Adjust.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (nonterminals_reduce): Instead of throwing away
	useless nonterminals, move them at the end of the symbol arrays.
	(reduce_output): Adjust.
	* tests/reduce.at (Useless Nonterminals): Adjust.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/reduce.c: Various comment/formatting changes.
	(nonterminals_reduce): New, extracted from...
	(reduce_grammar_tables): here.
	(reduce_grammar): Call nonterminals_reduce.

2001-11-29  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSTACK_REALLOC): Remove.
	(YYSTACK_ALLOC): Resurrect this macro, with its old meaning.
	(YYSTACK_FREE, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
	New macros.
	(union yyalloc): New type.
	(__yy_memcpy): Last arg is size_t, not unsigned int, to remove
	an arbitrary restriction on hosts where size_t is wider than int.

	(yyparse): Don't dump core if alloca or malloc fails; instead, report
	a parser stack overflow.  Allocate just one block of memory for all
	three stacks, instead of allocating three blocks; this typically is
	faster and reduces fragmentation.

	Do not limit the number of items in the stack to a value that fits
	in 'int', as this is an arbitrary limit on hosts with 64-bit
	size_t and 32-bit int.

2001-11-29  Marc Autret  <autret_m@epita.fr>

	* tests/calc.at [AT_DATA_CALC_Y]: Use %error-verbose instead
	of defining YYERROR_VERBOSE.
	[AT_DATA]: $4 is now out of C declarations in the prologue.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_dquoted_param): New.
	(parse_skel_decl): Use it.
	* src/lex.h: Add its prototype.
	* src/lex.c (literalchar): Become not static.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/output.h: And put its extern declaration here.
	* src/output.c (error_verbose): Define here.
	(prepare): Echo name modification.
	* src/getargs.h: Clean its extern declaration.
	* src/getargs.c (error_verbose_flag): Remove.
	(getargs): Remove case 'e'.
	* src/options.c (option_table): 'error-verbose' is now seen as simple
	percent option.
	Include output.h.

	* src/reader.c (read_declarations): Remove case tok_include.
	(parse_include_decl): Remove.
	* src/lex.h (token_t): Remove tok_include.
	* src/options.c (option_table): 'include' is now a simple command line
	option.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Adjust muscle names.
	* src/muscle_tab.c (muscle_init): Also rename the muscles.
	* src/output.c (prepare): s/_/-/ for the muscles names.
	(output_parser): When scanning for a muscle, allow '-' instead of '_'.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Fix debug.
	[YYERROR_VERBOSE]: Re-integrate as an internal macro.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (shifts_new): New.
	(save_shifts, insert_start_shift, augment_automaton): Use it.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): `b' and `ruleno' denote the same value:
	keep ruleno only.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): Instead of looping over word in array
	then bits in words, loop over bits in array.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): No longer optimize the special case
	where all the bits of `ruleset[r]' are set to 0, to make the code
	clearer.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): `r' and `c' are new variables, used to
	de-obfuscate accesses to RULESET and CORE.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_print): Use ngettext.
	(dump_grammar): Improve the trace accuracy.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (dump_grammar): Don't translate trace messages.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* tests/reduce.at (Useless Terminals, Useless Nonterminals): New.
	* src/reduce.c (reduce_grammar_tables): Do not free useless tags,
	as all tags are free'ed afterwards.
	From Enrico Scholz.

2001-11-27  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSTACK_REALLOC): Fix typo that caused us to
	use alloca when we didn't want to, and vice versa.

2001-11-27  Marc Autret  <autret_m@epita.fr>

	* src/muscle_tab.c (muscle_init): Remove 'verbose' muscle
	initialization.
	* src/output.c (prepare): Remove its update.

2001-11-27  Marc Autret  <autret_m@epita.fr>

	* tests/torture.at [AT_DATA]: Remove YYERROR_VERBOSE definition.
	Use %error-verbose.

2001-11-27  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Remove YYERROR_VERBOSE using.
	Use %%error_verbose.
	(yyparse): Likewise.
	* src/output.c (prepare): Give its final value.
	* src/muscle_tab.c (muscle_init): Init new muscle 'error_verbose'.
	* src/getargs.h: Add its extern declaration.
	* src/getargs.c (error_verbose_flag): New int.
	(getargs): Update to catch new case.
	* src/options.c (option_table): 'error-verbose' is a new option.
	(shortopts): Update.

2001-11-27  Akim Demaille  <akim@epita.fr>

	* src/system.h: Use intl/libgettext.h.
	* src/Makefile.am (INCLUDES): Add -I $(top_srcdir).

2001-11-27  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (Exploding the Stack Size with Malloc):
	s/YYSTACK_USE_ALLOCA_ALLOCA/YYSTACK_USE_ALLOCA/.

2001-11-27  Akim Demaille  <akim@epita.fr>

	* src/files.c: Include error.h.
	Reported by Hans Aberg.

2001-11-26  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_include_decl): New, not yet implemented.
	(read_declarations): Add case tok_include.
	* src/getargs.h (include): Add its extern definition.
	* src/getargs.c (include): New const char *.
	(getargs): Add case '-I'.
	* src/options.c (option_table): Add include as command line and
	percent option.
	* src/lex.h (token_t): Add tok_include.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Make sure rules for mid-rule actions
	have a lineno equal to that of their host rule.
	Reported by Hans Aberg.
	* tests/regression.at (Rule Line Numbers): New.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (allocate_itemsets): kernel_size contains ints, not
	size_ts.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/complain.c, src/complain.h (error): Remove, provided by
	lib/error.[ch].

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/reader.c (read_declarations): Don't abort on tok_illegal,
	issue an error message.
	* tests/regression.at (Invalid %directive): New.
	Reported by Hans Aberg.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* configure.in: Invoke AC_FUNC_OBSTACK and AC_FUNC_ERROR_AT_LINE.
	* lib/Makefile.am (libbison_a_SOURCES): Adjust.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_print): Don't complain at all when
	there are no reduce/reduce conflicts, and as many shift/reduce
	conflicts as expected.
	* tests/regression.at (%expect right): Adjust.

2001-11-23  Akim Demaille  <akim@epita.fr>

	* lib/alloca.c: Update, from fileutils.

2001-11-23  Akim Demaille  <akim@epita.fr>

	* lib/Makefile.am (libbison_a_LIBADD): Add @ALLOCA@.

2001-11-23  Akim Demaille  <akim@epita.fr>

	* src/system.h: Include alloca.h.
	* src/main.c (main) [C_ALLOCA]: Call alloca (0).

2001-11-23  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (print_actions): Remove `rule', unused.
	* src/LR0.c (kernel_size): Contain `int' instead of `size_t' to
	pacify GCC's signed < unsigned warnings.
	* src/closure.c (itemsetsize): Likewise.
	* src/reader.c (symbol_list_new): Static.

2001-11-23  Akim Demaille  <akim@epita.fr>

	Attaching lineno to buckets is stupid, since only one copy of each
	symbol is kept, only the line of the first occurrence is kept too.

	* src/symtab.h, src/symtab.c (bucket): Remove the line member.
	* src/reader.c (rline_allocated): Remove, unused.
	(symbol_list): Have a `line' member.
	(symbol_list_new): New.
	(readgram): Use it.
	* src/print.c (print_grammar): Output the rule line numbers.
	* tests/regression.at (Solved SR Conflicts)
	(Unresolved SR Conflicts): Adjust.
	Reported by Hans Aberg.

2001-11-22  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple [YYERROR_VERBOSE]: Force its value to be 1 or 0.

2001-11-22  Marc Autret  <autret_m@epita.fr>

	* src/muscle_tab.c (muscle_init): Remove initialization of
	skeleton muscle.
	* src/output.c (output_master_parser): Do it here.

2001-11-20  Akim Demaille  <akim@epita.fr>

	* po/sv.po: New.
	* configure.in (ALL_LINGUAS): Adjust.
	* po/POTFILE.in: Remove `nullable.c' and `derives.c' which no
	longer contains strings to translate.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_print): Add a missing \n.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (nullable_print): New.
	(set_nullable): Call it when tracing.
	Better locality of variables.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_actions): Better locality of variables.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/derives.c (print_derives): Fix and enrich.
	* src/closure.c (print_fderives): Likewise.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/closure.c (itemsetend): Remove, replaced with...
	(itemsetsize): new.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (kernel_end): Remove, replaced with...
	(kernel_size): new.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (set_conflicts): Use arrays instead of pointers
	to clarify.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): Use arrays instead of pointers to clarify.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/derives.c, src/nullable.c: Adjust various
	trace messages.
	* src/LR0.c: Likewise.
	(allocate_itemsets): Use arrays instead of pointers to clarify.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (statistics_flag): Replace with...
	(trace_flag): New.
	(longopts): Accept --trace instead of --statistics.
	* src/getargs.h, src/options.c: Adjust.
	* src/LR0.c, src/closure.c, src/derives.c, src/nullable.c,
	* src/reduce.c: Use trace_flags instead of the CPP conditional TRACE.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_itemsets, get_state): Use more arrays and fewer
	pointers to clarify the code.
	(save_reductions, save_shifts): Factor common parts of alternatives.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state, get_state): Complete TRACE code.
	* src/closure.c: Include `reader.h' to get `tags', needed by the
	trace code.
	Rename the conditional DEBUG as TRACE.
	Output consistently TRACEs to stderr, not stdout.
	* src/derives.c: Likewise.
	* src/reduce.c: (inaccessable_symbols): Using if is better style
	than goto.
	Use `#if TRACE' instead of `#if 0' for tracing code.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/system.h (LIST_FREE, shortcpy): New.
	* src/LR0.c: Use them.
	* src/output.c (free_itemsets, free_reductions, free_shifts):
	Remove, replaced by LIST_FREE.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/state.h (CORE_ALLOC, SHIFTS_ALLOC, ERRS_ALLOC)
	(REDUCTIONS_ALLOC):  New.
	* src/LR0.c, src/conflicts.c: Use them to de-obfuscate memory
	allocation.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state): Complete trace code.
	* src/nullable.c (set_nullable): Don't translate traces.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (print_core): Better locality of variables.
	* src/print.c (print_core): Likewise.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/vcg.c: You do the output, so you are responsible of the
	handling of VCG syntax, in particular: use quotearg.
	* src/print_graph.c: Don't.
	(print_actions): Don't output the actions as part of the nodes,
	since that's the job of the edges.
	(print_state): Don't output by hand: fill the node description,
	and ask for its output.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (yyparse): When verbosely reporting an error,
	no longer put additional quotes around token names.
	* tests/calc.at: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c: `line' is a new member of `bucket'.
	* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
	* src/output.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rprec, rprecsym, rassoc): Remove, now part of...
	(rule_t): this.
	* src/conflicts.c, src/reader.c, src/reduce.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): New.
	(rule_table): New.
	(rrhs, rlhs): Remove, part of state_t.
	* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
	* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
	* src/reader.c, src/reduce.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/reader.c (symbols_output): New, extracted from...
	(packsymbols): Here.
	(reader): Call it.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_maxrhs, maxrhs): Remove, replaced with...
	(maxrhs): this new function.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (F): New macro to access the variable F.
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (LA): New macro to access the variable LA.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	* src/lalr.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (initialize_LA): Only initialize LA.  Let...
	(set_state_table): handle the `lookaheads' members.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (lookaheads): Removed array, whose contents is now
	a member of...
	(state_t): this structure.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (consistent): Removed array, whose contents is now
	a member of...
	(state_t): this structure.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (reduction_table, shift_table): Removed arrays, whose
	contents are now members of...
	(state_t): this structure.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (state_t): New.
	(state_table): Be a state_t * instead of a core **.
	(accessing_symbol): Remove, part of state_t.
	* src/lalr.c: Adjust.
	(set_accessing_symbol): Merge into...
	(set_state_table): this.
	* src/print_graph.c, src/conflicts.c: Adjust.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* tests/calc.at, tests/output.at, tests/regression.at,
	* tests/testsuite.at, tests/torture.at: Rely on Autotest 2.52g:
	now the tests are run in private dirs, therefore AC_CLEANUP and
	family can be simplified to 0-ary.
	* tests/atlocal.in: Now that we run `elsewhere' than in tests/,
	use abs. path to find config.h.
	* tests/calc.at (AT_CHECK_CALC): Don't try to check the compiler's
	stderr, there can be way too much random noise.
	Instead pass -Werror to GCC and rely on the exit status.
	Reported by Wolfram Wagner.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (yyparse): Let yyls1, yyss1 and yyvs1 be
	defined only if yyoverflow is defined, to avoid `warning: unused
	variable `yyvs1''.
	Reported by The Test Suite.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/print.c: Include reduce.h.
	Reported by Hans Aberg.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/lex.c, src/lex.h (token_buffer, unlexed_token_buffer):
	Revert a previous patch:  these are really const.
	* src/conflicts.c (conflict_report): Additional useless pair of
	braces to pacify GCC's warnings for `if () if () {} else {}'.
	* src/lex.c (parse_percent_token): Replace equal_offset with
	arg_offset.
	arg is const.
	Be sure to strdup `arg' when used, since there is no reason for
	token_buffer not to change.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/system.h (EXIT_SUCCESS, EXIT_FAILURE): Ensure a proper
	definition.
	* src/main.c (main): Use them.
	Suggested by Hans Aberg.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/system.h (ngettext): Now that we use ngettext, be sure to
	provide a default definition when NLS are not used.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Use `$' as shell prompt, not `%'.
	Use @kbd to denote user input.
	(Language and Grammar): ANSIfy the example.
	Adjust its layout for info/notinfo.
	(Location Tracking Calc): Output error messages to stderr.
	Output locations in a more GNUtically correct way.
	Fix a couple of Englishos.
	Adjust @group/@end group pairs.

2001-11-12  Akim Demaille  <akim@epita.fr>

	%expect was not functioning at all.

	* src/conflicts.c (expected_conflicts): Set to -1.
	(conflict_report): Use ngettext.
	(conflicts_print): Check %expect and make its violation an error.
	* doc/bison.texinfo (Expect Decl): Adjust.
	* configure.in (AM_GNU_GETTEXT): Ask for ngettext.
	* tests/regression.at (%expect not enough, %expect right)
	(%expect too much): New.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Conflicts): Rename as...
	(Unresolved SR Conflicts): this.
	(Solved SR Conflicts): New.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (print_results): Rename as...
	(reduce_output): This.
	Output to OUT, passed as argument, instead of output_obstack.
	(dump_grammar): Likewise.
	(reduce_free): New.
	Also free V1.
	(reduce_grammar): No longer call reduce_output, since...
	* src/print.c (print_results): do it.
	* src/main.c (main): Call reduce_free;

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Accept OUT as argument.
	Output to it, not to output_obstack.
	* src/print.c (print_actions): Adjust.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (count_sr_conflicts, count_rr_conflicts): Return
	the result instead of using...
	(src_total, rrc_total, src_count, rrc_count): Remove.
	(any_conflicts): Remove.
	(print_conflicts): Split into...
	(conflicts_print, conflicts_output): New.
	* src/conflicts.h: Adjust.
	* src/main.c (main): Invoke both conflicts_output and conflicts_print.
	* src/print.c (print_grammar): Issue `\n' between two rules.
	* tests/regression.at (Conflicts): New.
	Reported by Tom Lane.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid input): Remove, duplicate with
	``Invalid input: 1''.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (AT_DATA_STACK_TORTURE)
	(Exploding the Stack Size with Alloca)
	(Exploding the Stack Size with Malloc): New.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTACK_REALLOC): New.
	(yyparse) [!yyoverflow]: Use it and free the old stack.
	Reported by Per Allansson.

2001-11-12  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: Define type yystype instead of YYSTYPE, and
	define CPP macro, which substitute YYSTYPE by yystype.
	* src/reader.c (parse_union_decl): Output yystype/YYSTYPE as we do
	with yyltype/YYLTYPE.  This allows inclusion of the generated
	header within the parser if the compiler, such as GGC, accepts
	multiple equivalent #defines.
	From Akim.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* src/reader.c (symbols_output): New, extracted from...
	(packsymbols): here.
	(reader): Adjust.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* src/lex.c (parse_percent_token): s/quotearg/quote/.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (AT_TEST_CPP_GUARD_H): Adjust the clean up
	pattern.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* src/options.h (struct option_table_struct): set_flags is void*.
	* src/options.c (longopts): Support `--output' and `%output'.
	(usage): Adjust.
	* src/lex.h (tok_setopt): Remove, replaced with...
	(tok_intopt, tok_stropt): these new guys.
	* src/lex.c (getopt.h): Not needed.
	(token_buffer, unlexed_token_buffer): Not const.
	(percent_table): Promote `-' over `_' in directive names.
	Active `%name-prefix', `file-prefix', and `output'.
	(parse_percent_token): Accept possible arguments to directives.
	Promote `-' over `_' in directive names.

2001-11-04  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Decl Summary): Split the list into
	`directives for grammars' and `directives for bison'.
	Sort'em.
	Add description of `%name-prefix', `file-prefix', and `output'.
	Promote `-' over `_' in directive names.
	(Bison Options): s/%locactions/%locations/.  Nice Freudian slip.
	Simplify the description of `--name-prefix'.
	Promote `-' over `_' in directive names.
	Promote `--output' over `--output-file'.
	Fix the description of `--defines'.
	* tests/output.at: Exercise %file-prefix and %output.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* doc/refcard.tex: Update.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* src/symtab.h (SUNDEF): New.
	* src/symtab.c (bucket_new): Init user_token_number to SUNDEF to
	stand for `uninitialized', instead of 0.
	* src/reader.c (packsymbols, parse_thong_decl): Adjust.
	* src/lex.c (lex): Adjust.

	* tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF.
	Number it 0.
	Let yylex return it instead of a plain 0.
	Reported by Dick Streefland.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Mixing %token styles): New test.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_thong_decl): Formatting changes.
	(token_translations_init): New, extracted from...
	(packsymbols): Here.
	Adjust.

2001-11-01  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (AT_TEST_CPP_GUARD_H): New.
	Check that `9foo.y' produces correct cpp guards.
	* src/files.c (compute_header_macro): Prepend `BISON_' to CPP
	guards.
	Reported by Wwp.

2001-11-01  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid input: 2): New.
	* src/lex.c (unlexed_token_buffer): New.
	(lex, unlex): Adjust: when unlexing, be sure to save token_buffer
	too.
	Reported by Wwp.

2001-11-01  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Catch up with 1.30.
	* configure.in: Bump to 1.49a.
	Adjust to newer Autotest.

2001-10-19  Pascal Bart  <pascal.bart@epita.fr>

	* src/conflicts.c: Move global variables rrc_total and src_total ...
	(print_conflicts): here.
	* src/output.c (output): Free global variable user_toknums.
	* src/lex.c (token_obstack): Become static.

2001-10-18  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (GCC): Add.
	* tests/calc.at: s/m4_match/m4_bmatch/.
	s/m4_patsubst/m4_bpatsubst/.
	(AT_CHECK_CALC): Check the compiler's stderr only if it's GCC.
	* configure.in: AC_SUBST(GCC).

2001-10-14  Marc Autret  <autret_m@epita.fr>

	* src/options.c (create_long_option_table): Fix.

2001-10-10  Akim Demaille  <akim@epita.fr>

	* src/bison.simple: Be sure to set YYSTACK_USE_ALLOCA.

2001-10-04  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_union_decl): Push the caracters in
	union_obstack, not attrs_obstack.

2001-10-04  Akim Demaille  <akim@epita.fr>

	Merge in the branch 1.29.

	* src/reader.c (packsymbols): Use a temporary obstack for
	`%%tokendef', since output_stack is already used elsewhere.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	Bump 1.29d.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	Version 1.29c.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid CPP headers): New.
	From Alexander Belopolsky.
	* src/files.c (compute_header_macro): Map non alnum chars to `_'.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid input): New.
	* src/lex.c (lex): Be sure to set `token_buffer' in any case.
	Reported by Shura.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Now that --debug works, the tests must be adjusted.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_parser): Assert `skeleton'.
	* src/files.c (skeleton_find): Look harder for skeletons on DOSish
	systems.
	From Shura.

	2001-10-01  Marc Autret  <autret_m@epita.fr>

	* src/lex.h: Echo modifications.
	* src/lex.c (unlex): Parameter is now token_t.
	From Hans Aberg.

	2001-10-01  Marc Autret  <autret_m@epita.fr>

	* src/main.c: Include lex.h.
	From Hans Aberg.

	2001-09-29  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (longopts): `--debug' is `-t', not `-d'.

	2001-09-28  Akim Demaille  <akim@epita.fr>

	* tests/testsuite.at: Update to newer Autotest.
	* tests/Makefile.am (EXTRA_DIST): bison is not to be shipped.

	2001-09-27  Akim Demaille  <akim@epita.fr>

	Position independent wrapper.

	* tests/bison: Remove.
	* tests/bison.in: New.
	* configure.in: Adjust.

	2001-09-27  Paul Eggert  <eggert@twinsun.com>

	Port quotearg fixes from tar 1.13.24.

	* lib/quotearg.c: BSD/OS 4.1 wchar.h requires FILE and struct
	tm to be declared.
	(HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
	(mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.

	* m4/Makefile.am (EXTRA_DIST): Add mbrtowc.m4.
	* m4/mbrtowc.m4: New file.
	* m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit and stddef.h.
	Use jm_FUNC_MBRTOWC instead of AC_CHECK_FUNCS(mbrtowc).

	2001-09-27  Akim Demaille  <akim@epita.fr>

	Bump to 1.29c.

	2001-09-27  Akim Demaille  <akim@epita.fr>

	Version 1.29b.

	2001-09-25  Akim Demaille  <akim@epita.fr>

	* src/system.h: Include `xalloc.h'.
	Remove it from the C files.
	* src/files.c (output_files): Free the obstacks.
	* src/lex.c (init_lex): Rename as...
	(lex_init): this.
	(lex_free): New.
	* src/main.c (main): Use it.

	2001-09-24  Marc Autret  <autret_m@epita.fr>

	* src/vcg.c (open_edge, close_edge, open_node, close_node): Change
	to output informations in fout (FILE*).
	(open_graph, close_graph): Likewise.
	(output_graph, output_edge, output_node): Likewise.
	* src/vcg.h: Update function prototypes.
	* src/print_graph.c (print_graph): Open output graph file.
	(print_actions): Adjust.
	* src/files.h: Remove extern declaration.
	* src/files.c: Remove graph_obstack declaration.
	(open_files): Remove graph_obstack initialization.
	(output_files): Remove graph_obstack saving.

	2001-09-24  Marc Autret  <autret_m@epita.fr>

	* src/files.c (compute_output_file_names): Fix.

	2001-09-24  Marc Autret  <autret_m@epita.fr>,
		    Akim Demaille  <akim@epita.fr>

	* src/reader.c (reader): Remove call to free_symtab ().
	* src/main.c (main): Call it here.
	Include symtab.h.
	* src/conflicts.c (initialize_conflicts): Rename as...
	(solve_conflicts): this.
	* src/print.c (print_core, print_actions, print_state)
	(print_grammar): Dump to a file instead a `output_obstack'.
	(print_results): Dump `output_obstack', and then proceed with the
	FILE *.
	* src/files.c (compute_output_file_names, close_files): New.
	(output_files): Adjust.
	* src/main.c (main): Adjust.

	2001-09-23  Marc Autret  <autret_m@epita.fr>

	* src/files.c (compute_header_macro): Computes header macro name
	from spec_defines_file when given.

	2001-09-23  Marc Autret  <autret_m@epita.fr>

	* src/files.c (output_files): Add default extensions.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (finalize_conflicts): Rename as...
	(free_conflicts): this.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* src/gram.c (gram_free): Rename back as...
	(dummy): this.
	(output_token_translations): Free `token_translations'.
	* src/symtab.c (free_symtab): Free the tag field.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	Remove `translations' as it is always set to true.

	* src/gram.h: Adjust.
	* src/reader.c (packsymbols, parse_token_decl): Adjust
	* src/print.c (print_grammar): Adjust.
	* src/output.c (output_token_translations): Adjust.
	* src/lex.c (lex): Adjust.
	* src/gram.c: Be sure the set pointers to NULL.
	(dummy): Rename as...
	(gram_free): this.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* configure.in: Invoke AM_LIB_DMALLOC.
	* src/system.h: Use dmalloc.
	* src/LR0.c: Be sure to have pointers initialized to NULL.
	(allocate_itemsets): Allocate kernel_items only if needed.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* configure.in: Bump to 1.29b.
	* tests/Makefile.am (DISTCLEANFILES): Add package.m4.
	* tests/calc.at (_AT_DATA_CALC_Y): #undef malloc so that we don't
	need xmalloc.c in calc.y.
	From Pascal Bart.

	2001-09-21  Akim Demaille  <akim@epita.fr>

	Version 1.29a.
	* Makefile.maint, config/config.guess, config/config.sub,
	* config/missing: Update from masters.
	* tests/Makefile.am ($(srcdir)/$(TESTSUITE)): No longer depend
	upon package.m4.
	* configure.in (ALL_LINGUAS): Add `tr'.

	2001-09-21  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (package.m4): Move to...
	($(srcdir)/$(TESTSUITE)): here.

	2001-09-20  Akim Demaille  <akim@epita.fr>

	* src/complain.c: No longer try to be standalone: use system.h.
	Don't assume __STDC__ is defined to 1. Just test if it is defined.
	* src/complain.h: Likewise.
	* src/reduce.c (useless_nonterminals, inaccessable_symbols):
	Remove the unused variable `n'.
	From Albert Chin-A-Young.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* doc/bison.1: Update.
	* doc/bison.texinfo (Bison Options): Update --defines and --graph
	descriptions.
	(Option Cross Key): Update.
	Add --graph.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* tests/regression.at: New test (comment in %union).

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_union_decl): Do not output '/'. Let copy_comment
	do that.
	Reported by Keith Browne.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* tests/output.at: Add tests for --defines and --graph.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* tests/output.at: Removes tests of %{header,src}_extension features.

	2001-09-18  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (package.m4): New.
	* tests/calc.at (_AT_CHECK_CALC): Just run `calc input'.
	(_AT_CHECK_CALC_ERROR): Likewise.
	Factor the `, ' part of verbose error messages.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* src/getargs.c (longopts): Declare --defines and --graph as options
	with optional arguments.
	* src/files.h: Add extern declarations.
	* src/files.c (spec_graph_file, spec_defines_file): New.
	(output_files): Update.
	Remove CPP-outed code.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	Turn off %{source,header}_extension feature.

	* src/files.c (compute_exts_from_gf): Update.
	(compute_exts_from_src): Update.
	(output_files): CPP-out useless code.
	* src/files.h: Remove {header,source}_extension extern declarations.
	* src/reader.c (parse_dquoted_param): CPP-out.
	(parse_header_extension_decl): Remove.
	(parse_source_extension_decl): Remove.
	(read_declarations): Remove cases tok_{hdrext,srcext}.
	* src/lex.c (percent_table): Remove {header,source}_extension entries.
	* src/lex.h (token_t): Remove tok_hdrext and tok_srcext.

	2001-09-10  Akim Demaille  <akim@epita.fr>

	* tests/output.at (AT_CHECK_BISON_FLAGS, AT_CHECK_BISON_PERCENT):
	(AT_CHECK_BISON_PERCENT_FLAGS): Merge into...
	(AT_CHECK_OUTPUT): this.
	Merely check ls' exit status, its output is useless.

	2001-09-10  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Use m4_match.
	(_AT_DATA_CALC_Y): Check `yyin != NULL', not `stdin != NULL'.

	2001-09-10  Marc Autret  <autret_m@epita.fr>,
		    Akim Demaille  <akim@epita.fr>

	* src/vcg.h (graph_s): color, textcolor, bordercolor are now
	enum color_e.
	* src/print_graph.c (print_graph): Initalize graph.layoutalgorithm
	to `normal'.
	* src/reader.c (parse_token_decl): Initialize token with tok_eof.
	* src/lex.h: Adjust prototype.
	(token_t): Add `tok_undef'.
	* src/lex.c (struct percent_table_struct): Retval is now a token_t.
	(parse_percent_token): Now returns token_t.
	Add default statement in switch.
	(lex): Separate `c' as an input variable, from the token_t result
	part.
	(unlexed): Is a token_t.

	2001-09-10  Akim Demaille  <akim@epita.fr>

	* configure.in: Bump to 1.29a.

	2001-09-07  Akim Demaille  <akim@epita.fr>

	Version 1.29.

	2001-08-30  Akim Demaille  <akim@epita.fr>

	* tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove.
	* m4/atconfig.m4: Remove.
	* tests/testsuite.at, tests/atlocal.in, tests/output.at,
	* tests/bison: New.
	* tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER,
	m4_if, m4_patsubst, and m4_regexp.
	* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an
	`input' file instead of echo.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	Bump to 1.28e.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	Version 1.28d.

	2001-08-29  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (yyparse): Don't take the address of an
	item before the start of an array, as that doesn't conform to
	the C Standard.

	2001-08-29  Robert Anisko  <anisko_r@epita.fr>

	* doc/bison.texinfo (Location Tracking Calc): New node.

	2001-08-29  Paul Eggert  <eggert@twinsun.com>

	* src/output.c (output): Do not define const, as this now
	causes more problems than it cures.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Modernize `@node' and `@top' use: just name
	the nodes.
	Be sure to tag the `detailmenu'.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	* Makefile.maint (do-po-update): Wget refuses to overwrite files:
	download in a tmp dir.

	2001-08-28  Marc Autret  <autret_m@epita.fr>

	* config/depcomp: New file.

	2001-08-28  Marc Autret  <autret_m@epita.fr>

	* doc/bison.1 (mandoc): Adjust.
	From Juan Manuel Guerrero.

	2001-08-28  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.c (print_state): Fix.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/vcg.h (classname_s, infoname_s, node_s): Constify the
	char * members.
	Echo modifications to the functions prototypes.
	* src/vcg.c (add_classname, add_infoname): Adjust arguments.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/vcg.c: Include `xalloc.h'.
	(add_colorentry): New.
	(add_classname): New.
	(add_infoname): New.
	* src/vcg.h: Add new prototypes.

	2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Sync. again with CVS Autoconf.

	2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Formatting changes.
	(po-update, cvs-update, update): New targets.
	(AMTAR): Remove.

	2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.am (AUTOMAKE_OPTIONS): 1.5.
	* Makefile.maint: Sync. with CVS Autoconf.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/vcg.h (struct infoname_s): New.
	(struct colorentry_s): New.
	(graph_s): New fields {vertical,horizontal}_order in structure.
	Add `infoname' field.
	Add `colorentry' field;
	* src/vcg_defaults.h (G_VERTICAL_ORDER): New.
	(G_HORIZONTAL_ORDER): New.
	(G_INFONAME): New.
	(G_COLORENTRY): New.
	* src/vcg.c (output_graph): Add output of {vertical,horizontal}_order.
	Add output of `infoname'.
	Add output of `colorentry'.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_dquoted_param): Rename variable `index' to `i'.
	This one shadowed a global parameter.

	2001-08-24  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.c (node_output_size): Declared POSIX `size_t' type,
	instead of `unsigned'.
	(print_state): Do not call obstack_object_size () in obstack_grow ()
	to avoid macro variables shadowing.

	2001-08-23  Marc Autret  <autret_m@epita.fr>

	* src/lex.c (percent_table): Typo: s/naem/name/.
	Add graph option.
	Normalize new options declarations.

	2001-08-20  Pascal Bart  <pascal.bart@epita.fr>

	* tests/suite.at: Exercise %header_extension and %source_extension.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_dquoted_param): New.
	(parse_header_extension_decl): Use it.
	(parse_source_extension_decl): Likewise.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* src/vcg.c: Remove includes of `complain.h' and `xalloc.h'.
	(get_xxxx_str): Use assert () instead of complain ().
	Remove return invokations in default cases.
	(get_decision_str): Modify default behaviour. Remove second argument.
	Echo modifications on calls.
	(output_graph): Fix.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* src/getargs.c (usage): Update with ``-g, --graph''.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo (Bison Options): Add items `-g', `--graph'.
	(Option Cross Key): Likewise.
	* doc/bison.1: Update.

2001-09-25  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output_master_parser): Don't finish action_obstack.
	(output_parser): Don't care about the muscle action, here.
	(prepare): Copy the action_obstack in the action muscle.
	(output): Free action_obstack.

2001-09-23  Pascal Bart  <pascal.bart@epita.fr>

	* src/reader.c (parse_union_decl): Add new obstack union_obstack.  Which
	will contain `%union' declaration.
	(parse_union_decl): Delete #line directive output.
	(parse_union_decl): Substitute /attrs_obstack/union_obstack for all
	informations about %union.
	(parse_union_decl): Copy the union_obstack in the muscle stype.
	* src/bison.simple: Add new #line directive.
	Add typdef %%stype YYSTYPE.

2001-09-23  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: Add new `#line' directive.

2001-09-22  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: New `#line' directive.
	* src/output.c (output_parser): Support new dynamic muscle input_line.

2001-09-22  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_master_parser): New.
	(output_parser): Be more re-entrant.

2001-09-21  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (copy_definition, parse_union_decl): Update and use
	`linef' muscle.
	(copy_action): Likewise.
	Use obstack_1grow ().
	* src/muscle_tab.c (muscle_init): Add muscle `linef'.

2001-09-21  Marc Autret  <autret_m@epita.fr>

	* src/options.c (option_table): Adjust.
	* src/lex.c (parse_percent_token): Fix.

2001-09-20  Pascal Bart  <pascal.bart@epita.fr>

	* src/options.c (symtab.h): Include it, need by lex.h.

2001-09-20  Pascal Bart  <pascal.bart@epita.fr>

	* src/lex.c (parse_percent_token): Change type of variable `tx', which
	is now an option_table_struct*.
	(option_strcmp): New function option_strcmp.
	(parse_percent_token): Call option_strcmp.
	* src/getargs.c (xalloc.h, options.h): Include it.
	(getargs): Call create_long_option_table.
	(getargs): Free longopts at the end of the function.
	(shortopts): Move in options.c.
	* src/options.c (create_long_option_table): New function.  Convert
	information from option_table to option structure.
	* src/reader.c (options.h): Include it.

	* src/Makefile.am: Adjust.
	* src/options.c (option_table): Create from longopts and percent_table.
	* src/getargs.c (longopts): Delete.
	* src/lex.c (struct percent_table_struct): Delete.
	(percent_table): Delete.
	(options.h): Include it.
	* src/options.c: Create.
	* src/options.h: Create.
	Declare enum opt_access_e.
	Define struct option_table_struct.

2001-09-20  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo: Adjust terminologies about prologue and epilogue
	sections of Bison.

2001-09-19  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: s/%%filename/%%skeleton.
	* src/muscle_tab.c (getargs.h): Include it.
	(muscle_init): Insert new muscle skeleton.

2001-09-18  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output_parser): Delete unused variable actions_dumped.

2001-09-07  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output): Delete call to reader_output_yylsp.
	* src/reader.c (reader): Likewise.
	* src/reader.h: Delete declaration of reader_output_yylsp.

2001-09-02  Marc Autret  <autret_m@epita.fr>

	* src/reader.c: Include muscle_tab.h.
	(parse_union_decl): Update.
	(parse_macro_decl): Rename parse_muscle_decl.
	Update to use renamed functions and variable.
	(read_declarations, copy_action, read_additionnal_code, : Updated
	with correct variables and functions names.
	(packsymbols, reader): Likewise.

	* src/reader.h (muscle_obstack): Extern declaration update.

	* src/output.c: Include muscle_tab.h
	In all functions using macro_insert, change by using muscle_insert ().
	(macro_obstack): Rename muscle_obstack.
	Echo modifications in the whole file.
	(MACRO_INSERT_INT): Rename MUSCLE_INSERT_INT.
	(MACRO_INSERT_STRING): Rename MUSCLE_INSERT_STRING.
	(MACRO_INSERT_PREFIX): Rename MUSCLE_INSERT_PREFIX.

	* src/muscle_tab.h: Update double inclusion macros.
	(macro_entry_s): Rename muscle_entry_s.
	Update prototypes.

	* src/muscle_tab.c: Include muscle_tab.h.
	Rename macro_tabble to muscle_table.
	(mhash1, mhash2, mcmp): Use muscle_entry.
	(macro_init): Rename muscle_init. Update.
	(macro_insert): Rename muscle_insert. Update.
	(macro_find): Rename muscle_find. Update.

	* src/main.c: Include muscle_tab.h.
	(main): Call muscle_init ().
	* src/Makefile.am (bison_SOURCES): Echo modifications.

2001-09-02  Marc Autret  <autret_m@epita.fr>

	Now the files macro_tab.[ch] are named muscle_tab.[ch].

	* src/muscle_tab.c, src/muscle_tab.h: Add files.

2001-09-02  Marc Autret  <autret_m@epita.fr>

	* src/macrotab.c, src/macrotab.h: Remove.

2001-09-01  Pascal Bart  <pascal.bart@epita.fr>

	* src/reader.c (copy_guard): Use muscle to specify the `#line'
	filename.

2001-09-01  Marc Autret  <autret_m@epita.fr>

	* tests/calc.at (exp): Now, YYERROR_VERBOSE need to be set
	to an explicit value to activate the feature. We do it here.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (prepare): Delete the `filename' muscule insertion.
	* src/reader.c (copy_action): Use `filename' muscule with `#line'.
	(parse_union_decl): Likewise.
	* src/macrotab.c (macro_init): Initialize filename by infile.

2001-08-31  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple (YYLSP_NEEDED): New definition.
	* src/output.c (prepare): Add macro insertion of `locations_flag'

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (prepare): Delete insertion of previous muscles,
	and insert the `prefix' muscles.
	* src/macrotab.c (macro_init): Likewise.
	(macro_init): Initialization prefix directive by `yy'.
	* src/bison.simple: Substitute all %%yylex, %%yychar, %%yylval,
	%%yydebug, %%yyerror, %%yynerrs and %%yyparse by yylex, yychar,
	yylval, yydebug, yyerror, yynerrs and yyparse.
	New directive `#define' to substitute yydebug, ... with option
	name_prefix.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/main.c (main): Standardize.
	* src/output.c (output_table_data, output_parser): Likewise.
	* src/macrotab.h, src/macrotab.c, src/bison.simple: Likewise.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>, Marc Autret  <autret_m@epita.fr>

	* src/reader.c (read_additionnal_code): Rename %%user_code to
	%%epilogue.
	* src/output.c (output): Rename %%declarations to %%prologue.
	* src/bison.simple: Echo modifications.

2001-08-31  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (readgram): CleanUp.
	(output_token_defines): Likewise.
	(packsymbols): Likewise.
	(reader): Likewise.
	* src/output.c (output): CPP-out useless code.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/reader.c (reader): Delete obsolete call to function
	output_trailers and output_headers.
	* src/output.h: Remove obsolete functions prototypes of output_headers
	and output_trailers.

2001-08-30  Pascal Bart  <pascal.bart@epita.fr>

	* src/main.c: Include macrotab.h.
	* src/macrotab.h (macro_entry_s): Constify fields.
	Adjust functions prototypes.
	* src/macrotab.c (macro_insert): Constify key and value.
	(macro_find): Constify key.
	(macro_insert): Include 'xalloc.h'
	(macro_insert): Use XMALLOC.
	(macro_find): Constify return value.
	* src/output.c (output_table_data): Rename table to table_data.
	(output_parser): Constify macro_key, macro_value.

2001-08-30  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_skel_decl): New.
	(read_declarations): Add case `tok_skel', call parse_skel_decl ().
	* src/lex.h (token_t): New token `tok_skel'.
	* src/lex.c (percent_table): Add skeleton option entry.
	Standardize.

2001-08-29  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Add %%user_code directive at the end.
	* src/reader.c (read_additionnal_code): New.
	(reader): Use it.
	* src/output.c (output_program): Remove.
	(output): Update.

2001-08-28  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_actions): Clean up.
	(output_gram): CPP-out useless code.
	* src/reader.c (reader): Clean up, CPP-out useless code.

2001-08-28  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output): Copy attrs_obstack in the '%%definitions'
	directive.
	* src/bison.simple: Add `%%definitions'.

2001-08-28  Marc Autret  <autret_m@epita.fr>

	* config/depcomp: New file.

2001-08-27  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (yyparse): Don't take the address of an
	item before the start of an array, as that doesn't conform to
	the C Standard.

2001-08-27  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output): Remove the initialization of the macro
	obstack.  It was done too late here.

	* src/reader.c (parse_macro_decl): Fix.  Use of the macro obstack was
	completely wrong.
	(reader): Initialize the macro obstack here, since we need it to grow
	'%define' directives.

	* src/reader.h: Declare the macro obstack as extern.

2001-08-27  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_parser): Fix.  Store single '%' characters in
	the output obstack instead of throwing them away.

2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.am (AUTOMAKE_OPTIONS): 1.5.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* lib/Makefile.am: Adjust.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/bison.simple: Update and add '%%' directives.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/reader.c (reader): Remove calls to 'output_headers' and
	'output_trailers'. Remove some C output.
	(readgram): Disable a piece of code that was writing a default
	definition for 'YYSTYPE'.
	(reader_output_yylsp): Remove.
	(packsymbols): Output token defintions to a macro.
	(copy_definition): Disable C output.

	* src/reader.c (parse_macro_decl): New function used to parse macro
	declarations.
	(copy_string2): Put the body of copy_string into this new function.
	Add a parameter to let the caller choose whether he wants to copy the
	string delimiters or not.
	(copy_string): Be a simple call to copy_string2 with the last argument
	bound to true.
	(read_declarations): Add case for macro definition.
	(copy_identifier): New.
	(parse_macro_decl): Read macro identifiers using copy_identifier
	rather than lex.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (prepare): Add prefixed names.
	(output_parser): Output semantic actions.
	(output_parser): Fix bug on '%%line' directives.

	* src/output.c (output_headers): Remove. The C code printed by this
	function should now be in the skeletons.
	(output_trailers): Remove.
	(output): Disable call to 'reader_output_yylsp'.
	(output_rule_data): Do not output tables to the table obstack.

	* src/output.c: Remove some C dedicated output.
	Improve the use of macro and output obstacks.
	(output_defines): Remove.

	* src/output.c (output_token_translations): Associate 'translate'
	table with a macro. No output to the table obstack.
	(output_gram): Same for 'rhs' and 'prhs'.
	(output_stos): Same for 'stos'.
	(output_rule_data): Same for 'r1' and 'r2'.
	(token_actions): Same for 'defact'.
	(goto_actions): Same for 'defgoto'.
	(output_base): Same for 'pact' and 'pgoto'.
	(output_table): Same for 'table'.
	(output_check): Same for 'check'.

	* src/output.c (output_table_data): New function.
	(output_short_table): Remove.
	(output_short_or_char_table): Remove.

	* src/output.c (output_parser): Replace most of the skeleton copy code
	with something new. Skeletons are now processed character by character
	rather than line by line, and Bison looks for '%%' macros. This is the
	first step in making Bison's output process (a lot) more flexible.
	(output_parser): Use the macro table.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/main.c (main): Initialize the macro table.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/lex.c (percent_table): Add tok_define.
	* src/lex.h: Add tok_define.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/macrotab.c: New file.
	* src/macrotab.h: New file.
	* src/Makefile.am: Update.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* lib/hash.c: New file.
	* lib/hash.h: New file.
	* lib/Makefile.am: Update.

2001-08-15  Akim Demaille  <akim@epita.fr>

	Version 1.28c.

2001-08-15  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (readgram): Indent output macro YYSTYPE.
	(packsymbols): Likewise.
	(output_token_defines): Likewise.
	* src/files.c: Standardize.
	(compute_header_macro): New.
	(defines_obstack_save): New. Use compute_header_macro.
	(output_files): Update. Use defines_obstack_save.

2001-08-15  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Table of Symbols): Document
	YYSTACK_USE_ALLOCA.

2001-08-15  Akim Demaille  <akim@epita.fr>

	* missing: Update from CVS Automake.
	* config/config.guess, config/config.sub, config/texinfo.tex:
	Update from gnu.org.

2001-08-15  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Sync with CVS Autoconf.

2001-08-14  Pascal Bart  <pascal.bart@epita.fr>

	* doc/bison.texinfo: Include GNU Free Documentation License from
	`fdl.texi'.
	* doc/fdl.texi: Add to package.

2001-08-14  Marc Autret  <autret_m@epita.fr>

	Turn on %{source,header}_extension features.

	* src/lex.c (percent_table): Un-CPP out header_extension and
	source_extension.
	* src/files.c (compute_exts_from_gf): Compare pointers with NULL.
	(compute_exts_from_src): Remove conditions. It restores priorities
	between options.

2001-08-14  Marc Autret  <autret_m@epita.fr>

	* src/files.c (compute_base_names): Add extensions computing when
	`--file-prefix' used.
	Standardize function calls.

2001-08-13  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple (YYSTACK_USE_ALLOCA): Changed to allow users
	defining it (defined but null disables alloca).

2001-08-13  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple (_yy_memcpy): CPP reformat.

2001-08-13  Pascal Bart  <pascal.bart@epita.fr>

	* tests/atconfig.in (CPPFLAGS): Fix.

2001-08-10  Pascal Bart  <pascal.bart@epita.fr>

	* doc/bison.texinfo: Include GNU General Public License from
	`gpl.texi'.
	* doc/gpl.texi: Add to package.

2001-08-10  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.h: Fix.
	* src/reader.c (read_declarations): Use parse_header_extension_decl ().

2001-08-10  Akim Demaille  <akim@epita.fr>

	* src/system.h: Provide default declarations for stpcpy, strndup,
	and strnlen.

2001-08-10  Robert Anisko  <anisko_r@epita.fr>

	* doc/bison.texinfo (Locations): Update @$ stuff.

2001-08-09  Robert Anisko  <anisko_r@epita.fr>

	* src/bison.simple (YYLLOC_DEFAULT): Update.
	(yyparse): Adjust.

2001-08-08  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo: Change @samp{$<@dots{}>} to
	@samp{$<@dots{}>@var{n}} in Section Actions in Mid-Rule.
	Reported by Fabrice Bauzac.

2001-08-08  Marc Autret  <autret_m@epita.fr>

	* src/vcg_default.h: Use NULL instead of 0 to initialize pointers.
	* src/vcg.c (output_node): Fix.
	* src/vcg.h: Cleanup.
	* src/print_graph.c: Add comments.
	(node_output_size): New global variable. Simplify the formatting of
	the VCG graph output.
	(print_actions): Unused code is now used. It notifies the final state
	and no action states in the VCG graph. It also give the reduce actions.
	The `shift and goto' edges are red and the `go to state' edges are
	blue.
	Get the current node name and node_obstack by argument.
	(node_obstack): New variable.
	(print_state): Manage node_obstack.
	(print_core): Use node_obstack given by argument.
	A node is not only computed here but in print_actions also.
	(print_graph): CPP out useless code instead of commenting it.

2001-08-07  Pascal Bart  <pascal.bart@epita.fr>

	* tests/atconfig.in (CPPFLAGS): Fix.

2001-08-07  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (quote): New.
	(print_core): Use it.

2001-08-06  Akim Demaille  <akim@epita.fr>, Marc Autret  <autret_m@epita.fr>

	* src/vcg.c (complain.h): Include it.
	Unepitaize `return' invocations.
	[NDEBUG] (main): Remove.
	* src/vcg.h (node_t, edge_t, graph_t): Constify the char * members.
	* src/files.c (open_files): Initialize graph_obstack.
	* src/print_graph.c (print_actions): CPP out useless code.
	(print_core): Don't output the last `\n' in labels.
	Use `quote'.
	* src/files.c (output_files): Output the VCG file.
	* src/main.c (main): Invoke print_graph ();

2001-08-06  Marc Autret  <autret_m@epita.fr>

	Automaton VCG graph output.
	Using option ``-g'' or long option ``--graph'', you can generate
	a gram_filename.vcg file containing a VCG description of the LALR (1)
	automaton of your grammar.

	* src/main.c: Call to print_graph() function.
	* src/getargs.h: Update.
	* src/getargs.c (options): Update to catch `-g' and `--graph' options.
	(graph_flag): New flag.
	(longopts): Update.
	(getargs): Add case `g'.
	* src/files.c (graph_obstack): New obstack struct.
	(open_files): Initialize new obstack.
	(output_files): Saves graph_obstack if required.
	* src/files.h (graph_obstack): New extern declaration.
	* src/Makefile.am: Add new source files.

2001-08-06  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.c, src/print_graph.h (graph): New.
	* src/vcg.h: New file.
	* src/vcg.c: New file, VCG graph handling.

2001-08-06  Marc Autret  <autret_m@epita.fr>

	Add of %source_extension and %header_extension which specify
	the source or/and the header output file extension.

	* src/files.c (compute_base_names): Remove initialisation of
	src_extension and header_extension.
	(compute_exts_from_gf): Update.
	(compute_exts_from_src): Update.
	(output_files): Update.
	* src/reader.c (parse_header_extension_decl): New.
	(parse_source_extension_decl): New.
	(read_declarations): New case statements for the new tokens.
	* src/lex.c (percent_table): Add entries for %source_extension
	and %header_extension.
	* src/lex.h (token_e): New tokens tok_hdrext and tok_srcext.

2001-08-06  Marc Autret  <autret_m@epita.fr>

	* configure.in: Bump to 1.28c.
	* doc/bison.texinfo: Texinfo thingies.

2001-08-04  Pascal Bart  <pascal.bart@epita.fr>

	* tests/atconfig.in (CPPFLAGS): Add.
	* tests/calc.at (AT_CHECK): Use CPPFLAGS.

2001-08-03  Akim Demaille  <akim@epita.fr>

	Version 1.28b.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (check-local): Ship testsuite.
	* tests/calc.at (_AT_DATA_CALC_Y): Prototype all the functions.
	Include `string.h'.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* configure.in: Try using -Wformat when compiling.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* configure.in: Bump to 1.28b.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* src/complain.c: Adjust strerror_r portability issues.

2001-08-03  Akim Demaille  <akim@epita.fr>

	Version 1.28a.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* src/getargs.c, src/getarg.h (skeleton)): Constify.
	* src/lex.c (literalchar): Avoid name clashes on `buf'.
	* src/getargs.c: Include complain.h.
	* src/files.c, src/files.h (skeleton_find): Avoid name clashes.
	* lib/quotearg.c, lib/quotearg.h: Update from fileutils 4.1.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Display hidden chars in error messages.

2001-08-03  Akim Demaille  <akim@epita.fr>

	Update to gettext 0.10.39.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* lib/strspn.c: New.

2001-08-01  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo: Update.
	* doc/bison.1 (mandoc): Update.
	* src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove .c and .h.
	* src/files.c: Support output files extensions computing.
	(src_extension): New static variable.
	(header_extension): New static variable.
	(tr): New function.
	(get_extension_index): New function, gets the index of an extension
	filename in a string.
	(compute_exts_from_gf): New function, computes extensions from the
	grammar file extension.
	(compute_exts_from_src): New functions, computes extensions from the
	C source file extension, file given by ``-o'' option.
	(compute_base_names): Update.
	(output_files): Update.

2001-08-01  Robert Anisko  <anisko_r@epita.fr>

	* doc/bison.texi: Document @$.
	(Locations): New section.

2001-07-18  Akim Demaille  <akim@epita.fr>

	* Makefile.maint, GNUmakefile: New, from Autoconf 2.52.
	* config/prev-version.txt, config/move-if-change: New.
	* Makefile.am: Adjust.

2001-07-08  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple (yyparse): Suppress warning `comparaison
	between signed and unsigned'.

2001-07-05  Pascal Bart  <pascal.bart@epita.fr>

	* src/getargs.h (raw_flag): Remove.
	* src/getargs.c: Die on `-r'/`--raw'.
	* src/lex.c (parse_percent_token): Die on `%raw'.
	* src/reader.c (output_token_defines): Suppress call to `raw_flag'.
	* tests/calc.at: Suppress test with option `--raw'.

2001-07-14  Akim Demaille  <akim@epita.fr>

	* config/: New.
	* configure.in: Require Autoconf 2.50.
	Update to gettext 0.10.38.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: ANSIfy the examples.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* getargs.c (skeleton): New variable.
	(longopts): --skeleton is a new option.
	(shortopts, getargs): -S is a new option.
	* getargs.h: Declare skeleton.
	* output.c (output_parser): Use it.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* m4/strerror_r.m4: New.
	* m4/error.m4: Run AC_FUNC_STRERROR_R.
	* lib/error.h, lib/error.c: Update.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (longopts): Clean up.

2001-02-21  Akim Demaille  <akim@epita.fr>

	* src/reader.c (gensym): `gensym_count' is your own.
	Use a static buf to create the symbol name, as token_buffer is no
	longer a buffer.

2001-02-08  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflict_report): Be sure not to append to res
	between two calls, which could happen if both first sprintf were
	skipped, but not the first cp += strlen.

2001-02-08  Akim Demaille  <akim@epita.fr>

	* lib/memchr.c, lib/stpcpy.c, lib/strndup.c, lib/strnlen.c:
	New, from fileutils 4.0.37.
	* configure.in: Require Autoconf 2.49c.  I took some time before
	making this decision.  This is the only way out for portability
	issues in Bison, it would mean way too much duplicate effort to
	import in Bison features implemented in 2.49c since 2.13.
	AC_REPLACE_FUNCS and AC_CHECK_DECLS the functions above.

2001-02-02  Akim Demaille  <akim@epita.fr>

	* lib/malloc.c, lib/realloc.c: New, from the fileutils 4.0.37.
	* lib/xalloc.h, lib/xmalloc.c: Update.

2001-01-19  Akim Demaille  <akim@epita.fr>

	Get rid of the ad hoc handling of token_buffer in the scanner: use
	the obstacks.

	* src/lex.c (token_obstack): New.
	(init_lex): Initialize it.  No longer call...
	(grow_token_buffer): this.  Remove it.
	Adjust all the places which used it to use the obstack.

2001-01-19  Akim Demaille  <akim@epita.fr>

	* src/lex.h: Rename all the tokens:
	s/\bENDFILE\b/tok_eof/g;
	s/\bIDENTIFIER\b/tok_identifier/g;
	etc.
	Let them be enums, not #define, to ease debugging.
	Adjust all the code.

2001-01-18  Akim Demaille  <akim@epita.fr>

	* src/lex.h (MAXTOKEN, maxtoken, grow_token_buffer): Remove, private.
	* src/lex.c (maxtoken, grow_token_buffer): Static.

2001-01-18  Akim Demaille  <akim@epita.fr>

	Since we now use obstacks, more % directives can be enabled.

	* src/lex.c (percent_table): Also accept `%yacc',
	`%fixed_output_files', `%defines', `%no_parser', `%verbose', and
	`%debug'.
	Handle the actions for `%semantic_parser' and `%pure_parser' here,
	instead of returning a token.
	* src/lex.h (SEMANTIC_PARSER, PURE_PARSER): Remove, unused.
	* src/reader.c (read_declarations): Adjust.
	* src/files.c (open_files): Don't call `compute_base_names', don't
	compute `attrsfile' since they depend upon data which might be
	*in* the input file now.
	(output_files): Do it here.
	* src/output.c (output_headers): Document the fact that this patch
	introduces a guaranteed SEGV for semantic parsers.
	* doc/bison.texinfo: Document them.
	* tests/suite.at: Exercise these %options.

2000-12-20  Akim Demaille  <akim@epita.fr>

	Also handle the output file (--verbose) with obstacks.

	* files.c (foutput): Remove.
	(output_obstack): New.
	Adjust all dependencies.
	* src/conflicts.c: Return a string.
	* src/system.h (obstack_grow_string): Rename as...
	(obstack_sgrow): this.  Be ready to work with non literals.
	(obstack_fgrow4): New.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/files.c (open_files): Fix the computation of short_base_name
	in the case of `-o foo.tab.c'.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_string, copy_comment, copy_comment2, copy_at)
	(copy_dollar): Now that everything uses obstacks, get rid of the
	FILE * parameters.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/files.c (open_files): Actually the `.output' file is based
	on the short_base_name, not base_name.
	* tests/suite.at (Checking output file names): Adjust.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Remove, we now use directly...
	* src/bison.simple: this.
	* src/Makefile.am: Use pkgdata instead of data.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/files.c (guard_obstack): New.
	(open_files): Initialize it.
	(output_files): Dump it...
	* src/files.h: Export it.
	* src/reader.c (copy_guard): Use it.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/files.c (outfile, defsfile, actfile): Removed as global
	vars.
	(open_files): Don't compute them.
	(output_files): Adjust.
	(base_name, short_base_name): Be global.
	Adjust dependencies.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/files.c (strsuffix): New.
	(stringappend): Be just like strcat but allocate.
	(base_names): Eve out from open_files.
	Try to simplify the rather hairy computation of base_name and
	short_base_name.
	(open_files): Use it.
	* tests/suite.at (Checking output file names): New test.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/system.h (obstack_grow_literal_string): Rename as...
	(obstack_grow_string): this.
	* src/output.c (output_parser): Recognize `%% actions' instead of
	`$'.
	* src/bison.s1: s/$/%% actions/.
	* src/bison.hairy: Likewise.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_parser): Compute the `#line' lines when
	there are.
	* src/Makefile.am (bison.simple): Be a simple copy of bison.s1.
	Suggested by Hans Aberg.

2000-12-19  Akim Demaille  <akim@epita.fr>

	Let the handling of the skeleton files be local to the procedures
	that use it.

	* src/files.c (xfopen, xfclose, skeleton_find, guardfile): No
	longer static.
	(fparser, open_extra_files): Remove.
	(open_files, output_files): Don't take care of fparser.
	* src/files.h: Adjust.
	* src/output.c (output_parser): Open and close the file to the
	skeleton.
	* src/reader.c (read_declarations): When %semantic_parser, open
	fguard.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/file.h (BISON_SIMPLE, BISON_HAIRY): Move from here...
	* src/system.h (BISON_SIMPLE, BISON_HAIRY): ... to here.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/files.c (open_files): Yipee!  We no longer need all the code
	looking for `/tmp' since we have no tmp file.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/system.h (EXT_TAB, EXT_OUTPUT, EXT_STYPE_H, EXT_GUARD_C):
	New macros.
	* src/files.c (open_files): Less dependency on MSDOS etc.

2000-12-14  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (YYLLOC_DEFAULT): New macro.
	Provide a default definition.
	Use it when executing the default @ action.
	* src/reader.c (reader_output_yylsp): No longer include
	`timestamp' and `text' in the default YYLTYPE.

2000-12-12  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_definition, parse_union_decl, copy_action)
	(copy_guard): Quote the file names.
	Reported by Laurent Mascherpa.

2000-12-12  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_headers, output_program, output): Be sure
	to escape special characters when outputting filenames.
	(ACTSTR_PROLOGUE, ACTSTR_EPILOGUE): Remove.
	(output_headers): Don't depend on them, Use ACTSTR.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* lib/obstack.h: Formatting changes.
	(obstack_grow, obstack_grow0): Don't cast WHERE at all: it
	prevents type checking.
	(obstack_ptr_grow, obstack_ptr_grow_fast): When assigning, don't
	cast the value to (void *): assigning a `foo *' to a `void *'
	variable is valid.
	(obstack_int_grow, obstack_int_grow_fast): Don't cast AINT to int.
	* src/reader.c (parse_union_decl): Typo: use obstack_1grow to
	append characters.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (suite.m4, regression.m4, calc.m4): Rename
	as...
	(suite.m4, regression.m4, calc.m4): these.
	* tests/atgeneral.m4: Update from CVS Autoconf.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* tests/regression.m4 (%union and --defines): New test,
	demonstrating a current bug in the obstack implementation.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (_YY_DECL_VARIABLES, YY_DECL_VARIABLES): New
	macros.
	Use them to declare the variables which are global or local to
	`yyparse'.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* acconfig.h: Remove, no longer used.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src: s/Copyright (C)/Copyright/g.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src/reader.c (reader): #define YYLSP_NEEDED to 1 instead of just
	defining.
	* src/bison.s1: s/#ifdef YYLSP_NEEDED/#if YYLSP_NEEDED/.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (YYLEX): Use #if instead of #ifdef.
	Merge in a single CPP if/else.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src/output.c (output): Remove useless variables.
	* lib/obstack.c (obstack_grow, obstack_grow0): Rename the second
	argument `data' for consistency with the prototypes.
	Qualify it `const'.
	(obstack_copy, obstack_copy0): Rename the second argument as
	`address' for consistency.  Qualify it `const'.
	* lib/obstack.h (obstack_copy, obstack_copy0, obstack_grow)
	(obstack_grow0, obstack_ptr_grow, obstack_ptr_grow_fast): Qualify
	`const' their input argument (`data' or `address').
	Adjust the corresponding macros to include `const' in casts.

2000-11-03  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (INCLUDES): s/PFILE/BISON_SIMPLE/.
	s/PFILE1/BISON_HAIRY/.
	Adjust dependencies.

2000-11-03  Akim Demaille  <akim@epita.fr>

	For some reason, this was not applied.

	* src/files.c [VMS]: No longer include `ssdef.h', no longer define
	`unlink': it's no longer used.

2000-11-03  Akim Demaille  <akim@epita.fr>

	* src/files.c (skeleton_find): New function, eved out of...
	(open_files, open_extra_files): here.

2000-11-03  Akim Demaille  <akim@epita.fr>

	Don't use `atexit'.

	* src/files.c (obstack_save): New function.
	(done): Rename as...
	(output_files): this.
	Use `obstack_save'.
	* src/main.c (main): Don't use `atexit' to register `done', since
	it no longer has to remove tmp files, just call `output_files'
	when there are no errors.

2000-11-02  Akim Demaille  <akim@epita.fr>

	* src/files.c [VMS]: No longer include `ssdef.h', no longer define
	`unlink': it's no longer used.
	* src/files.h: Formatting changes.

2000-11-02  Akim Demaille  <akim@epita.fr>

	Remove the last uses of mktemp and unlink/delete.

	* src/files.c (fdefines, ftable): Removed.
	(defines_ostack, table_obstack): New.
	Adjust dependencies of the former into uses of the latter.
	* src/output.c (output_short_or_char_table, output_short_table):
	Convert to using obstacks.
	* src/reader.c (copy_comment2): Accept one FILE * and two
	obstacks.
	(output_token_defines, reader_output_yylsp): Use obstacks.
	* src/system.h (obstack_fgrow3): New.
	* po/POTFILES.in: Adjust.

2000-11-01  Akim Demaille  <akim@epita.fr>

	Change each use of `fattrs' into a use of `attrs_obstack'.

	* src/reader.c (copy_at): Typo: s/yylloc/yyloc/.
	* src/files.c (fattrs): Remove.
	(attrs_obstack): New.
	Adjust all dependencies.
	(done): If SEMANTIC_PARSER, dump attrs_obstack into attrsfile.

2000-11-01  Akim Demaille  <akim@epita.fr>

	Introduce obstacks.
	Change each use of `faction' into a use of `action_obstack'.

	* lib/obstack.h, lib/obstack.c: New files.
	* src/files.c (faction): Remove.
	(action_obstack): New.
	Adjust all dependencies.

2000-10-20  Akim Demaille  <akim@epita.fr>

	* lib/quote.h (PARAMS): New macro.  Use it.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_short_or_char_table): New function.
	(output_short_table, output_token_translations): Use it.
	(goto_actions): Use output_short_table.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (bucket_new): New function.
	(getsym): Use it.

	* src/output.c (output_short_table): New argument to display the
	comment associated with the table.
	Adjust dependencies.
	(output_gram): Use it.
	(output_rule_data): Nicer output layout for YYTNAME.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/lex.c (read_typename): New function.
	(lex): Use it.
	* src/reader.c (copy_dollar): Likewise.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_comment2): Expect the input stream to be on
	the `/' which is suspected to open a comment, instead of being
	called after `//' or `/*' was read.
	(copy_comment, copy_definition, parse_union_decl, copy_action)
	(copy_guard): Adjust.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_expect_decl): Use `skip_white_space' and
	`read_signed_integer'.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_dollar): New function.
	(copy_guard, copy_action): Use it.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* lib/quote.h, lib/quote.c, lib/quotearg.h, lib/quotearg.c:
	* m4/prereq.m4, m4/c-bs-a.m4, m4/mbstate.m4:
	New files, from Fileutils 4.0.27.
	* src/main.c (printable_version): Remove.
	* src/lex.c, src/reader.c: Use `quote'.

2000-10-04  Akim Demaille  <akim@epita.fr>

	* lib/error.c, lib/error.h: New files, needed by xmalloc.c.

2000-10-04  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Various typos spotted by Neil Booth.

2000-10-04  Akim Demaille  <akim@epita.fr>

	When a literal string is used to define two different tokens,
	`bison -v' segfaults.
	Reported by Piotr Gackiewicz, and fixed by Neil Booth.

	* tests/regression.m4: New file.
	Include the core of the sample provided by Piotr Gackiewicz.
	* src/reader.c (parse_token_decl): Diagnose bad cases, and proceed
	properly.

2000-10-04  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_expect_decl): Keep `count' within the size
	of `buffer'.
	From Neil Booth.

2000-10-02  Paul Eggert  <eggert@twinsun.com>

	* bison.s1 (yyparse): Assign the default value
	unconditionally, to avoid a GCC warning and make the parser a
	tad smaller.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (getargs): Don't dump `--help' on unrecognized
	options.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/derives.c, src/print.c, src/reduce.c: To ease the
	translation, move some `\n' out of the translated strings.

2000-10-02  Akim Demaille  <akim@epita.fr>

	The location tracking mechanism is precious for parse error
	messages.  Nevertheless, it is enabled only when `@n' is used in
	the grammar, which is a different issue (you can use it in error
	message, but not in the grammar per se).  Therefore, there should
	be another means to enable it.

	* src/getargs.c (getargs): Support `--locations'.
	(usage): Report it.
	* src/getargs.h (locationsflag): Export it.
	* src/lex.c (percent_table): Support `%locations'.
	* src/reader.c (yylsp_needed): Remove this variable, now replaced
	with `locationsflag'.
	* doc/bison.texinfo: Document `--locations' and `%locations'.
	Sort the options.
	* tests/calc.m4: Test it.

	For regularity of the names, replace each
	(nolineflag, toknumflag, rawtokenumflag, noparserflag): with...
	(no_lineflag, token_tableflag, rawflag, no_parserflag): this.
	In addition replace each `flag' with `_flag'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Also test parse error messages, including with YYERROR_VERBOSE.

	* tests/calc.m4 (calc.y): Add support for `exp = exp' (non
	associative).
	Use it to check the computations.
	Use it to check `nonassoc' is honored.
	(AT_DATA_CALC_Y): Equip `calc.y' with YYERROR_VERBOSE when passed
	`--yyerror-verbose'.
	(_AT_CHECK_CALC): Adjust to this option.
	(_AT_CHECK_CALC_ERROR): New macro to check parse error messages.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Test also `--verbose', `--defines' and `--name-prefix'.  Testing
	the latter demonstrates a flaw in the handling of non debugging
	parsers introduced by myself on 2000-03-16: `#define yydebug 0'
	was used in order to simplify:

	#if YYDEBUG
	if (yydebug)
	{
	...
	}
	#endif

	into

	if (yydebug)
	{
	...
	}

	unfortunately this leads to a CPP conflict when
	`--name-prefix=foo' is used since it produces `#define yydebug
	foodebug'.

	* src/bison.s1 [!YYDEBUG]: Do not define yydebug.
	(YYDPRINTF): New macro.
	Spread its use.
	* tests/calc.m4 (AT_CHECK_CALC): Do require a title, build it from
	the bison options.
	Also test `--verbose', `--defines' and `--name-prefix'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Improve the readability of the produced parsers.

	* src/bison.s1: Formatting changes.
	Improve the comment related to the `$' mark.
	(yydefault): Don't fall through to `yyresume': `goto' there.
	* src/output.c (output_parser): When the `$' is met, skip the end
	of its line.
	New variable, `number_of_dollar_signs', to check there's exactly
	one `$' in the parser skeleton.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* lib/xstrdup.c: New file, from the fileutils.
	* src/reader.c (parse_token_decl, get_type_name, parse_type_decl)
	(parse_assoc_decl, parse_thong_decl, get_type): Use `xstrdup'
	instead of strlen + xmalloc + strcpy.
	* src/symtab.c (copys): Remove, use xstrdup instead.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/gram.h (associativity): New enum type which replaces the
	former CPP macros `RIGHT_ASSOC', `LEFT_ASSOC' and `NON_ASSOC' with
	`right_assoc', `left_assoc' and `non_assoc'.
	Adjust all dependencies.
	* src/reader.c: Formatting changes.
	(LTYPESTR): Don't define it, use it as a literal in
	`reader_output_yylsp'.
	* src/symtab.h (symbol_class): New enum type which replaces the
	former CPP macros `SUNKNOWN', `STOKEN and `SNTERM' with
	`sunknown', `stoken and `snterm'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (fixed_outfiles): Rename as...
	(yaccflag): for consistency and accuracy.
	Adjust dependencies.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Use the more standard files `xalloc.h' and `xmalloc.c' instead of
	Bison's `allocate.c' and `alloc.h'.  This patch was surprisingly
	difficult and introduced a lot of core dump.  It turns out that
	Bison used an implementation of `xmalloc' based on `calloc', and
	at various places it does depend upon the initialization to 0.  I
	have not tried to isolate the pertinent places, and all the former
	calls to Bison's `xmalloc' are now using `XCALLOC'.  Someday,
	someone should address this issue.

	* src/allocate.c, src/alloc.h, m4/bison-decl.m4: Remove.
	* lib/xmalloc.c, lib/xalloc.h, m4/malloc.m4, m4/realloc.m4: New
	files.
	Adjust dependencies.
	* src/warshall.h: New file.
	Propagate.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Various anti-`extern in *.c' changes.

	* src/system.h: Include `assert.h'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/state.h (nstates, final_state, first_state, first_shift)
	(first_reduction): Move their exportation from here...
	* src/LR0.h: to here.
	Adjust dependencies.
	* src/getargs.c (statisticsflag): New variable.
	Add support for `--statistics'.
	Adjust dependencies.

	Remove a lot of now useless `extern' statements in most files.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/LR0.h: New file.
	Propagate its use.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/print.h: New file.
	Propagate its use.
	* src/print.c: Formatting and ordering changes.
	(verbose, terse): Replace with...
	(print_results): this new function.
	Adjust dependencies.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflict_report): New function.
	(conflict_log, verbose_conflict_log): Replace with...
	(print_conflicts): this function.
	Adjust dependencies.
	* src/conflicts.h: New file.
	Propagate its inclusion.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/nullable.h: New file.
	Propagate its inclusion.
	* src/nullable.c: Formatting changes.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/reduce.h: New file.
	Propagate its inclusion.
	* src/reduce.c: Topological sort and other formatting changes.
	(bool, TRUE, FALSE): Move their definition to...
	* src/system.h: here.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/files.c: Formatting changes.
	(tryopen, tryclose, openfiles): Rename as...
	(xfopen, xfclose, open_files): this.
	(stringappend): static.
	* src/files.h: Complete the list of exported symbols.
	Propagate its use.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/reader.h: New file.
	Propagate its use instead of tedious list of `extern' and
	prototypes.
	* src/reader.c: Formatting changes, topological sort,
	s/register//.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/lex.h: Prototype `lex.c' exported functions.
	* src/reader.c: Adjust.
	* src/lex.c: Formatting changes.
	(safegetc): Rename as...
	(xgetc): this.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/lalr.h: New file.
	Propagate its inclusion instead of prototypes and `extern'.
	* src/lalr.c: Formatting changes, topological sorting etc.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (token_actions): Introduce a temporary array,
	YYDEFACT, that makes it possible for this function to use
	output_short_table.

2000-10-02  Akim Demaille  <akim@epita.fr>

	`user_toknums' is output as a `short[]' in `output.c', while it is
	defined as a `int[]' in `reader.c'.  For consistency with the
	other output tables, `user_toknums' is now defined as a table of
	shorts.

	* src/reader.c (user_toknums): Be a short table instead of an int
	table.
	Adjust dependencies.

	Factor the short table outputs.

	* src/output.c (output_short_table): New function.
	* src/output.c (output_gram, output_stos, output_rule_data)
	(output_base, output_table, output_check):  Use it.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (output): Topological sort of the functions, in
	order to get rid of the `static' prototypes.
	No longer use `register'.
	* src/output.h: New file.
	Propagate its inclusion in files explicitly prototyping functions
	from output.c.

2000-09-21  Akim Demaille  <akim@epita.fr>

	* src/atgeneral.m4: Update from Autoconf.

2000-09-21  Akim Demaille  <akim@epita.fr>

	* src/closure.h: New file.
	* src/closure.c: Formatting changes, topological sort over the
	functions, use of closure.h.
	(initialize_closure, finalize_closure):  Rename as...
	(new_closure, free_closure): these.  Adjust dependencies.
	* src/LR0.c: Formatting changes, topological sort, use of
	cloture.h.
	(initialize_states): Rename as...
	(new_states): this.
	* src/Makefile.am (noinst_HEADERS): Adjust.

2000-09-20  Akim Demaille  <akim@epita.fr>

	* src/acconfig.h: Don't protect config.h against multiple
	inclusion.
	Don't define PARAMS.
	* src/system.h: Define PARAMS.
	Remove some of the ad-hoc CPP magic for DOS, VMS etc.: this is the
	purpose of config.h.  system.h must not try to fix wrong
	definitions in config.h.

2000-09-20  Akim Demaille  <akim@epita.fr>

	* src/derives.h: New file.
	* src/main.c, src/derives.h: Use it.
	Formatting changes.
	* src/Makefile.am (noinst_HEADERS): Adjust.

2000-09-20  Akim Demaille  <akim@epita.fr>

	* tests/atgeneral.m4: Update from Autoconf.
	* tests/calc.m4 (_AT_DATA_CALC_Y, AT_DATA_CALC_Y, _AT_CHECK_CALC)
	(AT_CHECK_CALC): New macros.
	Use these macros to test bison with options `', `--raw',
	`--debug', `--yacc', `--yacc --debug'.

2000-09-19  Akim Demaille  <akim@epita.fr>

	* src/output.c: Formatting changes.
	* src/machine.h: Remove, leaving its contents in...
	* src/system.h: here.
	Include stdio.h.
	Adjust all dependencies on stdio.h and machine.h.
	* src/getargs.h: New file.
	Let all `extern' declarations about getargs.c be replaced with
	inclusion of `getargs.h'.
	* src/Makefile.am (noinst_HEADERS): Adjust.

	* tests/calc.m4 (yyin): Be initialized in main, not on the global
	scope.
	(yyerror): Returns void, not int.
	* doc/bison.texinfo: Formatting changes.

2000-09-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.m4 (calc.y): Do not assign to stdin, as it's not
	portable.

2000-09-18  Akim Demaille  <akim@epita.fr>

	* configure.in: Append WARNING_CFLAGS to CFLAGS.
	* src/Makefile.am (INCLUDES): Don't.
	Be ready to fetch headers in lib/.

2000-09-18  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Update the copyright.
	ANSIfy and GNUify the examples.
	Remove the old menu.

2000-09-18  Akim Demaille  <akim@epita.fr>

	First set of tests: use the `calc' example from the documentation.

	* src/bison.s1 (yyparse): Condition the code using `yytname' which
	is defined only when YYDEBUG is.
	* m4/atconfig.m4 (AT_CONFIG): Adjust to Autoconf 2.13.
	* src/files.c (tryopen, tryclose): Formatting changes.
	Move to the top and be static.
	* src/reader.c (read_signed_integer): Likewise.
	* tests/calc.m4: New file.
	* Makefile.am, suite.m4: Adjust.
	* m4/atconfig.m4: Set BISON_SIMPLE and BISON_HAIRY.

2000-09-18  Akim Demaille  <akim@epita.fr>

	Add support for an Autotest test suite for Bison.

	* m4/m4.m4, m4/atconfig.m4: New files.
	* m4/Makefile.am (EXTRA_DIST): Adjust.
	* tests/suite.m4, tests/Makefile.am, tests/atgeneral.m4: New
	files.
	* src/getargs.c: Display a more standard --version message.
	* src/reader.c (reader): Formatting changes.
	No longer depend upon VERSION_STRING.
	* configure.in: No longer use `dnl'.
	Set up the test suite and the new directory `tests/.
	(VERSION_STRING): Remove.

2000-04-14  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_comment2): New function, same as former
	`copy_comment', but outputs into two FILE *.
	(copy_comment): Use it.
	(parse_union_decl): Use it.
	(get_type, parse_start_decl): Use the same `invalid' message.
	(parse_start_decl, parse_union_decl): Use the same `multiple'
	message.
	(parse_union_decl, copy_guard, copy_action): Use the same
	`unmatched' message.
	* m4/Makefile.am (EXTRA_DIST): Add `warning.m4'.

2000-03-31  Akim Demaille  <akim@epita.fr>

	* src/files.c (tryopen, tryclose): Move to the top.
	Be static.

2000-03-31  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): Don't call `done', exit does it.

2000-03-31  Akim Demaille  <akim@epita.fr>

	* allocate.c: s/return (foo)/return foo/.
	* lalr.c: Likewise.
	* LR0.c: Likewise.
	* output.c: Likewise.
	* reader.c: Likewise.
	* symtab.c: Likewise.
	* vmsgetargs.c: Likewise.

2000-03-31  Akim Demaille  <akim@epita.fr>

	Clean up the error reporting functions.

	* src/report.c: New file.
	* src/report.h: Likewise.
	* src/Makefile.am: Adjust.
	* m4/error.m4: New file.
	* m4/Makefile.am: Adjust.
	* configure.in (jm_PREREQ_ERROR): Call it.
	* src/main.c (int_to_string, banner, fatal_banner, warn_banner):
	Remove.
	(fatal, fatals): Remove.  All callers use complain.c::fatal.
	(warn, warni, warns, warnss, warnss): Remove.  All callers use
	complain.c::complain.
	(toomany): Remove, use fatal instead.
	* src/files.c (done): No argument, use complain_message_count.
	* src/main.c (main): Register `done' to `atexit'.

	* src/getargs.c (usage): More `fputs', less `fprintf'.

2000-03-28  Akim Demaille  <akim@epita.fr>

	* lib/: New directory.
	* Makefile.am (SUBDIRS): Adjust.
	* configure.in: Adjust.
	(LIBOBJS): Although not used yet, AC_SUBST it, otherwise it's
	useless.
	* src/alloca.c: Moved to lib/.
	* src/getopt.c: Likewise.
	* src/getopt1.c: Likewise.
	* src/getopt.h: Likewise.
	* src/ansi2knr.c: Likewise.
	* src/ansi2knr.1: Likewise.
	* src/Makefile.am: Adjust.
	* lib/Makefile.am: New file.

2000-03-28  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (usage): Refresh the help message.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/getopt1.c: Updated from textutils 2.0e
	* src/getopt.c: Likewise.
	* src/getopt.h: Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (bison.simple): Fix the awk program: quote only
	the file name, not the whole `#line LINE FILE'.

2000-03-17  Akim Demaille  <akim@epita.fr>

	On syntax errors, report the token on which we choked.

	* src/bison.s1 (yyparse): In the label yyerrlab, when
	YYERROR_VERBOSE, add yychar in msg.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_at): New function.
	(copy_guard): Use it.
	(copy_action): Use it.

2000-03-17  Akim Demaille  <akim@epita.fr>

	Be kind to translators, save some useless translations.

	* src/main.c (banner): New function.
	(fatal_banner): Use it.
	(warn_banner): Use it.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_definition): Use copy_string and
	copy_comment.  Removed now unused `match', `ended',
	`cplus_comment'.
	(copy_comment, copy_string): Moved, to be visible from
	copy_definition.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_string): Declare `static inline'.  No
	problems with inline, since it is checked by configure.
	(copy_comment): Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (packsymbols): Formatting changes.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_comment): New function, factored out from:
	(copy_action): Use it.  Removed now unused `match', `ended',
	`cplus_comment'.
	(copy_guard): Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_string): New function, factored out from:
	(copy_action): Use it.
	(copy_guard): Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	Change the handling of @s so that they behave exactly like $s.
	There is now a pseudo variable @$ (readble and writable), location
	of the lhs of the rule (by default ranging from the location of
	the first symbol of the rhs, to the location of the last symbol,
	or, if the rhs is empty, YYLLOC).

	* src/bison.s1 [YYLSP_NEEDED] (yyloc): New variable, twin of
	yyval.
	(yyparse): When providing a default semantic action, provide a
	default location action.
	(after the $): No longer change `*YYLSP', just stack YYLOC the
	same way you stack YYVAL.
	* src/reader.c (read_declarations): Use warns.
	(copy_guard, case '@'): Also recognize `@$', expanded as `YYLOC'.
	(copy_action, case '@'): Likewise.
	Use a standard error message, to save useless work from
	translators.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Formatting and cosmetics changes.
	* src/reader.c: Likewise.
	Update the Copyright notice.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (#line): All set to `#line' only, since the
	Makefile now handles them.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_rule_data): Output the documentation of
	some of the tables.
	(Copyright notice): Update.
	Formatting changes.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 [!YYDEBUG]: Define yydebug to 0.  This allows to
	remove most `#if YYDEBUG != 0', since `if (yydebug)' is enough.
	One `#if YYDEBUG' remains, since it uses variables which are
	defined only if `YYDEBUG != 0'.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (yyparse): Reorganize the definitions of the stacks
	and related variables so that the similarities are highlighted.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Properly indent CPP directives.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Properly indent the `alloca' CPP section.

2000-03-16  Akim Demaille  <akim@epita.fr>

	Do not hard code values of directories in `configure.in'.
	Update the `configure' tool chain.

	* configure.in (XPFILE, XPFILE1, LOCALEDIR): Remove, handled by
	src/makefile.am.
	(VERSION_STRING): Use the third arg of AC_DEFINE_UNQUOTED.
	(AC_OUTPUT): Add m4/Makefile.
	Bump to bison 1.28a, 1.29 has never been released.
	* acconfig.h (XPFILE, XPFILE1, LOCALEDIR): Remove, since they are
	handled via src/Makefile.am.
	(VERSION_STRING, PROTOTYPES, ENABLE_NLS, HAVE_CATGETS,
	HAVE_GETTEXT, HAVE_LC_MESSAGES, HAVE_STPCPY): Remove, handled by
	autoheader.
	* Makefile.am (SUBDIRS): Add m4.
	(ACLOCAL_AM_FLAGS): New variable.
	(AUTOMAKE_OPTIONS): Add check-news.
	* src/Makefile.am (bison.simple): Use awk to replace #line lines with
	the proper line number and file name.
	(DEFS): Propagate the location of bison library files and of the
	locale files.
	(INCLUDES): Added `-I ..' so that one can compile with srcdir !=
	builddir.
	* acinclude.m4: Remove, replaced by the directory m4.
	* m4/Makefile.am (EXTRA_DIST): New variable.
	* m4/gettext.m4: New file, from the fileutils.
	* m4/lcmessage.m4: Likewise
	* m4/progtest.m4: Likewise.
	* m4/bison-decl.m4: New file, extracted from former acinclude.m4.

2000-03-10  Akim Demaille  <akim@epita.fr>

	* src/closure.c:
	Formatting changes of various comments.
	Respect the GNU coding standards at various places.
	Don't use `_()' when no translation is needed.

1999-12-13  Jesse Thilo  <jthilo@gnu.org>

	* src/files.c:
	OS/2 honors TMPDIR environment variable.

1999-12-13  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Tweaked spelling and grammar.
	Updated ISBN.
	Removed reference to price of printed copy.
	Mention BISON_SIMPLE and BISON_HAIRY.

1999-12-13  Jesse Thilo  <jthilo@gnu.org>

	* configure.in, NEWS:
	Bison 1.29 released.

1999-10-27  Jesse Thilo  <jthilo@gnu.org>

	* doc/.cvsignore, doc/Makefile.am, doc/refcard.tex:
	Added reference card.

1999-07-26  Jesse Thilo  <jthilo@gnu.org>

	* po/ru.po: Added Russian translation.

1999-07-26  Jesse Thilo  <jthilo@gnu.org>

	* configure.in: Added Russian translation.

1999-07-06  Jesse Thilo  <jthilo@gnu.org>

	* configure.in, NEWS, README:
	Released version 1.28.

1999-06-14  Jesse Thilo  <jthilo@gnu.org>

	* src/system.h:
	Squashed redefinition warning on some systems.

	* src/getargs.c, src/Makefile.am, src/reader.c, src/version.c:
	Have configure build version string instead of relying on ANSI string
	concatentation.

1999-06-14  Jesse Thilo  <jthilo@gnu.org>

	* po/POTFILES.in: Got rid of version.c.

1999-06-14  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, configure.in:
	Have configure build version string instead of relying on ANSI string
	concatentation.

1999-06-08  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.1:
	Dropped mention of `+' for long-named options.

1999-05-30  Jesse Thilo  <jthilo@gnu.org>

	* src/files.c: Added <unistd.h> for unlink().

	* src/Makefile.am, src/system.h:
	I18n fixes.

1999-05-30  Jesse Thilo  <jthilo@gnu.org>

	* README: Added a FAQ list.

	* configure.in, acconfig.h:
	I18n fixes.

1999-05-30  Jesse Thilo  <jthilo@gnu.org>

	* doc/FAQ, doc/Makefile.am:
	Added a FAQ list.

1999-05-19  Jesse Thilo  <jthilo@gnu.org>

	* src/alloc.h, src/symtab.h, src/version.c:
	Protected inclusion of "config.h" with HAVE_CONFIG_H.

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* src/.cvsignore, src/Makefile.am:
	Reorganized: sources in `src', documentation in `doc'.

	* src/lex.c (literalchar):
	fixed the code for escaping double quotes (thanks
	Jonathan Czisny.)

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* po/de.po, po/es.po, po/fr.po, po/nl.po, po/POTFILES.in:
	Adjusted paths to reflect directory reorganization.

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* doc/.cvsignore, doc/Makefile.am:
	Reorganized: sources in `src', documentation in `doc'.

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* configure.in:
	Updated AC_INIT file to reflect directory reorganization.

	* configure.in, .cvsignore, Makefile.am, POTFILES.in:
	Reorganized: sources in `src', documentation in `doc'.

1999-04-13  Jesse Thilo  <jthilo@gnu.org>

	* src/allocate.c:
	Don't declare calloc() and realloc() if not necessary.

1999-04-13  Jesse Thilo  <jthilo@gnu.org>

	* configure.in, acconfig.h, acinclude.m4:
	Don't declare calloc() and realloc() if not necessary.

1999-03-23  Jesse Thilo  <jthilo@gnu.org>

	* po/.cvsignore: Added i18n support.

1999-03-23  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, configure.in, Makefile.am:
	Added i18n support.

1999-03-22  Jesse Thilo  <jthilo@gnu.org>

	* src/bison.s1: Fixed #line numbers.

1999-03-15  Jesse Thilo  <jthilo@gnu.org>

	* po/es.po, po/fr.po, po/nl.po, po/de.po:
	Added PO files from Translation Project.

1999-03-03  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Added support for non-ANSI compilers (ansi2knr).

1999-02-16  Jesse Thilo  <jthilo@gnu.org>

	* configure.in: Bumped version number to 1.27.

	* Makefile.am:
	Added `bison.simple' to list of files removed by `make distclean'.

1999-02-12  Jesse Thilo  <jthilo@gnu.org>

	* src/files.c, src/files.h:
	Defined locations of parser files in config.h instead of Makefile.

1999-02-12  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, acinclude.m4, configure.in, Makefile.am:
	Defined locations of parser files in config.h instead of Makefile.

1999-02-09  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Removed inappropriate use of $< macro.

1999-02-05  Jesse Thilo  <jthilo@gnu.org>

	* po/Makefile.in.in, po/POTFILES.in:
	Add `po' directory skeleton.

1999-01-27  Jesse Thilo  <jthilo@gnu.org>

	* README: Document help-bison list.

	* configure.in: Add check for mkstemp().

1999-01-20  Jesse Thilo  <jthilo@gnu.org>

	* src/conflicts.c, src/LR0.c, src/output.c, src/reader.c:
	Hush a few compiler warnings.

	* src/files.c:
	Add tryclose(), which verifies that fclose was successful.
	Hush a couple of compiler warnings.

1999-01-20  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am, OChangeLog:
	ChangeLog is now automatically generated.  Include the old version as
	OChangeLog.

1999-01-14  Jesse Thilo  <jthilo@gnu.org>

	* src/gram.h, src/lalr.c, src/lex.c, src/lex.h, src/machine.h, src/main.c, src/nullable.c, src/output.c, src/print.c, src/reader.c, src/reduce.c, src/state.h, src/symtab.c, src/symtab.h, src/types.h, src/vmsgetargs.c, src/warshall.c, src/allocate.c, src/alloc.h, src/bison.s1, src/closure.c, src/conflicts.c, src/derives.c, src/files.c, src/files.h, src/getargs.c, src/gram.c, src/LR0.c:
	Update FSF address.

1999-01-14  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Fix formatting glitch.

	* doc/bison.texinfo: Update FSF address.

1999-01-14  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h: Update FSF address.

1999-01-08  Jesse Thilo  <jthilo@gnu.org>

	* src/system.h:
	Don't define PACKAGE here, since config.h defines it.

1998-12-30  Jesse Thilo  <jthilo@gnu.org>

	* src/reader.c: Update copyright date.

	* src/main.c:
	Ditch sprintf to statically-sized buffers in fatal/warn functions in
	favor of output directly to stderr (avoids buffer overruns).

	* src/reader.c: Some checks for premature EOF.

	* src/allocate.c, src/alloc.h, src/closure.c, src/conflicts.c, src/derives.c, src/getargs.c, src/gram.c, src/lalr.c, src/lex.c, src/LR0.c, src/main.c, src/nullable.c, src/output.c, src/print.c, src/reduce.c, src/symtab.c, src/symtab.h, src/warshall.c:
	Use prototypes if the compiler understands them.

	* src/files.c: Honor TMPDIR on Unix hosts.
	Use prototypes if the compiler understands them.

	* src/reader.c:
	Fix a couple of buffer overrun bugs.
	Use prototypes if the compiler understands them.

	* src/system.h: Include unistd.h and ctype.h.
	Use #ifdef instead of #if for NLS symbols.

1998-12-30  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo:
	Delete comment "consider using @set for edition number, etc..." since
	we now are doing so.

1998-12-30  Jesse Thilo  <jthilo@gnu.org>

	* configure.in:
	Use prototypes if the compiler understands them.

	* NEWS: Document 1.26 highlights.

	* Makefile.am: Require Automake 1.3 or later.

	* acconfig.h:
	Use prototypes if the compiler understands them.

1998-12-29  Jesse Thilo  <jthilo@gnu.org>

	* src/version.c:
	Use VERSION symbol from automake for version number.

1998-12-29  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, configure.in, version.cin:
	Use VERSION symbol from automake for version number.

1998-11-28  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Distribute original version of simple parser (bison.s1), not built
	version (bison.simple).

1998-11-28  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Add info dir entry.

	* doc/bison.texinfo:
	Let automake put version number into documentation.

1998-11-26  Jesse Thilo  <jthilo@gnu.org>

	* src/bison.cld, src/build.com, src/vmshlp.mar:
	Add non-RCS files from /gd/gnu/bison.

1998-11-26  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.1:
	Document the BISON_HAIRY and BISON_SIMPLE variables.

1998-11-25  Jesse Thilo  <jthilo@gnu.org>

	* src/version.c: Build version.c automatically.

	* src/reader.c:
	Fix token numbering (used to start at 258, not 257).

	* src/system.h: Include config.h.

	* src/getargs.c: Update bug report address.

	* src/alloca.c, src/getopt1.c, src/getopt.c, src/getopt.h:
	Get latest copies of alloca.c, getopt.c, getopt.h, getopt1.c from gnu.org.

1998-11-25  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Rename bison.simple to bison.s1 (bison.simple is then built from bison.s1).

	* configure.in, version.cin:
	Build version.c automatically.

	* AUTHORS: Add AUTHORS file.

	* README: Update bug report address.

	* bison.simple:
	Rename bison.simple to bison.s1 (bison.simple is then built from bison.s1).

	* configure.in, Makefile.am, Makefile.in, stamp-h.in:
	Add automake stuff.

1998-11-25  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Clean up some formatting.

1998-05-05  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo:
	Explain better why to make a pure parser.

1998-01-05  Richard Stallman  <rms@gnu.org>

	* src/files.c (openfiles):
	[_WIN32 && !__CYGWIN32__] Use TEMP or Temp to
	find a temporary directory, if possible.  Do not unlink files while
	they are open.

1997-08-25  Richard Stallman  <rms@gnu.org>

	* src/reader.c (stack_offset;):
	Change some warni to warns.

	* src/lex.c (literalchar): Use warns, not warni.

1997-06-28  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Add a Bison version comment.

	* src/main.c (fatal, warn, berror):
	Use program_name.

1997-06-28  Richard Stallman  <rms@gnu.org>

	* Makefile.in (bison_version): New variable.
	(dist): Use that variable.
	(bison.s1): Substitute the Bison version into bison.simple.

	* bison.simple: Add a Bison version comment.

1997-06-18  Richard Stallman  <rms@gnu.org>

	* src/main.c (fatal, warn, berror):
	Make error messages standard.
	(toomany): Improve error message text.

	* src/LR0.c, src/closure.c, src/conflicts.c, src/derives.c, src/files.c, src/lalr.c, src/lex.c, src/nullable.c, src/output.c, src/print.c, src/reader.c, src/reduce.c, src/symtab.c:
	new.h renamed to alloc.h.

1997-06-18  Richard Stallman  <rms@gnu.org>

	* Makefile.in: new.h renamed to alloc.h.

1997-05-24  Richard Stallman  <rms@gnu.org>

	* src/lex.c (literalchar):
	Fix the code for escaping \, " and '.

	(lex): Avoid trouble when there are many chars
	to discard in a char literal with just several chars in it.

1997-05-17  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	Use malloc, if using alloca is troublesome.
	(YYSTACK_USE_ALLOCA): New flag macro.
	Define it for some systems and compilers.
	(YYSTACK_ALLOC): New macro.
	(yyparse): Use YYSTACK_ALLOC to allocate stack.
	If it was malloc'd, free it.

1997-05-17  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	Use malloc, if using alloca is troublesome.
	(YYSTACK_USE_ALLOCA): New flag macro.
	Define it for some systems and compilers.
	(YYSTACK_ALLOC): New macro.
	(yyparse): Use YYSTACK_ALLOC to allocate stack.
	If it was malloc'd, free it.

1997-04-23  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	(alloca) [__hpux]: Always define as __builtin_alloca.

1997-04-23  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	(alloca) [__hpux]: Always define as __builtin_alloca.

1997-04-22  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	[__hpux]: Include alloca.h (right for HPUX 10)
	instead of declaring alloca (right for HPUX 9).

	* src/bison.s1 (__yy_memcpy):
	Declare arg `count' as unsigned int.
	(yyparse): Cast third arg to __yy_memcpy to unsigned int.

1997-04-22  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	[__hpux]: Include alloca.h (right for HPUX 10)
	instead of declaring alloca (right for HPUX 9).

	* bison.simple (__yy_memcpy):
	Declare arg `count' as unsigned int.
	(yyparse): Cast third arg to __yy_memcpy to unsigned int.

1997-01-03  Richard Stallman  <rms@gnu.org>

	* src/allocate.c: [__STDC__ or _MSC_VER]:
	Declare calloc and realloc to return void *.

1997-01-02  Richard Stallman  <rms@gnu.org>

	* src/system.h:
	[_MSC_VER]: Include stdlib.h and process.h.
	[_MSC_VER] (getpid): Define as macro--translate it to _getpid.

	* src/main.c (main): Return FAILURE as a value.
	(printable_version): Declare arg as int, not char.

1997-01-02  Richard Stallman  <rms@gnu.org>

	* Makefile.in (dist):
	Explicitly check for symlinks, and copy them.

1996-12-19  Richard Stallman  <rms@gnu.org>

	* src/files.c:
	[_MSC_VER] (XPFILE, XPFILE1): Define, if not already defined.

1996-12-18  Paul Eggert  <eggert@gnu.org>

	* src/bison.s1 (yyparse):
	If __GNUC__ and YYPARSE_PARAM are both defined,
	declare yyparse to have a void * argument.

1996-12-18  Paul Eggert  <eggert@gnu.org>

	* bison.simple (yyparse):
	If __GNUC__ and YYPARSE_PARAM are both defined,
	declare yyparse to have a void * argument.

1996-12-17  Richard Stallman  <rms@gnu.org>

	* src/reduce.c (nbits): Add some casts.

1996-08-12  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Test _MSDOS as well as _MSDOS_.

1996-08-12  Richard Stallman  <rms@gnu.org>

	* bison.simple: Test _MSDOS as well as _MSDOS_.

1996-07-31  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	[__sun && __i386]: Include alloca.h.

1996-07-31  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	[__sun && __i386]: Include alloca.h.

1996-07-30  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Comment change.

	* src/bison.s1: Test _MSDOS_, not MSDOS.

1996-07-30  Richard Stallman  <rms@gnu.org>

	* bison.simple: Comment change.

	* bison.simple: Test _MSDOS_, not MSDOS.

1996-06-01  Richard Stallman  <rms@gnu.org>

	* src/reduce.c, src/reader.c, src/print.c, src/output.c, src/nullable.c, src/lex.c, src/lalr.c, src/getargs.c, src/derives.c, src/conflicts.c, src/closure.c, src/allocate.c:
	Insert `_' macro around many string constants.

	* src/main.c:
	Insert `_' macro around many string constants.

	(main): Call setlocale, bindtextdomain and textdomain.

	* src/system.h: [HAVE_LOCALE_H]: Include locale.h.
	[! HAVE_LOCALE_H] (setlocale): Define as no-op.
	[ENABLE_NLS]: Include libintl.h.
	[ENABLE_NLS] (gettext): Define.
	[! ENABLE_NLS] (bintextdomain, textdomain, _): Consolation definitions.
	(N_, PACKAGE, LOCALEDIR): New macros.

1996-06-01  Richard Stallman  <rms@gnu.org>

	* POTFILES.in: New file.

	* Makefile.in (allocate.o):
	Define target explicitly.

	* Makefile.in (CFLAGS): Set to @CFLAGS@.
	(LDFLAGS): Set to @LDFLAGS@.
	(configure): Run autoconf only if preceding `cd' succeeds.
	(bison.s1): Redirect output to temporary file then move the
	temporary to the target, rather than redirecting directly to bison.s1.
	(clean): Remove config.status and config.log.
	(distclean): Don't remove config.status here.

1996-05-12  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	(__yy_memcpy) [__cplusplus]: Reorder declarations of variables f and t.

1996-05-12  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	(__yy_memcpy) [__cplusplus]: Reorder declarations of variables f and t.

1996-05-11  Richard Stallman  <rms@gnu.org>

	* src/bison.s1 (__yy_memcpy):
	Really reorder the args, as was supposedly done on Feb 14 1995.
	(yyparse): Calls changed accordingly.

1996-05-11  Richard Stallman  <rms@gnu.org>

	* Makefile.in (dist): Don't use $(srcdir).

	* bison.simple (__yy_memcpy):
	Really reorder the args, as was supposedly done on Feb 14 1995.
	(yyparse): Calls changed accordingly.

1996-01-27  Richard Stallman  <rms@gnu.org>

	* src/output.c (output_rule_data):
	Test YYERROR_VERBOSE in the conditional
	around the definition of ttyname.

1995-12-29  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	Fix line numbers in #line commands.

1995-12-29  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	Fix line numbers in #line commands.

1995-12-27  Richard Stallman  <rms@gnu.org>

	* src/bison.s1 (YYPARSE_PARAM_DECL):
	In C++, make it always null.
	(YYPARSE_PARAM_ARG): New macro.
	(yyparse): Use YYPARSE_PARAM_ARG.

1995-12-27  Richard Stallman  <rms@gnu.org>

	* bison.simple (YYPARSE_PARAM_DECL):
	In C++, make it always null.
	(YYPARSE_PARAM_ARG): New macro.
	(yyparse): Use YYPARSE_PARAM_ARG.

1995-11-29  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo:
	Describe literal string tokens, %raw, %no_lines, %token_table.

1995-11-29  Daniel Hagerty  <hag@gnu.org>

	* doc/bison.texinfo: Fixed update date

1995-10-16  Richard Stallman  <rms@gnu.org>

	* src/version.c: Version 1.25.

1995-10-16  Richard Stallman  <rms@gnu.org>

	* NEWS: *** empty log message ***

1995-10-16  Richard Stallman  <rms@gnu.org>

	* doc/bison.1, doc/bison.rnh:
	Add new options.

1995-10-15  Richard Stallman  <rms@gnu.org>

	* src/vmsgetargs.c, src/getargs.c:
	Added -n, -k, and -raw switches.
	(noparserflag, toknumflag, rawtoknumflag): New variables.

	* src/symtab.h (SALIAS):
	New #define for adding aliases to %token.
	(struct bucket): Added `alias' field.

	* src/reduce.c (reduce_grammar):
	Revise error message.
	(print_notices): Remove final `.' from error message.

	* src/reader.c (reader_output_yylsp):
	New function.
	(readgram): Use `#if 0' around code that accepted %command
	inside grammar rules:  The documentation doesn't allow it,
	and it will fail since the %command processors scan for the next %.
	(parse_token_decl):  Extended the %token
	declaration to allow a multi-character symbol as an alias.
	(parse_thong_decl): New function.
	(read_declarations): Added %thong declarations.
	(read_declarations): Handle NOOP to deal with allowing
	% declarations as another means to specify the flags.
	(readgram): Allow %prec prior to semantics embedded in a rule.
	(skip_to_char, read_declarations, copy_definition)
	(parse_token_decl, parse_start_decl, parse_type_decl)
	(parse_assoc_decl, parse_union_decl, parse_expect_decl)
	(get_type_name, copy_guard, copy_action, readgram)
	(get_type, packsymbols):  Revised most error messages.
	Changed `fatal' to `warnxxx' to avoid aborting for error.
	Revised and use multiple warnxxx functions to avoid using VARARGS1.
	(read_declarations): Improve the error message for
	an invalid character.  Do not abort.
	(read_declarations, copy_guard, copy_action): Use
	printable_version to avoid unprintable characters in printed output.
	(parse_expect_decl): Error if argument to %expect exceeds 10 digits.
	(parse_token_decl, parse_assoc_decl, parse_type_decl, get_type):
	Allow the type of a non-terminal can be given
	more than once, as long as all specifications give the same type.

	* src/output.c:
	(output_headers, output_trailers, output, output_gram)
	(output_rule_data): Implement noparserflag variable.
	Implement toknumflag variable.
	(output): Call reader_output_yylsp to output LTYPESTR.

	* src/main.c (main):
	 If reader sees an error, don't process the grammar.
	(fatals): Updated to not use VARARGS1.
	(printable_version, int_to_string, warn, warni, warns, warnss)
	(warnsss): New error reporting functions.  Avoid abort for error.

	* src/lex.h:
	Added THONG and NOOP for alias processing.
	Added SETOPT for the new code that allows setting options with %flags.

	* src/lex.c:
	Include getopt.h.  Add some extern decls.
	(safegetc): New function to deal with EOF gracefully.
	(literalchar); new function to deal with reading \ escapes.
	(lex): Use literalchar.
	(lex): Implemented "..." tokens.
	(literalchar, lex, parse_percent_token): Made tokenbuffer
	always contain the token.  This includes growing the token
	buffer while reading an integer.
	(parse_percent_token): Replaced if-else statement with percent_table.
	(parse_percent_token): Added % declarations as another
	way to specify the flags -n, -l, and -r.  Also added hooks for
	-d, -k, -y, -v, -t, -p, -b, -o, but implementation requires
	major changes to files.c.
	(lex) Retain in the incoming stream a character following
	an incorrect '/'.
	(skip_white_space, lex):  Revised most error messages
	and changed fatal to warn to avoid aborting.
	(percent_table):  Added %thong declarations.

	* src/gram.h: Comment changes.

	* src/files.c (openfiles, open_extra_files, done):
	 Add faction flag
	and actfile file.  Handle noparserflag.  Both for -n switch.

	* src/conflicts.c (resolve_sr_conflict):
	Remove use of alloca.

1995-06-01  Jim Meyering  <meyering@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1995-05-06  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Comment change.

1995-05-06  Richard Stallman  <rms@gnu.org>

	* bison.simple: Comment change.

1995-05-03  Richard Stallman  <rms@gnu.org>

	* src/version.c: Version now 1.24.

	* src/bison.s1: Change distribution terms.

	* src/version.c: Version now 1.23.

1995-05-03  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo:
	Rewrite "Conditions for Using Bison".
	Update version to 1.24.

1995-05-03  Richard Stallman  <rms@gnu.org>

	* bison.simple: Change distribution terms.

1995-02-23  Richard Stallman  <rms@gnu.org>

	* src/files.c: Test __VMS_POSIX as well as VMS.

1995-02-14  Jim Meyering  <meyering@gnu.org>

	* src/bison.s1 (__yy_memcpy):
	Renamed from __yy_bcopy to avoid
	confusion.  Reverse FROM and TO arguments to be consistent with
	those of memcpy.

1995-02-14  Jim Meyering  <meyering@gnu.org>

	* bison.simple (__yy_memcpy):
	Renamed from __yy_bcopy to avoid
	confusion.  Reverse FROM and TO arguments to be consistent with
	those of memcpy.

1994-11-10  David J. MacKenzie  <djm@gnu.org>

	* NEWS: reformat

	* NEWS: New file.

	* Makefile.in (DISTFILES): Include NEWS.

	* Makefile.in (DISTFILES):
	Include install-sh, not install.sh.

	* configure.in: Update to Autoconf v2 macro names.

1994-10-05  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: fix typo

	* Makefile.in (prefix, exec_prefix):
	Let configure set them.

1994-09-28  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: Set datadir to $(prefix)/share.

1994-09-15  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	Update copyright notice and GPL version.

1994-09-15  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	Update copyright notice and GPL version.

1994-07-12  Richard Stallman  <rms@gnu.org>

	* src/reduce.c, src/reader.c:
	entered into RCS

1994-05-05  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: entered into RCS

1994-03-26  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: entered into RCS

1994-03-26  Richard Stallman  <rms@gnu.org>

	* bison.simple: entered into RCS

1994-03-25  Richard Stallman  <rms@gnu.org>

	* src/main.c: entered into RCS

1994-03-24  Richard Stallman  <rms@gnu.org>

	* src/conflicts.c: entered into RCS

1994-01-02  Richard Stallman  <rms@gnu.org>

	* Makefile.in: *** empty log message ***

1993-11-21  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-11-21  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo: entered into RCS

	* doc/bison.texinfo: *** empty log message ***

1993-11-21  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-10-25  David J. MacKenzie  <djm@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1993-10-19  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-10-19  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-10-14  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-10-14  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-09-14  David J. MacKenzie  <djm@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1993-09-13  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-09-10  Richard Stallman  <rms@gnu.org>

	* src/conflicts.c: *** empty log message ***

	* src/system.h: entered into RCS

1993-09-10  Richard Stallman  <rms@gnu.org>

	* doc/bison.1: entered into RCS

1993-09-06  Noah Friedman  <friedman@gnu.org>

	* src/version.c: entered into RCS

1993-09-06  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-07-30  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: *** empty log message ***

1993-07-24  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-07-24  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-07-08  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: *** empty log message ***

1993-07-04  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-07-04  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-06-26  David J. MacKenzie  <djm@gnu.org>

	* src/getargs.c: entered into RCS

1993-06-26  David J. MacKenzie  <djm@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

	* doc/bison.1: New file.

1993-06-25  Richard Stallman  <rms@gnu.org>

	* src/getargs.c: New file.

1993-06-16  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-06-16  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-06-03  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: New file.

1993-06-03  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1993-06-03  Richard Stallman  <rms@gnu.org>

	* bison.simple: New file.

1993-05-19  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo: New file.

1993-05-07  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-04-28  Noah Friedman  <friedman@gnu.org>

	* src/reader.c: *** empty log message ***

1993-04-23  Noah Friedman  <friedman@gnu.org>

	* src/alloc.h: entered into RCS

1993-04-20  David J. MacKenzie  <djm@gnu.org>

	* src/version.c: *** empty log message ***

	* src/files.c, src/allocate.c:
	entered into RCS

	* src/reader.c: *** empty log message ***

	* src/lex.c: entered into RCS

	* src/conflicts.c: New file.

	* src/symtab.c: entered into RCS

	* src/alloc.h: New file.

	* src/LR0.c: entered into RCS

1993-04-18  Noah Friedman  <friedman@gnu.org>

	* src/reader.c: New file.

	* src/version.c: *** empty log message ***

1993-04-18  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-04-17  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-04-15  Richard Stallman  <rms@gnu.org>

	* src/main.c, src/files.c:
	New file.

1993-04-15  Noah Friedman  <friedman@gnu.org>

	* configure.in: entered into RCS

	* configure.in: *** empty log message ***

	* configure.in: New file.

1993-04-14  Richard Stallman  <rms@gnu.org>

	* Makefile.in: New file.

1993-04-13  Richard Stallman  <rms@gnu.org>

	* src/version.c: New file.

1993-03-25  Richard Stallman  <rms@gnu.org>

	* src/output.c: entered into RCS

1992-09-25  Richard Stallman  <rms@gnu.org>

	* configure.bat: entered into RCS

1992-06-22  Richard Stallman  <rms@gnu.org>

	* src/vmsgetargs.c: entered into RCS

1992-06-22  Richard Stallman  <rms@gnu.org>

	* doc/bison.rnh: entered into RCS

1992-04-20  David J. MacKenzie  <djm@gnu.org>

	* README: entered into RCS

1992-01-22  Richard Stallman  <rms@gnu.org>

	* src/machine.h: entered into RCS

1991-12-21  Richard Stallman  <rms@gnu.org>

	* src/lalr.c, src/closure.c:
	entered into RCS

1991-12-20  Richard Stallman  <rms@gnu.org>

	* src/state.h: entered into RCS

1991-12-18  Richard Stallman  <rms@gnu.org>

	* src/print.c, src/nullable.c, src/derives.c:
	entered into RCS

1991-11-03  David J. MacKenzie  <djm@gnu.org>

	* src/warshall.c, src/types.h, src/symtab.h, src/lex.h, src/gram.c, src/gram.h, src/files.h:
	entered into RCS

1988-09-09  Richard Stallman  <rms@gnu.org>

	* src/bison.hairy: entered into RCS

1987-12-16  Richard Stallman  <rms@gnu.org>

	* REFERENCES: entered into RCS


	-----

	Copyright (C) 1987-1988, 1991-2015 Free Software Foundation,
	Inc.

	Copying and distribution of this file, with or without
	modification, are permitted provided the copyright notice and this
	notice are preserved.
