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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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.
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bug-bison/2011-01/msg00000.html>,
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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:
	<https://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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2010-07/msg00019.html>
	<https://lists.gnu.org/r/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:
	https://www.gnu.org/licenses/fdl.texi

	Do not use date ranges in copyright notices.
	See https://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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bug-bison/2010-02/msg00004.html>.

	There were also problems with the test suite livelocking on
	Tru64 5.1b.  Reported by Didier Godefroy at
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bug-bison/2009-09/msg00008.html>
	and
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	https://lists.gnu.org/r/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.
	https://lists.gnu.org/r/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.
	https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	https://lists.gnu.org/r/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.
	https://lists.gnu.org/r/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.
	https://lists.gnu.org/r/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.
	https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bug-bison/2007-12/msg00001.html>
	and discussed again starting at
	<https://lists.gnu.org/r/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, consistently with the comments.

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

	Style changes.
	* etc/bench.pl.in (generate_grammar_list): Consistently 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 outputting 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 translated 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
	<https://lists.gnu.org/r/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-descriptive.  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>

	Aggregate 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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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 accurately.
	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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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/fnchange.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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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 generation 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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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 grammars.

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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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-reachable=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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2006-02/msg00064.html>
	and
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2006-02/msg00064.html>,
	<https://lists.gnu.org/r/bison-patches/2006-06/msg00091.html>,
	and
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2006-07/msg00019.html>
	and
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2006-06/msg00108.html>
	and
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2005-12/msg00000.html>,
	<https://lists.gnu.org/r/bison-patches/2006-01/msg00016.html>,
	and
	<https://lists.gnu.org/r/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:
	<https://lists.gnu.org/r/bison-patches/2005-09/msg00053.html>,
	<https://lists.gnu.org/r/bison-patches/2005-12/msg00052.html>,
	and
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2006-01/msg00049.html>
	and then at
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://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
	<https://lists.gnu.org/r/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 declaration 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): Forewarn the Translation Project about
	stable releases.

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:
	https://lists.gnu.org/r/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:
	https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bison-patches/2005-08/msg00004.html>
	(trivial change).
	* tests/glr-regression.at (Duplicate representation of merged trees):
	New test, from Joel E. Denny in:
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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.  Generate 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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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_storage): 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
	<https://lists.gnu.org/r/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 reduction 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
	<https://lists.gnu.org/r/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:
	https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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:
	https://lists.gnu.org/r/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 <https://bugs.debian.org/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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:
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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:
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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 <https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/bug-bison/2003-01/msg00071.html>
	and <https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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) transition_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_alignment_e.
	* src/vcg_defaults.h (G_NODE_ALIGNMENT): Renamed from
	G_NODE_ALIGNMENT.


	* 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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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_alignment_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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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:
	<https://lists.gnu.org/r/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:
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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 otherwise-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:
	https://lists.gnu.org/r/bug-bison/2002-10/msg00106.html
	https://lists.gnu.org/r/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 corrupted.  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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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
	<https://lists.gnu.org/r/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/assoc.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' handling.
	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_additional_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): Adjust.

	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_additional_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/conflicts.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_additional_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 whether <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 characters 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): Initialize 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 invocations 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 typedef %%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_additional_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_additional_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_additional_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 definitions 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 `comparison
	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, rawtoknumflag, 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
	concatenation.

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
	concatenation.

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, 2018-2022, 2025 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.
