2012-01-15  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Prepare for 2.5 release.
	* NEWS (2.5_rc1): Rename back to...
	(2.5): ... this, and unset date.

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

	Version 2.5_rc1.
	* NEWS (2.5): Rename to...
	(2.5_rc1): ... this, and set date.

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 (token_definitions_output, output_skeleton)
	* src/parse-gram.y (prologue_declaration)
	* src/scan-gram.l (handle_syncline)
	* src/symtab.c (symbol_new): Use mbschr and mbsrchr instead of
	strchr and strrchr.  In the cases of command-line options, file
	names, and thus locations, functionality may be improved.  In the
	case of symbol names, there should be no functional difference as
	all characters are ASCII, so the intended benefit is just warning
	suppression.

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

	* NEWS (2.5): Fix minor typos.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	maint: run "make update-copyright".

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

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

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

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

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

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

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

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

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

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

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

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

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

	parse.lac: implement as %define variable.
	LAC = lookahead correction.  See discussion at
	<http://lists.gnu.org/archive/html/bison-patches/2009-09/msg00034.html>.
	However, one point there must be corrected: because of %nonassoc,
	LAC is *not* always redundant for lr.type=canonical-lr.
	* data/yacc.c: Accept values of "none" (default) or "full" for
	parse.lac.  Accept %define parse.lac.es-capacity to specify
	capacity of LAC's temporary exploratory stack.  It defaults to 20
	and, for now, will not grow dynamically.
	(b4_lac_flag, b4_lac_if): New m4 macros.  Evaluate as true for
	parse.lac!=none.
	(YYBACKUP): Invoke YY_LAC_DISCARD.
	(YY_LAC_ESTABLISH, YY_LAC_DISCARD): New cpp macros that invoke
	yy_lac and track when it needs to be invoked
	(yy_lac): New function that, given the current stack, determines
	whether a token can eventually be shifted.  Return status mimics
	yyparse return status.
	(yysyntax_error): Change yystate argument to yyssp so stack top
	can be passed to yy_lac.  If LAC is requested, build expected
	token list by invoking yy_lac for every token instead of just
	checking the current state for lookaheads.  Return 2 if yy_lac
	exhausts memory.
	(yyparse, yypush_parse): Use local variable yy_lac_established and
	cpp macros YY_LAC_ESTABLISH and YY_LAC_DISCARD to implement LAC.
	Update yysyntax_error invocation.  Add yyexhaustedlab code if LAC
	is requested.
	* tests/conflicts.at (%nonassoc and eof): Extend to check the
	effect of each of -Dlr.type=canonical-lr and -Dparse.lac=full.
	(%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: adjust prior fixes for branch-2.5's lalr1.cc.
	On master, there is no yychar in lalr1.cc, but there is on
	branch-2.5, and the prior cherry-pick of "Fix handling of yychar
	manipulation in user semantic actions" wasn't adjusted for that
	difference.
	* data/lalr1.cc (yy::parser::parse): Translate yychar before
	every use of yytoken, and add comments explaining this approach.
	* tests/conflicts.at (%error-verbose and consistent errors):
	Extend to test yychar manipulation with lalr1.cc.

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,
	set yytoken to yyempty_ before invoking 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 (%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 (%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>

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

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

	* ChangeLog: Correct some errors in previous entries.

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

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

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

	Fix portability problem on OpenBSD 4.7.

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

	Adjust to recent changes to gnulib bootstrap.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	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-06-17  Paul Eggert  <eggert@cs.ucla.edu>

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

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

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

	* HACKING, Makefile.am, NEWS, PACKAGING, README, README-alpha:
	* TODO, bootstrap, bootstrap.conf:
	* build-aux/update-b4-copyright, cfg.mk, configure.ac:
	* data/README, data/bison.m4, data/c++-skel.m4, data/c++.m4:
	* data/c-skel.m4, data/c.m4, data/glr.c, data/glr.cc:
	* data/java-skel.m4, data/java.m4, data/lalr1.cc:
	* data/lalr1.java, data/location.cc:
	* 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/subpipe.c, djgpp/subpipe.h:
	* djgpp/testsuite.sed, doc/bison.texinfo:
	* doc/refcard.tex, etc/README, etc/bench.pl.in:
	* examples/calc++/Makefile.am, examples/extexi:
	* 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/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/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/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:
	* data/Makefile.am, data/location.cc, doc/Makefile.am, src/Makefile.am:
	* tests/Makefile.am, lib/Makefile.am, examples/Makefile.am:
	* etc/Makefile.am:
	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-07  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-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-04  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: don't generate location.hh when location_type is defined
	* data/bison.m4 (b4_percent_define_use): New.
	(b4_percent_define_get): Use it.
	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.
	* data/glr.cc: Likewise.

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-04  Akim Demaille  <demaille@gostai.com>

	tests: enhance AT_SYNCLINES_COMPILE.
	* tests/synclines.at (AT_TEST_SYNCLINE): Move GCC 4.5 protection
	into...
	(AT_SYNCLINES_COMPILE): here.
	Add more distcc patterns.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	portability: fix spawning on at least FreeBSD 8 and FreeBSD 9.
	Reported by Johan van Selst at
	<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00014.html>.
	* NEWS (2.4.3): New.
	* THANKS (Johan van Selst): Add.
	* gnulib: Update to latest.

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

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

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

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

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

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

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

	portability: fix several issues with M4 subprocess.

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

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

	To attempt to solve both of these problems, switch to gnulib's
	create_pipe_bidi and register M4 process as a slave.  Along the
	way, clean up file name conflict handling, which was affected by
	the broken-pipe problem before the switch.
	* NEWS (2.4.2): Document.
	* THANKS (Didier Godefroy): Add.
	* bootstrap.conf (gnulib_modules): Add pipe.
	* gnulib: Update to latest to make sure we have all the latest
	fixes.
	* lib/Makefile.am (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-21  Joel E. Denny  <jdenny@clemson.edu>

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

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

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

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

	* bootstrap: Import improvements from latest gnulib.

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

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

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

	gnulib: update to latest.

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

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

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

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

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

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

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

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

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

	maint: run "make update-copyright"

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

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

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

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

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

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

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

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

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

	Port small part of master's 11707b2b so future ports are easier.
	* data/lalr1.java (YYParser::yysyntax_error): Untabify.

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

	Simplify the i18n of the error messages.
	* data/lalr1.cc: Comment changes.

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.

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

	Port small part of master's 8901f32e so future ports are easier.
	* data/lalr1.cc (yy::parser::yysyntax_error_): Always add second
	argument, but name it in the function definition only when
	verbose error messages are enabled and it'll thus be used.
	(yy::parser::parse): Update use of yysyntax_error_.

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 (%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-17  Joel E. Denny  <jdenny@clemson.edu>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Rename muscle_tab.* to muscle-tab.* for consistency with master.
	* src/Makefile.am (bison_SOURCES): Update.
	* src/getargs.c, src/ielr.c, src/lalr.c, src/main.c,
	src/output.c, src/parse-gram.y, src/print.c, src/reader.c,
	src/tables.c: Update include.
	* src/muscle_tab.c, src/muscle_tab.h: Rename to...
	* src/muscle-tab.c, src/muscle-tab.h: ... these and update
	include.

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-04  Joel E. Denny  <jdenny@clemson.edu>

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

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

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

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

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

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

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

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

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

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-16  Akim Demaille  <demaille@gostai.com>

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

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

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

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

	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-03  Akim Demaille  <demaille@gostai.com>

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

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

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

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

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

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

	%define: accept unquoted values.
	* NEWS (2.5): Group all %define changes together, and document
	this one.  Remove quotes in IELR and canonical LR entry.
	* doc/bison.texinfo: Remove quotes in most examples throughout.
	(Decl Summary): Update %define documentation.
	(Table of Symbols): Likewise.
	* src/ielr.c (LrType): Update documentation.
	* src/parse-gram.y (content.opt): Add production for ID.
	* tests/calc.at: Remove quotes in most tests.
	* 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/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: 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/c.m4 (b4_table_value_equals): Comment that YYID must be
	defined.
	* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Fix
	yytable comments: zero indicates syntax error not default
	action.
	* data/glr.c (yyis_pact_ninf): Rename to...
	(yypact_value_is_default): ... this.
	(yyisDefaultedState): Update for rename.
	(yyis_table_ninf): Rename to...
	(yytable_value_is_error): ... this, and check for value zero
	besides just YYTABLE_NINF.
	(yygetLRActions): Check for default value from yypact.  It
	appears that this check is always performed before this function
	is invoked, and so adding the check here is probably redundant.
	However, the code may evolve after this subtlety is forgotten.
	Also, update for rename to yytable_value_is_error.  Because that
	macro now checks for zero, a different but equivalent branch of
	the if-then-else here is evaluated.
	(yyreportSyntaxError): Update for rename to
	yytable_value_is_error.  The zero condition was mishandled
	before.
	(yyrecoverSyntaxError): Update for renames.  No behavioral
	changes.
	* data/lalr1.cc, data/lalr1.java (yy_pact_value_is_default_):
	New function.
	(yy_table_value_is_error_): New function.
	(parse): Use new functions where possible.  No behavioral
	changes.
	(yysyntax_error_, yysyntax_error): Use yy_table_value_is_error_.
	The zero condition was mishandled before.
	* data/yacc.c (yyis_pact_ninf): Rename to...
	(yypact_value_is_default): ... this.
	(yyis_table_ninf): Rename to...
	(yytable_value_is_error): ... this, and check for value zero
	besides just YYTABLE_NINF.
	(yysyntax_error): Update for rename to yytable_value_is_error.
	The zero condition was mishandled before.
	(yyparse): Update for renames.  No behavioral changes.
	* src/tables.h: Improve comments about yypact, yytable, etc.
	more.  Most importantly, say yytable value of zero means syntax
	error not default action.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	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-18  Joel E. Denny  <jdenny@clemson.edu>

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

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

	build: require gettext 0.17.

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

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

	build: lower gettext requirements.

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

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

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

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

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

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

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

	distcheck: fix.

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

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

	* tests/Makefile.am (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/Makefile.am (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  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>

	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  Joel E. Denny  <jdenny@ces.clemson.edu>

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

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

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

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

	* m4/m4.m4: Make it a sym link to submodules/autoconf/m4/m4.m4.

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

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

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

	Alphabetical order in src/Makefile.am.
	* src/Makefile.am: 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-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-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-10  Akim Demaille  <demaille@gostai.com>

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

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

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

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

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

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

	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-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 invocation.
	* 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.
	* 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-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/c++.m4: Update copyright year.

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-11  Akim Demaille  <demaille@gostai.com>

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

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

	fix hexadecimal token number support.
	* src/scan-gram.l: Catch incorrect ids after hexadecimal numbers.

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

	tests: check token numbers.
	* tests/input.at (Numbered tokens): 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>

	space changes.
	* src/scan-gram.l: Untabify to be robust to zealous editors.

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_grammar): 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-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-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-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add copyright updates missed during previous cherry pick.
	* src/output.c: Here.
	* src/parse-gram.y: Here.
	* src/scan-gram.l: Here.

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

	variables: accept dashes.
	* 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-24  Joel E. Denny  <jdenny@ces.clemson.edu>

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

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

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

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

	Rename "default rule" to "default reduction".
	This includes changing variable names in code, changing
	comments, and renaming %define lr.default_rules to %define
	lr.default_reductions.
	* NEWS (2.5): Update IELR documentation.
	* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c:
	Adjust YYDEFACT and yydefact_ documentation.
	* 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  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>

	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.

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

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): Describe new -D/--define feature.

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-21  Akim Demaille  <demaille@gostai.com>

	Display the changes in cross-options.texi.
	* build-aux/cross-options.pl ($sep): New, to separate items.
	* doc/Makefile.am ($(srcdir)/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/Makefile.am (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.

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

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

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-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  Di-an Jan  <dianj@freeshell.org>

	Handle --enable-gcc-warnings.
	* src/getargs.c (command_line_location): Set parameters to void.

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

	AT_FULL_COMPILE.
	* tests/actions.at, tests/regression.at: Use it.

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-09  Akim Demaille  <demaille@gostai.com>

	Require the generation of parse-gram.output.
	* src/Makefile.am (YACC): Pass --report=all.

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

	* NEWS (2.5): New stub.

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.

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.

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

	Remove spurious initial empty lines.
	* data/location.cc: End the @output lines with an @.

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

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: Replace with Autoconf 2.63's 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  Joel E. Denny  <jdenny@ces.clemson.edu>

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

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.

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-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.
	* lib/Makefile.am (AM_CPPFLAGS): It is now defined by gnulib, so
	use +=.

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  Joel E. Denny  <jdenny@ces.clemson.edu>

	Version 2.4.1.
	* NEWS: Set version and date.
	* lib/Makefile.am: Update copyright year.
	* tests/atlocal.in: Update copyright year.

2008-12-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	Semicolon feature removal is not about future language support.
	* NEWS: The semicolon feature is no longer active for newer languages,
	so don't claim that it causes trouble for them.

2008-12-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	* gnulib: Update submodule to HEAD.

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

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

2008-12-05  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-11-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS: Clarify a little.

2008-11-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS: Update for recent changes.

2008-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix unexpanded macros in GLR defines file.
	Reported by Csaba Raduly at
	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00048.html>.
	* THANKS (Csaba Raduly): Add.
	* data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc.
	* tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate
	lexer in a separate module that includes the defines file.
	(AT_CHECK_CALC): Use AT_FULL_COMPILE and 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): New, copied from master branch and extended to
	support an additional source file.

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-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-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-04  Akim Demaille  <demaille@gostai.com>

	* NEWS: Mention the trailing semicolon in action.

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

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

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

	Fix user actions without a trailing semicolon.
	Reported by Sergei Steshenko at
	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00001.html>.
	* THANKS (Sergei Steshenko): Add.
	* src/scan-code.l (SC_RULE_ACTION): Fix it.
	* tests/regression.at (Fix user actions without a trailing semicolon):
	New test case.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Initiate further development.
	* NEWS: Create an empty section for new entries.
	* gnulib: Update submodule to HEAD.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS: Version 2.4.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Prepare for next release.
	* NEWS: Briefly mention changes since 2.3b.
	* README: Say GNU m4 1.4.6, which we've been requiring in release
	announcements already, not 1.4.3, which breaks the build.

2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Say %language is experimental.
	We're thinking of extending it's effect on output file naming.  See the
	thread at
	<http://lists.gnu.org/archive/html/bison-patches/2008-10/msg00003.html>.
	* NEWS: Say it's experimental.
	* doc/bison.texinfo (Decl Summary): Say it's experimental, and so don't
	recommend it over %skeleton for now.
	(Bison Options): Likewise.
	(C++ Bison Interface): Use %skeleton not %language.
	(Calc++ Parser): Use %skeleton not %language.
	* src/getargs.c (usage): Say it's experimental.

2008-11-01  Di-an Jan  <dianj@freeshell.org>
	    Paolo Bonzini  <bonzini@gnu.org>

	Support all Java parser class modifiers.
	* data/java.m4 (b4_percent_define_get3): New.
	(b4_final_if, b4_strictfp_if): New.
	* data/lalr1.java (final, strictfp, extends, implements): Support.
	* doc/bison.texinfo (final, strictfp, extends, implements): Add
	documentation.
	* tests/java.at (AT_CHECK_JAVA_MINIMAL): New.
	(AT_CHECK_JAVA_MINIMAL_W_LEXER): New.
	(AT_CHECK_JAVA_GREP): New.
	(Java parser class modifiers): New test.
	(Java parser class extends and implements): New test.

	Model exception propagation better with throws and lex_throws.
	* data/java.m4 (b4_list2): New.
	(throws): Change default.
	* data/lalr1.java (yyaction): Add throws.
	(parse): Add lex_throws in addition to throws.
	* doc/bison.texinfo (throws, lex_throws): Add documentation.
	* tests/java.at (Java throws specifications): New test.

	Improve documentation for Java parsers.
	* doc/bison.texinfo (Java Parsers): Add subsections.
	Don't quote first argument of %define.
	(Java Bison Interface): Document output files.  Move documentation
	of parser class and merge into Java Parser Interface.  Document
	features that error out.  Document directives with no effect.
	Move note about Javadoc higher.
	(Java Semantic Values): Explicitly mention stype.
	Document that generic types cannot be used.
	(Java Location Values): Use @deftypeivar.  Document constructors.
	Correct return value for toString.
	(Java Parser Interface): List undocumented constants/fields.
	Move documentation of fields added by %parse-param closer to list
	of members.  Document that token names are added as fields.
	Document constructors accurately.  Remove error method.
	(Java Scanner Interface): Move note on %pure-parser to Java Bison
	Interface.  Describe %code lexer and yylex accutately.
	Remove documentation that does not match the code.
	(Java Action Features): New.
	(Java Differences): Add reference.  Add item on semantic values.
	Add note about @{ ... @}.  Clarify %% epilogue placement.
	(Java Declarations Summary): New.

	Fix Java skeleton.
	* data/java.m4 (b4_prefix): Correct quoting for m4_define_default.
	(b4_remove_comma): Quote test argument.
	(b4_identification): Remove "bison" field.
	* tests/java.at (Java parser class and package names): New test.
	(Java %parse-param and %lex-param): New test.
	(Java stype, position_class and location_class): New test.

2008-10-31  Di-an Jan  <dianj@freeshell.org>

	* data/lalr1.jave: Update copyright years.
	(YYParser): Correct name of "generated from" file in Javadoc:
	use b4_file_name instead of @ofile@.
	(Location constructor): Correct Javadoc parameter name.
	(yylloc): Add missing opening m4 quote after b4_location_if.
	This removes a stray [ in the Javadoc of Lexer.getStartPos.
	(Lexer.yyerror): Fix incorrect m4 and Javadoc.
	(YYParser constructor): Correct Javadoc parameter name.

2008-10-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	Always put auxiliary code files in the same dir as other output files.
	* src/files.c (compute_file_name_parts): When the user specifies
	--output but not --file-prefix, extract the directory prefix from the
	file prefix not from the grammar file name.  This affects the location
	of files like location.hh generated by the C++ skeleton.  The includes
	in the other output files require this fix.
	* tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
	for expected output files.
	(Output files): Add a test for the above.

2008-10-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* gnulib: Update submodule to HEAD.

2008-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update copyright year.
	* src/files.c: Here.

2008-10-28  Di-an Jan  <dianj@freeshell.org>  (tiny change)

	Don't overwrite the input file.
	* src/files.c (output_file_name_check): Fatal error if using input file
	for output.
	* tests/output.at: (AT_CHECK_CONFLICTING_OUTPUT): Add return status
	argument.
	(Conflicting output files): Add test.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Space changes.
	* data/lalr1.cc: Formatting changes.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Don't define debugging functions when !YYDEBUG.
	* data/lalr1.cc (debug_stream, set_debug_stream)
	(debug_level_type, debug_level, set_debug_level): Don't
	declare them when YYDEBUG is not defined.
	The implementation are already YYDEBUG-aware.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Prefer "continue" for empty loop bodies.
	* etc/bench.pl.in: Use "continue" instead of {}.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Space and comments changes.
	* data/c++.m4, data/glr.c, data/lalr1.cc: Copyright year changes.
	* data/c.m4, data/lalr1.cc: Space changes.

2008-10-28  Akim Demaille  <demaille@gostai.com>

	Make gnulib a submodule.
	* gnulib: New.
	* .gitmodules (gnulib): New.

2008-10-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix yyerror_range for user-defined location type in C++.  Reported by
	Georg Sauthoff at
	<http://lists.gnu.org/archive/html/bug-bison/2008-08/msg00008.html>.
	* data/lalr1.cc (parse): Change type of yyerror_range to location_type.
	* THANKS (Georg Sauthoff): Add.

2008-10-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update several administrative files mainly to facilitate releasing.
	* HACKING (Administrivia): Make the git-merge-changelog notes more
	helpful.
	(Test suite): Don't say lalr1.cc is not exercised in the test suite.
	(Release Procedure): Update for git and add numerous details that were
	previously missing.
	* Makefile.am (EXTRA_DIST): Remove Makefile.cfg and Makefile.maint.
	* maint.mk (announcement): Don't list bison as a bootstrap tool so
	that announcements don't claim we bootstrapped with whatever bison
	happened to be in PATH.  Add flex as a bootstrap tool.
	* Makefile.maint: Remove, previously replaced by maint.mk.
	* Makefile.cfg: Remove, and migrate settings to...
	* cfg.mk: ... here for the sake of `make announcement'.
	* bootstrap.conf (gnulib_modules): Add announce-gen.
	* README: Say GNU Bison instead of just Bison.  Suggested by Karl
	Berry.

2008-10-08  Di-an Jan  <dianj@freeshell.org>  (tiny change)

	Small but important bugfixes for the Java skeleton.
	* data/lalr1.java (yyerror): Change Location to b4_location_type.
	(yy_symbol_print): Call toString on yyvaluep.

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

	Clarify UPDATED use.
	* doc/bison.texinfo: It refers to the last edition of this file,
	not to the release date of Bison.
	Reported by Joel E. Denny.

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

	* README: Update FAQ pointer.
	Reported by Joel E. Denny.

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

	Resync m4sugar from autoconf.
	* data/m4sugar/m4sugar.m4 (m4_defn, m4_popdef, m4_undefine)
	(m4_init): Adjust to latest m4.git changes.
	(m4_mapall_sep, _m4_list_cmp, m4_version_compare): Reduce side
	effects.
	* data/m4sugar/foreach.m4 (_m4_shiftn): Fix off-by-one bug.
	(_m4_list_cmp): Reduce side effects.

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

	Check yyerrok in calc.at.
	* tests/calc.at (calc.y): Use yyerrok on "( error )".
	(AT_CHECK_CALC): Add a check that ensures that yyerrok works as
	expected.

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

	Support yyerrok in lalr1.cc.
	YYBACKUP is still to import back into lalr1.cc.
	* data/lalr1.cc (yyerrork, yyclearin, YYRECOVERING): Define.

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

	For maintainer-check*, don't recompile for a $(VERSION) update.
	* cfg.mk: New file.
	(_is-dist-target): Override the one in GNUmakefile.
	* Makefile.am (EXTRA_DIST): Add cfg.mk.

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

	Update for recent change to gnulib.
	* src/parse-gram.y: Don't include strverscmp.h.  It comes from
	string.h now.

2008-08-15  Eric Blake  <ebb9@byu.net>

	Remaining m4sugar merge from autoconf.
	* data/m4sugar/m4sugar.m4: Copy entire file from autoconf.
	* data/m4sugar/foreach.m4: New file, copied from autoconf.
	* data/Makefile.am (dist_m4sugar_DATA): Distribute it.
	* src/output.c (output_skeleton): Tell m4 how to find it.

	Partial m4sugar merge from autoconf: m4_map.
	* data/m4sugar/m4sugar.m4 (m4_fst): Delete.
	(m4_map, m4_map_sep, _m4_map): Rewrite more efficiently.
	(m4_apply, _m4_apply, m4_mapall, m4_mapall_sep): New macros.
	* data/java.m4 (b4_token_enums): Use more efficient short-circuit
	for empty list.
	* data/c.m4 (b4_token_defines, b4_token_enums, b4_c_ansi_formals):
	Likewise.
	(b4_parse_param_for): Avoid m4_fst, now that autoconf no longer
	declares it.

2008-08-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Keep .version and PACKAGE_VERSION in sync.
	* Makefile.am ($(top_srcdir)/.version): Declare configure as a
	dependency, and add comments justifying this in more detail.  Discussed
	starting at
	<http://lists.gnu.org/archive/html/bison-patches/2008-07/msg00022.html>.

2008-08-06  Eric Blake  <ebb9@byu.net>

	Partial m4sugar merge from autoconf: m4_shiftn.
	* data/m4sugar/m4sugar.m4 (m4_shiftn): Faster implementation.
	(m4_shift2, m4_shift3): New macros.
	(m4_case, m4_bmatch, m4_bpatsubsts, m4_join): Adjust clients.
	* data/c.m4 (b4_c_function_def, b4_c_ansi_function_def)
	(b4_c_ansi_function_decl, b4_c_function_call): Likewise.
	* data/java.m4 (b4_remove_comma): Likewise.

	Partial m4sugar merge from autoconf: m4_wrap vs. m4 1.6.
	* data/m4sugar/m4sugar.m4 (m4_unquote, m4_wrap_lifo): New macros.
	(m4_wrap): Guarantee FIFO order, in spite of m4 1.6.
	(m4_init): Consolidate wrapped text into single m4_wrap.
	* data/bison.m4 (b4_check_user_names_wrap): Stick with LIFO order
	in wrapped text.

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

	Partial m4sugar merge from autoconf: builtins, version.m4.
	* data/m4sugar/m4sugar.m4 (changeword): Nuke.
	(m4_prepend): Remove, as it is unused and inherently quadratic,
	whereas m4_append is linear in newer m4.
	(m4_mkstemp): New builtin.
	(m4_symbols): Make rename conditional.
	(m4_version_prereq): Ensure fatal error if used in bison, which
	intentionally lacks version.m4.

	Fix comments in m4sugar.
	* data/m4sugar/m4sugar.m4: Comment changes, borrowed from autoconf.

2008-08-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update for recent .gitignore fix in Gnulib.
	* bootstrap: Back out 2008-07-18 hack now that gnulib-tool creates
	anchored .gitignore entries.

2008-08-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Set gnu or gnits strictness.
	* configure.ac (AM_INIT_AUTOMAKE): Set gnu strictness during
	development and gnits strictness for releases.  Based on Eric Blake's
	suggestion at
	<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00019.html>.

2008-07-31  Paolo Bonzini  <bonzini@gnu.org>

	* NEWS: Clarify documentation of %language.

2008-07-31  Paolo Bonzini  <bonzini@gnu.org>

	Support usage of git-merge-changelog.
	* .gitattributes: New.
	* HACKING: Document usage of git-merge-changelog.
	* bootstrap: Install git-merge-changelog entries in .git/config
	if appropriate.

2008-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Remove remaining dependence on CVS Id keyword.
	* ChangeLog: For the sake of people still using CVS, don't use dollars
	when mentioning Id.
	* data/xslt/bison.xsl: Remove Id from header comments, where it was
	unusual anyway.
	* data/xslt/xml2dot.xsl: Likewise.
	* data/xslt/xml2text.xsl: Likewise.
	* data/xslt/xml2xhtml.xsl: Likewise.
	* doc/Doxyfile.in (PROJECT_NUMBER): Don't use ID.
	* doc/Makefile.am (neutralize): Remove, no longer needed.
	(.x.1): Don't use neutralize.
	(edit): Don't substitute for ID.
	(Doxyfile): Don't define Id, and thus don't depend on ChangeLog.

2008-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix dependence on computed configure variables.
	* doc/Makefile.am (common_dep): Depend on $(top_srcdir)/configure not
	$(top_srcdir)/configure.ac so that changes to computed variables, such
	as PACKAGE_VERSION, are seen.
	* tests/Makefile.am ($(srcdir)/package.m4): Likewise.

2008-07-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update copyright dates for recent changes.
	* Makefile.am: Here.
	* src/Makefile.am: Here.
	* src/reduce.c: Here.
	* tests/reduce.at: Here.

2008-07-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Use git-version-gen for version names between releases.
	* .cvsignore (.tarball-version, GNUmakefile, *~): Add.
	* .gitignore (/.tarball-version, /GNUmakefile, /*~): Add.
	* .prev-version: New.
	* .version.in: Remove.
	* ChangeLog: Remove the Id previously used for capturing the CVS
	revision.
	* GNUmakefile: Remove, now copied from Gnulib.
	* Makefile.am: Add code suggested by comments in
	build-aux/git-version-gen.
	(EXTRA_DIST): Remove GNUmakefile, handled by Gnulib.  Add maint.mk,
	.prev-version, and .version.
	* NEWS (2.3b+): Rename to...
	(?.?): ... this because we're dropping the "+" version naming scheme,
	but, in general, we still can't be sure of our next release name.
	* bootstrap: Add a quick hack to remove from .gitignore the
	GNUmakefile entry that gnulib adds.  We already have a /GNUmakefile
	entry.  This should really be fixed in gnulib instead.
	* bootstrap.conf (gnulib_modules): Add gnumakefile.
	* configure.ac (AC_INIT): Set version name by invoking
	build-aux/git-version-gen.
	(AC_CONFIG_FILES): Remove .version, now generated by
	build-aux/git-version-gen.
	* maint.mk: New, copied from coreutils.
	* doc/.cvsignore (bison.1): Add.
	* doc/.gitignore (/bison.1): Add.
	* doc/bison.1: Remove, generated.
	* src/.cvsignore (revision.c): Remove.
	* src/.gitignore (/revision.c): Remove.
	* src/Makefile.am (bison_SOURCES): Remove revision.c and revision.h.
	(BUILT_SOURCES): Remove revision.c.
	(revision.c): Remove.
	* src/getargs.c (version): Don't print revision after the VERSION.
	* src/revision.h: Remove.

2008-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix untranslatable composition of sentences.  Reported by Goran
	Uddeborg at
	<http://lists.gnu.org/archive/html/bug-bison/2008-06/msg00000.html>.
	* THANKS (Goran Uddeborg): Add.
	* src/reduce.c (reduce_print): Report the number of nonterminals and
	rules useless in the grammar in separate sentences.
	* tests/reduce.at (Useless Rules): Update output.
	(Reduced Automaton): Likewise.
	(Underivable Rules): Likewise.
	(Empty Language): Likewise.

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

	Fix some .gitignore and .cvsignore problems.
	* bootstrap (insert_sorted_if_absent): Replace all uses with...
	(insert_vc_ignore): ... this new function, which prepends `/' to all
	.gitignore entries before passing them to insert_sorted_if_absent.
	* bootstrap.conf (vc_ignore): Set to '.cvsignore .gitignore' so that
	.cvsignore files are maintained even though Bison developers run
	bootstrap while using Git.
	* .cvsignore (*.patch *.log log patches applied): Remove, apparently
	unneeded by Bison.
	(gnulib): Add.
	* .gitignore (/*.patch *.log log patches applied): Remove, broken and
	unneeded.  Reported by Eric Blake.
	* lib/.gitignore (/*~): Add.
	* po/.cvsignore, runtime-po/.cvsignore: Sync with .gitignore.
	* examples/calc++/.gitignore (/calc++.exe): Add.  Reported by Eric
	Blake.
	* src/.gitignore (/bison.exe): Add.  Reported by Eric Blake.

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

	Improve forward-compatibility with GNU M4.  Reported by Eric Blake at
	<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00000.html>.
	* bootstrap.conf (gnulib_modules): Add unsetenv.
	* lib/.gitignore, lib/.cvsignore (/unsetenv.c): Add.
	* m4/.gitignore, m4/.cvsignore (/environ.m4): Add.
	(/setenv.m4): Add.
	* src/output.c (output_skeleton): For the m4 invocation, pass -dV as
	the first argument because it may become position-dependent, and unset
	POSIXLY_CORRECT so Bison's skeletons have access to GNU M4 extensions.
	Add comments explaining these issues in more detail.

2008-07-14  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add .gitignore everywhere based on .cvsignore.
	* .gitignore: New.
	* build-aux/.gitignore: New.
	* data/.gitignore: New.
	* doc/.gitignore: New.
	* etc/.gitignore: New.
	* examples/.gitignore: New.
	* examples/calc++/.gitignore: New.
	* lib/.gitignore: New.
	* m4/.gitignore: New.
	* po/.gitignore: New.
	* runtime-po/.gitignore: New.
	* src/.gitignore: New.
	* tests/.gitignore: New.

2008-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3b+): New section, empty for now.
	* configure.ac (AC_INIT): 2.3b -> 2.3b+.

2008-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3b): Update release date since there has been a delay in
	getting the announcements and tarballs out.

2008-05-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS: Version 2.3b.
	* configure.ac (AC_INIT): Likewise.
	(PACKAGE_COPYRIGHT_YEAR): Update to 2008.

2008-05-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	* HACKING: Don't say don't mention HACKING in the ChangeLog.  We've
	been doing it for years.
	(Test suite): Mention maintainer-push-check and maintainer-xml-check.
	(Release Procedure): Add FIXME about make alpha being unmaintained.

2008-05-13  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/yacc.c: Reformat m4 a little for readability.
	* src/lalr.c (build_relations): Correct comment.

2008-05-12  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issue.
	* djgpp/config.sed: Fixes required to run configure scripts generated
	by autoconf 2.62.

2008-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	* HACKING (Release Procedure): translation@iro.umontreal.ca is now
	coordinator@translationproject.org.

2008-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* THANKS: Add Eric Blake.

2008-04-23  Eric Blake  <ebb9@byu.net>

	Revert prior patch, by working around autoconf regression.
	* tests/output.at (m4_expand): Add workaround for autoconf 2.62.
	("Output file name: ("): Uncomment test.
	("Output file name: )"): Likewise.
	Based on an idea from Noah Misch.

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

	Work-around an Autoconf 2.62 AT_SETUP bug that was not present in
	2.61.  Reported by Juan Manuel Guerrero at
	<http://lists.gnu.org/archive/html/bug-bison/2008-04/msg00011.html>.
	* tests/output.at ("Output file name: ("): Comment out test case for
	now.
	("Output file name: )"): Likewise.

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

	* GNUmakefile: Update git-version-gen invocation so make dist
	succeeds.

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

	Update to the current gnulib CVS repository, and fix trigraph handling
	in Bison.
	* bootstrap: Update gnulib CVS repository URL.
	(symlink_to_dir): Encapsulate the code that guarantees the destination
	directory exists into...
	(check_dst_dir): ... this new function, and...
	(cp_mark_as_generated): ... reuse it here so that bootstrap doesn't
	fail when copying files into lib/uniwidth/.
	* src/output.c (prepare_symbols): When writing yytname muscles, where
	symbol names will be encoded in C-string literals, tell quotearg to
	escape trigraphs.  This used to be the default in gnulib.
	* tests/regression.at (Token definitions): Because of the change in
	gnulib's quotearg behavior, string_as_id in parse-gram.y no longer
	escapes trigraphs in symbol names.  Thus, yytname no longer has
	trigraphs unnecessarily doubly escaped.  Update test case output.
	Extend test case to be sure Bison's own error messages will no longer
	have trigraphs in symbol names unnecessarily escaped once.

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

	Fix make dist infinite loop reported by Juan Manuel Guerrero at
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00009.html>.
	* .cvsignore: Add .version.
	* .version.in: New.
	* bootstrap.conf (gnulib_modules): Add git-version-gen.
	* configure.ac (AC_CONFIG_FILES): Add .version.
	* build-aux/.cvsignore: Add git-version-gen.

2008-03-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Mention that -g now takes an argument.
	* doc/bison.texinfo (Bison Options): Reword -W entry a little for
	consistency.  Update the -g and -x entries now that they take
	arguments.  Use brackets to indicate optional arguments.
	* src/getargs.c (usage): Explain the relationship between arguments of
	long and short options more completely.  Document --defines and -d
	separately since the former takes an argument but, for POSIX Yacc, the
	latter does not.
	(short_options): Let -W take an optional argument like --warnings.
	(getargs): Sort cases.

2008-02-28  Akim Demaille  <demaille@gostai.com>

	* doc/bison.texinfo: Fix a few typos.

2008-02-28  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Bison Options): Document -W.
	Based on Joel E. Denny's NEWS entry, and Automake's documentation.

2008-02-28  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (short_options): Split and sort for readability.
	-g and -x take optional arguments, just like their long options.
	* build-aux/cross-options.pl: Use /x to make the regexp easier to
	understand.
	Fix the handling of $opt which resulted in all the argument to be
	considered as optional.

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

	* NEWS (2.3a+): Don't say %language is experimental.  Mention Java and
	say its interface is experimental.
	* doc/bison.texinfo (Decl Summary): In the %language entry, mention
	Java.
	(Bison Options): In the -L and --language entry, mention Java.
	(Java Bison Interface): Say the interface is experimental.
	* src/getargs.c (usage): Mention -L and --language.

	* NEWS (2.3a+): Say the push parsing interface is experimental.
	* doc/bison.texinfo (Push Decl): Likewise.
	(Decl Summary): Likewise in the "%define api.push_pull" entry.
	(Push Parser Function): Likewise.
	(Pull Parser Function): Likewise.
	(Parser Create Function): Likewise.
	(Parser Delete Function): Likewise.
	(Table of Symbols): Likewise in the yypstate_delete, yypstate_new,
	yypull_parse, and yypush_parse entries.

	* NEWS (2.3a+): Mention XML support, and say the schema is
	experimental.
	* doc/bison.texinfo (Bison Options): Mention -x and --xml.
	* src/getargs.c (usage): Say the XML schema is experimental.

	* NEWS (2.3a+): Say option instead of flag.

2008-02-21  Wojciech Polak  <polak@gnu.org>

	* data/xslt/xml2xhtml.xsl (xsl:template match="/"): Change footer
	text.

2008-02-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix impure push parser compile error reported by Bob Rossi at
	<http://lists.gnu.org/archive/html/help-bison/2008-02/msg00023.html>.
	* data/yacc.c: Clean up whitespace in the output a little.
	(yypstate_allocated): Define for impure push parsers regardless of
	whether the pull interface is also requested.
	* tests/push.at (Push Parsing: Multiple impure instances): Extend to
	check impure push parsers without the pull interface.

	* data/yacc.c (yypstate_new): Don't try to invoke yyerror since
	yyerror takes arguments specified by %parse-param while yypstate_new
	does not.
	* doc/bison.texinfo (Parser Create Function): Document that
	yypstate_new returns 0 for multiple impure parser instances.
	* tests/push.at (Push Parsing: Multiple impure instances): Update
	expected stderr output.

2008-02-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* runtime-po/POTFILES.in (push.c): Remove.

2008-02-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/Makefile.am (dist_pkgdata_DATA): Remove push.c.
	* data/push.c: Rename to...
	* data/yacc.c: ... this, overwriting it.
	* etc/bench.pl.in (bench_grammar): `%pure-parser'-> `%define api.pure'.
	`%push-pull-parser' -> `%define api.push_pull "both"'.
	Remove old yacc.c tests, and update push.c tests to yacc.c.

2008-02-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/bison.m4 (b4_percent_code_get): Output %code block comments like
	`"%code top" blocks' instead of `%code "top" blocks'.
	* data/push.c: Import yacc.c changes from 2008-01-09 and 2007-08-03.
	Clean up whitespace in the output a little.

2008-02-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix documentation problems reported by Tim Josling at
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00013.html>.
	* NEWS (2.3a+): Mention removal of --no-parser, -n, and %no-parser.
	* doc/bison.texinfo (Token Decl): Token numbers are *nonnegative*
	integers.  Explain the effect of literal string aliases on error
	messages.  Copy token 0 documentation from the C++ skeleton
	documentation.

2008-02-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	Accept a token number in a %left, %right, or %nonassoc for POSIX
	conformance.  Reported by Tim Josling at
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00010.html>.
	* NEWS (2.3a+): Mention.
	* doc/bison.texinfo (Precedence Decl): Describe how literal strings
	and code numbers are treated by precedence declarations.
	* src/parse-gram.y (precedence_declaration): Use symbols.prec instead
	of symbols.1.
	(symbols.prec): New, just like symbols.1 but uses symbol.prec instead
	of symbol.
	(symbol.prec): New, just like symbol but allows INT.
	* src/symtab.c (symbol_user_token_number_set): Remove an aver that no
	longer holds.
	* tests/regression.at (Token number in precedence declaration): New
	test case.

2008-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issues.
	* djgpp/config.bat: Add filenames that are not 8.3 clean and that must
	be changed.  Copyright timestamp adjusted.
	* djgpp/config.sed: Add filenames that are not 8.3 clean and that must
	be changed.  Copyright timestamp adjusted.
	* djgpp/config.site: Copyright timestamp adjusted.
	* djgpp/config_h.sed: Copyright timestamp adjusted.
	* djgpp/djunpack.bat: Copyright timestamp adjusted.
	* djgpp/fnchnage.lst: Add filenames that are not 8.3 clean to the
	filename translation list.
	* djgpp/subpipe.c (init_subpipe): Check the environment variables
	TMPDIR, TMP and TEMP, in that order, to determinate where the temp
	files shall be created.  Before trying to use the temp dir where the
	environment variable points to check that the dir really exists. If
	not default to the cwd as temp dir.  Copyright timestamp adjusted.
	* djgpp/subpipe.h: Copyright timestamp adjusted.
	* djgpp/testsuite.sed: Copyright timestamp adjusted.

2008-01-30  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo: Update Back-Cover text to reflect new GNU wording.

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

	* data/yacc.c (yyparse): Correct the comment when locations aren't used.
	Problem reported by Claudio Saavedra in
	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00003.html>.

2008-01-05  Wojciech Polak  <polak@gnu.org>

	* data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
	document's title with the input grammar file name.

2007-12-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	Automate regression testing of the XML/XSLT implementation.  Discussed
	starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
	* configure.ac (XSLTPROC): New substitution.
	* Makefile.am (maintainer-xml-check): New phony target invoking...
	* tests/Makefile.am (maintainer-xml-check): ... this new phony target
	invoking make maintainer-check with BISON_TEST_XML=1.
	* tests/atlocal.in (XSLTPROC): New.
	* tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
	not to report reachable memory when Bison is expected to have a
	non-zero exit status and (2) to compare XML/XSLT output with --graph
	and --report=all output for every working grammar when
	BISON_TEST_XML=1.
	(AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
	(AT_BISON_CHECK_XML): New.
	(AT_QUELL_VALGRIND): New.
	* tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
	(AT_CHECK): ... don't redefine this since this was the old way to
	quell Valgrind.
	* tests/actions.at: Rewrite all AT_CHECK invocations for bison as
	AT_BISON_CHECK invocations.
	* tests/c++.at: Likewise.
	* tests/calc.at: Likewise.
	* tests/conflicts.at: Likewise.
	* tests/cxx-type.at: Likewise.
	* tests/existing.at: Likewise.
	* tests/glr-regression.at: Likewise.
	* tests/headers.at: Likewise.
	* tests/input.at: Likewise.
	* tests/java.at: Likewise.
	* tests/output.at: Likewise.
	* tests/push.at: Likewise.
	* tests/reduce.at: Likewise.
	* tests/regression.at: Likewise.
	* tests/sets.at: Likewise.
	* tests/skeletons.at: Likewise.
	* tests/synclines.at: Likewise.
	* tests/torture.at: Likewise.
	(Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
	tends to hang xsltproc.
	(Big horizontal): Likewise.

2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	In XML output, remove redundant class attribute on symbol element.
	* data/xslt/bison.xsl (xsl:key name="bison:symbolByName"): New.
	* data/xslt/xml2xhtml.xsl (xsl:template match="symbol"): Use it to
	look up a symbol to determine whether it's a nonterminal or terminal.
	* src/gram.c (rule_rhs_print_xml): Remove class attribute.
	* src/state.c (state_rule_lookahead_tokens_print_xml): Likewise.

	Add prec/assoc information to XML output.
	* src/gram.c (grammar_rules_print_xml): For each rule that has a
	%prec, add a percent_prec attribute.
	* src/print-xml.c (print_grammar): For each terminal that has a
	precedence or associativity, add a prec or assoc attribute.
	(xml_indent): New.
	(xml_puts): Use xml_indent.
	(xml_printf): Use xml_indent.
	* src/print-xml.h (xml_indent): Prototype.

	* tests/existing.at (GNU pic Grammar): Fix a rule miscopied from
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.

2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/xslt/bison.xsl (bison:ruleNumber): Rename to...
	(bison:ruleByNumber): ... this for clarity.
	* data/xslt/xml2dot.xsl (xsl:template match="item"): Update.
	* data/xslt/xml2text.xsl (xsl:template match="item"): Update.
	(xsl:template match="reduction"): Update.
	(xsl:template match="item"): Update.
	(xsl:template match="reduction"): Update.

	In the XML output, don't print the list of rules where symbols appear.
	Compute it in XSLT instead.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00024.html>.
	* data/xslt/bison.xsl (bison:ruleByLhs): New.
	(bison:ruleByRhs): New.
	* data/xslt/xml2text.xsl (xsl:template match="terminal"): Use
	bison:ruleByRhs.
	(xsl:template match="terminal/rule"): Remove.
	(xsl:template match="nonterminal"): Use bison:ruleByLhs and
	bison:ruleByRhs.
	(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
	Remove.
	* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use
	bison:ruleByRhs and mode="number-link" for rule template.
	(xsl:template match="terminal/rule"): Remove.
	(xsl:template match="nonterminal"): Use bison:ruleByLhs and
	bison:ruleByRhs and mode="number-link" for rule template.
	(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
	Rewrite as...
	(xsl:template match="rule" mode="number-link"): ... this.
	* src/print-xml.c (print_grammar): Don't print the list of rules.

2007-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't let --report affect XML output; always print all information.
	Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
	* src/conflicts.c (log_resolution): Implement.
	* src/print-xml.c (print_core): Implement.
	(print_state): Implement.
	(print_xml): Implement.

	* NEWS (2.3a+): Fix quotes.
	* src/parse-gram.y (prologue_declaration): For consistency with -v,
	don't let %verbose clear the list specified by --report.

2007-11-26  Akim Demaille  <akim@epita.fr>

	* data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.

2007-11-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	In the XML output, list useless and unused symbols and rules with the
	useful ones and add a "usefulness" attribute.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00017.html>.
	* src/gram.c (grammar_rules_partial_print_xml): Remove.
	(grammar_rules_print_xml): Print all rules instead of just those
	useful in the grammar, and add a "usefulness" attribute.
	* src/gram.h (grammar_rules_partial_print_xml): Remove prototype.
	* src/print-xml.c (print_rules_useless_in_parser): Remove.
	(print_grammar): Print all nonterminals instead of just useful ones,
	and add a "usefulness" attribute to nonterminals and terminals.
	(print_xml): Don't print a separate "reductions" or
	"rules-useless-in-parser" element.
	* src/reduce.c (reduce_output): Use reduce_token_unused_in_grammar.
	(reduce_xml): Remove.
	(reduce_token_unused_in_grammar): New.
	(reduce_nonterminal_useless_in_grammar): New.
	* src/reduce.h (reduce_xml): Remove prototype.
	(reduce_token_unused_in_grammar): Add prototype.
	(reduce_nonterminal_useless_in_grammar): Add prototype.
	* data/xslt/xml2text.xsl: Update for XML changes.
	* data/xslt/xml2xhtml.xsl: Update for XML changes.
	* tests/reduce.at (Useless Terminals): Update output.
	(Useless Rules): Update output.
	(Reduced Automaton): Update output.

	Say "Terminals unused in grammar" instead of "Unused terminals".
	* NEWS (2.3a+): Update.
	* doc/bison.texinfo (Understanding): Update example output.
	* src/reduce.c (reduce_output): Implement.
	* data/xslt/xml2text.xsl: Implement.
	* data/xslt/xml2xhtml.xsl: Implement.

2007-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>

	Accept --report-file=FILE to override the default `.output' filename.
	* NEWS (2.3a+): Mention.
	* doc/bison.texinfo (Bison Options): Add an entry.
	* src/files.c (compute_output_file_names): Don't override
	spec_verbose_file if already set.
	* src/getargs.c (usage): Document --report-file.
	(REPORT_FILE_OPTION): New anonymous enum member.
	(long_options): Add entry for it.
	(getargs): Add case for it setting spec_verbose_file.

	* build-aux/cross-options.pl: Don't record a short option just because
	there's an arg.
	* doc/.cvsignore: Add yacc.1.

2007-11-14  Akim Demaille  <akim@epita.fr>

	* doc/yacc.1.in: New.
	* configure.ac, doc/Makefile.am: Adjust.
	* configure.ac (PACKAGE_COPYRIGHT_YEAR): New substitution, and new
	config.h symbol.
	Use AC_SUBST for assignments too.
	* src/getargs.c (version): Use PACKAGE_COPYRIGHT_YEAR.

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

	* src/gram.c: Remove comments that duplicate comments in gram.h.

	When reporting useless rules and nonterminals, say "useless in grammar"
	instead of "useless", and say "useless in parser" instead of "never
	reduced".  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00033.html>.
	* NEWS (2.3a+): Mention this change.
	* data/xslt/xml2text.xsl: Update output text and expected input XML
	element names to match changes below.
	* data/xslt/xml2xhtml.xsl: Likewise.
	(xsl:template match="bison-xml-report"): Add missing entry in Table of
	Contents: "Rules useless in parser due to conflicts".
	* doc/bison.texinfo (Decl Summary): Reword a little.
	(Understanding): Update example output for changes below.
	* src/gram.c: (rule_useful_p): Rename to...
	(rule_useful_in_grammar_p): ... this.
	(rule_useless_p): Rename to...
	(rule_useless_in_grammar_p): ... this.
	(rule_never_reduced_p): Rename to...
	(rule_useless_in_parser_p): ... this.
	(grammar_rules_print): Update for renames.
	(grammar_rules_print_xml): Update for renames.
	(grammar_rules_never_reduced_report): Rename to...
	(grammar_rules_useless_report): ... this since it is used for either
	kind of useless rule.
	* src/gram.h: Reword comments and update function names in prototypes.
	* src/main.c (main): Say "rule useless in parser due to conflicts".
	* src/print-xml.c (print_rules_never_reduced): Rename to...
	(print_rules_useless_in_parser): ... this, and rename output XML
	element "rules-never-reduced" to "rules-useless-in-parser".
	(print_xml): Update for rename.
	* src/print.c (print_results): Say "Rules useless in parser due to
	conflicts".
	* src/reduce.c (reduce_grammar_tables): Say "rule useless in grammar".
	(nonterminals_reduce): Say "nonterminal useless in grammar".
	(reduce_output): Say "Nonterminals useless in grammar".
	Say "Rules useless in grammar".
	(reduce_xml): Rename output XML element "useless" to
	"useless-in-grammar".
	(reduce_print): Don't report the count of grammatically useless rules
	as "rules never reduced" just because %yacc is specified.
	In the correct report of this count, say nonterminal(s) and rule(s)
	"useless in grammar".
	* tests/conflicts.at (S/R in initial): Update expected output.
	(Defaulted Conflicted Reduction): Likewise.
	(Unreachable States After Conflict Resolution): Likewise.
	* tests/existing.at (GNU pic Grammar): Likewise.
	* tests/reduce.at (Useless Nonterminals): Likewise.
	(Useless Rules): Likewise.
	(Reduced Automaton): Likewise.
	(Underivable Rules): Likewise.
	(Empty Language): Likewise.

2007-11-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
	here document and before the EOF so that BSD's implementation of Bourne
	shell doesn't parse the delimiter as part of the here document.
	* doc/.cvsignore: Add cross-options.texi.
	* src/getargs.c (usage): Add a blank line after the warning categories.

2007-11-08  Paolo Bonzini  <bonzini@gnu.org>

	* data/lalr1.java (Lexer): Remove usage of b4_pure_if.

2007-11-05  Akim Demaille  <akim@epita.fr>

	Remove Id: from bison.1.
	* doc/Makefile.am (remove_time_stamp): Include the sed invocation.
	(perl -0777 -pi -e 's/\.PP\nId): New.
	(.x.1): Use it to ignore the version control revision.

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

	* build-aux/Makefile.am: Ship cross-options.pl.
	* doc/Makefile.am: Always refer to cross-options.texi with
	$(srcdir).
	(MAINTAINERCLEANFILES): Add it.

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

	Generate the long/short option cross-table.
	* build-aux/cross-options.pl: New.
	* doc/Makefile.am (cross-options.texi): New.
	* doc/bison.texinfo: Use it.

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

	Generate bison.1 using help2man.
	* doc/common.x, doc/bison.x: New.
	* doc/Makefile.am (bison.1, .x.1): New.
	The code is taken from autoconf-2.61/man/Makefile.am.
	* configure.ac: Look for help2man.

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

	Complete --help.
	* src/getargs.c (usage): Document -W, make it clear that -d,
	-g and -x have optional arguments.

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

	Find sha1sum when named gsha1sum.
	* bootstrap (find_tool): New.
	($SHA1SUM): New.

2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	Deprecate %pure-parser and add `%define api.pure'.  Discussed starting
	at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
	* NEWS (2.3a+): Mention.
	* data/bison.m4 (b4_pure_if): Don't define it here.
	* data/c.m4 (b4_identification): Depend on individual skeletons to
	define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the
	values of the %define variables api.pure or api.push_pull.  Define
	YYPURE, YYPUSH, and YYPULL accordingly.
	* data/glr.c: Define b4_pure_if based on `%define api.pure' unless
	glr.cc has already defined b4_pure_flag.
	* data/push.c: Define b4_pure_if based on `%define api.pure'.
	Remove YYPUSH and YYPULL since they're back in b4_identification again.
	* data/yacc.c: Define b4_pure_if based on `%define api.pure'.
	* doc/bison.texinfo (Pure Decl): Update.
	(Push Decl): Update.
	(Decl Summary): Add api.pure to %define entry.
	In %pure-parser entry, say it's deprecated and reference %define.
	(Pure Calling): Update.
	(Error Reporting): Update.
	(C++ Scanner Interface): Update.
	(How Can I Reset the Parser): Update.
	(Table of Symbols): In %pure-parser entry, say it's deprecated and
	reference %define.
	* src/getargs.c (pure_parser): Remove global variable.
	* src/getargs.h (pure_parser): Remove extern.
	* src/output.c (prepare): Don't define pure_flag muscle.
	* src/parse-gram.y (prologue_declaration): Implement %pure-parser as a
	wrapper around `%define api.pure'.
	* tests/calc.at (Simple LALR Calculator): Update.
	(Simple GLR Calculator): Update.
	* tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations):
	Update.
	(GLR: Resolve ambiguity, pure, locations): Update.
	(GLR: Merge conflicting parses, pure, no locations): Update.
	(GLR: Merge conflicting parses, pure, locations): Update.
	* tests/glr-regression.at (Uninitialized location when reporting
	ambiguity): Update
	* tests/input.at (Unused %define api.pure): New test case.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for
	AT_PURE_IF and AT_PURE_AND_LOC_IF.
	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.

2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	%define push_pull -> %define api.push_pull.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
	* data/push.c: Expect the new name.
	* data/yacc.c: Likewise.
	* doc/bison.texinfo (Push Decl): Update.
	(Decl Summary): Update %define entry.
	(Push Parser Function): Update.
	(Pull Parser Function): Update.
	(Parser Create Function): Update.
	(Parser Delete Function): Update.
	* tests/calc.at (Simple LALR Calculator): Update.
	* tests/input.at (%define enum variables): Update.
	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
	(Push Parsing: Multiple impure instances): Update.
	(Push Parsing: Unsupported Skeletons): Update.
	* tests/torture.at (Exploding the Stack Size with Alloca): Update.
	(Exploding the Stack Size with Malloc): Update.

	* NEWS (2.3a+): Add an entry for the push parser, and clean up the
	other entries some.

2007-10-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	For the XML output's terminal element, rename @number to @token-number,
	and add @symbol-number.  In the nonterminal element, rename @number to
	@symbol-number.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00040.html>.
	* data/xslt/xml2text.xsl (xsl:template match="terminal"): Update for
	renames.
	(xsl:template match="nonterminal"): Likewise.
	* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Likewise.
	(xsl:template match="nonterminal"): Likewise.
	* src/print-xml.c (print_grammar): Implement.

2007-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
	2007-10-11 change, the child elements here are items not rules.
	(xsl:template match="item"): New.
	(xsl:template match="rule"): Update for new reduced itemset.
	(xsl:template match="point"): Remove.
	(xsl:template match="empty"): For consistency with --graph, don't
	output "/* empty */".
	* data/xslt/xml2text.xsl (xsl:template match="terminal"): When invoking
	line-wrap, don't pass a negative value as first-line-length since this
	won't work with the following changes.
	(xsl:template name="line-wrap"): Simplify slightly.
	(xsl:template name="ws-search"): Eliminate recursion.
	* src/print_graph.c (print_core): Don't print a reduction's lookahead
	set next to an item whose dot is not at the end of the RHS even if it
	happens to be associated with the same rule.

2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add %define lr.keep_unreachable_states.
	* NEWS (2.3a+): Mention it in the entry for unreachable state removal.
	* doc/bison.texinfo (Decl Summary): Mention it in the %define entry.
	* src/main.c (main): Implement it.
	* tests/conflicts.at (Unreachable States After Conflict Resolution):
	Extend to test it, and fix a typo.

2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Add entry for recent .output file lookahead set fix.
	* doc/bison.texinfo (Understanding): Remove a bogus lookahead set in
	the example .output text.
	* tests/regression.at (Extra lookahead sets in report): Improve wording
	of comments.

2007-10-17  Wojciech Polak  <polak@gnu.org>

	* src/print-xml.c (print_grammar): Renamed
	<terminal> and <nonterminal> attributes:
	"type" to "number" and "symbol" to "name".
	* data/xslt/xml2text.xsl (xsl:template match="terminal"):
	Use new attribute names.
	(xsl:template match="nonterminal"): Likewise.
	* data/xslt/xml2xhtml.xsl: Likewise.

2007-10-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Bison Options): Add entry for --print-datadir.
	(Option Cross Key): Likewise.

	* src/print-xml.c (print_core): Don't print a reduction's lookahead set
	next to an item whose dot is not at the end of the RHS even if it
	happens to be associated with the same rule.
	* src/print.c (print_core): Likewise.
	* tests/conflicts.at (Unresolved SR Conflicts): Update output.
	(Resolved SR Conflicts): Update output.
	* tests/regression.at (Extra lookahead sets in report): New test case.

2007-10-11  Wojciech Polak  <polak@gnu.org>

	* src/print-xml.c (print_core): Remove item set
	redundancy.
	* data/xslt/bison.xsl (bison:ruleNumber): New key.
	Improve processing time. Suggested by Joel E. Denny.
	* data/xslt/xml2dot.xsl (xsl:template name="escape"):
	Write xsl:param "required" attribute as comment.
	* data/xslt/xml2text.xsl (xsl:template match="item"): New.
	(xsl:template match="rule"): Support new reduced itemset.
	(xsl:template match="point"): Remove.
	* data/xslt/xml2xhtml.xsl: Likewise.

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

	* src/getargs.c (version): Update copyright year.

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

	Make xml2dot.xsl and --graph produce the same output.
	* data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a `&#10;'
	instead of a `\n'.  That is, don't add escapes yet or they'll be doubly
	escaped later.
	(xsl:template name="output-node"): Use the new escape template instead
	of the string-replace template directly.
	(xsl:template name="output-edge"): Likewise.
	(xsl:template name="escape"): New, escapes backslashes and newlines in
	addition to quotation marks.
	* src/graphviz.c (start_graph, output_node, output_edge): Add
	whitespace to output for legibility.

	Make xml2text.xsl and --report produce the same output, and remove the
	XML "conflicts" element since a conflict summary is easily extracted
	from the automaton.
	* data/xslt/bison.xsl: New.
	(xsl:template match="state" mode="bison:count-conflicts): New.
	* data/xslt/xml2text.xsl: Import bison.xsl.
	(xsl:template match="bison-xml-report"): Instead of styling the
	"conflicts" element, style the "automaton" element with mode
	"conflicts".  Unlike the former, the latter lists S/R and R/R
	conflicts for a state on the same line.
	(xsl:template match="conflicts"): Remove.
	(xsl:template match="conflict"): Remove.
	(xsl:template match="terminal"): Line-wrap the list of rules in which
	the terminal is used.
	(xsl:template match="nonterminal"): Likewise for nonterminals.
	(xsl:template match="automaton" mode="conflicts"): New.
	(xsl:template match="state" mode="conflicts"): New.
	(xsl:template name="line-wrap"): New.
	(xsl:template name="ws-search"): New.
	* data/xslt/xml2xhtml.xsl: Import bison.xsl.
	(xsl:template match="bison-xml-report"): Instead of styling the
	"conflicts" element, style the "automaton" element with mode
	"conflicts."
	(xsl:template match="conflicts"): Remove.
	(xsl:template match="conflict"): Remove.
	(xsl:template match="automaton" mode="conflicts"): New.
	(xsl:template match="state" mode="conflicts): New.
	* src/conflicts.c (conflicts_output_xml): Remove.
	* src/conflicts.h (conflicts_output_xml): Remove prototype.
	* src/print-xml.c (print_xml): Don't invoke conflicts_output_xml.
	* src/print.c (print_grammar): Consistently wrap at the 66th column so
	the corresponding XSLT is easier.  Also, never wrap between a word and
	the comma that follows it.

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

	Improve C++ namespace support.  Discussed starting at
	<http://lists.gnu.org/archive/html/help-bison/2007-09/msg00016.html>.
	* data/c++.m4: (b4_namespace_ref, b4_namespace_open,
	b4_namespace_close): New macros that interpret the %define variable
	"namespace" so its value can contain "::" to indicate nested
	namespaces.
	* data/glr.cc (b4_namespace): Don't define, and replace all uses with
	the above macros.
	* data/lalr1.cc (b4_namespace): Likewise.
	* data/location.cc (b4_namespace): Likewise.
	* doc/bison.texinfo (Decl Summary): Move `%define push_pull' entry
	inside a new table in the general %define entry.  Document `%define
	namespace' there as well.  Point the %name-prefix entry to it since it
	explains it more completely in the case of C++.
	(C++ Bison Interface): Mention `%define namespace' instead of
	%name-prefix.
	(Table of Symbols): Remove the `%define push_pull' entry.  The %define
	entry suffices.
	* tests/c++.at (Relative namespace references): New test case.
	(Absolute namespace references): New test case.
	(Syntactically invalid namespace references): New test case.
	* tests/input.at (C++ namespace reference errors): New test case.

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

	Add syncline support and location accessor to internal %define
	interfaces.
	* data/bison.m4 (b4_percent_define_get_loc): New.
	(b4_percent_define_get_syncline): New.
	(b4_percent_define_flag_if): Use b4_percent_define_get_loc.
	(b4_percent_define_default): Record defining location as line 1 rather
	than 0 for the sake of synchronizing #line's, and define
	b4_percent_define_syncline(VARIABLE).
	(b4_percent_define_check_values): Use b4_percent_define_get_loc.
	* src/muscle_tab.c (muscle_syncline_grow): New.
	(muscle_code_grow): Use muscle_syncline_grow.
	(muscle_percent_define_insert): Use muscle_percent_define_get_loc, and
	define b4_percent_define_syncline(VARIABLE).
	(muscle_percent_define_get_loc): New.
	(muscle_percent_define_get_syncline): New.
	(muscle_percent_define_flag_if): Use muscle_percent_define_get_loc, and
	remove some unused variables.
	(muscle_percent_define_default): Record defining location as line 1
	rather than 0 for the sake of synchronizing #line's, and define
	b4_percent_define_syncline(VARIABLE).
	(muscle_percent_define_check_values): Use
	muscle_percent_define_get_loc.
	* src/muscle_tab.h (muscle_percent_define_get_loc): Prototype.
	(muscle_percent_define_get_syncline): Prototype.
	* tests/skeletons.at (%define Boolean variables: invalid skeleton
	defaults): Update output for location change.
	(Complaining during macro argument expansion): Extend to test
	b4_percent_define_get_loc and b4_percent_define_get_syncline errors.

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

	Fix some error-reporting macro bugs.
	* data/bison.m4 (b4_cat): New.
	(b4_error, b4_error_at): Use b4_cat to send error directives directly
	to stdout so they don't become arguments to other macros.  Update
	comments and add examples.
	(b4_warn, b4_warn_at, b4_complain, b4_complain_at): Update comments and
	add examples.
	(b4_fatal, b4_fatal_at): Likewise, and invoke m4_exit(1) immediately
	after printing the error directive so that M4 doesn't report subsequent
	problems that are induced by this problem.
	* src/scan-skel.l: Recognize @` digraph outside of directive arguments
	instead of just in them.  Recognize @\n in both places.  Both expand to
	the empty string.  Needed by b4_cat.
	* tests/skeletons.at (Complaining during macro argument expansion):
	New test case.
	(Fatal errors make M4 exit immediately): New test case.

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

	Implement --print-datadir.
	* src/getargs.c (usage): Mention.
	(PRINT_DATADIR_OPTION): New anonymous enum member.
	(long_options): Add entry for it.
	(getargs): Add case for it calling compute_pkgdatadir.
	* src/output.c (output_skeleton): Encapsulate data directory
	computation from here...
	(prepare): ... and from here...
	(compute_pkgdatadir): ... into this new function.
	* src/output.h (compute_pkgdatadir): Prototype.

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

	* src/print-xml.c (escape_bufs): New static global variable
	replacing...
	(xml_escape_n): ... the static local variable buf here.
	(print_xml): Free memory for escape_bufs.
	* src/reduce.c (reduce_xml): XML-escape terminal symbol tags.

2007-09-25  Joel E. Denny  <jdenny@ces.clemson.edu>

	Replace `%push-parser' and `%push-pull-parser' with
	`%define push_pull "push"' and `%define push_pull "both"'.
	`%define push_pull "pull"' is the default.
	* doc/bison.texinfo (Push Decl, Push Parser Function,
	Pull Parser Function, Parser Create Function, Parser Delete Function):
	Update declarations.
	(Decl Summary, Table of Symbols): Replace %push-parser and
	%push-pull-parser entries with a %define push_pull entry.
	* data/bison.m4 (b4_percent_define_check_values): New macro.
	(b4_pull_if, b4_push_if, b4_use_push_for_pull_if): Move these
	definitions...
	* data/c.m4 (b4_identification): ... and the YYPUSH and YYPULL cpp
	definitions...
	* data/push.c: ... to here and compute them from the value of the
	%define variable push_pull.
	* data/c-skel.m4: Instead of choosing the push.c skeleton for push
	parsing requests here...
	* data/yacc.c: ... hack this to switch to push.c any time
	b4_use_push_pull_flag or the %define variable push_pull is set.  This
	will go away when we mv push.c yacc.c.
	* data/c++-skel.m4, data/glr.c, data/java-skel.m4: Don't report that
	push parsing is not supported since unused %define variables are
	reported anyway.
	* src/getargs.c, src/getargs.h (pull_parser, push_parser): Remove.
	* src/muscle_tab.h (muscle_percent_define_check_values): Update
	comments for consistency with b4_percent_define_check_values.
	* src/output.c (prepare): Don't insert b4_pull_flag and b4_push_flag
	muscles.
	* src/parse-gram.y (PERCENT_PUSH_PARSER, PERCENT_PUSH_PULL_PARSER):
	Remove.
	(prologue_declaration): Remove %push-parser and %push-pull-parser
	rules.
	* src/scan-gram.l (%push-parser, %push-pull-parser): Remove rules.
	* tests/calc.at: Update declarations.
	* tests/input.at (%define enum variables): New test case.
	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update
	declaration.
	(Push Parsing: Multiple impure instances): Update declaration.
	(Push Parsing: Unsupported Skeletons): New test case.
	* tests/torture.at (Exploding the Stack Size with Alloca): Update
	declaration.
	(Exploding the Stack Size with Malloc): Update declaration.

2007-09-24  Wojciech Polak  <polak@gnu.org>

	Add XSLT transformations.

	* data/xslt/xml2dot.xsl: Transform XML into DOT.
	* data/xslt/xml2text.xsl: Transform XML into plain text.
	* data/xslt/xml2xhtml.xsl: Transform XML into XHTML.
	* data/Makefile.am (xsltdir): New variable.
	(dist_xslt_DATA): Add xslt/*.xsl files.

2007-09-23  Paul Eggert  <eggert@cs.ucla.edu>

	* src/conflicts.c (log_resolution): Fix indenting bugs I introduced.
	Problem reported by Wojciech Polak.
	* src/print-xml.c (xml_puts): Work even if LEVEL exceeds INT_MAX/2.
	(xml_printf): Undo change I made on 21 September; that is,
	indent 2 spaces, not 1.

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

	Pacify ./configure --enable-gcc-warnings.
	* src/print-xml.c, src/print-xml.h (xml_puts): Make third argument
	`char const *' instead of `char *'.
	* src/state.c (state_rule_lookahead_tokens_print_xml): Remove unused
	local variable `sep'.

2007-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* src/gram.c (rule_rhs_print_xml): Now static, since it isn't used
	elsewhere.
	* src/print-xml.c: Prefer "const" after types; that's more consistent.
	(xml_printf): Indent just 1 space for level.
	(e_char, xlate_char): Remove.
	(xml_escape_string): Rewrite to avoid undefined behavior (used
	storage that was freed from the stack).
	(xml_escape_n): Don't bother checking for subscript error.

2007-09-21  Wojciech Polak  <polak@gnu.org>

	Add Bison XML Automaton Report.

	Add support for an -x option to generate an XML report.
	It is not documented yet.
	* src/print-xml.c: New file.
	* src/print-xml.h: Likewise.
	* lib/timevar.def (TV_XML): New var.
	* src/Makefile.am (bison_SOURCES): Add print-xml.c, print-xml.h.
	* src/conflicts.c: Include print-xml.h.
	(solved_conflicts_xml_obstack): New var.
	(log_resolution, conflicts_solve, conflicts_free):
	Add support for XML report.
	(conflicts_output_val): New function.
	* src/conflicts.h (conflicts_output_val): New decl.
	* src/files.c (spec_xml_file): New var.
	(compute_output_file_names, output_file_names_free): Add XML support.
	* src/files.h (spec_xml_file): New decl.
	* src/getargs.c (xml_flag): New var.
	(usage, short_options, long_options, getargs): Add XML support.
	* src/getargs.h (xml_flag): New decl.
	* src/gram.c: Include print-xml.h.
	(rule_lhs_print_xml, rule_rhs_print_xml):
	(grammar_rules_partial_print_xml, grammar_rules_print_xml):
	New functions.
	* src/gram.h: Declare external ones.
	* src/main.c: Include print-xml.h.
	(main): Add XML support.
	* src/reduce.c: Include print-xml.h.
	(reduce_xml): New function.
	* src/reduce.h: Declare it.
	* src/state.c: Include print-xml.h.
	(state_new): Add XML support.
	(state_rule_lookahead_tokens_print_xml): New function.
	* src/state.h: Declare it.
	(struct state): New member solved_conflicts_xml.
	* src/symtab.c (symbol_class_get_string): New function.
	* src/symtab.h: Declare it.

2007-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* GNUmakefile: Switch to coreutils's version.
	* bootstrap: Likewise.
	* Makefile.cfg: Adjust to new GNUmakefile.
	* README-hacking: Likewise.

	Import from gnulib:

	2006-08-18  Paul Eggert  <eggert@cs.ucla.edu>
		    Bruno Haible  <bruno@clisp.org>

	* m4/bison-i18n.m4 (BISON_I18N): Also handle the case where yacc exists
	and is a script that invokes bison. Tighten the code. Add comments.

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

	Spell "boolean" as "Boolean".  Reported by Akim Demaille.
	* data/bison.m4 (b4_percent_define_flag_if): Fix complaint.
	* doc/bison.texinfo (Decl Summary): Fix.
	* src/muscle_tab.c (muscle_percent_define_flag_if): Fix complaint.
	* tests/input.at (Boolean %define variables): Update output.
	* tests/skeletons.at (%define boolean variables: invalid skeleton
	defaults): Rename to...
	(%define Boolean variables: invalid skeleton defaults): ... this and
	update output.

2007-08-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	In impure push mode, don't allow more than one yypstate to be allocated
	since multiple impure parsers would corrupt yynerrs.
	* data/push.c (yypstate_allocated): New static global variable
	initialized to 0.
	(yypull_parse): If yypstate_new returns 0, don't report it as memory
	exhaustion if yypstate_allocated is 1, but still return 2.
	(yypstate_new): Invoke yyerror and return 0 if yypstate_allocated is
	already 1.  Otherwise, set it to 1.
	(yypstate_delete): Set it to 0.
	* tests/push.at (Push Parsing: Multiple impure instances): New test
	case.

2007-08-17  Bob Rossi  <bob@brasko.net>

	* doc/bison.texinfo (Push Decl): Document the push parser.
	(Table of Symbols): Ditto.
	(Pure Decl): Ditto.
	(Decl Summary): Ditto.
	(Multiple Parsers, Push Parser Function, Pull Parser Function,
	Parser Create Function, Parser Delete Function):
	Add new push parser symbols.
	(Table of Symbols): Document push-parser, push-pull-parser,
	yypush_parse, yypull_parse, yypstate_new and yypstate_delete.

2007-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Update to GPLv3.
	* doc/gpl-3.0.texi: New file.
	* doc/gpl.texi: Remove.
	* COPYING, GNUmakefile, HACKING, Makefile.am, Makefile.cfg:
	* Makefile.maint, NEWS, PACKAGING, README, README-alpha:
	* README-hacking, TODO, bootstrap, bootstrap.conf:
	* configure.ac, data/Makefile.am, data/README, data/bison.m4:
	* data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4:
	* data/glr.c, data/glr.cc, data/java-skel.m4, data/java.m4:
	* data/lalr1.cc, data/lalr1.java, data/location.cc:
	* data/push.c, data/yacc.c, data/m4sugar/m4sugar.m4:
	* djgpp/Makefile.maint, djgpp/README.in, djgpp/config.bat:
	* djgpp/config.sed, djgpp/config.site, djgpp/config_h.sed:
	* djgpp/djunpack.bat, djgpp/subpipe.c, djgpp/subpipe.h:
	* djgpp/testsuite.sed, doc/Makefile.am, doc/bison.texinfo:
	* doc/fdl.texi, doc/refcard.tex, etc/Makefile.am, etc/README:
	* etc/bench.pl.in, examples/Makefile.am, examples/extexi:
	* examples/calc++/Makefile.am, lib/Makefile.am, lib/abitset.c:
	* lib/abitset.h, lib/bbitset.h, lib/bitset.c, lib/bitset.h:
	* lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c:
	* lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h:
	* lib/ebitset.c, lib/ebitset.h, lib/get-errno.c:
	* lib/get-errno.h, lib/lbitset.c, lib/lbitset.h:
	* lib/libiberty.h, lib/main.c, lib/subpipe.c, lib/subpipe.h:
	* lib/timevar.c, lib/timevar.def, lib/timevar.h:
	* lib/vbitset.c, lib/vbitset.h, lib/yyerror.c:
	* m4/c-working.m4, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4:
	* m4/timevar.m4, src/LR0.c, src/LR0.h, src/Makefile.am:
	* src/assoc.c, src/assoc.h, src/closure.c, src/closure.h:
	* src/complain.c, src/complain.h, src/conflicts.c:
	* src/conflicts.h, src/derives.c, src/derives.h, src/files.c:
	* src/files.h, src/flex-scanner.h, src/getargs.c:
	* src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c:
	* src/lalr.c, src/lalr.h, src/location.c, src/location.h:
	* src/main.c, src/muscle_tab.c, src/muscle_tab.h:
	* src/nullable.c, src/nullable.h, src/output.c, src/output.h:
	* src/parse-gram.c, src/parse-gram.h, src/parse-gram.y:
	* src/print.c, src/print.h, src/print_graph.c:
	* src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c:
	* src/reduce.h, src/relation.c, src/relation.h:
	* src/revision.h, src/scan-code.h, src/scan-code.l:
	* src/scan-gram.h, src/scan-gram.l, src/scan-skel.h:
	* src/scan-skel.l, src/state.c, src/state.h, src/symlist.c:
	* src/symlist.h, src/symtab.c, src/symtab.h, src/system.h:
	* src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h:
	* tests/Makefile.am, tests/actions.at, tests/c++.at:
	* tests/calc.at, tests/conflicts.at, tests/cxx-type.at:
	* tests/existing.at, tests/glr-regression.at:
	* tests/headers.at, tests/input.at, tests/java.at:
	* tests/local.at, tests/output.at, tests/push.at:
	* tests/reduce.at, tests/regression.at, tests/sets.at:
	* tests/skeletons.at, tests/synclines.at, tests/testsuite.at:
	* tests/torture.at:
	Update to GPLv3.

2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	Get rid of broken %no-parser, -n, and --no-parser implementation and
	documentation.
	* TODO: Don't mention them.
	* doc/bison.1: Likewise.
	* doc/bison.texinfo (Decl Summary): Likewise.
	(Bison Options): Likewise.
	(Option Cross Key): Likewise.
	* src/getargs.c (no_parser_flag): Remove global variable.
	(usage): Don't print description of -n and --no-parser.
	(long_options): Remove --no-parser entry here.
	(getargs): Remove -n case in the switch here.
	* src/getargs.h (no_parser_flag): Remove extern.
	* tests/regression.at (Web2c Actions): Remove comment that mentions
	--no-parser.

2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not
	name user variables starting with `yy'.  Just pass NULL instead of a
	dummy local &yylval to yypush_parse.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Do not name user variables
	starting with `yy'.

2007-08-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is
	true since it's then always used regardless of whether yyoverflow is
	defined.  Reported by Christian Burger at
	<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00031.html>.
	* THANKS: Add Christian Burger.

	* ChangeLog: For changes in doc/bison.texinfo, consistently reference
	node names: say "Decl Summary" not "Bison Declaration Summary".

2007-07-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/muscle_tab.c (muscle_percent_define_flag_if): In order to
	determine whether this function has already complained about an invalid
	value for a %define boolean variable, don't check whether Bison has
	ever examined the value.  As written, the check was a tautology.
	Instead, record and check for this complaint using a separate muscle.

2007-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix push parsing memory leak reported by Brandon Lucia at
	<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00032.html>.
	* THANKS: Add Brandon Lucia.
	* data/push.c (yypstate_delete): Free the stack if it was reallocated
	but the parse never completed and thus freed it.
	* tests/Makefile.am (TESTSUITE_AT): Add push.at.
	* tests/testsuite.at: Include push.at.
	* test/push.at: New.
	(Push Parsing: Memory Leak for Early Deletion): New test case.

2007-07-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Improve handling of multiple S/R conflicts in the same state and of S/R
	conflicts involving multiple reductions.
	* src/conflicts.c (resolve_sr_conflict): Don't assign the error action
	set for a state here or Bison will abort if it is reassigned on a
	later conflicted reduction in the same state.
	Similarly, don't finalize and assign the solved conflicts report here
	or it will be lost if it is reassigned on a later conflicted reduction
	in the same state.
	(set_conflicts): Instead, assign them both here after all S/R conflicts
	in the state have been fully examined.
	* src/print.c (shift_set): Rename to...
	(no_reduce_set): ... this.
	(print_reductions): Update for rename, and add %nonassoc error action
	tokens to no_reduce_set so that, when printing the first remaining
	reduction on an error action token, the reduction is enclosed in
	brackets.
	(print_results): Update for rename.
	* tests/conflicts.at (Solved conflicts report for multiple reductions
	in a state): New test case.
	(%nonassoc error actions for multiple reductions in a state): New test
	case.

	* src/main.c (main): Don't depend on C99 features.

2007-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>

	* build-aux/.cvsignore: Add compile.
	* lib/.cvsignore: Add charset.alias, ref-add.sed, ref-del.sed, and
	uniwidth.

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

	* bootstrap (slurp): Create target directories that don't exist.
	Specifically, we need lib/uniwidth/ because of recent Gnulib changes.

2007-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* LR0.c (new_itemsets): Fix wording in comments: say item index rather
	than item number.
	* closure.c (closure): Likewise.
	* state.h (reductions): Comment sorting of rules.
	(state): Comment sorting of items.

2007-07-02  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix C++ test cases after recent Gnulib changes.  Discussed starting at
	<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00000.html>.
	* examples/calc++/Makefile.am (DEFAULT_INCLUDES): Override Automake's
	definition in order to avoid Gnulib headers since we don't use config.h
	here.
	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use AT_DATA_GRAMMAR
	rather than AT_DATA so that config.h is included.

2007-07-01  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF
	instead of fprintf.  Guard these functions with #if YYDEBUG instead of
	#ifdef YYDEBUG for consistency with all other uses of YYDEBUG in Bison
	and so that YYFPRINTF is guaranteed to be defined here.

2007-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/muscle_tab.c (muscle_percent_define_invalid_value): Replace
	with...
	(muscle_percent_define_check_values): ... this more helpful function.
	Again, it's not used yet, but it will be.
	* src/muscle_tab.h: Likewise.

	Improve some comments in parser table construction.
	* src/LR0.c (new_itemsets): Explain sorting of itemset and kernel_base.
	(generate_states): Don't mention ruleset, which is internal to closure.
	* src/closure.c (closure): Explain sorting of core and itemset, which
	is required for this function to behave correctly.
	* src/closure.h (closure): Mention sorting.

2007-05-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/lalr.c (state_lookahead_tokens_count): For code readability,
	move the check for disabled transitions to an aver since conflict
	resolution hasn't happened yet.

	* src/lalr.c (state_lookahead_tokens_count): Remove the check that
	labels a state as inconsistent just because it has error transitions.
	The original form of this check appeared in revision 1.1 of lalr.c,
	which was committed on 1991-12-21.  Now (at least), changing the
	consistency label on such a state appears to have no useful effect in
	any of the places it is examined, which I enumerate below.  The key
	point to understanding each item in this enumeration is that a state
	with an error transition is labelled consistent in the first place only
	if it has no rules, so the check cannot matter for states that have
	rules.  (1) Labelling a state as inconsistent will cause set_conflicts
	to try to identify its conflicts, and a state must have *rules* to have
	conflicts.  (2) Labelling a state as inconsistent will affect how
	action_row sets the default *rule* for the state.  (3) Labelling a
	state as inconsistent will cause build_relations to add lookback edges
	to *rules* in that state.
	* src/state.h (struct state): Word the comment for member consistent
	more carefully.

2007-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't depend on C99 features.
	* src/conflicts.c (conflicts_update_state_numbers): Fix for-loop.
	* src/lalr.c (lalr_update_state_numbers): Fix for-loop.
	* src/reader.c (check_and_convert_grammar): Fix for-loop.
	* src/state.c (state_mark_reachable_states): Fix for-loop.
	(state_remove_unreachable_states): Fix for-loop.

	Don't widen struct state with member reachable just to temporarily
	record reachability.  Instead, use a local bitset.
	* src/state.h (struct state): Remove member.
	* src/state.c (state_new): Don't initialize it.
	(state_mark_reachable_states): Rename to...
	(state_record_reachable_states): ... this, and use bitset.
	(state_remove_unreachable_states): Use bitset.

2007-05-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/Makefile.am (yacc): Quote target action commands properly so
	that the yacc script isn't corrupt.  Reported by Hans Aberg at
	<http://lists.gnu.org/archive/html/bug-bison/2007-05/msg00003.html>.

	* data/glr.c (yylval): As in yacc.c, don't extern in the header for
	the case of pure parsers.  Reported by Frans Englich at
	<http://lists.gnu.org/archive/html/help-bison/2007-05/msg00018.html>.
	* THANKS: Add Frans Englich.

	* NEWS (2.3a+): In the %code entry, reference section `Bison
	Declaration Summary' from the manual now since the %code summary has
	moved there.
	* doc/bison.texinfo (Prologue Alternatives): Mention that directives
	in the rules section must be terminated by semicolons.

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

	Extend the front-end API for %define variables to more completely
	mirror the back-end.  This will be useful in the future.
	* data/bison.m4 (b4_percent_define_get, b4_percent_define_ifdef):
	Update comments to mention the new front-end counterparts of these
	macros.
	* src/muscle_tab.c (MUSCLE_COMMON_DECODE): New macro with common code
	for muscle_string_decode and muscle_location_decode.
	(muscle_string_decode): New static function.
	(muscle_location_decode): Use MUSCLE_COMMON_DECODE.
	(muscle_percent_define_get, muscle_percent_define_ifdef): New
	functions.
	(muscle_percent_define_flag_if): Use muscle_percent_define_ifdef and
	muscle_percent_define_get to mimic the b4_percent_define_flag_if
	implementation more closely.
	(muscle_percent_define_invalid_value): New function.
	* src/muscle_tab.h (muscle_percent_define_get,
	muscle_percent_define_ifdef, muscle_percent_define_invalid_value):
	Prototype.

2007-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS (2.3a+): Mention yesterday's state-removal change.
	(2.3a): Remove the %language entry, which was added after 2.3a.
	* src/LR0.c, src/closure.c, src/closure.h, src/conflicts.c,
	src/conflicts.h, src/lalr.c, src/lalr.h, src/print.c,
	src/print_graph.c, src/state.c, src/state.h, tests/conflicts.at,
	tests/existing.at: Update copyright date.

2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	If conflict resolution makes states unreachable, remove those states,
	report rules that are then unused, and don't report conflicts in those
	states.
	* src/conflicts.c, src/conflicts.h (conflicts_update_state_numbers):
	New global function.
	* src/lalr.c, src/lalr.h (lalr_update_state_numbers): New global
	function.
	* src/main.c (main): After conflict resolution, remove the unreachable
	states and update all data structures that reference states by number.
	* src/state.c (state_new): Initialize each state's reachable member to
	false.
	(state_mark_reachable_states): New static function.
	(state_remove_unreachable_states): New global function.
	* src/state.h (struct state): Add member bool reachable.
	(state_remove_unreachable_states): Prototype.
	* tests/conflicts.at (Unreachable States After Conflict Resolution):
	New test case.
	* tests/existing.at (GNU pic Grammar): Update test case output now that
	an unused rule is discovered.

2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	Minor code cleanup in parser table construction.
	* src/LR0.c (new_itemsets): Use item_number_is_symbol_number.
	(new_itemsets, save_reductions): Update for rename to nitemset.
	* src/closure.c (nritemset): Rename to...
	(nitemset): ... this since the "r" appears to meaningless and isn't
	used in the comments.
	(closure): Update for rename.
	* src/closure.h (nritemset): Update extern to...
	(nitemset): ... this.
	* src/lalr.c (LA): Fix a typo in comments.
	* src/print.c (print_core): Update for rename to nitemset.
	* src/print_graph.c (print_graph): Likewise.
	* src/state.h: Fix some typos in header comments.

2007-04-04  Paul Eggert  <eggert@cs.ucla.edu>

	* THANKS: Use ASCII for Sebastien Fricker's name.  Bison source
	still sticks to ASCII.  Sorry!

	* README-hacking: New file, taken mostly from coreutils, with changes
	for Bison.  Contains much of the contents of:
	* README-cvs: Remove.
	* bootstrap: Sync from gnulib.
	* build-aux/.cvsignore: Remove *.t, mkinstalldirs.
	* lib/.cvsignore: Add wchar.h, wctype.h.  Remove exit.h.

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

	* doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
	Setzer.
	(Java Differences): Fix some typos.
	* THANKS: Add Sebastian Setzer.

2007-03-07  Paolo Bonzini  <bonzini@gnu.org>

	* data/java.m4 (b4_single_class_if): Remove.
	(b4_abstract_if): Look at "%define abstract".
	(b4_lexer_if): New.
	(b4_union_name): Rename...
	(b4_yystype): ... to this.  Map to "%define stype".
	(b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
	b4_maybe_throws): Fix quoting.
	(b4_lex_param_call): Move below to keep b4_*_param_decl close.
	* data/lalr1.java (Lexer interface): Always define.
	(Lexer interface within parser class): Remove.
	(YYLexer class): New, used when "%code lexer" is present.
	(constructor): When "%code lexer" is used, pass %lex-param
	to the lexer constructor.
	(yylex, yyparse): Remove %lex-param from method invocations
	(YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.

	* doc/bison.texinfo (Java Bison Interface): Mention "%define
	abstract".  Rename "%define union_name" to "%define stype".
	Rename method names according to previous patch.
	(Java Scanner Interface): Describe "%code lexer" instead of
	"%pure-parser" and "%define single_class".
	(Java Differences): Mention "%code lexer".

	* tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
	Include scanner here, using macros from tests/local.at.
	(AT_DATA_CALC_Y): Remove final argument.
	(_AT_CHECK_JAVA_CALC): Likewise.
	(AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
	of %locations and %error-verbose.
	(main): Test with and without %lex-param.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
	(AT_BISON_OPTION_POPDEFS): Pop it.

2007-03-07  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP spefic issue.  Inhibit the use of disallowed characters for
	file name genertion on Win98, WinXP, etc.  These are |<>":?*\
	and concern testsuite case 46.
	* Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST
	* djgpp/testsuite.sed: Inhibit the use of disallowed characters.
	* djgpp/config.bat: Inhibit the use of disallowed characters.

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

	Miscellaneous %define and %code cleanup.
	* data/bison.m4 (b4_percent_define_flag_if): Correct comments on how
	values are interpreted.
	* doc/bison.texinfo (Decl Summary): Clean up and extend %define
	documentation a little more.
	* src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT,
	muscle_percent_define_insert, muscle_percent_code_grow): New
	functions/macros.
	* src/muscle_tab.h (muscle_percent_define_insert,
	muscle_percent_code_grow): Prototype.
	* src/parse-gram.y (prologue_declaration): Use
	muscle_percent_define_insert and muscle_percent_code_grow when parsing
	%define and %code directives.

	Make it easy to share %define boolean variables between the front-end
	and back-end.  Though not used yet, this will be useful in the future.
	* data/bison.m4 (b4_check_user_names): Rewrite comments to talk about
	Bison uses of names rather than just skeleton uses of names.
	(b4_percent_define_get, b4_percent_define_ifdef): Rename
	b4_percent_define_skeleton_variables(VARIABLE) to
	b4_percent_define_bison_variables(VARIABLE).
	(b4_percent_code_get, b4_percent_code_ifdef): Rename
	b4_percent_code_skeleton_qualifiers(QUALIFIER) to
	b4_percent_code_bison_qualifiers(QUALIFIER).
	(b4_check_user_names_wrap): Update for renames.
	* src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if,
	muscle_percent_define_default): New functions mimicking
	b4_percent_define_flag_if and b4_percent_define_default.

	For %define variables, report locations for invalid values and
	redefinitions.
	* data/bison.m4 (b4_percent_define_flag_if): Read
	b4_percent_define_loc(VARIABLE) to report the location of an invalid
	value for VARIABLE.
	(b4_percent_define_default): Save a special location in
	b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE
	must later be reported as invalid.
	* src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New
	functions.
	(muscle_percent_define_insert): Record the location of VARIABLE in
	muscle percent_define_loc(VARIABLE), and use it to report the previous
	location for a redefinition.
	(muscle_percent_define_flag_if): Update like b4_percent_define_flag_if.
	(muscle_percent_define_default): Update like b4_percent_define_default.
	(muscle_grow_user_name_list): Rename to...
	(muscle_user_name_list_grow): ... this for consistency and use
	muscle_location_grow.
	* src/muscle_tab.h (muscle_location_grow): Prototype.
	* tests/input.at (%define errors): Update expected output.
	* tests/skeletons.at (%define boolean variables: invalid skeleton
	defaults): New test case.

2007-02-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/print.c (lookahead_set, state_default_rule): Remove.
	(print_reductions): Replace state_default_rule invocation with
	equivalent use of yydefact, which was computed in token_actions in
	tables.c.
	(print_results): Don't allocate lookahead_set.

2007-02-27  Paolo Bonzini  <bonzini@gnu.org>

	* data/lalr1.java: Prefix all private members with yy.

2007-02-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	Use YYFPRINTF instead of fprintf where appropriate.  Reported by
	Sebastien Fricker at
	<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
	* THANKS: Add Sebastien Fricker.
	* data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement.
	* doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must
	accept a variable number of arguments.

2007-02-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* bootstrap: Remove occurrences of .#bootmp from lib/Makefile.

2007-02-13  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* djgpp/config.bat: Adjustments concerning the use of autoconf 2.61.
	* djgpp/config.sed: Adjustments concerning the use of autoconf 2.61.
	* djgpp/config.site: Adjustments concerning the use of autoconf 2.61.

2007-02-11  Paul Eggert  <eggert@cs.ucla.edu>

	Undo my 2007-02-07 change, switching back to the c-strcase module
	introduced in the 2007-02-03 change.  Bruno Haible reported that
	the 2007-02-07 change would be dangerous in Turkish if we add a
	language whose name contains "i", since "i" is not lowercase "I"
	in Turkish.
	* bootstrap.conf (gnulib_modules): Add c-strcase.  Remove strcase.
	* lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h,
	c-strcasecomp.c, c-strncasecmp.c.  Remove strcasecmp.c, strncasecmp.c.
	* m4/.cvsignore: Remove strcase.m4.
	* src/getargs.c: Revert 2007-02-07 change, as follows.
	Include c-strcase.h.
	(language_argmatch): Use c_strcasecmp rather than strcasecmp.

2007-02-11  Bruno Haible  <bruno@clisp.org>

	Enable the Java related testsuite tests when the only Java compiler
	found is a gcj < 4.3.  Discussed at
	<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00016.html>.
	* configure.ac (gt_JAVACOMP): Don't specify a target_version.

2007-02-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/Makefile.am: Update copyright date.
	* data/push.c (yypull_parse): Report memory exhaustion and return 2 if
	yypstate_new returns NULL.
	(yypstate_new): Return NULL if malloc does.
	* src/reader.c (packgram): Move translation of rule actions from the
	beginning of packgram to...
	(check_and_convert_grammar): ... here right before packgram is invoked
	so it's easier to write more complete comments, and remove redundant
	code.

2007-02-10  Joel E. Denny  <jdenny@ces.clemson.edu>

	As in semantic actions, make @$ in %initial-action, %destructor, and
	%printer imply %locations.
	* src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when
	scanning @$.
	* tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting...
	(@$ in %initial-action implies %locations,
	@$ in %destructor implies %locations,
	@$ in %printer implies %locations): ... these new test cases.

2007-02-07  Paul Eggert  <eggert@cs.ucla.edu>

	Undo most of the 2007-02-03 change, switching to the strcase module
	now that gnulib strcase has been fixed.
	* bootstrap.conf (gnulib_modules): Remove c-strcase.  Add strcase.
	* lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h,
	c-strcasecomp.c, c-strncasecmp.c.  Add strcasecmp.c, strncasecmp.c
	* m4/.cvsignore: Add strcase.m4.
	* src/getargs.c: Revert 2007-02-03 change, as follows.
	Don't include c-strcase.h.
	(language_argmatch): Use strcasecmp rather than c_strcasecmp.
	strcasecmp has "unspecified behavior" outside the POSIX locale,
	but it works fine in practice if at least one argument is ASCII,
	as is the case in Bison.

2007-02-07  Paolo Bonzini  <bonzini@gnu.org>

	* tests/java.at: Skip tests if only one of javac/java is present.
	Reported by Joel E. Denny.
	* tests/atlocal.in: Adjust copyright years.

2007-02-05  Paolo Bonzini  <bonzini@gnu.org>

	* data/lalr1.java (Stack): Work around old verifiers that disallow
	access to the private fields of an inner class, from the outer class.
	We can make Stack's fields public because user code doesn't have access
	to the instance of Stack used by parse().  Reported by Paul Eggert.

2007-02-03  Paul Eggert  <eggert@cs.ucla.edu>

	* .cvsignore: Add javacomp.sh, javaexec.sh.  Is this really
	the right spot for these files?
	* bootstrap.conf (gnulib_modules): Add c-strcase.
	* lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c,
	c-strncasecmp.c.
	* src/getargs.c: Include c-strcase.h.
	(language_argmatch): Use c_strcasecmp rather than strcasecmp,
	to avoid unspecified behavior.

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

	* doc/bison.texinfo (Decl Summary): Correct typo.

2007-01-30  Paolo Bonzini  <bonzini@gnu.org>

	* data/bison.m4 (b4_percent_define_flag_if): Don't treat 0 as false.
	Complain if the value does not match empty, "true" or "false".
	* data/c++.m4: Adjust default definitions of %define variables.
	* data/java.m4: Adjust default definitions of %define variables.
	* doc/bison.texinfo (Decl Summary): Adjust the %define entry according
	to above behavior.
	* tests/input.at (Boolean %define variables): Test new behavior.

2007-01-29  Paolo Bonzini  <bonzini@gnu.org>

	* NEWS: Mention java.
	* TODO: Remove things that are done.
	* bootstrap.conf: Add javacomp-script and javaexec-script.
	* configure.ac: Invoke gt_JAVACOMP and gt_JAVAEXEC.

	* data/Makefile.am: Add new files.
	* data/java-skel.m4: New.
	* data/java.m4: New.
	* data/lalr1.java: New.

	* doc/bison.texinfo: Put "A Complete C++ Example" under
	C++ Parsers.  Add Java Parsers.  Put C++ Parsers and Java Parsers
	under Other Languages.

	* src/getargs.c (valid_languages): Add Java.
	* src/getargs.h (struct bison_language): Update size of string fields.

	* tests/Makefile.am: Add java.at.
	* tests/atlocal.in: Add CONF_JAVA and CONF_JAVAC.
	* tests/java.at: New.
	* tests/testsuite.at: Include it.

2007-01-28  Joel E. Denny  <jdenny@ces.clemson.edu>

	Clean up.
	* src/scan-skel.l (at_directive_perform): Add at_directive_argc and
	at_directive_argv arguments so these no longer have to be global
	variables.  Also, update the implementation for the following changes.
	(fail_for_at_directive_too_many_args,
	fail_for_at_directive_too_few_args): Add at_directive_name argument.
	(at_directive_name): Remove as at_directive_argv[0] will be used for
	this now.
	(AT_DIRECTIVE_ARGC_MAX): Increment to make space in at_directive_argv
	for the directive name.
	(at_directive_argc, at_directive_argv): Make these local within
	skel_lex instead of global.
	(INITIAL): Update directive start action for above changes.
	(SC_AT_DIRECTIVE_ARG): Rename to...
	(SC_AT_DIRECTIVE_ARGS): ... this, and update for above changes.
	(SC_AT_DIRECTIVE_SKIP_WS): Update.
	(scan_skel): Move yylex_destroy to...
	(skel_scanner_free): ... here.
	* tests/skeletons.at (installed skeleton file name): Rename to...
	(installed skeleton file names): ... this.

2007-01-27  Joel E. Denny  <jdenny@ces.clemson.edu>

	* ChangeLog: For changes in doc/bison.texinfo, consistently reference
	node names: say "Table of Symbols" not "Bison Symbols", and say "Decl
	Summary" not "Directives".
	* doc/bison.texinfo (Decl Summary, Calc++ Parser): Cross-reference the
	%code entry in "Decl Summary" rather than the one in "Table of Symbols"
	since the former is now the more complete one.
	(Prologue Alternatives): Likewise and do the same for %defines.
	(Table of Symbols): Add summary of %code, add summary of %define, and
	move full %code documentation to...
	(Decl Summary): ... here for consistency with other entries in these
	sections.
	Move %define entry in order to keep this list alphabetized.
	Reword %define entry a little to put less emphasis on the skeleton
	concept, which most users shouldn't have to think about.

2007-01-26  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to recent gnulib changes.
	* lib/.cvsignore: Remove stpcpy.h, strndup.h, strnlen.h.
	Add string.h, string_.h, unistd_.h, wchar_.h.
	* m4/.cvsignore: Add gnulib-common.m4, string_h.m4, wchar.m4.
	* src/system.h: Don't include <stpcpy.h>; this is now done by
	<string.h>.

2007-01-23  Paolo Bonzini  <bonzini@gnu.org>

	Simplify implementation of unqualified %code, implement macros for
	uniform treatment of boolean %define flags.  Document %define.
	* data/bison.m4 (b4_percent_define_ifdef, b4_percent_define_flag_if,
	b4_percent_code_ifdef): New.
	(b4_percent_code_get): Map unqualified %code to b4_percent_code().
	* data/c++.m4: Define default value for global_tokens_and_yystype.
	* data/glr.cc: Likewise.
	* data/location.cc: Use b4_percent_define_flag_if.

	* doc/bison.texinfo (Decl Summary): Document %define.

	* src/parse-gram.y (Unqualified %code): Change muscle name to
	b4_percent_code().
	(content.opt): Default to empty.

2007-01-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Implement support for relative and absolute skeleton file names.
	Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00071.html>.
	* doc/bison.texinfo (Decl Summary): Document in %skeleton entry.
	(Bison Options): Document in --skeleton entry.
	* src/output.c (output_skeleton): Use strncpy rather than strcpy since
	full_skeleton can't necessarily hold all of pkgdatadir.
	If the specified skeleton file name contains a `/', don't prepend
	pkgdatadir.
	* src/parse-gram.y (prologue_declaration): If the specified skeleton
	file name contains a `/', prepend the grammar file directory.
	* tests/Makefile.am (TESTSUITE_AT): Add skeletons.at.
	* skeletons.at: New file.
	(relative skeleton file names): New test case.
	(installed skeleton file names): New test case.
	* tests/testsuite.at: Include skeletons.at.

	* bootstrap: Update copyright to 2007.

2007-01-17  Paolo Bonzini  <bonzini@gnu.org>

	* bootstrap: Remove occurrences of .#bootmp from the files.

2007-01-17  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Calc++ Parser): Don't try to alias
	nonterminals.
	Use per-type %printer.

2007-01-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4,
	data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
	djgpp/config.site, src/files.c, src/files.h, src/main.c,
	src/muscle_tab.c, src/muscle_tab.h, src/parse-gram.y, src/reader.h,
	src/scan-skel.h, src/scan-skel.l, tests/actions.at, tests/calc.at,
	tests/glr-regression.at, tests/input.at, tests/local.at,
	tests/output.at, tests/torture.at: Update copyright to 2007.

2007-01-16  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an
	error code.
	(Calc++ Scanner): Exit with failure if we can't open the input
	file.
	Accept "-" standing for stdin.
	(Calc++ Top Level): Print the result only if the parsing was
	successful.

2007-01-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yy_reduce_print_): Add a missing end-of-line.

2007-01-15  Paolo Bonzini  <bonzini@gnu.org>
	and Joel E. Denny  <jdenny@ces.clemson.edu>

	Clean up %define and %code implementation in M4 some.  Most
	importantly, rename all related macros to be in the b4_percent_define
	and b4_percent_code namespaces.  Also, complete support for `.' in
	%define variable names and %code qualifiers.
	* data/bison.m4 (b4_check_user_names): Check for special
	"SKELETON-NAMESPACE(name)" macros instead of using two nested
	m4_foreach loops.
	(b4_get_percent_define, b4_get_percent_code): Rename to...
	(b4_percent_define_get, b4_percent_code_get): ... these.
	Extend documentation with examples.
	For SKELETON-NAMESPACE (as documented for b4_check_user_names), use
	b4_percent_define_skeleton_variables and
	b4_percent_code_skeleton_qualifiers.
	Expect any value for the %define variable `foo' to be stored in the
	macro named `b4_percent_define(foo)'; expect any %code blocks for the
	qualifier `foo' to be stored in a macro named `b4_percent_code(foo)';
	expect any unqualified %code blocks to be stored in a macro named
	`b4_percent_code_unqualified'.
	Use m4_indir so that %define variable names and %code qualifiers can
	contain `.', which is allowed by the grammar parser.
	(b4_percent_define_default): New macro to set a default value for a
	%define variable.
	(m4_wrap): Update wrapped code, and fix some underquoting.
	(b4_check_user_names_wrap): Update and define outside the m4_wrap.
	Expect grammar uses of %define variables and %code qualifiers to be
	defined in b4_percent_define_user_variables and
	b4_percent_code_user_qualifiers.
	* data/c++.m4: Use b4_percent_define_default rather than
	m4_define_default.  Fix some underquoting.  Skeleton usage of %define
	variable define_location_comparison now implies skeleton usage of
	%define variable filename_type.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
	data/push.c, data/yacc.c: Update macro names.
	* src/parse-gram.y (prologue_declaration, grammar_declaration): Update
	muscle names.

2007-01-14  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issues.

	* djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific
	default.  Set gl_cv_absolute_wctype_h to a sane DJGPP specific default.

2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to
	run parsers in all tests so that Valgrind is invoked during
	maintainer-check-valgrind.
	(Duplicate representation of merged trees): Free all semantic values.
	(Duplicated user destructor for lookahead): Likewise.

2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a
	command-line prefix.
	* tests/torture.at (Exploding the Stack Size with Alloca): Stderr is
	ignored, so use that PRE to set --log-fd=1 in VALGRIND_OPTS so we don't
	miss Valgrind messages.
	(Exploding the Stack Size with Malloc): Likewise.

2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	Ignore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be
	locals.  Reported by Juan Manuel Guerrero at
	<http://lists.gnu.org/archive/html/bug-bison/2007-01/msg00000.html>.
	* data/push.c: Enclose the #ifdef YYSTACK_USE_ALLOCA in b4_push_if.
	Fix some indentation also.
	* tests/torture.at (Exploding the Stack Size with Alloca): Add comment
	explaining this issue.

2007-01-09  Paolo Bonzini  <bonzini@gnu.org>
	and Joel E. Denny  <jdenny@ces.clemson.edu>

	Simplify union and prologue handling, and escape union and lex/parse
	params with digraphs.
	* data/bison.m4 (b4_pre_prologue, b4_post_prologue): Set their default
	values to the empty string since these are no longer guaranteed
	initialized by the front-end.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/push.c, data/yacc.c: Add
	braces around b4_user_stype since this is no longer done by the
	front-end.
	* src/files.c, src/files.h (pre_prologue_obstack,
	post_prologue_obstack): Remove.
	* src/muscle_tab.c (muscle_pair_list_grow): Don't duplicate header
	comments here.  Use MUSCLE_OBSTACK_SGROW so that values are escaped
	with digraphs.  This fixes lex params and parse params.
	* src/muscle_tab.h (muscle_pair_list_grow): Update comments.
	* src/output.c (prepare): Remove muscle insertion of the prologues.
	(output): Remove freeing of pre_prologue_obstack and
	post_prologue_obstack.
	* src/parse-gram.y (prologue_declaration): Use muscle_code_grow rather
	than prologue_augment for prologue parsing so you don't need prologue
	obstacks.
	(grammar_declaration): For %union RHS, use `braceless' instead of
	"{...}" so that braces are already stripped and code is escaped with
	digraphs.
	* src/reader.c (prologue_augment): Remove.
	(reader): Remove initialization of pre_prologue_obstack and
	post_prologue_obstack.
	* src/reader.h (prologue_augment): Remove.

	* data/c.m4: Remove stray parenthesis.

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

	Remove quotes from variables names in %define directives and from
	qualifiers in %code directives, and restrict the characters that are
	allowed in them to M4-friendly ones.  For %define, continue to support
	the quoted form as a deprecated feature.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00023.html>.
	* NEWS (2.3a+): Add entry for the change to %define.  Update entry for
	%code.
	* doc/bison.texinfo (Prologue Alternatives): Update.
	(Decl Summary): In %defines entry, update mention of `%code requires'
	and `%code provides'.
	(C++ Location Values): Update %define uses.
	(Calc++ Parser Interface): Likewise.
	(Calc++ Parser): Likewise, and update `%code requires' uses.
	(Table of Symbols): Update %code documentation.
	* src/parse-gram.y (prologue_declaration): For %define variables, use
	`variable' instead of `STRING'.
	(grammar_declaration): For %code qualifiers, use `ID' instead of
	`STRING'.
	(variable): New nonterminal that takes an `ID' or a `STRING'.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update %code
	and %define uses.
	* tests/calc.at (_AT_DATA_CALC_Y): Update %define use.
	* tests/input.at (Reject unused %code qualifiers): Update %code uses.
	(%define errors): Update %define uses.

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

	* src/parse-gram.y (prologue_declaration): Use MUSCLE_INSERT_STRING
	instead of muscle_insert for %define values so that M4-special
	characters are replaced with digraphs.
	* tests/input.at (%define errors): Extend to check weird values.

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

	Instead of having skeletons declare all valid %define variables and
	%code qualifiers, provide macros that retrieve the associated values
	and build these lists automatically.  Thus Bison will now warn when a
	variable or qualifier is not used by the skeleton in the current
	invocation regardless of whether it might sometimes be used by that
	skeleton in other invocations.  Also, move all %define value macros to
	the b4_percent_define_ namespace, and remove the %define "NAME" {CODE}
	form, which is replaced by %code.
	* data/bison.m4 (b4_check_for_unrecognized_names): Rename to...
	(b4_check_user_names): ... this, and change the series of valid name
	arguments to a single list argument for names used in the skeleton
	similar to the existing list argument for names used in the grammar.
	Warn instead of complaining.
	(b4_get_percent_define, b4_get_percent_code): New to retrieve %define
	values and %code code, to format %code code properly, and to build
	lists of all %define variables and %code qualifiers used in the
	skeleton: b4_skeleton_percent_define_variables and
	b4_skeleton_percent_code_qualifiers.
	(b4_check_percent_define_variables, b4_check_percent_code_qualifiers):
	Remove, and...
	(m4_wrap): ... m4_wrap b4_check_user_names invocations instead so that
	the skeleton names lists can finish building first.  In place of
	b4_used_percent_define_variables and b4_used_percent_code_qualifiers,
	expect the lists b4_user_percent_define_variables and
	b4_user_percent_code_qualifiers.
	* data/c++.m4: Where setting default values for b4_parser_class_name,
	b4_location_type, b4_filename_type, b4_namespace, and
	b4_define_location_comparison, update their names to the
	b4_percent_define_ namespace.
	* data/glr.c: Don't use b4_check_percent_define_variables and
	b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
	* data/glr.cc, data/lalr1.cc: Likewise, and use b4_get_percent_define.
	(b4_parser_class_name, b4_namespace): Define these using
	b4_get_percent_define for parser_class_name and namespace.
	* data/location.cc: Use b4_get_percent_define.
	* data/push.c: Don't use b4_check_percent_define_variables and
	b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
	* data/yacc.c: Likewise, and don't call m4_exit in
	b4_use_push_for_pull_if or m4_wrap code will never execute.
	* src/muscle_tab.c, src/muscle_tab.h (muscle_grow_used_name_list):
	Rename to...
	(muscle_grow_user_name_list): ... this for consistency with the
	terminology used in bison.m4.
	* src/parse-gram.y (prologue_declaration): Prepend "percent_define_" to
	%define variable names, and rename muscle used_percent_define_variables
	to user_percent_define_variables.
	(grammar_declaration): Rename muscle used_percent_code_qualifiers to
	user_percent_code_qualifiers.
	(content): Remove.
	(content.opt): Replace content RHS with STRING RHS so %define "NAME"
	{CODE} form is no longer accepted.
	* tests/input.at (Reject bad %code qualifiers): Rename to...
	(Reject unused %code qualifiers): ... this, and update test output.
	(%define error): Update test output.

2007-01-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Check for unrecognized %define variables similar to checking for
	unrecognized %code qualifiers.  Check for redefined %define variables.
	* data/bison.m4 (b4_check_for_unrecognized_names): New macro that
	generalizes...
	(b4_check_percent_code_qualifiers): ... this, which now wraps it.
	(b4_check_percent_define_variables): New, also wraps it.
	* data/glr.c: Unless glr.cc is wrapping glr.c, declare no valid %define
	variables using b4_check_percent_define_variables.
	* data/glr.cc, data/lalr1.cc: Declare the valid %define variables as
	all those exercised in the test suite and all those listed in the
	`Default values' section of c++.m4.  Are there others?
	* data/push.c, data/yacc.c: Declare no valid %define variables.
	* src/muscle_tab.c, src/muscle_tab.h (muscle_find_const): New function,
	similar to muscle_find, but it works even when the muscle stores a
	const value.
	(muscle_grow_used_name_list): New function for constructing the used
	name list muscles that b4_check_for_unrecognized_names requires.
	* src/parse-gram.y (prologue_declaration): Warn if a variable is
	%define'd more than once.  Define the b4_used_percent_define_variables
	muscle with muscle_grow_used_name_list.
	(grammar_declaration): Abbreviate %code code with
	muscle_grow_used_name_list.
	* tests/input.at (%define errors): New.

2007-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	Provide warn_at, complain_at, and fatal_at function callbacks to the
	skeletons, and use this for %code qualifier complaints.
	* data/bison.m4 (b4_error_at): New, invoked by...
	(b4_warn_at, b4_complain_at, b4_fatal_at): ... these new macros to wrap
	the skeleton scanner's new @warn_at(...@), @complain_at(...@), and
	@fatal_at(...@) directives.
	(b4_check_percent_code_qualifiers): Rewrite to expect locations for
	qualifiers in b4_used_percent_code_qualifiers and to use
	b4_complain_at.
	* src/location.c, src/location.h (boundary_set_from_string): New global
	function.
	* src/muscle_tab.c, src/muscle_tab.h (muscle_boundary_grow): New global
	function.
	* src/parse-gram.y (grammar_declaration): Add locations for qualifiers
	to b4_used_percent_code_qualifiers.
	* src/scan-skel.l (fail_for_at_directive_too_few_args): New static
	function.
	(AT_DIRECTIVE_ARGC_MAX): Increase for boundary arguments.
	(lineno): Rename to...
	(out_lineno): ... this so I don't misunderstand it again.
	(SC_AT_DIRECTIVE_SKIP_WS): Don't increment out_lineno for newlines
	here; these newlines are in the input but not the output file.
	(SC_AT_DIRECTIVE_ARG): Likewise.  Extract directive execution to...
	(at_directive_perform): ... this new static function, and add handling
	of new @warn_at(...@), @complain_at(...@), and @fatal_at(...@)
	directives.
	* tests/input.at (Reject bad %code qualifiers): Update test output with
	locations and extend.

	* tests/output.at (Output file name: [, Output file name: ]): Remove
	bogus comment about these tests failing.

2007-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	Clean up b4_check_percent_code_qualifiers a little.
	* data/bison.m4 (b4_check_percent_code_qualifiers): Expect qualifiers
	in b4_used_percent_code_qualifiers to be double-M4-quoted.  Rewrite
	documentation and add examples.
	* src/parse-gram.y (grammar_declaration): Double-M4-quote those
	qualifiers here.

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

	Don't use m4_divert since it makes m4_divert_push and m4_divert_pop
	unreliable -- especially when they're hidden inside another macro.
	* data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-skel.m4,
	data/c.m4: Remove m4_divert(-1).
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
	data/push.c, data/yacc.c: Likewise, and replace m4_divert(0) with
	m4_divert_push(0) and m4_divert_pop(0).
	* src/output.c (output_skeleton): Don't add an m4_divert_push(0) and
	an m4_wrap([m4_divert_pop(0)]) to the M4.  Diversion -1, which is
	pushed and popped by m4sugar, should be first on the stack.

	Provide warn, complain, and fatal function callbacks to the skeletons.
	This provides more flexibility than m4_fatal, improves the error
	message format, and captures messages for translation.  Discussed
	starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00063.html>.
	* data/bison.m4 (b4_error): New, invoked by...
	(b4_warn, b4_complain, b4_fatal): ... these new macros to wrap the
	skeleton scanner's new @warn(...@), @complain(...@), and @fatal(...@)
	directives.  Because these M4 macros might be called when the current
	diversion is -1 or 0, m4_divert_push and m4_divert_pop is used; thus
	the previous removal of uses of m4_divert, which caused trouble.
	(b4_check_percent_code_qualifiers): Use b4_complain instead of
	m4_fatal to report unrecognized %code qualifiers.
	* data/c++-skel.m4: Use b4_complain instead of m4_fatal to report C++
	push parser requests.
	* data/glr.c: Use b4_complain instead of m4_fatal to report
	non-deterministic push parser requests.
	Update @output usage to @output(...@) form.
	* data/glr.cc, data/lalr1.cc: Use b4_fatal instead of m4_fatal to
	report missing %defines.  Update @output usage to @output(...@) form.
	* data/location.cc, data/push.c, data/yacc.c: Update @output usage to
	@output(...@) form.
	* src/main.c (main): Invoke skel_scanner_free.
	* src/scan-skel.h (skel_scanner_free): Prototype new function.
	* src/scan-skel.l (FLEX_NO_OBSTACK): Don't define; we now need the
	obstack_for_string from flex-scanner.h.
	(YY_DECL): Use to declare skel_lex static.
	(decode_at_digraphs): Remove; now handled in the new
	SC_AT_DIRECTIVE_ARG start condition.
	(fail_for_at_directive_too_many_args, fail_for_invalid_at): New static
	functions.
	(at_directive_name, AT_DIRECTIVE_ARGC_MAX, at_directive_argc,
	at_directive_argv): New static globals.
	(INITIAL): Use fail_for_invalid_at.
	Don't parse `@output file_name\n' or `@basename(...@)'.  Instead,
	recognize the start of a generalized `@directive(...@)' form and
	start...
	(SC_AT_DIRECTIVE_ARG): ... this new start condition to parse the
	directive args (using the new obstack_for_string), to decode the
	contained @ diagraphs, and to perform the directive.  It recognizes
	@basename(...@), @warn(...@), @complain(...@), @fatal(...@), and
	@output(...@).
	(SC_AT_DIRECTIVE_SKIP_WS): New start condition started by
	SC_AT_DIRECTIVE_ARG to skip whitespace after the argument delimiter,
	`@,'.
	(scan_skel): Initialize obstack_for_string on the first call.
	(skel_scanner_free): New function to free obstack_for_string.
	* tests/input.at (Reject bad %code qualifiers): Update test output.

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

	Consolidate the 4 prologue alternative directives (%code, %requires,
	%provides, and %code-top) into a single %code directive with an
	optional qualifier field.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00012.html>.
	* NEWS (2.3a+): Rewrite the existing entry for the prologue
	alternatives.
	* doc/bison.texinfo (Prologue Alternatives): Update.
	(Decl Summary): Update to %code "requires" and %code "provides".
	(Calc++ Parser): Update to %code "requires".
	(Table of Symbols): Remove entries for %requires, %provides, and
	%code-top.  Rewrite %code entry, and add a %code "QUALIFIER" entry.
	* data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these
	are replaced by b4_percent_code_provides and b4_percent_code_requires,
	which are skeleton-specific.
	(b4_check_percent_code_qualifiers): New.  A skeleton can use this to
	declare what %code qualifiers it supports and to complain if any other
	qualifiers were used in the grammar.
	* data/glr.cc: Update to use b4_user_code([b4_percent_code_requires])
	and b4_user_code([b4_percent_code_provides]) in place of
	b4_user_requires and b4_user_provides.
	* data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise.
	Add b4_user_code([b4_percent_code_top]) and
	b4_user_code([b4_percent_code]).
	Invoke b4_check_percent_code_qualifiers.
	* src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES,
	PERCENT_REQUIRES): Remove.
	(grammar_declaration): Remove RHS's for %code-top, %provides, and
	%requires.  Rewrite the %code RHS as the unqualified form defining the
	muscle b4_percent_code.  Add another RHS for the qualified %code form,
	which defines muscles of the form b4_percent_code_QUALIFIER and the
	b4_used_percent_code_qualifiers muscle.
	* src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES,
	PERCENT_REQUIRES): Remove.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use
	%code "requires" and %code "provides".
	* tests/input.at (Reject bad %code qualifiers): New.

2007-01-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	Use the new code_props interface for destructors and printers.
	* src/symtab.h (symbol, semantic_type): Remove destructor_location and
	printer_location members, and change the type of the destructor and
	printer members to code_props.
	(symbol_destructor_set, symbol_destructor_get, symbol_printer_set,
	symbol_printer_get, semantic_type_destructor_set,
	semantic_type_printer_set, default_tagged_destructor_set,
	default_tagless_destructor_set, default_tagged_printer_set,
	default_tagless_printer_set): Use code_props in arguments and return
	types in place of char const * and location.
	(symbol_destructor_location_get, symbol_printer_location_get): Remove
	since the locations are now contained in the return of
	symbol_destructor_get and symbol_printer_get.
	* src/output.c (symbol_destructors_output, symbol_printers_output):
	Replace with...
	(symbol_code_props_output): ... this to eliminate duplicate code.
	(output_skeleton): Update to use symbol_code_props_output.
	* src/reader.c (symbol_should_be_used): Update use of
	symbol_destructor_get.
	* src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
	Update uses of the various _destructor_set and _printer_set functions.
	* src/symtab.c: (default_tagged_destructor_location,
	default_tagless_destructor_location, default_tagged_printer_location,
	default_tagless_printer_location): Remove since we...
	(default_tagged_destructor, default_tagless_destructor,
	default_tagged_printer, default_tagless_printer): ... change the type
	of these to code_props.
	(symbol_new, semantic_type_new, symbol_destructor_set,
	semantic_type_destructor_set, symbol_destructor_get,
	symbol_printer_set, semantic_type_printer_set, symbol_printer_get,
	symbol_check_alias_consistency, default_tagged_destructor_set,
	default_tagless_destructor_set, default_tagged_printer_set,
	default_tagless_printer_set): Update.
	(symbol_destructor_location_get, symbol_printer_location_get): Remove.
	(SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for
	code_props members.
	(symbol_print): Use SYMBOL_CODE_PRINT.

2007-01-03  Joel E. Denny  <jdenny@ces.clemson.edu>

	Use the new code_props interface for rule actions.
	* src/symlist.h (symbol_list): Replace action, action_location, and
	used members with a code_props action_props member.
	* src/reader.c (symbol_should_be_used, grammar_rule_check,
	grammar_midrule_action, grammar_current_rule_merge_set,
	grammar_current_rule_symbol_append, packgram): Update.
	* src/scan-code.h (translate_rule_action): Remove, no longer used.
	* src/scan-code.l (handle_action_dollar): Update.
	(translate_rule_action): Remove, no longer used.
	* src/symlist.c (symbol_list_sym_new, symbol_list_syms_print): Update.

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

	Use the new code_props interface in parse-gram.y.
	* src/parse-gram.y (prologue_declaration, braceless, epilogue.opt):
	Update all uses of translate_* functions to use the new code_props
	interface and to use gram_scanner_last_string_free and
	code_scanner_last_string_free where possible.
	(grammar_declaration): symbol_list_destructor_set and
	symbol_list_printer_set now perform the translation, so don't do it
	here.  Use gram_scanner_last_string_free where possible.
	* src/scan-code.h, src/scan-code.l (translate_symbol_action,
	translate_code): Remove, no longer used.
	* src/symlist.h, src/symlist.c (symbol_list_destructor_set,
	symbol_list_printer_set): Perform code translation here rather than
	depending on the caller to do so.

	* src/symlist.h (struct symbol_list): Correct some documentation typos.
	* src/scan-gram.h (gram_last_string): Remove declaration.
	* src/scan-gram.l (last_string): Declare it static.

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

	Encapsulate code properties and related functionality for the various
	destructors, printers, and actions into a code_props structure and
	interface.  This patch merely implements code_props in scan-code.h and
	scan-code.l.  Future patches will rewrite other modules to use it.
	Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00020.html>.
	* src/location.h (EMPTY_LOCATION_INIT): Define so that it's easier to
	consistently initialize const structs that have an empty location
	field.
	* src/location.c (empty_location): Initialize with EMPTY_LOCATION_INIT
	to ensure consistency.
	* src/scan-code.h (code_props): New structure.
	(code_props_none_init, CODE_PROPS_NONE_INIT, code_props_none): New
	function, macro, and const global variable for initializing a
	code_props with no code.
	(code_props_plain_init, code_props_symbol_action_init,
	code_props_rule_action_init, code_props_translate_code): The rest of
	the new code_props functional interface.  Among other things, the init
	functions set the code_props kind field so that
	code_props_translate_code will know whether to behave like
	translate_symbol_action, translate_rule_action, or translate_code.
	These old translate functions must remain until all other modules are
	updated to use the new code_props interface.
	(code_scanner_last_string_free): New function similar to
	gram_scanner_last_string_free.
	(code_scanner_free): Add documentation.
	* src/scan-code.l: Implement the new interface.
	(code_lex): Make it static, add a code_props* argument, and remove the
	rule argument.
	(last_string): New static global similar to the one in scan-gram.l.
	(SC_RULE_ACTION): Update to use the code_props* argument to code_lex
	instead of rule.
	(SC_SYMBOL_ACTION): For $$, set the is_value_used member of the
	code_props since Bison may one day use this information for destructors
	and printers.
	(<*><<EOF>>): Use STRING_FINISH so that last_string is set.
	(handle_action_dollar): Use symbol_list_n_get and set used flag
	directly since symbol_list_n_used_set is removed.
	(translate_action): Add a code_props* argument and remove the rule,
	action, and location arguments.  Pass the code_props* on to code_lex.
	(translate_rule_action, translate_symbol_action, translate_code):
	Rewrite as wrappers around the new code_props interface.
	* src/symlist.h, src/symlist.c (symbol_list_n_used_set): Remove since
	it would eventually need to break the encapsulation of code_props.

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

	* etc/.cvsignore: New.

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

	Add maintainer-push-check to run maintainer-check using push parsing in
	place of pull parsing where available.
	* Makefile.am (maintainer-push-check): New.
	* data/bison.m4 (b4_use_push_for_pull_if): New.
	* data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if
	appropriately based on their existing values.
	(yypush_parse): Don't print push-parser-specific diagnostics if push
	parsing is being used in place of pull parsing.
	* data/yacc.c: If push parsing should replace pull parsing, redirect to
	push.c.
	* src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment
	variable, and insert b4_use_push_for_pull_flag into muscles.
	* tests/Makefile.am (maintainer-push-check): New.

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

	* data/push.c (yypush_parse): Set yynew = 1 at the end of a parse
	(whether successful or failed) so that yypush_parse can be invoked
	again to start a new parse using the same yypstate.
	* tests/torture.at (AT_DATA_STACK_TORTURE): For push mode, extend to
	check multiple yypull_parse invocations on the same yypstate.  For pull
	mode, extend to check multiple yyparse invocations.
	(Exploding the Stack Size with Alloca): Extend to try with
	%push-pull-parser.
	(Exploding the Stack Size with Malloc): Likewise.

	* tests/calc.at (Simple LALR Calculator): Don't specify
	%skeleton "push.c" since %push-pull-parser implies that now.
	* tests/headers.at (export YYLTYPE): Don't check for the push
	declarations.  Otherwise, this test case can't be used to see if push
	mode can truly emulate pull mode.
	* tests/input.at (Torturing the Scanner): Likewise.
	* tests/local.at (AT_YACC_OR_PUSH_IF, AT_PUSH_IF): Remove.
	(AT_YYERROR_SEES_LOC_IF): Rather than AT_YACC_OR_PUSH_IF, use
	AT_YACC_IF, which now includes the case of push mode since %skeleton
	need not be used for push mode.  This will be more intuitive once
	push.c is renamed to yacc.c.

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

	For push mode, convert yyparse from a macro to a function, invoke yylex
	instead of passing a yylexp argument to yypull_parse, and don't
	generate yypull_parse or yyparse unless %push-pull-parser is declared.
	Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>.
	* data/bison.m4 (b4_pull_if): New.
	* data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH.
	* data/push.c: Improve M4 quoting a little.
	(b4_generate_macro_args, b4_parenthesize): Remove.
	(yyparse): If there's a b4_prefix, #define this to b4_prefix[parse]
	any time a pull parser is requested.
	Don't #define this as a wrapper around yypull_parse.  Instead, when
	both push and pull are requested, make it a function that does that
	same thing.
	(yypull_parse): If there's a b4_prefix, #define this to
	b4_prefix[pull_parse] when both push and pull are requested.
	Don't define this as a function unless both push and pull are
	requested.
	Remove the yylexp argument and hard-code yylex invocation instead.
	* etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of
	%push-parser.
	* src/getargs.c (pull_parser): New global initialized to true.
	* getargs.h (pull_parser): extern it.
	* src/output.c (prepare): Insert pull_flag muscle.
	* src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token.
	(prologue_declaration): Set both push_parser and pull_parser = true for
	%push-pull-parser.  Set push_parser = true and pull_parser = false for
	%push-parser.
	* src/scan-gram.l: Don't accept %push_parser as an alternative to
	%push-parser since there's no backward-compatibility concern here.
	Scan %push-pull-parser.
	* tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser
	instead of %push-parser.
	* tests/headers.at (export YYLTYPE): Make yylex static, and don't
	prototype it in the module that calls yyparse.
	* tests/input.at (Torturing the Scanner): Likewise.
	* tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.

2006-12-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	Update etc/bench.pl.  Optimize push mode a little (the yyn change
	deserves most of the credit).
	* Makefile.am (SUBDIRS): Add etc subdirectory.
	* configure.ac (AC_CONFIG_FILES): Add etc/bench.pl and etc/Makefile.
	* data/push.c (b4_declare_parser_state_variables): Move yyn, yyresult,
	yytoken, yyval, and yyloc declarations to...
	(yyparse or yypush_parse): ... here to improve performance.  For
	yypush_parse invocations after the first, be sure to assign yyn its old
	value again.
	(yypstate_new): Don't bother initializing the yyresult field since the
	initial value isn't used.
	(yyn, yyresult, yytoken, yyval, yyloc): For each NAME in this list,
	remove the #define that, in push mode, set it to yyps->NAME.
	* etc/Makefile.am: New.
	* etc/bench.pl: Remove and build it instead from...
	* etc/bench.pl.in: ... this new file.  Use @abs_top_builddir@ to invoke
	"tests/bison" from the build directory by default rather than just
	invoking "bison" from $PATH.
	(calc_grammar): Update push parser code: don't declare yylval globally,
	don't define yyparse_wrapper, and don't #define yyparse.
	(bench_grammar): Update to check all working combinations of yacc.c,
	push.c, impure, pure, pull, and push.

2006-12-25  Joel E. Denny  <jdenny@ces.clemson.edu>

	For push mode, add pull wrappers around yypush_parse.
	* data/push.c: (b4_generate_macro_args, b4_parenthesize): New macros.
	(yypull_parse): New function wrapping yypush_parse.
	(yyparse): New #define wrapping yypull_parse.
	* tests/calc.at (_AT_DATA_CALC_Y): Call yyparse even when %push-parser
	is declared.
	* tests/headers.at (export YYLTYPE): Make yylex global.  For push mode,
	prototype yylex in the module that calls yyparse, and don't prototype
	yyparse there.  Otherwise, the yyparse expansion won't compile.
	* tests/input.at (Torturing the Scanner): Likewise.

2006-12-25  Joel E. Denny  <jdenny@ces.clemson.edu>

	Enable push parsers to operate in impure mode.  Thus, %push-parser no
	longer implies %pure-parser.  The point of this change is to move
	towards being able to test the push parser code by running the entire
	test suite as if %push-parser had been declared.
	* data/push.c (yypush_parse): For impure mode, remove the
	yypushed_char, yypushed_val, and yypushed_loc arguments.
	Instead, declare these as local variables initialized to the global
	yychar, yylval, and yylloc.
	For the first yypush_parse invocation only, restore the initial values
	of these global variables when it's time to read a token since they
	have been overwritten.
	* src/parse-gram.y (prologue_declaration): Don't set pure_parser for
	%push-parser.
	* tests/calc.at (Simple LALR(1) Calculator): Always declare
	%pure-parser along with %push-parser since this test case was designed
	for pure push parsers.
	* tests/local.at (AT_PURE_OR_PUSH_IF): Remove unused.
	(AT_YACC_OR_PUSH_IF): New.
	(AT_YYERROR_SEES_LOC_IF): Fix enough that the test suite passes, but
	add a note that it's still wrong for some cases (as it has been for a
	while).
	(AT_PURE_LEX_IF): Use AT_PURE_IF instead of AT_PURE_OR_PUSH_IF since
	%push-parser no longer implies %pure-parser.

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

	Remove some unnecessary differences between the pull parser code and
	the push parser code.  This patch enables yynerrs in push mode.
	* data/push.c: Reformat M4 a little.
	(b4_yyerror_range): Remove and convert all uses to just yyerror_range.
	(b4_declare_scanner_communication_variables): Don't omit yynerrs just
	because push mode is on.  Instead, if pure mode is on, move yynerrs
	to...
	(b4_declare_parser_state_variables): ... here.
	(yynerrs, yyerror_range): For push mode, #define each NAME in this list
	to yyps->NAME so it can be used in yypush_parse.
	(yypush_parse): Don't omit uses of yynerrs in push mode.

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

	Fix bug such that the first pushed token's value and location are
	sometimes overwritten (sometimes by %initial-action) before being used.
	* data/push.c (yypush_parse): Rename arguments yynchar, yynlval, and
	yynlloc to yypushed_char, yypushed_val, and yypushed_loc for clarity.
	For the first yypush_parse invocation, initialize yychar to YYEMPTY to
	more closely mimic the pull parser logic.
	Don't copy the pushed token to yychar, yylval, and yylloc until it's
	time to read a token, which is after any initialization of yylval and
	yylloc.
	(gottoken): Rename label to...
	(yyread_pushed_token): ... for clarity and to avoid infringing on the
	user namespace.

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

	Rearrange initialization of the parser state variables so that the
	skeleton doesn't have to have a copy for pull mode and another for push
	mode.  This patch also fixes at least a bug such that yylloc was not
	initialized (with b4_location_initial_line and
	b4_location_initial_column) upon calling yypush_parse.  However, that
	initialization now overwrites the first token's location;
	%initial-action assigning @$ already did the same thing, and both bugs
	will be fixed in a later patch.
	* data/push.c (b4_yyssa): Remove and convert all uses to just yyssa.
	(b4_declare_parser_state_variables): Remove initialization of yytoken,
	yyss, yyvs, yyls, and yystacksize.
	(yypstate_new): Remove initialization of some yypstate fields: yystate,
	yyerrstatus, yytoken, yyss, yyvs, yyls, yystacksize, yyssp, yyvsp, and
	yylsp.
	(yyssa, yyvsa, yylsa): For push mode, #define each NAME in this list to
	yyps->NAME so it can be used in yypush_parse.
	(yyparse or yypush_parse): For yypush_parse, don't print the
	"Starting parse" diagnostic for invocations after the first.
	Add initialization of yytoken, yyss, yyvs, yyls, and yystacksize; for
	yypush_parse, only do it for the first invocation.
	Allow yystate, yyerrstatus, yyssp, yyvsp, yylsp, and yylloc
	initialization to occur in yypush_parse but only on the first
	invocation.

2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/push.c: Add CPP guards around push parser declarations in both
	the header and the code file.
	In the code file, move the push parser declarations to the same place
	they appear in the header file.
	Clean up the M4 some, especially the inconsistent underquoting in
	some b4_c_function_def and b4_c_function_decl uses.

2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	Encapsulate the push parser state variables into an M4 macro so the
	push skeleton doesn't have to list them again for pull mode's yyparse.
	For push mode, remove yypush_parse's local equivalents of these
	variables to eliminate unnecessary copying between the two sets at
	run-time.  This patch also fixes at least a bug related to multiple
	%initial-action invocations in push mode.
	* data/push.c (b4_declare_parser_variables): Rename to...
	(b4_declare_scanner_communication_variables): ... this for clarity and
	update both uses.
	(b4_declare_yyparse_variables): Remove and move its contents to the one
	spot where it was invoked.
	(b4_declare_parser_state_variables): New macro containing the parser
	state variables required by push mode.
	(struct yypstate): Replace all fields but yynew with
	b4_declare_parser_state_variables.
	(yystate, yyn, yyresult, yyerrstatus, yytoken, yyss, yyssp, yyvs,
	yyvsp, yyls, yylsp, yystacksize, yyval, yyloc): For push mode, #define
	each NAME in this list to yyps->NAME so it can be used in yypush_parse.
	(yyparse or yypush_parse): For yyparse in pull mode, replace local
	parser state variable declarations with
	b4_declare_parser_state_variables.
	Don't initialize parser state variables when calling yypush_parse since
	yypstate_new already does that.
	Invoke the user's initial action only upon the first yypush_parse
	invocation.
	Remove all code that copies between the local parser state variables
	and the yypstate.

2006-12-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/push.c (union yyalloc): Rename yyss, yyvs, and yyls fields to
	prevent a name collision in a future patch where these names will
	sometimes be #define'd.
	(YYSTACK_RELOCATE): Add an argument to select a union yyalloc field
	since it no longer has the same name as the existing argument.
	(yyparse or yypush_parse): Update all uses of YYSTACK_RELOCATE.

2006-12-19  Paolo Bonzini  <bonzini@gnu.org>
	and Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Decl Summary): In the %language entry, mention
	that the argument is case-insensitive, and there's no `=' here.
	For the %skeleton entry, mention that %language is better.
	(Bison Options): Likewise for --language and --skeleton.  Move the
	--skeleton entry so that the `Tuning the parser' section is sorted
	alphabetically on long options.
	(C++ Bison Interface): Don't use the word skeleton.  Don't explain the
	%language directive in detail here; cross-reference the %language
	documentation instead.
	(Calc++ Parser): Use `%require "@value{VERSION}"' rather than
	`%require "2.3b"' so that the example is always up-to-date.
	(Table of Symbols): Add entries for %language and %skeleton.
	* examples/extexi (normalize): Instead of replacing every %require
	argument with the current Bison version, just substitute for
	`@value{VERSION}'.  This guarantees that we're testing what actually
	appears in the documentation.
	* examples/calc++/Makefile.am ($(calc_extracted)): Use `$(VERSION)'
	rather than `@VERSION@'.

2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Reword the %language news a bit, and put it earlier.

	* src/getargs.c (skeleton_arg): Last arg is now location const *.
	Rewrite to simplify the logic.
	(language_argmatch): Likewise.
	(program_name): We now own this var.
	* src/getargs.h (struct bison_language): Use char[] rather than
	const char *.

	* doc/bison.texinfo (Decl Summary, Bison Options): Don't claim
	Java is supported.
	* src/complain.c (program_name): Remove decl; no longer needed.
	* src/main.c (program_name): Remove; now belongs to getargs.

2006-12-18  Paolo Bonzini  <bonzini@gnu.org>

	* NEWS: Document %language.

	* data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4.

	* data/c-skel.m4, data/c++-skel.m4: New files.
	* data/glr.c: Complain on push parsers.

	* doc/bison.texinfo (C++ Parser Interface): Prefer %language
	over %skeleton.
	(Decl Summary): Document %language and %skeleton.
	(Command line): Document -L.

	* examples/extexi: Rewrite %require directive.
	* examples/calc++/Makefile.am: Pass VERSION to extexi.

	* src/files.c (compute_exts_from_gc): Look in language structure
	for .y extension.
	(compute_file_name_parts): Check whether .tab should be added.
	* src/getargs.c (valid_languages, skeleton_prio, language_prio):
	(language, skeleton_arg, language_argmatch): New.
	(long_options): Add --language.
	(getargs): Use skeleton_arg, add -L/--language.
	* src/getargs.h: Include location.h.
	(struct bison_language, language, skeleton_arg, language_argmatch): New.
	* src/output.c (prepare): Pick default skeleton from struct language.
	Don't dispatch C skeletons here.
	* src/parse-gram.y (PERCENT_LANGUAGE): New.
	(prologue_declaration): Add "%language" rule, use skeleton_arg.
	* src/scan-gram.l ("%language"): New rule.

	* tests/calc.at: Test %skeleton and %language.
	* tests/local.at (AT_SKEL_CC_IF): Look for %language.
	(AT_GLR_IF): Look for %skeleton "glr.cc".
	(AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite.
	(AT_YACC_IF): Reject %language.

2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>

	* src/symtab.h (struct semantic_type): Remove the tag 'semantic_type',
	since it wasn't used; only the typedef name 'semantic_type' is needed.
	Also, omit trailing white space.

	* bootstrap: Sync from coreutils.
	(gnulib_extra_files): Add build-aux/announce.gen.
	(slurp): Adjust .gitignore files like .cvsignore files.
	* build-aux/announce-gen: Remove from CVS, since bootstrap
	now creates this.

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

	Make %push-parser imply %pure-parser.  This fixes several bugs; see
	<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>.
	* src/parse-gram.y (prologue_declaration): For %push-parser, also set
	pure_parser = true.
	* data/push.c: Don't bother testing b4_push_if when deciding whether
	to expand b4_declare_parser_variables globally.
	(yypush_parse): Likewise in here.

	* data/push.c (yypush_parse): Add b4_parse_param to arguments.
	(yy_reduce_print): Reformat M4 for readability.

2006-12-15  Bob Rossi  <bob@brasko.net>
	and Joel Denny  <jdenny@ces.clemson.edu>

	* data/push.c (yypstate): Add typedef, and update all uses of
	struct yypstate to just yypstate.
	* tests/calc.at (_AT_DATA_CALC_Y): Update here as well.

2006-12-14  Bob Rossi  <bob@brasko.net>

	* data/push.c (yypush_parse): Declare prototype regardless of
	%locations option.

2006-12-14  Bob Rossi  <bob@brasko.net>

	* data/push.c (yyparse): Remove the prototype and the #define when in
	push-parser mode.

2006-12-13  Bob Rossi  <bob@brasko.net>

	* data/push.c (yypstate_init): Rename to...
	(yypstate_new): ... this and use b4_c_function_def.
	(yypstate_delete): New.
	(yypush_parse): Change parameters yynval and yynlloc to be const.
	* tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and
	yypstate_delete functions.

2006-12-13  Joel E. Denny  <jdenny@ces.clemson.edu>

	* configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
	strange test case titles.  Reported by Bob Rossi.

2006-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	* TODO: Add pointer to Sylvain Schmitz's work on static detection
	of potential ambiguities in GLR grammers.

2006-12-12  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/testsuite.at (AT_CHECK): When checking if $1 starts with
	`bison ', use m4_index instead of m4_substr since chopping up a string
	containing M4-special characters causes problems here.

	Fix a couple of bugs related to special characters in user-specified
	file names, and make it easier for skeletons to compute output file
	names with the same file name prefix as Bison-computed output file
	names.
	* data/glr.cc, data/push.c, data/yacc.c: In @output, use
	b4_parser_file_name and b4_spec_defines_file instead of
	@output_parser_name@ and @output_header_name@, which are now redundant.
	* data/glr.c, data/lalr1.cc: Likewise.  Also, in header #include's, use
	b4_parser_file_name, b4_spec_defines_file, and the new
	@basename(FILENAME@) instead of @output_parser_name@ and
	@output_header_name@, which inappropriately escaped the file names as
	C string literals.
	* src/files.c (all_but_ext): Remove static qualifier.
	(compute_output_file_names): Move `free (all_but_ext)' to...
	(output_file_names_free): ... here since all_but_ext is needed later.
	* src/files.h (all_but_ext): Extern.
	* src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
	exactly what MUSCLE_INSERT_STRING used to do.
	(MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
	characters are escaped properly.
	* src/output.c (prepare): Define muscle file_name_all_but_ext as
	all_but_ext.
	For pkgdatadir muscle, maintain previous functionality by using
	MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING.  The problem
	is that b4_pkgdatadir is used inside m4_include in the skeletons, so
	digraphs would never be expanded.  Hopefully no one has M4-special
	characters in his Bison installation path.
	* src/scan-skel.l: Don't parse @output_header_name@ and
	@output_parser_name@ anymore since they're now redundant.
	In @output, use decode_at_digraphs.
	Parse a new @basename command that invokes last_component.
	(decode_at_digraphs): New.
	(BASE_QPUTS): Remove unused.
	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
	(Output file name): New tests.

2006-12-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	Warn about output files that are generated by the skeletons and that
	conflict with other output files.
	* data/glr.c: Don't generate the header file here when glr.cc does.
	* src/files.c (file_names, file_names_count): New static globals.
	(compute_output_file_names): Invoke output_file_name_check for files
	not generated by the skeletons and remove existing checks.
	(output_file_name_check): New function that warns about conflicting
	output file names.
	(output_file_names_free): Free file_names.
	* src/files.h (output_file_name_check): Declare.
	* src/scan-skel.l: Invoke output_file_name_check for files generated by
	the skeletons.
	* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): New.
	(Conflicting output files): New tests.

2006-12-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/bison.texinfo: Fix a couple of typos.

2006-12-08  Bob Rossi  <bob@brasko.net>

	* data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
	Rename to...
	(yypstate_init, yypstate, struct yypstate, yypush_parse): ... these and
	update all uses.
	(b4_yyssa, b4_yyerror_range, yypstate_init): Rename pv to yyps.
	(yypush_parse): Rename yypvars argument to yyps and remove redundant
	local pv.
	(yypstate_init, yypush_parse): Declare in Bison-generated header file.
	* tests/calc.at (_AT_DATA_CALC_Y): Use newly named functions.

2006-12-07  Bob Rossi  <bob@brasko.net>
	and Joel Denny  <jdenny@ces.clemson.edu>

	* data/push.c (yypvarsinit): Change return type from void* to struct
	yypvars*. No longer cast to void* on return.
	(struct yypvars): Remove yylen since it need not be remembered between
	yypushparse invocations.
	(yypushparse): Don't copy between yylen and pv->yylen.

2006-12-05  Bob Rossi  <bob@brasko.net>

	* data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
	(yypushparse): Add yynchar, yynlval, yynlloc parameters.
	(b4_declare_parser_variables): Do not declare yynerrs for push mode.
	(struct yypvars): Remove b4_declare_parser_variables.
	(yypvarsinit): Remove init code for removed variables.
	(global scope): Do not declare b4_declare_parser_variables if
	push or pure mode.
	(yypushparse): Add b4_declare_parser_variables.
	Init new local variables, and remove init code for removed
	yypvars variables.
	(yyparse): Delete.
	* tests/calc.at (_AT_DATA_CALC_Y): Call yypushparse for push mode
	and yyparse for other modes.
	(AT_CHECK_CALC_LALR): Added '%skeleton "push.c"' for push tests.
	* tests/local.at (AT_PUSH_IF, AT_PURE_OR_PUSH_IF): Added.
	(AT_YYERROR_SEES_LOC_IF): push-parser makes this false.
	(AT_PURE_LEX_IF): True if pure or push parser.

2006-12-05  Joel E. Denny  <jdenny@ces.clemson.edu>

	Document Yacc prologue alternatives and default %destructor's and
	%printer's as experimental.  Don't mention Java yet.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00002.html>.
	* NEWS (2.3a+): Say they're experimental.  Remove any mention of Java.
	(2.3a): Annotate this entry to say the old forms of these features were
	also experimental.
	* doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols,
	Table of Symbols): Say they're experimental.  Comment out any mention
	of Java (we'll want this back eventually).

2006-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>

	Support a file name argument to %defines.  Deprecate `=' in
	%file-prefix, %name-prefix, and %output.  Discussed at
	<http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
	* NEWS (2.3a+): Mention.
	* doc/bison.texinfo (Decl Summary, Table of Symbols): Add entry for new
	form of %defines, and remove `=' from entries for %file-prefix,
	%name-prefix, and %output.
	* src/parse-gram.y (prologue_declaration): Implement.
	* tests/calc.at (Simple LALR Calculator, Simple GLR Calculator, Simple
	LALR1 C++ Calculator, Simple GLR C++ Calculator): Remove the `=' from
	all but one occurrence of %name-prefix.
	* tests/headers.at (export YYLTYPE): Remove the `=' from %name-prefix.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Likewise.
	* tests/output.at (AT_CHECK_OUTPUT): Remove the `=' from all but one
	occurrence of each of %file-prefix and %output.  Add check for %defines
	with argument.
	* tests/reduce.at (Useless Terminals, Useless Nonterminals,
	Useless Rules, Reduced Automaton, Underivable Rules, Empty Language):
	Remove the `=' from %output.

2006-11-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't escape $ in test case titles since Autoconf 2.61 now does that
	correctly.
	* tests/actions.at (Default %printer and %destructor are not for error
	or $undefined): Here.
	(Default %printer and %destructor are not for $accept): Here.
	* tests/input.at (Invalid $n and @n): Here.

2006-11-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Rename <!> to <>.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00039.html>.
	* NEWS (2.3a+): Update.
	* doc/bison.texinfo (Freeing Discarded Symbols, Table of Symbols):
	Update.
	* src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement.
	* src/scan-gram.l (INITIAL): Implement.
	* src/symlist.c (symbol_list_default_tagless_new): Update comment.
	* src/symlist.h (symbol_list, symbol_list_default_tagless_new): Update
	comment.
	* tests/actions.at (Default tagless %printer and %destructor,
	Default tagged and per-type %printer and %destructor,
	Default %printer and %destructor are not for error or $undefined,
	Default %printer and %destructor are not for $accept,
	Default %printer and %destructor for mid-rule values): Update.
	* tests/input.at (Default %printer and %destructor redeclared,
	Unused values with default %destructor): Update.

2006-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't let %prec take a nonterminal.
	* src/reader.c (grammar_current_rule_prec_set): Make the %prec symbol a
	token.
	* tests/input.at (%prec takes a token): New test checking that %prec
	won't take a nonterminal.

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

	* tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because
	it was double-quoted.
	* src/Makefile.am (YACC): Use --warnings=all,error so that Bison's own
	grammar is maintained with Bison's highest standards.
	* src/getargs.c: Fix some typos in Doxygen comments.

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

	Fix memory leaks in scanners generated by at least Flex 2.5.9 and
	later.  Reported by Paul Eggert in
	<http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00014.html>.
	* src/flex-scanner.h (yylex_destroy): Define for Flex before 2.5.9.
	* src/scan-code.l (translate_action): Don't bother invoking
	yy_delete_buffer (YY_CURRENT_BUFFER) before creating the first buffer.
	(code_scanner_free): Instead of invoking
	yy_delete_buffer (YY_CURRENT_BUFFER) directly, invoke yylex_destroy,
	which frees more.
	* src/scan-gram.l (gram_scanner_free): Likewise.
	* src/scan-skel.l (scan_skel): Likewise.

2006-11-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/files.c (tr): Change return type to void.
	* src/muscle_tab.c (muscle_insert): Free storage in case muscle_grow
	has been called previously for the same key.
	(muscle_find): Return storage instead of value so that
	--enable-gcc-warnings doesn't produce warnings that the return discards
	const.  aver that the value and storage are the same since storage
	could potentially be NULL when value is not.
	* tests/testsuite.at (AT_CHECK): Treat an unspecified exit value the
	same as 0.

2006-11-08  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing
	the earlier change today), m4/intl.m4, m4/intldir.m4.  This gives
	us a slightly cleaner distribution, and also works.
	* m4/.cvsignore: Add inline.m4, wint_t.m4 to accommodate recent
	gnulib changes.

2006-11-08  Joel E. Denny  <jdenny@ces.clemson.edu>
	and Paul Eggert  <eggert@cs.ucla.edu>

	Don't let Bison leak memory except when it complains.
	* src/files.h (parser_file_name, spec_verbose_file, spec_graph_file):
	(spec_defines_file, dir_prefix): Now char *, not const char *,
	since they are freed.
	* src/files.c: Likewise.
	(all_but_ext, all_but_tab_ext, src_extension, header_extension):
	Likewise.
	(tr): Now operates in-place.  All uses changed.
	(compute_exts_from_gf, compute_exts_from_src): Don't leak temporary
	values.
	(compute_file_name_parts, compute_output_file_names): Don't store
	read-only data in variables that will be freed.
	(compute_output_file_names): Free all_but_ext, all_but_tab_ext,
	src_extension, and header_extension.
	(output_file_names_free): New public function to free
	spec_verbose_file, spec_graph_file, spec_defines_file,
	parser_file_name, and dir_prefix.
	* src/getargs.c (getargs): Don't store read-only data in variables that
	will be freed.
	* src/main.c (main): Invoke output_file_names_free, code_scanner_free
	(which previously existed but was unused), and quotearg_free.
	* src/muscle_tab.h (muscle_insert): value arg is now a `char const *'.
	* src/muscle_tab.c: Likewise.
	(muscle_entry): Make the value char const *,
	and add a new storage member that is char * and can be freed.
	(muscle_entry_free): New private function.
	(muscle_init): Use it instead of free.
	(muscle_insert, muscle_grow): Update and use new storage member.
	(muscle_code_grow): Free the string passed to muscle_grow
	since it's not needed anymore.
	* src/parse-gram.y (%union): Make `chars' member a `char const *', and
	add a new `char *code' member.
	("{...}"): Declare semantic type as code.
	* src/scan-code.h (translate_rule_action):
	(translate_symbol_action, translate_code, translate_action): Return
	`char const *' rather than `char *' since external code should not free
	these strings.
	* src/scan-code.l: Likewise.
	* src/scan-gram.l (<SC_BRACED_CODE>): Use val->code for BRACED_CODE,
	which is "{...}" in the parser.
	* tests/Makefile.am (maintainer-check-valgrind): Set
	VALGRIND_OPTS='--leak-check=full --show-reacheable=yes' before invoking
	Valgrind.
	* tests/calc.at (_AT_DATA_CALC_Y): fclose the FILE* so Valgrind doesn't
	complain.
	* tests/testsuite.at (AT_CHECK): Redefine so that running Bison and
	expecting a non-zero exit status sets --leak-check=summary and
	--show-reachable=no for Valgrind.  Bison unabashedly leaks memory in
	this case, and we don't want to hear about it.

2006-11-08  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (runtime-po/Makevars): Derive from po/Makevars
	instead of from the template, to simplify configuration a bit.
	* bootstrap.conf (excluded_files): Don't exclude m4/codeset.m4
	and m4/wint_t.m4, as they are needed with the latest gnulib.

2006-10-31  Joel E. Denny  <jdenny@ces.clemson.edu>

	Disable unset/unused mid-rule value warnings by default, and recognize
	--warnings=midrule-values to enable them.  Discussed starting at
	<http://lists.gnu.org/archive/html/help-bison/2006-10/msg00030.html>.
	* NEWS (2.3a+): Mention.
	* src/getargs.c, src/getargs.h (warnings_args, warnings_types, enum
	warnings): Add entry for midrule-values subargument.
	* src/reader.c (symbol_should_be_used): Don't return true just because
	the value is a set/used mid-rule value unless
	--warnings=midrule-values was specified.
	* tests/input.at (Unused values, Unused values before symbol
	declarations): Run tests with and without --warnings=midrule-values.

	* src/reader.c (check_and_convert_grammar): Use symbol_list_free rather
	than LIST_FREE directly.

2006-10-31  Joel E. Denny  <jdenny@ces.clemson.edu>

	Finish implementing --warnings=error, which should not be implied by
	--warnings=all (or by its synonyms -W and --warnings without
	subarguments).
	* src/complain.c (set_warning_issued): New function to report that
	warnings are being treated as errors and to record an error if so.
	Invoke...
	(warn_at, warn): ... here.
	* src/getargs.c (warnings_args, warnings_types): Reorder so that
	"error - warnings are errors" does not appear above "all - all of the
	above".
	(getargs): For -W and --warnings without subarguments, don't let
	FLAGS_ARGMATCH set warnings_error in warnings_flag.
	* src/getargs.h (enum warnings): Unset warnings_error in warnings_all.

2006-10-31  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (flags_argmatch): Don't cause segmentation fault for
	empty subargument list.  For example: `bison  --warnings=  parser.y'.

2006-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/push.c, data/yacc.c: Make sure there's a newline at the end of
	the parser header file so that gcc doesn't warn.

2006-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Split the default %destructor/%printer into two kinds: <*> and <!>.
	Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00060.html>.
	* NEWS (2.3a+): Mention.
	* doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
	previous change today related to mid-rules.
	(Table of Symbols): Remove %symbol-default and add <*> and <!>.
	* src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
	(TYPE_TAG_ANY): Add as <*>.
	(TYPE_TAG_NONE): Add as <!>.
	(generic_symlist_item): Remove RHS for %symbol-default and add RHS's
	for <*> and <!>.
	* src/scan-gram.l (PERCENT_SYMBOL_DEFAULT): Remove.
	(TYPE_TAG_ANY, TYPE_TAG_NONE): Add.
	* src/symlist.c (symbol_list_default_new): Split into tagged and
	tagless versions.
	(symbol_list_destructor_set, symbol_list_printer_set): Split
	SYMLIST_DEFAULT case into SYMLIST_DEFAULT_TAGGED and
	SYMLIST_DEFAULT_TAGLESS.
	* src/symlist.h: Update symbol_list_default*_new prototypes.
	(symbol_list.content_type): Split enum value SYMLIST_DEFAULT into
	SYMLIST_DEFAULT_TAGGED and SYMLIST_DEFAULT_TAGLESS.
	* src/symtab.c (default_destructor, default_destructor_location,
	default_printer, default_printer_location): Split each into tagged and
	tagless versions.
	(symbol_destructor_get, symbol_destructor_location_get,
	symbol_printer_get, symbol_printer_location_get): Implement tagged
	default and tagless default cases.
	(default_destructor_set, default_printer_set): Split each into tagged
	and tagless versions.
	* src/symtab.h: Update prototypes.
	* tests/actions.at (Default %printer and %destructor): Rename to...
	(Default tagless %printer and %destructor): ... this, and extend.
	(Per-type %printer and %destructor): Rename to...
	(Default tagged and per-type %printer and %destructor): ... this, and
	extend.
	(Default %printer and %destructor for user-defined end token): Extend.
	(Default %printer and %destructor are not for error or $undefined):
	Update.
	(Default %printer and %destructor are not for $accept): Update.
	(Default %printer and %destructor for mid-rule values): Extend.
	* tests/input.at (Default %printer and %destructor redeclared): Extend.
	(Unused values with default %destructor): Extend.

2006-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't apply the default %destructor/%printer to an unreferenced midrule
	value.  Mentioned at
	<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00104.html>.
	* src/symtab.c (dummy_symbol_get): Name all dummy symbols initially
	like $@n instead of just @n so that the default %destructor/%printer
	logic doesn't see them as user-defined symbols.
	(symbol_is_dummy): Check for both forms of the name.
	* src/reader.c (packgram): Remove the `$' from each midrule symbol
	name for which the midrule value is referenced in any action.
	* tests/actions.at (Default %printer and %destructor for mid-rule
	values): New test.
	* tests/regression.at (Rule Line Numbers, Web2c Report): Update output
	for change to dummy symbol names.

2006-10-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Warn about unset midrule $$ if the corresponding $n is used.
	* src/reader.c (symbol_should_be_used): Check midrule parent rule for
	$n usage.
	(packgram): Before invoking grammar_rule_check on any rule, make sure
	all actions have already been scanned in order to set `used' flags.
	Otherwise, checking that a midrule's $$ is set will not always work
	properly because the midrule check must forward-reference the midrule's
	parent rule.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Extend to check the new
	warning.

2006-10-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	More improvements to the documentation of the prologue alternatives:
	* NEWS (2.3a+): Mention the new `Prologue Alternatives' section in the
	Bison manual.
	* doc/bison.texinfo (Prologue Alternatives): Correct some errors.  Add
	some text to clarify the relative importance of the new directives and
	to show how these directives may be viewed as code labels.

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

	Similar to the recently removed %before-header, add %code-top as the
	alternative to the pre-prologue.  Mentioned at
	<http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00063.html>.
	Also, let the prologue alternatives appear in the grammar section.
	* src/parse-gram.y (PERCENT_CODE_TOP): New token.
	(prologue_declaration): Move the existing prologue alternatives to...
	(grammar_declaration): ... here and add %code-top.
	* src/scan-gram.l (PERCENT_CODE_TOP): New token.

	Clean up and extend documentation for the prologue alternatives.
	* NEWS (2.3a+): Describe prologue alternatives.
	* doc/bison.texinfo (Prologue): Move discussion of prologue
	alternatives to...
	(Prologue Alternatives): ... this new section, and extend it to discuss
	all 4 directives in detail.
	(Table of Symbols): Clean up discussion of prologue alternatives and
	add %code-top.

2006-10-16  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issues.

	* djgpp/config.bat: config.hin has been moved to lib. Adjust
	config.bat accordingly.
	* djgpp/config.sed: Adjust config.sed for the use of autoconf 2.60.
	* djgpp/config.site: Likewise.

2006-10-16  Paolo Bonzini  <bonzini@gnu.org>

	Replace %*-header with %provides, %requires, %code.  See discussion at
	http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00002.html

	* data/bison.m4 (b4_user_requires, b4_user_provides): New.
	(b4_user_start_header): Remove.
	* data/glr.c: Use new macros instead of b4_*start_header
	and b4_*end_header.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/push.c: Likewise.
	* data/yacc.c: Likewise.

	* doc/bison.texinfo: Remove %before-header, rename
	%{start,end,after}-header to %requires, %provides, %code.

	* src/parse-gram.y: Likewise (also rename token names accordingly).
	* src/scan-gram.l: Likewise.
	* tests/actions.at: Likewise.

2006-10-14  Paul Eggert  <eggert@cs.ucla.edu>

	* lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS).
	Problem reported by Joel E. Denny.

2006-10-14  Jim Meyering  <jim@meyering.net>

	(Sync from coreutils.)
	Work also when the working directory (with e.g. coreutils sources)
	is version controlled with git, rather than CVS.
	* bootstrap (CVS_only_file): Test for the existence of README-cvs,
	rather than CVS.
	In messages and comments, say e.g., "checked-out sources",
	rather than "CVS sources".
	(version_controlled_file): New function.  Work for git as well as
	for CVS.  Don't use grep's -q option.
	(slurp): Call it here, in place of CVS-specific code.

2006-10-14  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix testsuite for ./configure --enable-gcc-warnings:
	* configure.ac (gcc-warnings): Move -Wall before -Wno-sign-compare.
	Otherwise, gcc 4.1.0 (at least) warns about sign comparisons in
	__AT_CHECK_PRINTER_AND_DESTRUCTOR in tests/actions.at.
	* test/input.at (Torturing the Scanner): #include <stdlib.h> for abort.
	* test/regression.at (Diagnostic that expects two alternatives):
	Likewise.

2006-10-12  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap.conf (gnulib_modules): Add config-h.
	* djgpp/subpipe.c: Include <config.h> unconditionally; don't
	worry about HAVE_CONFIG_H.
	* lib/abitset.c: Likewise.
	* lib/bitset.c: Likewise.
	* lib/bitset_stats.c: Likewise.
	* lib/bitsetv-print.c: Likewise.
	* lib/bitsetv.c: Likewise.
	* lib/ebitset.c: Likewise.
	* lib/get-errno.c: Likewise.
	* lib/lbitset.c: Likewise.
	* lib/subpipe.c: Likewise.
	* lib/timevar.c: Likewise.
	* lib/vbitset.c: Likewise.
	* lib/bitset.c: Include "bitset.h" first, to test interface.
	* lib/bitset_stats.c: Include "bitset_stats.h" first.
	* lib/bitsetv-print.c: Include "bitsetv-print.h" first.
	* lib/bitsetv.c: Include "bitsetv.h" first.
	* lib/get-errno.c: Include "get-errno.h" first.
	* m4/.cvsignore: Add config-h.m4.
	* tests/actions.at (Default %printer and %destructor for ...):
	Adjust expected line numbers in output to reflect removal of #if
	HAVE_CONFIG_H lines.
	* tests/glr-regression.at (Missed %merge type warnings when ...):
	Likewise.
	* tests/regression.at (Braced code in declaration in rules section):
	Likewise.
	* tests/atlocal.in (CPPFLAGS): Don't define HAVE_CONFIG_H.
	* tests/local.at (AT_DATA_GRAMMAR_PROLOGUE):
	Include <config.h> unconditionally.

	* bootstrap: Sync from coreutils, as follows:

	2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (symlink_to_gnulib): Fix bug: the dot_dots shell
	variable was sometimes used without being initialized.  This
	messed up the installation of the INSTALL file in some cases.

	2006-10-09  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (usage, main program, symlink_to_gnulib): Add option
	--copy.  Inspired by a suggestion from Bruno Haible.

	2006-10-03  Jim Meyering  <jim@meyering.net>

	* bootstrap: Undo last change to this file, since now gnulib-tool
	sticks with the automake default in generating dependencies.

2006-10-12  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac: Use AC_PROG_CC_STDC; this is more modern than
	the old AC_PROG_CC / AM_PROG_CC_STDC combination.

	* doc/bison.1: Add copyright notice.

	* data/glr.c: Don't include <stdarg.h>; not used.

	* NEWS: The -g and --graph options now output graphs in Graphviz
	DOT format, not VCG format.
	* doc/bison.1: Likewise.
	* doc/bison.texinfo (Understanding, Bison Options): Likewise.
	* THANKS: Add Satya Kiran Popuri, who proposed the initial version
	of this change in
	<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00158.html>.
	* TODO: Remove Graphviz entry.
	* src/Makefile.am (bison_SOURCES): Add graphviz.c and graphviz.h;
	remove vcg.c, vcg.h, vcg_defaults.h.
	* src/vcg.c, src/vcg.h, src/vcg_defaults.h: Remove.
	* src/graphviz.c, src/graphviz.h: New files.
	* src/files.c (compute_output_file_names): Output .dot, not .vcg.
	* src/files.h: Make comment more generic.
	* src/main.c (main): Likewise.
	* src/print_graph.h: Likewise.
	* src/getargs.c (usage): Make usage description more generic.
	* src/print_graph.c: Include graphviz.h rather than vcg.h.
	(static_graph, fgraph): Remove.  All uses changed to pass
	arguments instead of sharing a static var.
	(print_core, print_actions, print_state, print_graph):
	Output graphviz format rather than VCG format.
	* tests/.cvsignore: Remove *.vcg; add *.dot.
	* tests/output.at: Expect *.dot files, not *.vcg files.

	* data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
	accommodates the 2006-10-08 change.

2006-10-11  Bob Rossi  <bob@brasko.net>

	* data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
	(b4_yyssa, b4_yyerror_range): New macros.
	(struct yypvars): Remove yyssa_ptr and yyerror_range_ptr fields.
	(yypvarsinit): Remove init of removed fields.
	(yypushparse): Remove use of removed fields; use new macros instead.

2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>

	* data/push.c (yypushparse): Fix memory leak if yymsg is malloced
	in a push parser.  Reindent slightly to match yacc.c better.

2006-10-11  Bob Rossi  <bob@brasko.net>

	* data/push.c (struct yypvars): Remove yymsgbuf, yymsgbuf_ptr, yymsg,
	yymsg_alloc fields.
	(yypvarsinit, yypushparse): Remove init of removed fields.
	(yypushparse): Use yymsgbuf instead of yymsgbuf_ptr.

2006-10-09  Paul Eggert  <eggert@cs.ucla.edu>

	* THANKS: Add Paolo Bonzini and Bob Rossi.

2006-10-08  Paolo Bonzini  <bonzini@gnu.org>

	* data/c.m4 (b4_copyright, b4_epilogue, b4_location_initial_column,
	b4_location_initial_line, p4_parse_param, b4_ints_in, b4_flag_if,
	b4_define_flag_if and uses, b4_basename, b4_syncline, b4_user_code,
	b4_define_user_cde and uses): Remove.
	(b4_comment, b4_prefix, b4_sync_start): New.
	* data/bison.m4: New file, with most of the content removed from c.m4.
	* src/muscle_tab.h: Use "do {...} while(0)" throughout.
	* src/output.c (output_skeleton): Pass bison.m4.
	(prepare): Pass glr_flag and nondeterministic_flag.  Pass prefix
	only if specified.

2006-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	Fix test failure reported by Tom Lane in
	<http://lists.gnu.org/archive/html/bug-bison/2006-10/msg00000.html>
	and try to make such failures easier to catch in the future.
	* data/glr.c (YYTRANSLATE): Don't check for nonpositive arg;
	that's now the caller's responsibility.
	(yyprocessOneStack, yyrecoverSyntaxError, yyparse):
	Set yychar = YYEOF if it's negative.
	* tests/actions.at (yylex): Abort if asked to read past EOF.
	* tests/conflicts.at (yylex): Likewise.
	* tests/cxx-type.at (yylex): Likewise.
	* tests/glr-regression.at (yylex): Likewise.
	* tests/input.at (yylex): Likewise.
	* tests/regression.at (yylex): Likewise.
	* tests/torture.at (yylex): Likewise.

2006-10-01  Paul Eggert  <eggert@cs.ucla.edu>

	Fix problems with translating English-language diagnostics.
	* bootstrap: Fix bug introduced in recent bootstrap changes, with
	respect to bison-runtime pot generation.  The YY_ stuff
	wasn't being captured.
	* bootstrap.conf (XGETTEXT_OPTIONS_RUNTIME): New var.
	* po/POTFILES.in: Add src/location.c, src/scan-code.l.
	* runtime-po/POTFILES.in: Add data/push.c.

2006-09-29  Paul Eggert  <eggert@cs.ucla.edu>

	Merge bootstrap changes from coreutils.

	2006-09-28  Jim Meyering  <jim@meyering.net>

	Automatically generated dependencies are important even
	when all of the sources in a directory come from gnulib.
	* bootstrap (gnulib_tool): Remove the "no-dependencies" automake
	option that gnulib-tool adds to what becomes our lib/gnulib.mk.

	2006-09-23  Jim Meyering  <jim@meyering.net>

	* bootstrap (gnulib_tool_options): Add "--local-dir gl".

	2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Add support for --force.
	(usage): New function.  Describe usage less tersely.
	(CVS_only_file): New var.

2006-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/push.c (YYPUSH_MORE): Make it an enum instead.
	(yypushparse): Use YYPUSH_MORE instead of the mystery constant.
	Adjust white space and comments to match GNU style better.

2006-09-20  Bob Rossi  <bob@brasko.net>

	* data/push.c (yyresult_get): Remove function.
	(YYPUSH_MORE): Add #define.
	(yypushparse): Modify return value.

2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>

	* stamp-h.in: Remove; no longer needed.
	* .cvsignore: Replace autom4te.cache and config.cache with *.cache.
	Remove config.h, config.hin, intl (no longer created).
	* lib/.cvsignore: Add config.h, config.hin, configmake.h, inttypes.h,
	stamp-h1.

	Sync bootstrap from coreutils, as follows:

	2006-09-18  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (symlink_to_gnulib): New function.
	(cp_mark_as_generated): Use it, to prefer symlinks-to-gnulib
	to copies-of-gnulib.
	(cp_mark_as_generated, slurp, gnulib_files):
	Avoid making a copy if it's the same as the old version.
	(gnulib_files): Add support for this variable (used by Bison).

2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>

	* src/getargs.c (usage): Rework to use conventions similar to
	coreutils, to make translation a bit easier and the code a bit
	smaller.  Problem reported by Tim Van Holder.

2006-09-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use some of gnulib's new modules, taken from coreutils.

	* bootstrap: Sync from coreutils, except add support for gnulib_files.
	* bootstrap.conf: New file.
	(gnulib_modules): Add configmake, inttypes, unistd.
	(XGETTEXT_OPTIONS): Add complain, complain_at,
	fatal, fatal_at, warn, warn_at, unexpected_end.
	* configure.ac (AC_CONFIG_HEADERS): config.h is now in lib, not here.
	(gl_USE_SYSTEM_EXTENSIONS): Remove; gl_EARLY now does this.
	(gl_EARLY): Add.
	(AM_STDBOOL_H): Remove; gl_INIT now dows this.
	(gl_INIT): Add
	(GNULIB_AUTOCONF_SNIPPET): Remove.
	(AM_GNU_GETTEXT): Add; require formatstring macros since that's
	the pickiest.
	* lib/.cvsignore: Add inttypes_.h.
	* lib/Makefile.am: Include gnulib.mk first so we can append to it.
	(AM_CFLAGS): Add WERROR_CFLAGS, to be more like coreutils.
	(BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Remove
	no-longer-necessary initializations.
	(lib_SOURCES): Remove, replacing by libbison_a_SOURCES.
	* lib/subpipe.c: Include <unistd.h> unconditionally, now that we
	use the unistd module.
	* src/system.h: Likewise.
	* m4/.cvsignore: Remove *_gl.m4, gnulib.m4, inttypes_h.m4, uintmax_t.m4,
	ulonglong.m4.  Add gettext.m4, gnulib-cache.m4, gnulib-comp.m4,
	gnulib-tool.m4, inttypes-h.m4, inttypes-pri.m4, inttypes.m4.
	* src/Makefile.am (DEFS): Remove, since configmake does this for us.
	(AM_CPPFLAGS): Remove -I../lib, since Automake does that for us.
	* src/system.h: Include inttypes.h unconditionally, now that we
	use the inttypes module.  Don't bother to include stdint.h, since
	inttypes.h now does that for us.
	(LOCALEDIR): Remove, now that we use the configmake module.
	* src/getargs.c: Include configmake.h.
	* src/main.c: Likewise.
	* src/output.c: Likewise.
	* tests/atlocal.in (CPPFLAGS): Include from $abs_top_builddir/lib,
	not from $abs_top_builddir, since config.h moved.


	Port to GCC 2.95.  First two problems reported by Michael Deutschmann in
	<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00018.html>.

	* src/parse-gram.y (symbol_declaration): Don't put statements
	before declarations; it's not portable to C89.
	* src/scan-code.l (handle_action_at): Likewise.

	* src/scan-code.l: Always initialize braces_level; the old code
	left it uninitialized and therefore had undefined behavior.

	Don't attempt to redefine 'assert', since it runs afoul of
	systems where standard headers (mistakenly) include <assert.h>.
	Instead, define and use our own alternative, called 'aver'.
	* src/reader.c: Don't include assert.h, since we no longer
	use assert.
	* src/scan-code.l: Likewise.
	* src/system.h (assert): Remove, replacing with....
	(aver): New function, taking a bool arg.  All uses changed.
	* src/tables.c (pack_vector): Ensure that aver arg is bool,
	not merely an integer.

2006-09-15  Bob Rossi  <bob@brasko.net>

	Add support for push parsing.  Based on the original work of
	Odd Arild Olsen <oao@fibula.no>.
	* data/Makefile.am (dist_pkgdata_DATA): Add push.c.
	* data/c.m4 (YYPUSH): New.
	(b4_push_if): New macro.  Use it instead of #ifdef YYPUSH.
	* data/push.c: New file.
	* src/getargs.c (push_parser): New var.
	* src/getargs.h (push_parser): New declaration.
	* src/output.c (prepare): Add macro insertion of `push_flag'.
	* src/parse-gram.y (PERCENT_PUSH_PARSER): New token.
	(prologue_declaration): Parse %push-parser.
	* src/scan-gram.l: Scan new PERCENT_PUSH_PARSER token.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Add "Return" and "Now" to
	list of removed lines from the traces observed.
	(AT_CHECK_CALC_LALR): Added push parser tests.

2006-09-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.3a.
	* configure.ac (AC_INIT): Likewise.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
	"#define YYSTYPE int" that caused "make maintainer-check" to fail
	due to header ordering dependencies.  I don't know why the #define
	was there.

	Fix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
	runtime cost when YYDEBUG is not defined, and so that some tests
	that used to fail now work.  Problem and initial suggestion by
	Paolo Bonzini.
	* data/c++.m4 (b4_parse_param_cons): Omit leading ','.
	* data/glr.cc (b4_parser_class_name):
	Initialize yycdebug_ only if YYDEBUG.  Also, initialize yydebug_.
	(debug_level, set_debug_level): Affect yydebug_, not ::yydebug.
	(yydebug_) [YYDEBUG]: New member.
	(yycdebug_): Now defined only if YYDEBUG.
	* data/lalr1.cc (yydebug_, yycdebug_): Now defined only if YYDEBUG.
	(YYCDEBUG) [!YYDEBUG]: Don't use yydebug_ and yycdebug_.
	(b4_parser_class_name): Initialize yydebug_ and yycdebug_ only
	if YYYDEBUG.
	(debug_stream, set_debug_stream, debug_level, set_debug_level):
	Define only if YYDEBUG.
	* tests/calc.at (_AT_DATA_CALC_Y) [!YYDEBUG]: Omit call to
	set_debug_level.
	* tests/regression.at (_AT_DATA_DANCER_Y) [!YYDEBUG]: Likewise.
	* tests/calc.at (AT_CHECK_CALC_GLR_CC): Uncomment calls to
	AT_CHECK_CALC_GLR_CC that are working now.

2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.
	We don't need them in glr.cc, and glr.c defines them.
	Defining YYERROR_VERBOSE to 0 here breaks glr.c, since glr.c
	assumes that defining it to anything is the same as defining
	it to 1.  Problem reported by Paolo Bonzini.

2006-09-12  Paolo Bonzini  <bonzini@gnu.org>  (tiny change)

	* data/c.m4 (b4_null, b4_case): Define.
	* src/output.c (prepare_symbols): Use b4_null.
	(user_actions_output): Use b4_case.

2006-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (b4_shared_declarations): Put start-header first,
	before any #includes that we generate, so that feature-test
	macros work.  Problem reported by Michael Deutschmann in
	<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
	* data/lalr1.cc: Likewise.
	* doc/bison.texinfo (Prologue): Document that feature-test macros
	should be defined before any Bison declarations.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
	that depend on location.hh after, not before, Bison decls, since
	we now include location.hh after the first user prologue.

	* doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
	Sander Brandenburg in
	<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
	Also, fix minor white space and comment issues.
	(Prologue): Mention that it's better to define feature-test macros
	before Bison declarations.  Problem reported by Michael Deutschmann.

	* README-cvs: Fix typo: "&" should be "&&".  Problem reported
	by Jim Meyering.
	* m4/.cvsignore: Add argmatch.m4.  Remove obstack.m4, strerror_r.m4.
	This adjusts to recent gnulib changes.

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

	Finish implementation of per-type %destructor/%printer.  Discussed
	starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>
	and
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>.
	* NEWS (2.3+): Add a description of this feature to the default
	%destructor/%printer description.
	* doc/bison.texinfo (Freeing Discarded Symbols): Likewise.
	* src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
	Invoke semantic_type_destructor_set or semantic_type_printer_set when a
	list node contains a semantic type.
	* src/symtab.c, src/symtab.h: Extend with a table that associates
	semantic types with their %destructor's and %printer's.
	(semantic_type_from_uniqstr, semantic_type_get,
	semantic_type_destructor_set, semantic_type_printer_set): New functions
	composing the public interface of that table.
	(symbol_destructor_get, symbol_destructor_location_get,
	symbol_printer_get, symbol_printer_location_get):  If there's no
	per-symbol %destructor/%printer, look up the per-type before trying
	the default.
	* tests/actions.at (Per-type %printer and %destructor): New test case.
	* tests/input.at (Default %printer and %destructor redeclared):
	Extend to check that multiple occurrences of %symbol-default in a
	single %destructor/%printer declaration is an error.
	(Per-type %printer and %destructor redeclared, Unused values with
	per-type %destructor): New test cases.

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

	Require default %destructor/%printer to be declared using
	%symbol-default instead of an empty symbol list, and start working on
	new per-type %destructor/%printer.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
	* NEWS (2.3+): Add %symbol-default to example.
	* bison.texinfo (Freeing Discarded Symbols): Likewise.
	(Table of Symbols): Add entry for %symbol-default.
	* src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token.
	(generic_symlist, generic_symlist_item): New nonterminals for creating
	a list in which each item is a symbol, semantic type, or
	%symbol-default.
	(grammar_declaration): Use generic_symlist in %destructor and %printer
	declarations instead of symbols.1 or an empty list.
	(symbol_declaration, precedence_declaration, symbols.1): Update actions
	for changes to symbol_list.
	* src/reader.c: Update for changes to symbol_list.
	* src/scan-code.l: Likewise.
	* src/scan-gram.l: Scan new PERCENT_SYMBOL_DEFAULT token.
	* src/symlist.c, src/symlist.h: Extend such that a list node may
	represent a semantic type or a %symbol-default in addition to just an
	ordinary symbol.  Add switched functions for setting %destructor's and
	%printer's.
	* tests/actions.at, tests/input.at: Add %symbol-default to all default
	%destructor/%printer declarations.

2006-08-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	Whether the default %destructor/%printer applies to a particular symbol
	isn't a question of whether the user *declares* that symbol (in %token,
	for example).  It's a question of whether the user by any means
	*defines* the symbol at all (by simply using a char token, for
	example).  $end is defined by Bison whereas any other token with token
	number 0 is defined by the user.  The error token is always defined by
	Bison regardless of whether the user declares it with %token, but we
	may one day let the user define error as a nonterminal instead.
	* NEWS (2.3+): Say "user-defined" instead of "user-declared".
	* doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
	the meaning of "user-defined".
	* tests/actions.at (Default %printer and %destructor for user-declared
	end token): Rename to...
	(Default %printer and %destructor for user-defined end token): ...
	this.

	* src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
	computation of whether to apply the default, don't maintain a list of
	every Bison-defined symbol.  Instead, just check for a first character
	of '$', which a user symbol cannot have, and check for the error token.

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

	Don't apply the default %destructor or %printer to the error token,
	$undefined, or $accept.  This change fits the general rule that the
	default %destructor and %printer are only for user-declared symbols,
	and it solves several difficulties that are described in the new test
	cases listed below.
	* src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
	* tests/actions.at (Default %printer and %destructor are not for error
	or $undefined, Default %printer and %destructor are not for $accept):
	New test cases.

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

	Allow %start after the first rule.
	* src/reader.c (grammar_current_rule_begin): Don't set the start symbol
	when parsing the first rule.
	(check_and_convert_grammar): Search for it here after all grammar
	declarations have been parsed.  Skip midrules, which have dummy LHS
	nonterminals.
	* src/symtab.c (symbol_is_dummy): New function.
	* src/symtab.h (symbol_is_dummy): Declare it.
	* tests/input.at (%start after first rule): New test.

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

	Redo some of the previous commit: add back the ability to use
	non-aliased/undeclared string literals since it might be useful to
	those declaring %token-table.
	* src/reader.c (check_and_convert_grammar): Undo changes in previous
	commit: don't worry about complaints from symbols_pack.
	* src/symtab.c (symbol_new, symbol_class_set,
	symbol_check_alias_consistency): Undo changes in previous commit: count
	each string literal as a new symbol and token, assign it a symbol
	number, and don't complain about non-aliased string literals.
	(symbols_pack): Since symbol_make_alias still does not decrement symbol
	and token counts but does still set aliased tokens to the same number,
	symbol_pack_processor now leaves empty slots in the symbols array.
	Remove those slots.
	* tests/regression.at (Undeclared string literal): Remove test case
	added in previous commit since non-aliased string literals are allowed
	again.
	(Characters Escapes, Web2c Actions): Undo changes in previous commit:
	remove unnecessary string literal declarations.
	* tests/sets.at (Firsts): Likewise.

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

	Don't allow an undeclared string literal, but allow a string literal to
	be used before its declaration.
	* src/reader.c (check_and_convert_grammar): Don't invoke packgram if
	symbols_pack complained.
	* src/symtab.c (symbol_new): Don't count a string literal as a new
	symbol.
	(symbol_class_set): Don't count a string literal as a new token, and
	don't assign it a symbol number since symbol_make_alias does that.
	(symbol_make_alias): It's not necessary to decrement the symbol and
	token counts anymore.  Don't assume that an alias declaration occurs
	before any uses of the identifier or string, and thus don't assert that
	one of them has the highest symbol number so far.
	(symbol_check_alias_consistency): Complain if there's a string literal
	that wasn't declared as an alias.
	(symbols_pack): Bail if symbol_check_alias_consistency failed since
	symbol_pack asserts that every token has been assigned a symbol number
	although undeclared string literals have not.
	* tests/regression.at (String alias declared after use, Undeclared
	string literal): New test cases.
	(Characters Escapes, Web2c Actions): Declare string literals as
	aliases.
	* tests/sets.at (Firsts): Likewise.

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

	In the grammar scanner, STRING_FINISH unclosed constructs and return
	them to the parser in order to improve error messages.
	* src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER,
	SC_BRACED_CODE, SC_PROLOGUE): Implement.
	* tests/input.at (Unclosed constructs): New test case.
	* tests/regression.at (Invalid inputs): Update now that unclosed %{ is
	seen.

	* src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove
	unused global.

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

	Handle string aliases for character tokens correctly.
	* src/symtab.c (symbol_user_token_number_set): If the token has an
	alias, check and set its alias's user token number instead of its own,
	which is set to indicate the alias.  Previously, every occurrence of
	the character token in the grammar overwrote that alias indicator with
	the character code.
	* tests/input.at (String aliases for character tokens): New test.

2006-08-12  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.

2006-08-11  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
	to prevent failures when building on older platforms.
	Check for autopoint failure.
	Set XGETTEXT_OPTIONS to values that check for C format strings,
	so that translators are warned about them (this also helps
	prevent core dumps).

	* lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
	function, since it simplifies our code a bit.

	* configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
	rather than -W, so we don't get bogus warnings about sign comparisons.
	Add -Wpointer-arith, since that warning is useful (it reports code
	that does not conform to C89 and that some compilers reject).
	* data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change,
	since it's no longer needed.

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

	Clean up scanners a bit.
	* src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack
	definitions so gcc won't warn when obstack_for_string is unused.
	* src/scan-code.l: config.h and system.h are already #include'd by
	scan-code-c.c, so get rid of them here.
	* src/scan-gram.l: Likewise.
	* src/scan-skel.l: Likewise, and use flex-scanner.h without obstack
	definitions rather than duplicating the rest of it.
	* src/scan-gram-c.c, scan-skel-c.c: #include "system.h".

2006-08-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	Suppress signed/unsigned comparison warnings for yycheck.
	* data/c.m4 (b4_safest_int_type): New macro.
	* data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against
	a signed int type, cast it to b4_safest_int_type first.
	* data/yacc.c: Likewise.
	(b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is
	also overwritten.

2006-08-09  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>  (tiny change)

	* doc/bison.texinfo: Fix some typos.

2006-08-02  Paul Eggert  <eggert@cs.ucla.edu>

	* m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
	po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4.

	* bootstrap (gnulib_tool): Stop using --assume-autoconf;
	the latest gnulib does this a different way.
	(get_translations): Sharuzzaman Ahmat Raslan reported that the ms
	translation was patched, so stop omitting it.

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

	Enable declaration of default %printer/%destructor.  Make the parser
	use these for all user-declared grammar symbols for which the user does
	not declare a specific %printer/%destructor.  Thus, the parser uses it
	for token 0 if the user declares it but not if Bison generates it as
	$end.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
	and
	<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
	* NEWS (2.3+): Mention.
	* doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to
	declare a %destructor for a mid-rule's semantic value.  It's just
	impossible to declare one specific to it.
	(Freeing Discarded Symbols): Mention that @$ can be used in %destructor
	code.  Describe default %destructor form.
	* src/parse-gram.y (grammar_declaration): Parse default
	%printer/%destructor declarations.
	* src/output.c (symbol_destructors_output): Use symbol_destructor_get
	and symbol_destructor_location_get rather than accessing the destructor
	and destructor_location members of struct symbol.
	(symbol_printers_output): Likewise but for %printer's.
	* src/reader.c (symbol_should_be_used): Likewise but for %destructor's
	again.
	* src/symtab.c (default_destructor, default_destructor_location,
	default_printer, default_printer_location): New static global
	variables to record the default %destructor and %printer.
	(symbol_destructor_get, symbol_destructor_location_get,
	symbol_printer_get, symbol_printer_location_get): New functions to
	compute the appropriate %destructor and %printer for a symbol.
	(default_destructor_set, default_printer_set): New functions to set the
	default %destructor and %printer.
	* src/symtab.h: Prototype all those new functions.
	* tests/actions.at (Default %printer and %destructor): New test to
	check that the right %printer and %destructor are called, that they're
	not called for $end, and that $$ and @$ work correctly.
	(Default %printer and %destructor for user-declared end token): New
	test to check that the default %printer and %destructor are called for
	a user-declared end token.
	* tests/input.at (Default %printer and %destructor redeclared, Unused
	values with default %destructor): New tests to check related grammar
	warnings and errors.

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

	Clean up handling of %destructor for the end token (token 0).
	Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
	and
	<http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.

	Make the skeletons consistent in how they pop the end token and invoke
	its %destructor.
	* data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start
	state, which has token number 0, since this would invoke the
	%destructor for the end token.
	* data/lalr1.cc (yy::parser::parse): Don't check for the final state
	until after shifting the end token, or else it won't be popped.
	* data/yacc.c (yyparse): Likewise.

	* data/glr.c (yyparse): Clear the lookahead after shifting it even when
	it's the end token.  Upon termination, destroy an unshifted lookahead
	even when it's the end token.
	* data/lalr1.cc (yy::parser::parse): Likewise.
	* data/yacc.c (yyparse): Likewise.

	* src/reader.c (packgram): Don't check rule 0.  This suppresses unused
	value warnings for the end token when the user gives the end token a
	%destructor.

	* tests/actions.at (Printers and Destructors): Test all the above.

2006-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	Update to latest gnulib and gettext versions.
	* bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
	Add fopen-safer.
	(gnulib_files): Add m4/warning.m4.  Don't worry about files
	overwritten by autopoint.
	Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
	Suppress "id", "ms", "tr" translations for now, since gettext 0.15
	rejects them.
	Don't use autoreconf; instead, invoke autopoint etc. by hand,
	so that we can remove the intl files at a better time.
	(intl_files_to_remove): Remove aclocal.m4, since it gets
	rebuilt anyway.  Remove m4/inttypes_h.m4, m4/inttypes.m4,
	m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
	m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
	Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
	Remove datarootdir hack; no longer needed.
	* configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
	(AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
	* lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
	strdup.h.
	* m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
	* m4/warning.m4: Remove from CVS, since we now use gnulib's version.

2006-07-20  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Adjust to today's change to gnulib-tool by invoking
	it with --assume-autoconf='latest-stable'.

2006-07-13  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
	least 1.4.7 and 1.4.4) by putting a #line between `typedef union
	YYSTYPE' and `{'.
	* src/muscle_tab.h (muscle_grow): Replace the header comments with
	those from muscle_tab.c since the old ones are misleading.

2006-07-13  Akim Demaille  <akim@epita.fr>

	Support %define "KEY" {VALUE}.
	* src/scan-code.h, src/scan-code.l (translate_action)
	(translate_rule_action, translate_symbol_action, translate_code):
	Return char *, not const char *.
	* src/parse-gram.y (declaration): Rename as...
	(prologue_declaration): this.
	(string_content): Remove this nonterminal, use STRING.
	(braceless, content, content.opt): New nonterminal.
	Use them.
	(%define): Now accept content.opt, i.e., accept also BRACED_CODE
	as value.
	* src/scan-gram.l (getargs.h): Don't include it.

2006-07-12  Paul Eggert  <eggert@cs.ucla.edu>

	* data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
	rather than a for-loop that declares a local bool variable.  This
	should work around a compatibility problem with a Cray x1e C++
	compiler reported by Hung Nguyen in
	<http://lists.gnu.org/archive/html/help-bison/2006-07/msg00022.html>.
	The for-loop was introduced in the 2004-11-17 change but I don't
	know why it was needed.

2006-07-12  Akim Demaille  <akim@epita.fr>

	* data/c.m4: Comment changes.

2006-07-10  Akim Demaille  <akim@lrde.epita.fr>

	* src/complain.c (error_message, ERROR_MESSAGE): New.
	To factor...
	(fatal_at, fatal, warn_at, warn, complain_at, complain): these.
	* src/complain.h, src/complain.c (warning_issued): Remove, unused.

2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Instead of %union, you can define and use your own union type
	YYSTYPE if your grammar contains at least one <type> tag.
	Your YYSTYPE need not be a macro; it can be a typedef.
	* doc/bison.texinfo (Value Type, Multiple Types, Location Type):
	(Union Decl, Decl Summary): Document this.
	* data/glr.c (YYSTYPE): Implement this.
	* data/glr.cc (YYSTYPE): Likewise.
	* data/lalr1.cc (YYSTYPE): Likewise.
	* data/yacc.c (YYSTYPE): Likewise.
	* src/output.c (prepare): Output tag_seen_flag.
	* src/parse-gram.y (declaration, grammar_declaration):
	Use 'union_seen' rather than 'typed' to determine whether
	%union has been seen, since grammars can now be typed without
	%union.
	(symbol_declaration, type.opt, symbol_def):
	Keep track of whether a tag has been seen.
	* src/reader.c (union_seen, tag_seen): New vars.
	(typed): remove.
	* src/reader.h (union_seen, tag_seen, typed): Likewise.
	* src/scan-code.l (untyped_var_seen): New variable.
	(handle_action_dollar): Adjust to above changes.
	(handle_action_dollar, handle_action_at):
	Improve overflow checking for outlandish numbers.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
	avoid new diagnostics generated by above changes.
	* tests/regression.at (YYSTYPE typedef): Add test to check
	for type tags without %union.

	* src/symlist.c (symbol_list_length): Return int, not unsigned
	int, since callers expect int.  This may need to get revisited
	once we have proper integer overflow checking.

	* src/scan-gram.h (gram_scanner_cursor): Remove decl, since this
	object is now static.

	* src/getargs.c (flags_argmatch): Return void, not int,
	to pacify ./configure --enable-gcc-warnings.

	* src/flex-scanner.h (STRING_FREE): Don't use FLEX_PREFIX (last_string)
	since last_string is already defined to FLEX_PREFIX (last_string).

2006-07-09  Akim Demaille  <akim@lrde.epita.fr>

	Implement --warnings/-W.
	* src/getargs.c (report_argmatch, trace_argmatch): Remove,
	replaced by...
	(flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
	Adjust callers.
	* src/getargs.h, src/getargs.c (warnings, warnings_flags)
	(warnings_args, warnings_types): New.
	(getargs, short_options, long_options): Accept -W/--warnings.
	Sort the options by alphabetical order, upper case letter right
	before its lower case.

2006-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	Change %merge result type clash warnings to errors.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
	* src/reader.c (record_merge_function_type): Use complain_at.
	* tests/glr-regression.at (Missed %merge type warnings when LHS type is
	declared later): Update test case results.

2006-07-09  Akim Demaille  <akim@lrde.epita.fr>

	* src/getargs.h, src/getargs.c: Swap --report and --trace handling
	to be in alphabetical order.
	(trace_args): Spelling fixes.

2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
	so they don't collide with user-defined macros.
	(yy_stack_print): Don't assume that yytype_int16 promotes to int;
	this was never guaranteed, and now that we're using gnulib stdint,
	which defines int_fast16_t to long int, the problem is exposed.

2006-07-08  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_basename): Simplify a bit, since we don't
	need the full POSIX semantics (and weren't implementing them
	anyway).

	Adjust to Autoconf 2.60 and today's gnulib.
	* bootstrap (gnulib_modules): Add stdint.
	Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
	no longer copies it.
	(intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
	since stdint needs the former and wcwidth (which is now required
	by mbswidth) needs the latter.
	Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
	work around a compatibility glitch between gettext 0.14.6 and
	Autoconf 2.60.
	* configure.ac (AC_PREREQ): Require Autoconf 2.60.
	Do not check for uintptr_t, since new stdint module does the right
	thing.
	* lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
	Add stdint.h, stdint_.h, wcwidth.h.
	* m4/.cvsignore: Remove alloca.m4, onceonly.m4.
	Add absolute-header.m4, double-slash-root.m4, longlong.m4,
	stdint.m4, wchar_t.m4, wcwidth.m4.
	* src/files.c: Include <dirname.h> and <stdio-safer.h> in the
	usual order for ../lib/*.h files.
	(file_name_split): Use last_component, not base_name, to adjust
	to gnulib changes.
	* src/parse-gram.h: Include <strverscmp.h> in the usual order
	for ../lib/*.h files.
	(YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
	Define unconditionally, since we now assume the stdint module.
	* src/scan-skel.l: Include <dirname.h>.
	(BASE_QPUTS): Use last_component, not base_name.
	* src/system.h: Include <unlocked-io.h> in the usual order
	for ../lib/*.h files.  Include <stdint.h> unconditionally,
	since we now use the stdint module.
	(uintptr_t): Declare if UINTPTR_MAX is not defined, not
	HAVE_UINTPTR_T, since we now use the stdint module.
	(base_name): Remove decl, since files now include <dirname.h>
	to get the decl.

2006-07-08  Akim Demaille  <akim@lrde.epita.fr>

	* data/c.m4 (b4_location_initial_column, b4_location_initial_line):
	New, default to 1.
	* data/yacc.c, data/glr.c, data/location.cc: Use them.
	* NEWS, doc/bison.texinfo: The initial column and line are 1 by
	default.
	* tests/calc.at: Adjust.

2006-07-08  Akim Demaille  <akim@lrde.epita.fr>

	* data/c.m4 (b4_basename): New.
	(b4_syncline): Also output the location of its invocation (from
	the skeleton).
	(b4_user_action, b4_define_user_action, b4_user_actions)
	(b4_user_initial_action, b4_user_post_prologue,	b4_user_start_header)
	(b4_user_stype): New.
	* data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.

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

	In the grammar file, the first column is 1 not 0 on the first line as
	on every other line.
	* src/parse-gram.y (%initial-action): Initialize @$ correctly.
	* tests/input.at (Torturing the Scanner): Update output.

	* src/scan-gram.l (scanner_cursor): Declare it static.

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

	In warnings, say "previous declaration" rather than "first
	declaration".
	* src/symtab.c (redeclaration): Do that here.
	* src/reader.c (record_merge_function_type): In the case of a result
	type clash, report the previous declaration rather than the very first
	one in the grammar file.
	* tests/glr-regression.at (Missed %merge type warnings when LHS type is
	declared later): Add a third declaration to check this behavior.
	* tests/input.at (Incompatible Aliases): Update output.

2006-06-27  Akim Demaille  <akim@epita.fr>

	* doc/Doxyfile.in: New.
	* doc/Makefile.am: Use it.
	* src/lalr.h, src/symtab.h: Initial doxygenation.

2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't miss %merge result type warnings just because the LHS types are
	declared after the %merge.  This continues the effort of the previous
	patch.
	* src/reader.c (get_merge_function): Don't set the merger type yet.
	(record_merge_function_type): New function for setting the merger type
	and checking for clashes.
	(grammar_current_rule_merge_set): Set the location of the %merge for
	the current rule.
	(packgram): Invoke record_merge_function_type for each rule now that
	all symbol type declarations have been parsed.
	* src/reader.h (merger_list.type_declaration_location): New member
	storing the location of the first %merge from which the type for this
	merging function was derived.
	* src/symlist.h (symbol_list.merger_declaration_location): New member
	storing the location of a rule's %merge, if any.
	* tests/glr-regression.at (Missed %merge type warnings when LHS type is
	declared later): New test to catch the error fixed by the above patch.

2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	Get action warnings (grammar_rule_check) right even when symbol
	declarations appear after the rules.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
	and
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
	Don't mistake the type of $$ in a midrule to be that of its parent
	rule's $$.
	* src/reader.c (grammar_current_rule_end): Don't invoke
	grammar_rule_check yet since not all symbol declarations may have been
	parsed yet.
	(grammar_midrule_action): Likewise.
	Don't record whether the midrule's $$ has been used yet since actions
	haven't been translated yet.
	Record the midrule's parent rule and its RHS index within the parent
	rule.
	(grammar_current_rule_action_append): Don't translate the action yet
	since not all symbol declarations may have been parsed yet and, thus,
	warnings about types for $$, $n, @$, and @n can't be reported yet.
	(packgram): Translate the action and invoke grammar_rule_check now that
	all symbol declarations have been parsed.
	* src/scan-code.l (handle_action_dollar): Now that this is invoked
	after parsing the entire grammar file, the symbol list here in the case
	of a midrule is actually the midrule's empty RHS, so reference its
	parent rule's RHS where necessary.
	On the other hand, now that you can already know it's a midrule, you
	aren't forced to think $$ has the same type as its parent rule's $$.
	(handle_action_at): In the case of a midrule, reference the parent rule
	where necessary.
	* src/symlist.c (symbol_list_new): Initialize new midrule-related
	members.
	(symbol_list_length): Now that this is invoked after all rules have
	been parsed, a NULL symbol (rather than a NULL symbol list node)
	terminates a rule.  symbol_list_print already does this correctly.
	* src/symlist.h (symbol_list.midrule_parent_rule,
	symbol_list.midrule_parent_rhs_index): New members so that midrules can
	remember their relationships with their parents.
	* tests/input.at (Type Clashes): Extend to catch the midrule $$ error
	fixed by the above patch.
	(_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
	implementing...
	(Unused values): ... this old test case and...
	(Unused values before symbol declarations): ... this new test case.
	This one is the same as `Unused values' except that all symbol
	declarations appear after the rules in order to catch the rest of the
	errors fixed by the above patch.

2006-06-26  Joel E. Denny  <jdenny@ces.clemson.edu>

	More cleanup.
	* src/reader.c (current_rule): Declare it static since it's no longer
	used outside this file.
	(grammar_current_rule_action_append): Remove redundant arguments from
	translate_rule_action invocation.
	* src/reader.h (current_rule): Remove this unused extern.
	* src/scan-code.h (translate_rule_action): Remove redundant arguments.
	* src/scan-code.l (translate_rule_action): Likewise.

2006-06-25  Joel E. Denny  <jdenny@ces.clemson.edu>

	Clean up yesterday's patch.
	* parse-gram.y (rhs): Move grammar_midrule_action invocation from here
	to...
	* src/reader.c (grammar_current_rule_action_append): ... here for
	consistency with grammar_current_rule_symbol_append.
	* tests/regression.at (Braced code in declaration in rules section):
	Make yyerror and yylex static as usual.

2006-06-24  Joel E. Denny  <jdenny@ces.clemson.edu>

	Fix bug that mistakes braced code in a declaration in the rules section
	to be a rule action.  Mentioned at
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
	* src/scan-gram.l: Move midrule action detection from the start of the
	scanning of any braced code to...
	* src/parse-gram.y (rhs): ... the parsing of braced code as a rule
	action.  For readability, use $2 and @2 rather than the equivalent
	global variables.
	* tests/regression.at (Braced code in declaration in rules section):
	New test to catch the error fixed by the above patch.

	Work on code readability some.
	* src/scan-code.l (current_rule): Get rid of this misleading and
	redundant declaration: it's actually extern'ed in reader.h.
	(YY_DECL, code_lex, handle_action_dollar, handle_action_at,
	translate_action): Add a rule argument and use it instead of the global
	current_rule.
	(translate_rule_action): This already receives current_rule through an
	argument, so pass it on to translate_action instead of assigning
	current_rule to current_rule.
	(translate_symbol_action, translate_code): Pass rule = NULL to
	translate_action.

2006-06-23  Joel E. Denny  <jdenny@ces.clemson.edu>

	Rename %before-definitions to %start-header and %after-definitions to
	%end-header.  Don't use these declarations to separate pre-prologue
	blocks from post-prologue blocks.  Add new order-independent
	declarations %before-header and %after-header as alternatives to the
	traditional Yacc pre-prologue and post-prologue blocks.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
	* NEWS (2.3+): Update for these changes.
	* data/glr.c (b4_before_definitions): Update to...
	(b4_start_header): ... this.
	(b4_after_definitions): Update to...
	(b4_end_header): ... this.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.
	* doc/bison.texinfo (The prologue): Update names, and replace remaining
	prologue blocks with %*-header declarations.
	(Calc++ Parser): Likewise.
	(Decl Summary): Update names.
	(Table of Symbols): Update description.
	* src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
	(PERCENT_END_HEADER): ... this.
	(PERCENT_BEFORE_DEFINITIONS): Update to...
	(PERCENT_START_HEADER): ... this.
	(PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
	(declaration): Update token names and m4 macro names.
	When parsing %end-header and %start-header, invoke translate_code
	before muscle_code_grow, and no longer set global booleans to remember
	whether these declarations have been seen.
	Parse new %after-header and %before-header.
	* src/reader.c (before_definitions, after_definitions): Remove.
	(prologue_augment): Accept a new bool argument to specify whether to
	augment the pre-prologue or post-prologue.
	* src/reader.h (before_definitions, after_definitions): Remove these
	extern's.
	(prologue_augment): Add new bool argument.
	* src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
	(PERCENT_END_HEADER): ... this.
	(PERCENT_BEFORE_DEFINITIONS): Update to...
	(PERCENT_START_HEADER): ... this.
	(PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
	* tests/actions.at (Printers and Destructors): Update names.

2006-06-22  Joel E. Denny  <jdenny@ces.clemson.edu>

	Add comparison operators for C++ location classes.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
	* data/c++.m4 (b4_define_location_comparison): New boolean %define
	declaration indicating whether filename_type has an operator==.  If
	filename_type is `std::string', it defaults to `1', `0' otherwise.
	* data/location.cc: Iff b4_define_location_comparison is `1', add
	operator== and operator!= for class position and for class location.

	Some minor fixes.
	* src/scan-action.l: Remove unused file.
	* src/symtab.c (symbol_printer_set): Use printer_location not
	destructor_location.
	* src/symtab.h (struct symbol): Replace incorrect source comment for
	printer members.
	* tests/input.at (Incompatible Aliases): Update output with correct
	printer location.

2006-06-20  Joel E. Denny  <jdenny@ces.clemson.edu>

	Don't put the pre-prologue in the header file.  For the yacc.c code
	file and the glr.c header and code files, move the pre-prologue before
	the token definitions.  Add new %before-definitions and
	%after-definitions to declare code that will go in both the header file
	and code file.  Discussed at
	<http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
	<http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
	and
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
	* NEWS (2.3+): Describe these changes.
	* data/glr.c (b4_pre_prologue): Move from within to before...
	(b4_shared_declarations): ... this.
	Add new b4_before_definitions before b4_token_enums.
	Add new b4_after_definitions at the end.
	* data/glr.cc (b4_pre_prologue): Replace with...
	(b4_before_definitions): ... this in the header file.
	(b4_after_definitions): New near the end of the header file.
	* data/lalr1.cc (b4_pre_prologue): Move from the header file to the
	code file right before including the header file.
	(b4_before_definitions): New in the previous position of
	b4_pre_prologue in the header file.
	(b4_after_definitions): New near the end of the header file.
	* data/yacc.c: Clean up some m4 quoting especially in the header file.
	(b4_token_enums_defines): In the code file, move to right before
	YYSTYPE for consistency with the header file.
	(b4_before_definitions): New right before b4_token_enums_defines in
	both the header and code file.
	(b4_after_definitions): New right after YYLTYPE and yylloc in both the
	header and code file.
	* doc/bison.texinfo (Prologue): Show use of %before-definitions instead
	of prologues for %union dependencies.
	(Decl Summary): In %defines description, mention the effect of
	%before-definitions and %after-definitions on the header file.
	(Calc++ Parser): Forward declare driver in a %before-definitions rather
	than in the pre-prologue so that make check succeeds.
	(Table of Symbols): Add entries for %before-definitions and
	%after-definitions.
	* src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
	%before-definitions.
	(PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
	(declaration): Parse those declarations and append to
	b4_before_definitions and b4_after_definitions, respectively.
	* src/reader.c (before_definitions, after_definitions): New bools to
	track whether those declarations have been seen.
	(prologue_augment): Add to the post-prologue if %union,
	%before-definitions, or %after-definitions has been seen.
	* src/reader.h (before_definitions, after_definitions): New extern's.
	* src/scan-gram.l: Scan the new declarations.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
	prologue block in a %before-definitions or a %after-definitions based
	on whether the %union is declared.
	* tests/regression.at (Early token definitions with --yacc, Early token
	definitions without --yacc): Move tests for token definitions into the
	post-prologue since token names are no longer defined in the
	pre-prologue.

2006-06-20  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
	(symbol_get): Use it.
	* src/parse-gram.y: Use it.

2006-06-19  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/scan-gram.l: Remove unused declaration of last_string_1 so the
	build succeeds when configured with --enable-gcc-warnings.

2006-06-19  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y (char_name): New function.
	(CHAR, STRING, string_content): For %printer, properly escape.
	(ID): Prefer fputs to fprintf.
	(id): Reindent to be consistent with other rules.
	Properly quote char.

	The Translation Project changed its way of publishing translations
	to maintainers.  I haven't received any responses to my request
	for supporting the old way, or for documenting the new way.  I
	have modified 'bootstrap' to use screen scraping
	(in this case, HTML scraping).  This is unreliable and inelegant,
	but I don't see any better way.  Yuck.
	* bootstrap (TP_URL, WGET_COMMAND): New vars.
	(get_translations): New function, which uses HTML scraping to
	deduce locations of latest translations.
	Use this function to grab both bison and bison-runtime .po files.
	Don't bother priming the pump for the runtime-po domain any more,
	as it's now translated better than bison is.

2006-06-19  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: No longer "parse" things after `%union' until
	`{'.  Rather, return a single "%union" token.
	No longer make symbols: return strings, and leave the conversion
	to symbols to the parser.
	(SC_PRE_CODE, token_type): Remove.
	* src/parse-gram.y (%union): New field `character'.
	Sort tokens.
	(CHAR): New token.
	(ID, ID_COLON): Now that the scanner no longer makes them
	identifiers, adjust all uses to invoke symbol_get.
	(id_colon): New, wraps the conversion from string to symbol.
	(%union): Accept a possible union_name.
	(symbol): Now can be a char.
	* data/c.m4 (b4_union_name): Leave a default value.
	* data/glr.c, data/yacc.c: Use it.

2006-06-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	For associating token numbers with token names for "yacc.c", don't use
	#define statements unless `--yacc' is specified; always use enum
	yytokentype.  Most important discussions start at:
	<http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00053.html>,
	<http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00052.html>,
	and
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00043.html>.
	* NEWS (2.3+): Mention.
	* data/c.m4 (b4_yacc_if): New.
	(b4_token_enums_defines): Use b4_yacc_if to decide whether to add the
	token #define's.
	* doc/bison.texinfo (Bison Options): Describe the effect of `--yacc'
	on token name definitions.
	* src/getargs.c (usage): Capitalize `Yacc' in English.
	* src/output.c (prepare): Define b4_yacc_flag.
	* tests/regression.at (Early token definitions): Test that tokens names
	are defined before the pre-prologue not just before the post-prologue.
	Remove this test case and copy to...
	(Early token definitions with --yacc): ... this to test #define's.
	(Early token definitions without --yacc): ... and this to test enums.

2006-06-11  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Reword the post-2.3 change to not be so optimistic about
	removing the old "look-ahead" spelling.
	Update previous look-ahead/lookahead change reports.
	* REFERENCES: look-ahead -> lookahead (since that's
	what he actually wrote).
	* doc/refcard.tex: look ahead -> lookahead,
	look-ahead -> lookahead

2006-06-09  Joel E. Denny  <jdenny@ces.clemson.edu>

	For consistency, use `lookahead' instead of `look-ahead' or
	`look_ahead'.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00049.html>
	and then at
	<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00017.html>.
	* NEWS: For the next release, note the change to `--report'.
	* TODO, doc/bison.1: Update English.
	* doc/bison.texinfo: Update English.
	(Understanding Your Parser, Bison Options): Document as
	`--report=lookahead' rather than `--report=look-ahead'.
	* src/conflicts.c: Update English in comments.
	(lookahead_set): Rename from look_ahead_set.
	(flush_reduce): Rename argument look_ahead_tokens to lookahead_tokens.
	(resolve_sr_conflict): Rename local look_ahead_tokens to
	lookahead_tokens, and update other uses.
	(flush_shift, set_conflicts, conflicts_solve, count_sr_conflicts,
	count_rr_conflicts, conflicts_free): Update uses.
	* src/getargs.c (report_args): Move "lookahead" before alternate
	spellings.
	(report_types): Update uses.
	(usage): For `--report' usage description, state `lookahead' spelling
	rather than `look-ahead'.
	* src/getargs.h (report.report_lookahead_tokens): Rename from
	report_look_ahead_tokens.
	* src/lalr.c: Update English in comments.
	(compute_lookahead_tokens): Rename from compute_look_ahead_tokens.
	(state_lookahead_tokens_count): Rename from
	state_look_ahead_tokens_count.
	Rename local n_look_ahead_tokens to n_lookahead_tokens.
	(lookahead_tokens_print): Rename from look_ahead_tokens_print.
	Rename local n_look_ahead_tokens to n_lookahead_tokens.
	Update other uses.
	Update English in output.
	(add_lookback_edge, initialize_LA, lalr, lalr_free): Update uses.
	* src/print.c: Update English in comments.
	(lookahead_set): Rename from look_ahead_set.
	(print_reduction): Rename argument lookahead_token from
	look_ahead_token.
	(print_core, state_default_rule, print_reductions, print_results):
	Update uses.
	* src/print_graph.c: Update English in comments.
	(print_core): Update uses.
	* src/state.c: Update English in comments.
	(reductions_new): Update uses.
	(state_rule_lookahead_tokens_print): Rename from
	state_rule_look_ahead_tokens_print, and update other uses.
	* src/state.h: Update English in comments.
	(reductions.lookahead_tokens): Rename from look_ahead_tokens.
	(state_rule_lookahead_tokens_print): Rename from
	state_rule_look_ahead_tokens_print.
	* src/tables.c: Update English in comments.
	(conflict_row, action_row): Update uses.
	* tests/glr-regression.at
	(Incorrect lookahead during deterministic GLR,
	Incorrect lookahead during nondeterministic GLR): Rename
	print_look_ahead to print_lookahead.
	* tests/torture.at: Update English in comments.
	(AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR): Rename from
	AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR.
	(Many lookahead tokens): Update uses.
	* data/glr.c: Update English in comments.
	* lalr1.cc: Likewise.
	* yacc.c: Likewise.
	* src/conflicts.h: Likewise.
	* src/lalr.h: Likewise.
	* src/main.c: Likewise.
	* src/output.c: Likewise.
	* src/parse-gram.c: Likewise.
	* src/tables.h: Likewise.
	* tests/calc.at: Likewise.

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

	* src/flex-scanner.h (yytext): Remove stray `*/' in #define.

2006-06-07  Paul Eggert  <eggert@cs.ucla.edu>

	* TODO: Add request from Nelson H. F. Beebe to be able to install
	Bison without installing the yacc script.

2006-06-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/flex-scanner.h: For the sake of Flex 2.5.4, don't #define yyleng
	and yytext if they're already #define'd.
	* src/flex-scanner.h, src/location.h: Move #include "system.h" to...
	* src/scan-code-c.c: ... here.
	* src/scan-code.l, src/scan-gram.l: ... and here.  Also #include
	<config.h>.

2006-06-07  Joel E. Denny  <jdenny@ces.clemson.edu>

	Get Bison to build again when configured with --enable-gcc-warnings.
	* src/location.c, src/location.h, src/main.c, src/scan-code.l: Add some
	missing #include's.
	* src/scan-code.l (handle_action_dollar, handle_action_at): Rename
	loc argument as it shadows a global.
	* src/scan-gram.l: Remove stray comma that prevents boundary_set
	invocation.

	* src/.cvsignore: Add scan-code.c.

2006-06-07  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: Move the "add a trailing ; to actions" code
	to...
	* src/scan-code.l: here.
	* tests/input.at (Torturing the Scanner): Fix another location
	error.

2006-06-07  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (BUILT_SOURCES): Fix the trailing backslash.

2006-06-06  Akim Demaille  <akim@epita.fr>

	Extract the parsing of user actions from the grammar scanner.
	As a consequence, the relation between the grammar scanner and
	parser is much simpler.  We can also split "composite tokens" back
	into simple tokens.
	* src/gram.h (ITEM_NUMBER_MAX, RULE_NUMBER_MAX): New.
	* src/scan-gram.l (add_column_width, adjust_location): Move to and
	rename as...
	* src/location.h, src/location.c (add_column_width)
	(location_compute): these.
	Fix the column count: the initial column is 0.
	(location_print): Be robust to ending column being 0.
	* src/location.h (boundary_set): New.
	* src/main.c: Adjust to scanner_free being renamed as
	gram_scanner_free.
	* src/output.c: Include scan-code.h.
	* src/parse-gram.y: Include scan-gram.h and scan-code.h.
	Use boundary_set.
	(PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_INITIAL_ACTION)
	(PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Remove the {...} part,
	which is now, again, a separate token.
	Adjust all dependencies.
	Wherever actions with $ and @ are used, use translate_code.
	(action): Remove this nonterminal which is now useless.
	* src/reader.c: Include assert.h, scan-gram.h and scan-code.h.
	(grammar_current_rule_action_append): Use translate_code.
	(packgram): Bound check ruleno, itemno, and rule_length.
	* src/reader.h (gram_in, gram__flex_debug, scanner_cursor)
	(last_string, last_braced_code_loc, max_left_semantic_context)
	(scanner_initialize, scanner_free, scanner_last_string_free)
	(gram_out, gram_lineno, YY_DECL_): Move to...
	* src/scan-gram.h: this new file.
	(YY_DECL): Rename as...
	(GRAM_DECL): this.
	* src/scan-code.h, src/scan-code.l, src/scan-code-c.c: New.
	* src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
	(gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
	(gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
	Move these declarations, and...
	(obstack_for_string, STRING_GROW, STRING_FINISH, STRING_FREE):
	these to...
	* src/flex-scanner.h: this new file.
	* src/scan-gram.l (rule_length, rule_length_overflow)
	(increment_rule_length): Remove.
	(last_braced_code_loc): Rename as...
	(gram_last_braced_code_loc): this.
	Adjust to the changes of the parser.
	Move all the handling of $ and @ into...
	* src/scan-code.l: here.
	* src/scan-gram.l (handle_dollar, handle_at): Remove.
	(handle_action_dollar, handle_action_at): Move to...
	* src/scan-code.l: here.
	* src/Makefile.am (bison_SOURCES): Add flex-scanner.h,
	scan-code.h, scan-code-c.c, scan-gram.h.
	(EXTRA_bison_SOURCES): Add scan-code.l.
	(BUILT_SOURCES): Add scan-code.c.
	(yacc): Be robust to white spaces.

	* tests/conflicts.at, tests/input.at, tests/reduce.at,
	* tests/regression.at: Adjust the column numbers.
	* tests/regression.at: Adjust the error message.

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

	* src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
	Use Akim's wording from
	<http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00056.html>.

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

	Between Bison releases, manually append `+' to the previous Bison
	release number, and use that as a signal to automatically print the
	ChangeLog's CVS Id keyword from --version.  Discussed starting at
	<http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
	* ChangeLog: Add Id header.
	* configure.ac (AC_INIT): Append `+' to `2.3'.
	* src/.cvsignore: Add revision.c.
	* src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
	(BUILT_SOURCES): Add revision.c.
	(revision.c): New target rule.  This file defines a new global variable
	named revision.  It initializes it with either the Id from ChangeLog
	or, if VERSION doesn't contain `+', with the empty string.
	* src/getargs.c (version): Print the value of revision.
	* src/revision.h: Extern revision.

2006-06-05  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.3.
	* configure.ac (AC_INIT): Likewise.

2006-05-30  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (YYRECOVERING): Define to be a function-like macro
	with no arguments, not as an object-like macro.  This is for
	compatibility with data/yacc.c.  Problem reported by John P. Hartmann in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00059.html>.
	* doc/bison.texinfo (Action Features, Error Recovery, Table of Symbols):
	Document this.

2006-05-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (usage): Back out yesterday's modification of the
	--help output so that we don't have to wait for translation before
	releasing 2.3.

2006-05-29  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Introduction): Don't say "GLR grammar".
	Problem reported by Akim Demaille.

2006-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>

	* src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.

2006-05-26  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yy_reduce_print): Omit trailing white space in
	generated source code.  Problem reported by Frans Englich in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00049.html>.

2006-05-22  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.maint (gzip_rsyncable, GZIP_ENV): Compute within the
	shell, not within 'make', so that 'make' by an ordinary builder
	(using GNU make) does not worry about configuring gzip.  This also
	works around a bug reported independently by Keith Thompson and by
	Georg Schwarz, whereby gzip 1.2.4 --help would output usage on
	stderr rather than stdout, messing up the build logs.

2006-05-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/yacc.c (yyparse): Wrap the final return from yyparse inside YYID
	to make sure that YYID will never be unused.  This fixes a 'make
	maintainer-check' failure caused by the recent changes to the 'Trivial
	grammars' test case, which caused g++ 4.1.0 to complain that YYID was
	not used.
	* data/glr.c (yyparse): Wrap yyparse's return inside YYID just in case.

2006-05-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyresolveLocations): Remove bogus YYASSERT that the
	state before an empty RHS is always resolved here.  Only the location
	of that state is guaranteed to be resolved, and that's enough.  This
	fixes the remaining bug reported by Derek M. Jones in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
	* tests/glr-regression.at (Uninitialized location when reporting
	ambiguity): Test the above case.
	Also, the embedded comments in this test case claim it checks the case
	of an empty RHS that has inherited the initial location.  However, the
	corresponding LHS was already resolved, so yyresolveLocations didn't
	actually have reason to modify it.  Fix this by forcing
	nondeterministic operation at the beginning of the parse.

2006-05-20  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_yy_symbol_print_generate):
	(b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
	'const YYSTYPE', and similarly for YYLTYPE.  This fixes one
	of the bugs reported today by Derek M Jones in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
	* doc/bison.texinfo (Value Type): Document that YYSTYPE must be
	defined to be a type name without parens or brackets.
	(Location Type): Similarly for YYLTYPE.
	* tests/regression.at (Trivial grammars): Put in a test for this
	bug that will be caught by 'make maintainer-check' (though not,
	alas, by 'make check' unless your compiler is picky).

2006-05-19  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.2.
	* configure.ac (AC_INIT): Likewise.

2006-05-17  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyreportTree): Make room in yystates for the state
	preceding the RHS.  This fixes the segmentation fault reported by Derek
	M. Jones in
	<http://lists.gnu.org/archive/html/help-bison/2006-05/msg00035.html>.
	(yyreportTree, yypdumpstack): Subtract 1 from yyrule before printing
	to the user.  Reported for yyreportTree by Derek M. Jones later in the
	same thread.
	* THANKS: Add Derek M. Jones.
	Update my email address.
	Fix typo in Steve Murphy's name.

2006-05-14  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyreportSyntaxError): Fix off-by-one error in
	checking against YYLAST that caused the parser to miss a potential
	alternative in its diagnostic.
	Problem reported by Maria Jose Moron Fernandez in
	<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00024.html>.
	* data/lalr1.cc (yysyntax_error_): Likewise.
	* data/yacc.c (yysyntax_error): Likewise.
	* tests/regression.at (_AT_DATA_DANCER_Y): Use static array for
	tokens, in case we run into an older C compiler.
	(_AT_DATA_EXPECT2_Y, AT_CHECK_EXPECT2): New macros.
	Use them to check for the off-by-one error fixed above.

	* data/yacc.c (yytnamerr): Fix typo: local var should be of type
	YYSIZE_T, not size_t.
	* tests/regression.at (Trivial grammars): New test, to catch
	the error fixed by the above patch.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* doc/bison.texinfo (C++ Bison Interface): Clarify the naming
	scheme.
	Reported by Steve Murphy.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* data/glr.cc, data/lalr1.cc: Using %defines is mandatory.
	* data/glr.cc: b4_location_flag is now b4_locations_flag.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	Implement --trace=m4.
	* src/getargs.c (trace_types, trace_args): Accept trace_m4.
	* src/output.c (output_skeleton): When set, pass -dV to m4.

	Factor the handling of flags in m4.
	* src/output.c (prepare): Rename the muscle names debug, defines,
	error_verbose to debug_flag, defines_flag, error_verbose_flag.
	* data/c.m4: Adjust.
	(_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
	Use b4_define_flag_if to define other b4_FLAG_if macros.
	(b4_location_if): As a consequence, rename as...
	(b4_locations_if): this, for consistency.
	Adjust all the skeletons.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* etc/bench.pm: Shorten bench names.

2006-05-14  Akim Demaille  <akim@lrde.epita.fr>

	* src/output.h, src/output.c (error_verbose): Move to...
	* src/getargs.h, src/getargs.c: here.
	Sort the flags.
	Adjust dependencies.

2006-05-13  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_copyright): Put the special exception for Bison
	skeletons here, so we don't have to put it in each skeleton.  All
	uses changed.  Suggested by Akim Demaille.  Also, wrap the
	copyright notice, in case it is longer than 80 columns.  Replace
	comma by newline after title.

2006-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Calc++ Scanner): The flex behavior is an
	incompatibility, not a bug.  Mention that it wasn't fixed as of
	flex 2.5.33.

2006-05-11  Akim Demaille  <akim@lrde.epita.fr>

	* examples/extexi: Enforce the precedence of concatenation over
	>>.
	Reported by Tommy Nordgren.

2006-05-11  Akim Demaille  <akim@lrde.epita.fr>

	* data/lalr1.cc (yytranslate_): Rename token as t to avoid clashes
	with the member "token".
	Reported by Martin Nylin.

2006-05-08  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c: Switch to Bison 2.2 special-exception language in
	the copyright notice.  Use more-regular format for titles and
	copyright notices.
	* data/glr.cc: Likewise.
	* data/location.cc: Likewise.
	* data/yacc.cc: Likewise.
	* doc/bison.texinfo (Conditions): Document this.
	* NEWS: likewise.  Upgrade version to 2.2.

2006-04-27  Akim Demaille  <akim@lrde.epita.fr>

	* data/glr.cc: Remove dead code.

2006-04-25  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Comment out the AM_CPPFLAGS line, since we don't use
	that variable and the line breaks the bootstrap.  Problem reported
	by Juan M. Guerrero.

2006-04-24  Akim Demaille  <akim@lrde.epita.fr>

	* doc/bison.texinfo (Multiple start-symbols): New.

2006-04-24  Akim Demaille  <akim@lrde.epita.fr>

	* etc/README, etc/bench.pl: New.

2006-04-03  Akim Demaille  <akim@lrde.epita.fr>

	* src/scan-gram.l: Be robust to BRACED_CODE appearing before any
	rule.
	Reported by Mickael Labau.
	* tests/input.at (Torturing the Scanner): Test it.

2006-03-16  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Decl Summary): Don't mention yylloc twice.
	Problem reported by Bob Rossi.

2006-03-13  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo: Remove @shorttitlepage stuff; it wasn't used
	and didn't really work.
	For the index, use @ifnotinfo, not @iftex.
	Minor cleanups of spacing and terminology.

2006-03-12  Akim Demaille  <akim@lrde.epita.fr>

	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Fix the definition
	of AT_NAME_PREFIX when %name-prefix is not used.

2006-03-12  Akim Demaille  <akim@lrde.epita.fr>

	Apply --prefix to C++ skeletons too: they change the namespace.
	The test suite already exercize these cases.
	* data/c++.m4 (b4_namespace): New.
	* data/lalr1.cc, data/glr.cc, data/location.cc: Use it instead of `yy'.
	* data/lalr1.cc (yytnameerr_): Move its definition into the namespace.
	* data/yacc.c, data/glr.c: Remove a useless `[]'.
	* doc/bison.texinfo: Document it.
	(Option Cross Key): Use @multitable in all formats.  It looks
	nicer, even in TeX outputs.
	(Rules): Use the same code whatever the output type is.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS)
	(_AT_BISON_OPTION_POPDEFS): Support AT_NAME_PREFIX.
	* tests/calc.at: Use it, instead of hard coding `yy'.

2006-03-10  Akim Demaille  <akim@lrde.epita.fr>

	* TODO: Remove dead items.

2006-03-10  Akim Demaille  <akim@lrde.epita.fr>

	* doc/FAQ: Remove, merged into...
	* doc/bison.texinfo (FAQ): this.
	* doc/Makefile.am (EXTRA_DIST): Adjust.

2006-03-10  Akim Demaille  <akim@lrde.epita.fr>

	* data/c.m4 (b4_token_enum): Always define the enum of tokens,
	even if empty.
	* data/lalrl1.cc, data/glr.cc (parser::token_type): New.
	* doc/bison.texinfo (Calc++ Scanner): Use it.

2006-03-09  Paul Eggert  <eggert@cs.ucla.edu>

	Fix two nits reported by twlevo, plus one more that I discovered.

	* src/assoc.h (assoc_to_string): Give a name to the arg, as
	this is the usual Bison style.
	* src/location.h (location_print): Likewise.

	* src/reader.h (token_name): Likewise.

2006-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some nits reported by twlevo.
	* doc/FAQ: Remove ancient Y2K FAQ, replacing it with "secure"
	and "POSIX".  Use more-modern syntax for URLs.  Mention C++
	and ask for Java.  Don't hardwire OS version numbers.  Add
	copyright notice.
	* m4/.cvsignore: Add unistd_h.m4, for latest gnulib.
	* src/conflicts.c (solved_conflicts_obstack): Now static.

2006-03-08  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Introduction): Mention GLR and C++ as on the web
	page.  Say "you can use it" not "you may use it" as on the web page;
	we're describing capabilities not granting permission.

2006-03-06  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyresolveLocations): Rename local variables to avoid
	shadowing warnings.  Use usual patter for iterating through RHS.
	* tests/glr-regression.at
	(Uninitialized location when reporting ambiguity):
	Modify yylex so that it uses its argument, rather than trying
	to rely on ARGSUSED (which doesn't work for gcc with warnings).
	const char -> char const.

	* tests/Makefile.am ($(srcdir)/package.m4, maintainer-check-valgrind):
	Don't use tabs inside commands; it messes up 'ps'.
	Problem reported by twlevo.

2006-03-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at (Uninitialized location when reporting
	ambiguity): New test case.
	* data/glr.c (yyresolveLocations): New function, which uses
	YYLLOC_DEFAULT.
	(yyresolveValue): Invoke yyresolveLocations before reporting an
	ambiguity.
	* doc/bison.texinfo (Default Action for Locations): Note
	YYLLOC_DEFAULT's usage for ambiguity locations.
	(GLR Semantic Actions): Cross-reference those notes.

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

	* tests/glr-regression.at (Leaked semantic values when reporting
	ambiguity): Remove unnecessary union and type declarations.
	(Leaked lookahead after nondeterministic parse syntax error): New test
	case.
	* data/glr.c (yyparse): Check for zero stacks remaining before
	attempting to shift the lookahead so that you don't lose it.

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

	Avoid memory leaks by not invoking longjmp in yyreportAmbiguity.
	* tests/glr-regression.at (Leaked semantic values when reporting
	ambiguity): New test case.
	* data/glr.c (yyreportAmbiguity): Invoke yyyerror directly and return
	yyabort rather than invoking yyFail, which invokes longjmp.  Remove the
	now unnecessary yystackp parameter.
	(yyresolveValue): Return yyreportAmbiguity's result.  Now the necessary
	destructors can be called.

	* tests/glr-regression.at: Don't invoke bison with `-t' unnecessarily
	in existing testcases.

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

	Don't leak semantic values for parent RHS when a user action cuts the
	parser, and clean up related code a bit.
	* tests/glr-regression.at (Leaked merged semantic value if user action
	cuts parse): Rename to...
	(Leaked semantic values if user action cuts parse): ... this.  Add check
	for leaked parent RHS values.
	* data/glr.c (yydestroyGLRState): In debugging output, distinguish
	between an unresolved state (non-empty chain of semantic options) and
	an incomplete one (signaled by an empty chain).
	(yyresolveStates): Document the interface.  Move all manipulation of a
	successfully or unsuccessfully resolved yyGLRState to...
	(yyresolveValue): ... here so that yyresolveValue always leaves a
	yyGLRState with consistent data and thus is easier to understand.
	Remove the yyvalp and yylocp parameters since they are always just
	taken from the yys parameter.  When reporting a discarded merged value
	in debugging output, note that it is incompletely merged.  Document the
	interface.
	(yyresolveAction): If resolving any of the RHS states fails, destroy
	them all rather than leaking them.  Thus, as long as user actions are
	written to clean up the RHS correctly, yyresolveAction always cleans up
	the RHS of a semantic option.  Document the interface.

2006-02-27  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyexpandGLRStack): Catch an off-by-one error that
	led to a segmentation fault in GNU Pascal.  Problem reported
	by Waldek Hebisch.

2006-02-21  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo (Mid-Rule Actions): Explain how to bury a
	mid-rule action inside a nonterminal symbol in order to declare a
	destructor for its semantic value.

2006-02-16  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
	YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
	__cplusplus && ! defined _STDLIB_H && !
	((defined YYMALLOC || defined malloc) && (defined YYFREE ||
	defined free))]: Include <stdlib.h> rather than rolling our own
	declarations of malloc and free, to avoid problems with
	incompatible declarations (using 'throw') C++'s stdlib.h.  This
	should fix Debian bug 340012
	<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
	reported by Guillaume Melquiond.

2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Clarify symbols versus types in unused-value warnings.

	* configure.ac (AC_INIT): Bump version number.

2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.1a.
	* tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex,
	since C99 requires this.

2006-02-11  Paul Eggert  <eggert@cs.ucla.edu>

	* m4/c-working.m4: New file.
	* configure.ac (BISON_TEST_FOR_WORKING_C_COMPILER): Use it.

2006-02-10  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.maint: Merge from coreutils.

2006-02-09  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Catch a
	configuration screwup "./configure CC=/opt/SUNWspro/bin/c89
	CFLAGS="-xarch=generic64" CXX=/opt/SUNWspro/bin/CC
	LDFLAGS="-xarch=generic64" with Sun C 5.7 on Solaris 10; this
	messes up because C++ code is compiled in 32-bit mode but linked
	in 64-bit mode.

2006-02-08  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* doc/bison.texinfo (Calc++ Scanner): Work around a bug in flex
	2.5.31.  This resembles the 2005-10-10 patch to src/scan-skel.l.

	* examples/calc++/Makefile.am (check_PROGRAMS): Renamed from
	nodist_PROGRAMS, since we don't need to actually compile the
	example if we're just doing a plain 'make'.  This avoids bothering
	the installer unnecessarily about problems due to weird C++
	compilers.

2006-02-06  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* tests/headers.at (AT_TEST_CPP_GUARD_H): Use #include <...> rather
	than #include "...", and compile with -I'.'.  The old method was
	not portable, according to Posix and the C standard, and it does
	not work with Sun C 5.7, where previous #line directives affect
	the working directory used in later #include "..." directives.

2006-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	Various DJGGP specific issues in /djgpp

2006-02-02  Paul Eggert  <eggert@cs.ucla.edu>

	More portability fixes for problems summarized by Nelson H. F. Beebe.

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that
	'#include <map>' works and that you can apply ++ to iterators.

2006-02-01  Paul Eggert  <eggert@cs.ucla.edu>

	Work around portability problems summarized by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2005-09/msg00021.html>.

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
	that '#include <string>' works.

	* data/lalr1.cc (yytranslate_): No longer inline, to work around a
	porting problem to g++ 3.4.3 on Darwin 7.9.0, where g++ complained
	"warning: sorry: semantics of inline function static data `const
	unsigned char translate_table[262]' are wrong (you'll wind up with
	multiple copies)".

	* lib/bbitset.h (struct bitset_vtable): Rename members not, and,
	or, xor to not_, and_, or_, and xor_, respectively.  This works
	around a bug in GCC 3.4.3 on Irix 6.5, which apparently has a
	random system header somewhere that includes the equivalent of
	<iso646.h>.

	* tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that "$CC
	-E" works; it apparently doesn't work with PathScale EKO Compiler
	Suite Version 2.0.

2006-01-30  Joel E. Denny  <jdenny@ces.clemson.edu>

	During deterministic GLR operation, user actions should be able to
	influence the parse by changing yychar.  To make this easier to fix and
	to make glr.c easier to evolve in general, don't maintain yytoken in
	parallel with yychar; just compute yytoken when needed.
	* tests/glr-regression.at (Incorrect lookahead during deterministic
	GLR): Check that setting yychar in a user action has the intended
	effect.
	* data/glr.c (yyGLRStack): Remove yytokenp member.
	(yyclearin): Don't set *yytokenp.
	(yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Examine
	yychar rather than *yytokenp to determine the current lookahead.
	Compute yytoken locally when needed.
	(yyparse): Likewise.  Remove the local yytoken that yytokenp used to
	point to.

	* doc/bison.texinfo (Bison Options): Remove stray sentence fragment
	after `--report' documentation.

2006-01-30  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y (grammar_declaration): Location of printer
	symbol is @1, not list->location.  Bug reported by twlevo.
	* tests/input.at (Incompatible Aliases): Adjust to above change.

2006-01-29  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/input.at (AT_CHECK_UNUSED_VALUES): Remove.  Instead, do
	all the test at once.  This makes the output easier to read in the
	normal case.

	Fix a longstanding bug uncovered by bro-0.9a9/src/parse.y, which I
	got from <http://bro-ids.org/download.html>.  The bug is that
	when two actions appeared in succession, the second one was
	scanned before the first one was added to the grammar rule
	as a midrule action.  Bison then output the incorrect warning
	"parse.y:905.17-906.36: warning: unused value: $3".
	* src/parse-gram.y (BRACED_CODE, action): These are no longer
	associated with a value.
	(rhs): Don't invoke grammar_current_rule_action_append.
	(action): Invoke it here instead.
	* src/reader.c (grammar_midrule_action): Now extern.
	(grammar_current_rule_action_append): Don't invoke
	grammar_midrule_action; that is now the scanner's job.
	* src/reader.h (last_string, last_braced_code_loc):
	(grammar_midrule_action): New decls.
	* src/scan-gram.l (last_string): Now extern, sigh.
	(last_braced_code_loc): New extern variable.
	(<INITIAL>"{"): Invoke grammar_midrule_action if the current
	rule already has an action.
	(<SC_BRACED_CODE>"}"): Set last_braced_code_loc before returning.
	* tests/input.at (AT_CHECK_UNUSED_VALUES):
	Add some tests to check that the above changes fixed the bug.

2006-01-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/reader.c (symbol_should_be_used): Renamed from symbol_typed_p.
	All used changed.  Check whether the symbol has a destructor,
	not whether it is typed.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Add a destructor, so
	that the values are still reported as unused.  All line numbers
	adjusted.

2006-01-23  Paul Eggert  <eggert@cs.ucla.edu>

	Work around a bug in bro 0.8, which underparenthesizes its
	definition of YYLLOC_DEFAULT.
	* data/glr.c: Change all uses of YYLLOC_DEFAULT to parenthesize
	their arguments.
	* data/lalr1.cc: Likewise.
	* data/yacc.cc: Likewise.

2006-01-22  Paul Eggert  <eggert@cs.ucla.edu>

	Work around a bug in Pike 7.0, and give the Pike folks a
	better way to override the usual int widths.
	* data/yacc.c (b4_int_type): Use yytype_uint8, etc., so that the
	user can override the types.
	(short): #undef, to work around a bug in Pike 7.0.
	(yytype_uint8, yytype_int8, yytype_uint16, yytype_int16): New types.
	(union yyalloc.yyss): Use yytype_int16 rather than short.
	All uses changed.
	(yysigned_char): Remove.
	* src/parse-gram.y (YYTYPE_UINT8, YYTYPE_INT8, YYTYPE_UINT16):
	(YYTYPE_INT16): New macros, to test the new facility in yacc.c.
	* tests/regression.at (Web2c Actions): Adjust to above changes.

	* src/reader.c (check_and_convert_grammar): New function.
	(reader): Close the input file even if something went wrong during
	parsing.  Minor file descriptor leak reported by twlevo.

	* src/assoc.c (assoc_to_string): Use a default: abort (); case
	to pacify gcc -Wswitch-default.
	* src/scan-gram.l (adjust_location): Use a default: break; case
	to pacify gcc -Wswitch-default.
	* src/scan-skel.h (skel_get_lineno, skel_get_in, skel_get_out):
	(skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
	(skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
	Move these decls to scan-skel.l, since they don't need to be
	visible elsewhere.
	* src/scan-skel.l: Accept the above decls.
	(skel_lex): New decl, to pacify GCC when unpatched flex 2.5.31
	is used.

2006-01-21  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.cfg (local-checks-to-skip): Add changelog-check,
	since we don't want to insist on a version number at the start
	of the changelog every time.
	* Makefile.maint: Sync from coreutils a bit better.
	(sc_trailing_blank): Renamed from sc_trailing_space.
	All uses changed.
	(sc_no_if_have_config_h, sc_require_config_h):
	(sc_prohibit_assert_without_use): New rules.
	(sc_obsolete_symbols): Don't catch Makefile.maint itself.
	(sc_dd_max_sym_length): Fix leading spaces in rule.
	(sc_system_h_headers): Prefix with @.
	(sc_useless_cpp_parens, m4-check): Output line numbers.
	(changelog-check): Allow version only in head.
	* data/c.m4: Use "defined FOO" instead of "defined (FOO)", to
	satisfy new Makefile.maint rule.
	* data/glr.c: Likewise.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.
	* lib/ebitsetv.c: Likewise.
	* lib/lbitset.c: Likewise.
	* lib/subpipe.c: Likewise.
	* lib/timevar.c: Likewise.
	* src/system.h: Likewise.
	* data/yacc.c (YYSTYPE): Don't generate trailing spaces in output.
	* djgpp/Makefile.maint: Add copyright notice.
	* djgpp/README.in: Likewise.
	* djgpp/config.bat: Likewise.
	* djgpp/config.site: Likewise.
	* djgpp/config_h.sed: Likewise.
	* djgpp/djunpack.bat: Likewise.
	* djgpp/config.sed: Fix copyright notice to match standard format.
	* djgpp/subpipe.h: Likewise.
	* lib/bitsetv-print.c: Likewise.
	* lib/bitsetv.c: Likewise.
	* lib/subpipe.h: Likewise.
	* lib/timevar.c: Likewise.
	* lib/timevar.h: Likewise.
	* djgpp/subpipe.c: Use standard recipe for config.h.
	* lib/abitset.c: Likewise.
	* lib/bitset.c: Likewise.
	* lib/bitset_stats.c: Likewise.
	* lib/bitsetv-print.c: Likewise.
	* lib/bitsetv.c: Likewise.
	* lib/ebitsetv.c: Likewise.
	* lib/get-errno.c: Likewise.
	* lib/lbitset.c: Likewise.
	* lib/subpipe.c: Likewise.
	* lib/timevar.c: Likewise.
	* lib/vbitset.c: Likewise.
	* tests/local.at: Likewise.
	* src/scan-gram.l: Don't include verify.h, since system.h does
	that for us.
	* .x-sc_require_config_h: New file.
	* .x-sc_unmarked_diagnostics: New file.

2006-01-20  Paul Eggert  <eggert@cs.ucla.edu>

	Be a bit more systematic about using 'abort'.
	* lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
	* lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
	Put 'default: abort ();' before some other case, to satisfy older
	pedantic compilers.
	* lib/bitset_stats.c (bitset_stats_init): Likewise.
	* lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
	* lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
	* src/conflicts.c (resolve_sr_conflict): Likewise.
	* src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
	(get_decision_str, get_orientation_str, get_node_alignment_str):
	(get_arrow_mode_str, get_crossing_type_str, get_view_str):
	(get_linestyle_str, get_arrowstyle_str): Likewise.
	* src/conflicts.c (resolve_sr_conflict):
	Use a default case rather than one for the one remaining enum
	value, to catch invalid enum values as well.
	* src/lalr.c (set_goto_map, map_goto):
	Prefer "assert (FOO);" to "if (!FOO) abort ();".
	* src/nullable.c (nullable_compute, token_definitions_output):
	Likewise.
	* src/reader.c (packgram, reader): Likewise.
	* src/state.c (transitions_to, state_new, state_reduction_find):
	Likewise.
	* src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
	(symbol_pack): Likewise.
	* src/tables.c (conflict_row, pack_vector): Likewise.
	* src/scan-skel.l (QPUTS): Remove unnecessary parens.
	(BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
	* src/system.h: Don't include <assert.h>.
	(assert): New macro.

	* doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
	(Destructor Decl, Parser Function, Pure Calling):
	Describe rules for braces inside C code more carefully.

2006-01-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some porting glitches found by Nelson H. F. Beebe.
	* lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
	compilers that don't understand that abort () does not return.
	* src/state.c (transitions_to): Likewise.
	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
	that '#include <cstdlib>' works.
	* src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
	(INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
	#undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
	for the benefit of some pre-C99 compilers.

	* bootstrap: Undo changes to gnulib files that autoreconf made.

	Minor fixups to get 'make maintainer-check' to work.
	* configure.ac: Don't use -Wnested-externs, as it's incompatible
	with the new verify.h implementation.
	* data/c.m4 (b4_yy_symbol_print_generate): YYUSE (yyoutput).
	* data/glr.c (YYUSE): Depend on __GNUC__ as well.
	* data/yacc.c (YYUSE): Likewise.
	* data/lalr1.cc (yysyntax_error_): YYUSE (yystate).
	* lib/subpipe.c (end_of_output_subpipe): The args are unused.
	* src/parse-gram.y (declaration): Don't pass a string constant
	to a function that expects char *, since GCC might complain
	about the constant value.
	* src/reader.c (symbol_typed_p): Add parens to pacify GCC.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): #undef yylloc and yylval
	before #defining them.
	* tests/glr-regression.at
	(Incorrectly initialized location for empty right-hand side in GLR):
	In yyerror, use the msg arg.
	(Corrupted semantic options if user action cuts parse):
	(Incorrect lookahead during deterministic GLR):
	(Incorrect lookahead during nondeterministic GLR):
	Don't name a local var 'index'; it shadows string.h's 'index'.

2006-01-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_DATA_CALC_Y): Initialize the whole initial
	location, not just parts of it.

2006-01-18  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Document the fact that multiple %unions are now allowed.
	* doc/bison.texinfo (Union Decl): Likewise.
	* TODO: This feature is now implemented, so remove it from
	the wishlist.

	* Makefile.maint: Merge with coreutils Makefile.maint.
	(CVS_LIST): Use build-aux version if available.
	(VERSION_REGEXP): New macro.
	(syntax-check-rules): Add sc_no_if_have_config_h,
	sc_prohibit_assert_without_use, sc_require_config_h,
	sc_useless_cpp_parens.
	(sc_obsolete_symbols): Check for O_NDELAY.
	(sc_dd_max_sym_length): Track coreutils.
	(sc_unmarked_diagnostics): Look in all files, not just *.c.
	(sc_useless_cpp_parens): New rule.
	(news-date-check): Look for version or today's date.
	(changelog-check): Don't require version number near head.
	(copyright-check): Use current year instead of hardwiring 2005.
	(my-distcheck): Depend on $(release_archive_dir)/$(prev-tgz).
	(announcement): Add --gpg-key-ID.

	* djgpp/config.sed: Add copyright notice, and replace "filesystem"
	with "file system".

	Avoid undefined behavior that addressed just before the start of an
	array.  Problem reported by twlevo.
	* src/reader.c (packgram): Prepend a new sentinel before ritem.
	* src/lalr.c (build_relations): Rely on new sentinel.
	* src/gram.c (gram_free): Adjust to new sentinel.

2006-01-12  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to
	yylookaheadNeeds.  All uses updated.
	(yysplitStack): Rename local yynewLookaheadStatuses to
	yynewLookaheadNeeds.
	* data/glr-regression.at (Incorrect lookahead during nondeterministic
	GLR): In comments, change `lookahead status' to `lookahead need'.

2006-01-11  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c (yysplitStack): A little stylistic rewrite.

2006-01-11  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c (yyaddDeferredAction): Flesh out the comment.

2006-01-11  Joel E. Denny  <jdenny@ces.clemson.edu>

	* doc/bison.texinfo: Fix some typos.
	(GLR Semantic Actions): New subsection discussing special
	considerations because GLR semantic actions might be deferred.
	(Actions): Mention look-ahead usage of yylval.
	(Actions and Locations): Mention look-ahead usage of yylloc.
	(Special Features for Use in Actions): Add YYEOF entry and mention it
	in the yychar entry.
	In the yychar entry, remove mention of the local yychar case (pure
	parser) since this is irrelevant information when writing semantic
	actions and since it's already discussed in `Table of Symbols' where
	yychar is otherwise described as an external variable.
	In the yychar entry, don't call it the `current' look-ahead since it
	isn't when semantic actions are deferred.
	In the yychar and yyclearin entries, add note about deferred semantic
	actions.
	Add yylloc and yylval entries discussing look-ahead usage.
	(Look-Ahead Tokens): When discussing yychar, don't call it the
	`current' look-ahead, and do mention yylval and yylloc.
	(Error Recovery): Cross-reference `Action Features' when mentioning
	yyclearin.
	(Table of Symbols): In the yychar entry, don't call it the `current'
	look-ahead.
	In the yylloc and yylval entries, mention look-ahead usage.

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

	* tests/glr-regression.at: Update copyright year to 2006.

2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/glr.c (yyGLRStateSet): Add yybool* yylookaheadStatuses member to
	use during nondeterministic operation to track which stacks have
	actually needed the current lookahead.
	(yyinitStateSet, yyfreeStateSet, yyremoveDeletes, yysplitStack):
	Allocate, deallocate, resize, and otherwise shuffle space for
	yylookaheadStatuses in parallel with yystates member of yyGLRStateSet.
	(yysplitStack, yyprocessOneStack, yyparse): Set lookahead status
	appropriately during nondeterministic operation.
	(yySemanticOption): Add int yyrawchar, YYSTYPE yyval, and YYLTYPE yyloc
	members to store the current lookahead to be used by the deferred
	user action.
	(yyaddDeferredAction): Add size_t yyk parameter specifying the stack
	from which the RHS is taken.  Set the lookahead members of the new
	yySemanticOption according to the lookahead status for stack yyk.
	(yyglrShiftDefer, yyglrReduce): Pass yyk parameter on to
	yyaddDeferredAction.
	(yyresolveAction): Set yychar, yylval, and yylloc to the lookahead
	members of yySemanticOption before invoking yyuserAction, and then set
	them back to their current values afterward.
	(yyparse): Set yychar = YYEMPTY where yytoken = YYEMPTY.
	(yyreportAmbiguity): Add /*ARGSUSED*/ to pacify lint.
	* tests/glr-regression.at: Remove `.' from the ends of recent test case
	titles for consistency.
	(Leaked merged semantic value if user action cuts parse): In order to
	suppress lint warnings, use arguments in merge function, and assign
	char value < 128 in main.
	(Incorrect lookahead during deterministic GLR): New test case.
	(Incorrect lookahead during nondeterministic GLR): New test case.

2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* data/c.m4 (b4_yy_symbol_print_generate): In yy_symbol_print, accept
	!yyvaluep as signal that no semantic value is available to print.
	* data/glr.c (yydestroyGLRState): If state is not resolved, don't try
	to print a semantic value.

2006-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>

	* tests/glr-regression.at: For consistency with my newer test cases,
	don't thank myself.

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

	* data/glr.c (yyresolveValue): When merging semantic options, if at
	least one user action succeeds but a later one cuts the parse, then
	destroy the semantic value before returning rather than leaking it.
	(yyresolveStates): If a user action cuts the parse and thus
	yyresolveValue fails, ignore the (unset) semantic value rather than
	corrupting the yyGLRState, and empty the semantic options list since
	the user actions should have called all necessary destructors.
	Simplify code with YYCHK.
	* tests/glr-regression.at (Corrupted semantic options if user action
	cuts parse): New test case.
	(Undesirable destructors if user action cuts parse): New test case.
	Before applying any of this patch, this test case never actually failed
	for me... but only because the corrupted semantic options usually
	masked this bug.
	(Leaked merged semantic value if user action cuts parse): New test
	case.

2006-01-05  Akim Demaille  <akim@epita.fr>

	* src/reader.c, src/symlist.h, src/symlist.c: s/mid_rule/midrule/.

2006-01-04  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_c_modern): New macro, with a new provision for
	_MSC_VER.  Problem reported by Cenzato Marco.
	(b4_c_function_def): Use it.
	* data/yacc.c (YYMODERN_C): Remove.  All uses replaced by
	b4_c_modern.
	(yystrlen, yystpcpy, yyparse): Use b4_c_function... macros rather
	than rolling our own.

2006-01-04  Akim Demaille  <akim@epita.fr>

	Also warn about non-used mid-rule values.
	* src/symlist.h, src/symlist.c (symbol_list): Add a mid_rule
	member.
	(symbol_list_new): Adjust.
	* src/reader.c (symbol_typed_p): New.
	(grammar_rule_check): Use it.
	(grammar_midrule_action): Bind a mid-rule LHS to its rule.
	Check its rule.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): New.
	Use it.
	* tests/actions.at (Exotic Dollars): Adjust.

2006-01-04  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_midrule_action): If $$ is set in a
	mid-rule, move the `used' bit to its lhs.
	* tests/input.at (Unused values): New.
	* tests/actions.at (Exotic Dollars): Adjust: exp is not typed.

2006-01-03  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Bison Options): Say more accurately what
	--yacc does.
	* src/parse-gram.y (rules_or_grammar_declaration): Don't complain
	about declarations in the grammar when in Yacc mode, as POSIX does
	not require a diagnostic when the grammar uses extensions.

	* src/reduce.c (reduce_grammar): Remove unnecessary cast to bool.

	Warn about dubious constructions like "%token T T".
	Reported by twlevo.
	* src/symtab.h (struct symbol.declared): New member.
	* src/symtab.c (symbol_new): Initialize it to false.
	(symbol_class_set): New arg DECLARING, specifying whether
	this is a declaration that we want to warn about, if there
	is more than one of them.  All uses changed.

	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c:
	Allow multiple %union directives, whose contents concatenate.
	* src/parse-gram.y (grammar_declaration): Likewise.
	Use muscle_code_grow, so that we don't need stype_line any more.
	All uses changed.

	* src/muscle_tab.c (muscle_grow): Fix comment.

	* ChangeLog, data/c.m4, data/glr.c, data/glr.cc, data/location.cc:
	* data/yacc.c, src/getargs.c, src/output.c, tests/cxx-type.at:
	Update copyright year to 2006.

2006-01-03  Akim Demaille  <akim@epita.fr>

	Have glr.cc pass (some of) the calc.at tests.
	* data/glr.cc (b4_parse_param_orig): New.
	(b4_parse_param): Improve its definition, and bound it more
	clearly in the skeleton.
	(b4_epilogue): Append, instead of prepending, in order to keep
	#line consistency.
	Simplify the generation of auxiliary functions: locations and
	purity are mandated.
	(b4_global_tokens_and_yystype): Honor it.
	* data/location.cc (c++.m4): Don't include it.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Define AT_GLR_CC_IF
	and AT_SKEL_CC_IF.
	* tests/calc.at (AT_CHECK_CALC): Rely on AT_SKEL_CC_IF instead of
	AT_LALR1_CC_IF.
	Be sure to initialize the first position's filename.
	(AT_CHECK_CALC_LALR1_CC): Add %location and %defines, they are
	mandated anyway.
	(AT_CHECK_CALC_GLR_CC): New.
	Use it to exercise glr.cc as a lalr1.cc drop-in replacement.

2006-01-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): Don't hard wire the inclusion of
	c.m4.
	* data/c++.m4, data/glr.c, data/yacc.c: Include c.m4.
	* data/glr.cc: Do not include stack.hh.

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

	* data/glr.c: Reformat whitespace with tabs.
	(b4_lpure_formals): Remove this unused m4 macro.
	* tests/cxx-type.at: Reformat whitespace with tabs.
	(_AT_TEST_GLR_CXXTYPES): In union Node, rename node_info to nodeInfo
	since it's a member.  Rename type to isNterm for clarity.

2005-12-29  Akim  <akim@sulaco.local>

	Let glr.cc catch up with symbol_value_print.
	* data/glr.cc (b4_yysymprint_generate): Replace by...
	(b4_yy_symbol_print_generate): this.
	(yy_symbol_print, yy_symbol_value_print): Declare them.

2005-12-28  Paul Eggert  <eggert@cs.ucla.edu>

	* src/location.h (boundary): Note that a line or column equal
	to INT_MAX indicates an overflow.
	* src/scan-gram.l: Include verify.h.  Don't include get-errno.h.
	(rule_length_overflow, increment_rule_length, add_column_width):
	New functions.
	(<INITIAL>{id}, <SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'"):
	(<SC_BRACED_CODE>"}"):
	Use increment_rule_length rather than incrementing it by hand.
	(adjust_location, handle_syncline): Diagnose overflow.
	(handle_action_dollar, handle_action_at):
	Fix bug with monstrosities like $-2147483648.
	Remove now-unnecessary checks.
	(scan_integer): Verify assumptions and remove now-unnecessary checks.
	(convert_ucn_to_byte): Verify assumptions.
	(handle_syncline): New arg LOC.  All callers changed.
	Don't store through a value derived from char const * pointer.

	* src/reader.c (grammar_rule_check): Rewrite slightly to avoid
	GCC warnings.

2005-12-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/reader.c (grammar_midrule_action, grammar_symbol_append):
	Remove unnecessary forward static decls.

2005-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_current_rule_check): Also check that $$
	is used.
	Take the rule to check as argument, hence rename as...
	(grammar_rule_check): this.
	* src/reader.h, src/reader.c (grammar_rule_begin, grammar_rule_end):
	Rename as...
	(grammar_rule_begin, grammar_rule_end): these, for consistency.
	(grammar_midrule_action, grammar_symbol_append): Now static.
	* tests/torture.at (input): Don't rely on the default action
	being always performed.
	* tests/calc.at: "Set" $$ even when the action is "cut" with
	YYERROR or other.
	* tests/actions.at (Exotic Dollars): Instead of using unused
	values, check that the warning is issued.

2005-12-22  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Improve wording for unused-value warnings.

2005-12-22  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc, data/yacc.c, data/glr.c, data/c.m4
	(b4_yysymprint_generate): Rename as...
	(b4_yy_symbol_print_generate): this.
	Generate yy_symbol_print instead of yysymprint.
	Generate also yy_symbol_value_print, and use it.

2005-12-22  Akim Demaille  <akim@epita.fr>

	* NEWS: Warn about unused values.
	* src/symlist.h, src/symlist.c (symbol_list, symbol_list_new): Add
	a `used' member.
	(symbol_list_n_get, symbol_list_n_used_set): New.
	(symbol_list_n_type_name_get): Use symbol_list_n_get.
	* src/scan-gram.l (handle_action_dollar): Flag used symbols.
	* src/reader.c (grammar_current_rule_check): Check that values are
	used.
	* src/symtab.c (symbol_print): Accept 0.
	* tests/existing.at: Remove the type information.
	Empty the actions.
	Remove useless actions (beware of mid-rule actions: perl -000
	-pi -e 's/\s*\{\}(?=[\n\s]*[|;])//g').
	* tests/actions.at (Exotic Dollars): Use unused values.
	* tests/calc.at: Likewise.
	* tests/glr-regression.at (No users destructors if stack 0 deleted):
	Likewise.

	* src/gram.c (rule_useful_p, rule_never_reduced_p): Use
	rule_useful_p.

2005-12-21  Paul Eggert  <eggert@cs.ucla.edu>

	Undo 2005-12-01 tentative license wording change.  The wording is
	still being reviewed by the lawyers, and we don't want to wait for
	them before publishing a test release.  For now, revert to the
	previous wording.
	* NEWS: Undo 2005-12-01 change.
	* data/glr.c: Revert to previous license wording.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/location.cc: Likewise.
	* data/yacc.c: Likewise.

	* NEWS: Reword %destructor vs YYABORT etc.
	* data/glr.c: Use American spacing, for consistency.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.
	* data/yacc.c: Reformat comments slightly.
	* doc/bison.texinfo: Replace "non-" with "non" when that makes sense,
	for consistency.  Fix some spelling errors and reword recently-included
	text slightly.
	* tests/cxx-type.at: Cast results of malloc, for C++.

2005-12-21  Joel E. Denny  <address@hidden>

	* tests/cxx-type.at: Construct a tree, count the parents of shared
	nodes, and free each node once and only once.  Previously, the memory
	for semantic values was leaked instead.

2005-12-21  Joel E. Denny  <address@hidden>

	* data/glr.c (struct yyGLRStack): If pure, add yyval and yyloc members.
	(yylval, yylloc): If pure, #define to yystackp->yyval and
	yystackp->yyloc similar to yychar and yynerrs.
	(yyparse): If pure, remove local yylval and yylloc. Add local
	yystackp to accommodate pure definitions of yylval and yylloc.
	(b4_lex_param, b4_lyyerror_args, b4_lpure_args): If pure, change
	yylvalp and yyllocp to &yylval and &yylloc.
	(nerrs, char, lval, lloc): If pure, add #define's for b4_prefix[]
	namespace. Previously, nerrs and char were missing, but lval and lloc
	weren't necessary.
	(yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Remove
	yylvalp and yyllocp parameters since, if pure, these are now always
	accessible through yystackp.  If not pure, they are still accessible
	globally.
	* data/glr.c, data/yacc.c (YYLLOC_DEFAULT): Change `if (N)' to
	`if (YYID (N))' to pacify lint.

2005-12-21  Akim Demaille  <akim@epita.fr>

	YYACCEPT, YYERROR, and YYABORT, as user actions, should not
	destroy the RHS symbols of a rule.
	* data/yacc.c (yylen): Initialize to 0.
	Keep its value to the number of items to possibly shift.
	In particular, a regular successful parse that ends on YYFINAL by
	a (internal) YYACCEPT must not have yylen != 0.
	(yyerrorlab, yyreturn): Pop the RHS.
	Reorder a bit to emphasize the `shifting' bits of code.
	(YYPOPSTACK): Now accept a number of items to pop.
	* data/lalr1.cc: Likewise.
	* data/glr.c: Formatting changes.
	Use goto instead of fall through.
	* doc/bison.texinfo (Destructor Decl): Complete.

2005-12-20  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* Makefile.am: DJGPP specific files added to EXTRA_DIST.
	* djgpp/Makefile.maint: Fix PACKAGE variable computation.
	* djgpp/config.bat: Replace every occurrence of the file name
	scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with
	c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS.
	* djgpp/config.sed: Replace every occurrence of the file name
	scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with
	c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS.
	* djgpp/djunpack.bat: DJGPP specific file.
	* djgpp/fnchange.lst: DJGPP specific file.
	* djgpp/README.in: Add new information about how to unpack the bison
	source on MSDOS and other systems which have 8.3 file name restrictions
	using djunpack.bat and fnchange.lst.

2005-12-12  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (build_cvs_prefix): Remove; unused.
	(CVS_PREFIX): Adjust to yesterday's Savannah reorganization
	when getting gnulib.

2005-12-12  "Joel E. Denny" <jdenny@ces.clemson.edu>

	* data/glr.c: Reorder typedef declarations for structs to match order
	of struct declarations.
	Rename yystack everywhere to yystackp except in yyparse where it's not
	a pointer.
	(yyglrShift): Change parameter YYSTYPE yysval to YYSTYPE* yyvalp for
	consistency.
	(yyis_table_ninf): Change 0 to YYID (0) to pacify lint.
	(yyreportSyntaxError): Add /*ARGSUSED*/ to pacify lint.
	(yyparse): Change while (yytrue) to while ( YYID (yytrue)) to pacify
	lint.

2005-12-09  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/sets.at (Accept): Fix typos in regular expression used to
	sed out the final state number.

	Work around portability problem on Solaris 10: flex-generated
	files include <stdio.h> before <config.h>, which messes up
	because the latter defines __EXTENSIONS__.  Address the problem
	by creating two new little files that include <config.h> first,
	then include the flex-generated files.  Rewrite everyone else
	to include <config.h> first, as well.
	* lib/timevar.c: Always include "config.h".
	* src/Makefile.am (bison_SOURCES): Replace scan-gram.l with
	scan-gram-c.c, and scan-skel.l with scan-skel-c.c.
	(EXTRA_bison_SOURCES): New macro.
	* src/scan-gram-c.c, src/scan-skel-c.c: New files.
	* src/system.h: Don't include config.h.
	* src/LR0.c: Include <config.h> first.
	* src/assoc.c: Likewise.
	* src/closure.c: Likewise.
	* src/complain.c: Likewise.
	* src/conflicts.c: Likewise.
	* src/derives.c: Likewise.
	* src/files.c: Likewise.
	* src/getargs.c: Likewise.
	* src/gram.c: Likewise.
	* src/lalr.c: Likewise.
	* src/location.c: Likewise.
	* src/main.c: Likewise.
	* src/muscle_tab.c: Likewise.
	* src/nullable.c: Likewise.
	* src/output.c: Likewise.
	* src/parse-gram.y: Likewise.
	* src/print.c: Likewise.
	* src/print_graph.c: Likewise.
	* src/reader.c: Likewise.
	* src/reduce.c: Likewise.
	* src/relation.c: Likewise.
	* src/state.c: Likewise.
	* src/symlist.c: Likewise.
	* src/symtab.c: Likewise.
	* src/tables.c: Likewise.
	* src/uniqstr.c: Likewise.
	* src/vcg.c: Likewise.

	* src/parse-gram.y: Fix minor problems uncovered by lint.
	(current_lhs, current_lhs_location): Now static.
	(current_assoc): Remove unused variable.

	Cleanups so that Bison-generated parsers have less lint.
	* data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate):
	Prepend /*ARGSUSED*/, for lint's sake.
	* data/glr.c (YYUSE): Properly parenthesize, and use an alternate
	definition if 'lint' is defined.
	(YYID): New macro (or function, if lint).
	All uses of /*CONSTCOND*/0 replaced by YYID(0).
	* data/yacc.c: Likewise.
	* data/glr.c (yyuserAction, yyuserMerge, yy_reduce_print):
	(yyrecoverSyntaxError): Prepend /*ARGSUSED*/.
	* data/glr.cc (YYLLOC_DEFAULT): Omit /*CONSTCOND*/ since this code
	is C++ only.
	* data/lalr1.cc (YYUSE): Just use a cast, since this code is C++ only.
	* data/yacc.c (YYSTACK_FREE) [defined YYSTACK_ALLOC]:
	Use YYID(0) rather than 0, for lint.
	(yystrlen): Rewrite to avoid lint warning about ptrdiff_t overflow.
	(yysyntax_error): Rewrite to avoid lint warnings about parenthesization.

2005-12-07  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/glr-regression.at
	(Improper handling of embedded actions and dollar(-N) in GLR parsers):
	Close memory leak reported by twlevo.

2005-12-06  "Joel E. Denny" <jdenny@ces.clemson.edu>

	* data/glr.c (yyprocessOneStack, yyparse): Synchronize the shift for
	all stacks.
	(yyparse): Iterate another stack in order to call user destructors.
	* tests/glr-regression.at (No users destructors if stack 0 deleted):
	New test case.
	(Duplicated user destructor for lookahead): This test now is expected
	to succeed.

2005-12-01  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Document the following change.
	* data/yacc.c: Say "parser skeleton" rather than "file", since
	it's no longer just a file.
	* data/glr.c: Grant a special exception for C GLR parsers, that
	reads like the already-existing exception for C LALR(1) parsers.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/location.cc: Likewise.
	* data/yacc.c: Reword the "written by" statement to clarify that
	it was the parser skeleton, not the entire output file.
	* data/glr.c: Written by Paul Hilfinger.
	* data/glr.cc: Written by Akim Demaille.
	* data/lalr1.cc: Likewise.

2005-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yy_reduce_print, YY_REDUCE_PRINT):
	Fix typos in previous change that broke 'make check'.
	YY_REDUCE_PRINT cannot be a pseudo-varargs macro; that isn't
	supported in C.
	* tests/calc.at (_AT_CHECK_CALC,_AT_CHECK_CALC_ERROR):
	Don't check NUM-STDERR-LINES, since the output format is fluctuating.
	We can revert this once things settle down.

	* src/conflicts.c (conflicts_print): Don't print file name twice
	when %expect fails because there were no conflicts.
	* doc/bison.texinfo (Expect Decl): Tighten up wording in previous
	change.
	* tests/conflicts.at (%expect not enough, %expect too much):
	(%expect with reduce conflicts): Adjust to new behavior.

2005-11-18  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_print): Unsatisfied %expectation are
	errors.
	* NEWS: Document this.
	* doc/bison.texinfo (Expect Decl): Likewise.

2005-11-16  Akim Demaille  <akim@epita.fr>

	Generalize the display of semantic values and locations in traces.
	* data/glr.c (yy_reduce_print): Fix indices (again).
	* data/c++.m4 (b4_rhs_value, b4_rhs_location): Don't expect
	literal integers.
	* data/lalr1.cc (yyreduce_print): Rename as...
	(yy_reduce_print): this.
	Display values and locations.
	* data/yacc.c (yy_reduce_print): Likewise.
	(YY_REDUCE_PRINT): Adjust to pass the required arguments.
	(yysymprint): Move higher to be visible from yy_reduce_print).
	(yyparse): Adjust.
	* tests/calc.at: Adjust the expected length of the traces.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yy_reduce_print): The loop was quite wrong: type are
	from 1 to N, while values and location start at 0.
	(b4_rhs_location, b4_rhs_value): Add parens around $1 and $2.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yy_reduce_print): Fix the $ number.

2005-11-14  Akim Demaille  <akim@epita.fr>

	"Use" parse parameters.
	* data/c.m4 (b4_parse_param_for, b4_parse_param_use): New.
	* data/glr.c, data/glr.cc: Use them.
	* data/glr.c (YYUSE): Have a C++ definition that supports
	non-pointer types.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yyexpandGLRStack): Declare only if defined.

2005-11-14  Akim Demaille  <akim@epita.fr>

	* data/glr.cc: New.
	* data/m4sugar/m4sugar.m4 (m4_prepend): New.

2005-11-12  Akim Demaille  <akim@epita.fr>

	Let position and location be PODs.
	* data/location.cc (position::initialize, location::initialize): New.
	(position::position, location::location): Define only if
	b4_location_constructors is defined.
	* data/lalr1.cc (b4_location_constructors): Define it for backward
	compatibility.
	* doc/bison.texinfo (Initial Action Decl): Use initialize.

2005-11-12  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Move the body of the ctor and dtor into the
	parser file (instead of the header).
	Wrap the implementations in a "namespace yy".

2005-11-12  Akim Demaille  <akim@epita.fr>

	Have glr.c include its header file when created.
	* data/glr.c (b4_shared_declarations): New.
	Output them verbatim in the parser if !%defines, otherwise
	output then in the header file, and include it instead.

2005-11-11  Akim Demaille  <akim@epita.fr>

	* data/glr.c: Comment changes.

2005-11-11  Akim Demaille  <akim@epita.fr>

	When yydebug, report semantic and location values for reductions.
	* data/glr.c (yy_reduce_print): Report the semantic values and the
	locations.
	(YY_REDUCE_PRINT): Adjust.
	(yyglrReduce): Use them.
	(b4_rhs_value, b4_rhs_location): Remove m4_eval invocations.
	* data/c.m4 (b4_yysymprint_generate): Specify the const arguments.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Remove the reduction
	traces.

2005-11-10  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yynewGLRStackItem, YY_RESERVE_GLRSTACK): New.
	(yyaddDeferredAction, yyglrShift, yyglrShiftDefer): Use them.
	(yyexpandGLRStack, YYRELOC): Define only when YYSTACKEXPANDABLE.

2005-11-09  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/cxx.m4, examples/Makefile.am: Don't build
	examples/calc++ if no C++ compiler is available.  (trivial change)

2005-11-09  Akim Demaille  <akim@epita.fr>

	* src/scan-skel.l: Use a couple of asserts.

2005-11-03  Akim Demaille  <akim@epita.fr>

	In some (weird) cases, the final state number is incorrect.
	Reported by Alexandre Duret-Lutz.
	* src/LR0.c (state_list_append): Remove the computation of
	final_state.
	(save_reductions): Do it here.
	(get_state): Alpha conversion.
	(generate_states): Use a for loop.
	* src/gram.h (item_number_is_rule_number)
	(item_number_is_symbol_number): New.
	* src/state.c: Use assert.
	* src/system.h: Include assert.h.
	* tests/sets.at (Accept): New.

2005-10-30  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c (yyfill): Adjust comment.
	(yyresolveAction): Initialize default location properly
	for empty right-hand sides.
	(yydoAction): Ditto.
	Add comment explaining apparently dead code.
	* tests/glr-regression.at
	(Incorrectly initialized location for empty right-hand side in GLR):
	New test.

2005-10-30  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (cleanup_gnulib): New function.  Use it to clean up
	gnulib when interrupted.  This fixes some race conditions and
	works around some portability problems (one noted by Paul
	Hilfinger).

2005-10-22  Akim  <akim@epita.fr>

	* Makefile.cfg: Adjust to config -> build-aux.
	Reported by twledo.

2005-10-21  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Pass
	the %parse-params.
	* data/glr.c (YY_SYMBOL_PRINT, yydestroyGLRState): Adjust.
	* data/yacc.c (b4_Pure_if): Rename as...
	(b4_yacc_pure_if): this.
	(YY_SYMBOL_PRINT, yyparse): Adjust.
	* doc/bison.texinfo: Formatting changes.

2005-10-21  Akim Demaille  <akim@epita.fr>

	Finish the transition config -> build-aux.
	* configure.ac, Makefile.am: Use build-aux.
	* config/prev-version, config/announce-gen, config/Makefile.am:
	Move to...
	* build-aux/prev-version, build-aux/announce-gen,
	* build-aux/Makefile.am: here.

2005-10-14  Akim Demaille  <akim@epita.fr>

	* examples/calc++/test: Use set -x only when VERBOSE.

2005-10-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison now warns if it finds a stray `$' or `@' in an action.
	* src/scan-gram.l (<SC_BRACED_CODE>[$@]): Implement this.

2005-10-13  Akim Demaille  <akim@epita.fr>

	* src/scan-skel.l: Output the base name parts of the parser and
	header file names.
	* tests/output.at (AT_CHECK_OUTPUT): Support subdirectories, and
	additional checks.
	Use this to exercise C++ outputs in subdirs.
	Reported by Oleg Smolsky.

2005-10-12  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (b4_c_function_def): Look at __C99_FUNC__, not at
	__STDC_VERSION__, as IBM cc 7.0 doesn't define the latter either.
	Problem reported by John P. Hartmann.
	* data/yacc.c (YYMODERN_C): Likewise.  Don't define if the user has
	already defined it.

2005-10-12  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (version_check): Exit 63 to please missing
	(stands for "version mismatch).
	* tests/input.at, doc/bison.texinfo: Adjust.

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

	Work around portability problems with Visual Age C compiler
	(xlc and xlC_r) reported by John P. Hartmann.
	* data/location.cc (initial_column, initial_line): Remove.
	All uses replaced by 0 and 1.
	* src/scan-gram.l (gram_wrap): Redefine to avoid bug in flex 2.5.31
	that xlc complains about.
	* src/scan-skel.l (skel_wrap): Likewise.
	* data/c.m4 (b4_c_function_def): Look at __STDC_VERSION__ as well
	as __STDC__.
	* data/yacc.c (YYMODERN_C): New macro, which also looks at
	__STDC_VERSION__.  Use it everywhere instead of looking at
	__STDC__ and __cplusplus.

2005-10-10  Akim Demaille  <akim@epita.fr>

	* examples/calc++/test: Be quiet unless VERBOSE.

2005-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	* data/c.m4 (yydestruct, yysymprint):
	Use YYUSE instead of casting to void.
	* data/glr.c (YYUSE): New macro.
	(yyuserMerge, yyreportAmbiguity, yyreportSyntaxError):
	Use it instead of rolling our own.
	(YYLLOC_DEFAULT, YYCHK, YYDPRINTF, YY_SYMBOL_PRINT, YY_REDUCE_PRINT):
	(YYCHK1):
	Use /*CONSTCOND*/ to suppress lint warnings.
	* data/lalr1.cc (YYLLOC_DEFAULT, YY_SYMBOL_PRINT, YY_REDUCE_PRINT):
	(YY_STACK_PRINT): Use 'false' not '0'.
	(YYUSE): New macro.
	(yysymprint_, yydestruct_): Use it instead of rolling our own.
	* data/yacc.c (YYUSE): New macro.
	(YYCOPY, YYSTACK_RELOCATE, YYBACKUP, YYLLOC_DEFAULT):
	(YYDPRINTF, YY_SYMBOL_PRINT, YY_STACK_PRINT, YY_REDUCE_PRINT):
	(yyerrorlab): Use /*CONSTCOND*/ to suppress lint warnings.


	* data/m4sugar/m4sugar.m4 (_m4_map): New macro.
	(m4_map, m4_map_sep): Use it.  Handle the empty list correctly.

2005-10-04  Paul Eggert  <eggert@cs.ucla.edu>

	Undo the parts of the unlocked-I/O change that substituted
	putc or puts for printf.  This might hurt performance a bit,
	but some people prefer the printf style.
	* data/c.m4 (yysymprint): Prefer printf to puts and putc.
	* data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): Remove.
	All uses replaced by YYFPRINTF and YYDPRINTF.
	* data/yacc.c: Likewise.
	* lib/bitset.c (bitset_print): Likewise.
	* lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer printf to
	putc and puts.
	* lib/lbitset.c (debug_lbitset): Likewise.
	* src/closure.c (print_firsts, print_fderives): Likewise.
	* src/gram.c (grammar_dump): Likewise.
	* src/lalr.c (look_ahead_tokens_print): Likewise.
	* src/output.c (escaped_output): Likewise.
	(user_actions_output): Break apart two printfs.
	* src/parse-gram.y (%printer): Prefer printf to putc and puts.
	* src/reduce.c (reduce_print): Likewise.
	* src/state.c (state_rule_look_ahead_tokens_print): Likewise.
	* src/system.h: Include unlocked-io.h rathe than stdio.h.

	* data/glr.c (yyuserMerge, yyreportAmbiguity, yyreportSyntaxError):
	Use assignments rather than casts-to-void to suppress
	unused-variable warnings.  This pacifies 'lint'.
	* data/lalr1.cc (yysymprint_, yydestruct_): Use a call to suppress
	unused-variable warnings.

2005-10-03  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* Makefile.am: DJGPP specific files added to EXTRA_DIST.

2005-10-02  Paul Eggert  <eggert@cs.ucla.edu>

	Use unlocked I/O for a minor performance improvement on hosts like
	GNU/Linux and Solaris that support unlocked I/O.  The basic idea
	is to use the gnlib unlocked-io module, and to prefer putc and
	puts to printf when either will work (since the latter doesn't
	come in an unlocked flavor).
	* bootstrap (gnulib_modules): Add unlocked-io.
	* data/c.m4 (yysymprint): Prefer puts and putc to printf.
	* data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): New macros.
	Prefer them to YYFPRINTF and YYDPRINTF if either will do,
	and similarly for puts and putc and printf.
	* data/yacc.c: Likewise.
	* lib/bitset.c (bitset_print): Likewise.
	* lib/bitset.h [USE_UNLOCKED_IO]: Include unlocked-io.h.
	* lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer putc and puts
	to printf.
	* lib/lbitset.c (debug_lbitset): Likewise.
	* src/closure.c (print_firsts, print_fderives): Likewise.
	* src/gram.c (grammar_dump): Likewise.
	* src/lalr.c (look_ahead_tokens_print): Likewise.
	* src/output.c (escaped_output): Likewise.
	(user_actions_output): Coalesce two printfs.
	* src/parse-gram.y (%printer): Prefer putc and puts to printf.
	* src/reduce.c (reduce_print): Likewise.
	* src/state.c (state_rule_look_ahead_tokens_print): Likewise.
	* src/system.h: Include unlocked-io.h rather than stdio.h.

	* data/lalr1.cc: Don't put an unmatched ' in a dnl comment, as
	this confuses xgettext.

2005-10-02  Akim Demaille  <akim@epita.fr>

	* bootstrap (gnulib_modules): Add strverscmp.
	* lib/.cvsignore: Add strverscmp.c, strverscmp.h.
	* m4/.cvsignore: Add strverscmp.m4.
	* src/parse-gram.y (%require): New token, new rule.
	(version_check): New.
	* src/scan-gram.l (%require): Adjust.
	* tests/input.at (AT_REQUIRE): New.
	Use it.
	* doc/bison.texinfo (Require Decl): New.
	(Calc++ Parser): Use %require.

2005-10-02  Akim Demaille  <akim@epita.fr>

	* data/location.cc: New.

2005-10-02  Paul Eggert  <eggert@cs.ucla.edu>,
	    Akim Demaille  <akim@epita.fr>

	Make sure -odir/foo.cc creates dir/location.hh etc.
	* src/files.h (spec_outfile, parser_file_name, spec_name_prefix)
	(spec_file_prefix, spec_verbose_file, spec_graph_file)
	(spec_defines_file): Now const.
	(dir_prefix): New.
	(short_base_name): Remove.
	* src/files.c: Adjust.
	(dirname.h): Include.
	(base_name): Don't prototype it.
	(finput): Remove, duplicates gram_in.
	(full_base_name, short_base_name): Replace by...
	(all_but_ext, all_but_tab_ext): these.
	(compute_base_names): Rename as...
	(compute_file_name_parts): this.
	Update to compute the new variables, including dir_prefix.
	Adjust dependencies.
	* src/output.c (prepare): Output them.
	* src/reader.c: Adjust to use gram_in, not finput.
	* src/scan-skel.l (@dir_prefix@): New.

2005-10-02  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* lib/subpipe.c: New function end_of_output_subpipe() added
	to allow support for non-posix systems. This is a no-op function
	for posix systems.

	* lib/subpipe.h: New function end_of_output_subpipe() added
	to allow support for non-posix systems. This is a no-op function
	for posix systems.

	* src/output.c (output_skeleton): Use end_of_output_subpipe() to
	handle the lack of pipe/fork functionality on non-posix systems.

	* djgpp/Makefile.maint: DJGPP specific file.

	* djgpp/README.in: DJGPP specific file.

	* djgpp/config.bat: DJGPP specific configuration file.

	* djgpp/config.sed: DJGPP specific configuration file.

	* djgpp/config.site: DJGPP specific configuration file.

	* djgpp/config_h.sed: DJGPP specific configuration file.

	* djgpp/subpipe.c: DJGPP specific replacement file for lib/subpipe.c.

	* djgpp/subpipe.h: DJGPP specific replacement file for lib/subpipe.h.

2005-10-02  Akim Demaille  <akim@epita.fr>

	* data/location.cc: New, extract from...
	* data/lalr1.cc: here.
	(location.hh): Include it after the user prologue, in case the
	filename type is defined by the user.
	Forward declation location and position before the pre-prologue.
	(yyresult_): Rename as...
	(yyresult): this, it's a local variable, not an attribute.
	* data/Makefile.am (dist_pkgdata_DATA): Adjust.

2005-10-01  Akim Demaille  <akim@epita.fr>

	* examples/extexi: Restore the #line generation.

2005-09-30  Akim Demaille  <akim@epita.fr>,
	    Alexandre Duret-Lutz <adl@gnu.org>

	Move the token type and YYSTYPE in the parser class.
	* data/lalr1.cc (stack.hh, location.hh): Include earlier.
	(parser::token): New, from the moved free definition of tokens.
	(parser::semantic_value): Now a full definition instead of an
	indirection to YYSTYPE.
	(b4_post_prologue): No longer included in the header file, but
	in the implementation file.
	* doc/bison.texi (C+ Language Interface): Update.
	* src/parse-gram.y: Support unary %define.
	* tests/actions.at: Define global_tokens_and_yystype for backward
	compatibility until we update the tests.
	* tests/calc.at: Idem.
	(first_line, first_column, last_line, last_column): Define for lalr1.cc
	to simplify the code.

2005-09-29  Paul Eggert  <eggert@cs.ucla.edu>

	Port to SunOS 4.1.4, which lacks strtoul and strerror.
	Ah, the good old days!  Problem reported by Peter Klein.
	* bootstrap (gnulib_modules): Add strerror, strtoul.
	* lib/.cvsignore: Add strerror.c, strtol.c, strtoul.c
	* m4/.cvsignore: Add strerror.m4, strtol.m4, strtoul.m4.

2005-09-29  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_error_verbose_if): New.
	* data/lalr1.cc: Use it.
	(YYERROR_VERBOSE_IF): Remove.
	(yyn_, yylen_, yystate_, yynerrs_, yyerrstatus_): Remove as
	parser members, replaced by...
	(yyn, yylen, yystate, yynerss, yyerrstatus): these parser::parse
	local variables.
	(yysyntax_error_): Takes the state number as argument.
	(yyreduce_print_): Use the argument yyrule, not the former
	attribute yyn_.

2005-09-26  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (gnulib_modules): Add verify.
	* lib/.cvsignore: Add verify.h.
	* src/getargs.c: Use ARGMATCH_VERIFY rather than verify.
	* src/system.h (verify): Remove.
	Include verify.h instead.
	* src/tables.c (tables_generate): Use new API for 'verify'.

2005-09-21  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Do not use
	local variables whose names begin with 'yy'.
	* tests/calc.at (_AT_DATA_CALC_Y): Likewise.
	Trivial changes from Joel E. Denny.

	* bootstrap (gnulib_modules): Remove alloca.  Bison doesn't need
	it itself.
	* src/main.c (main) [C_ALLOCA]: Don't flush alloca'ed memory; we
	don't use alloca any more.

	* data/yacc.c [YYSTACK_USE_ALLOCA && !defined __GNUC__ && ! defined
	__BUILTIN_VA_ARG_INCR && ! defined _AIX && ! defined _MSC_VER &&
	defined _ALLOCA_H]: Don't include <stdlib.h>; not needed in this case.
	* tests/torture.at (Exploding the Stack Size with Alloca): Adjust
	to match yacc.c, to test more hosts.

2005-09-20  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYSIZE_T): Reindent to make it clearer.  This
	doesn't affect behavior.
	(YYSTACK_ALLOC) [YYSTACK_USE_ALLOCA]: Improve support for
	Solaris, AIX, MSC.
	(_STDLIB_H): Renamed from YYINCLUDED_STDLIB_H.  All uses changed.
	This works a bit better with glibc, if user code has already included
	stdlib.h.
	* doc/bison.texinfo (Bison Parser): Document that users can't
	arbitrarily use malloc and free for other purposes.  Document
	that <alloca.h> and <malloc.h> might be included.
	(Table of Symbols): Under YYSTACK_USE_ALLOCA, Don't claim that the
	user must declare alloca.

	* HACKING (release): Forwarn the Translation Project about
	stable releses.

2005-09-20  Akim Demaille  <akim@epita.fr>

	* data/glr.c: Use b4_token_enums, not b4_token_enums_defines.

2005-09-19  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYSIZE_MAXIMUM): New macro.
	(YYSTACK_ALLOC_MAXIMUM): Use it.
	(yysyntax_error): New function.
	(yyparse) [YYERROR_VERBOSE]: Don't leak memory indefinitely if
	multiple syntax errors are reported, and alloca is being used.
	Instead, reallocate buffers twice as big each time, so that
	we waste at most half the allocated memory.  Start with a small
	(128-byte) buffer that will suffice in most cases anyway.
	Use yysyntax_error to do most of the work.

	* doc/bison.texinfo (Error Reporting, Table of Symbols):
	yynerrs is the number of errors reported, not the number of
	errors encountered.

	* tests/glr-regression.at (Duplicated user destructor for lookahead):
	Mark it as expected to fail.
	Cast result of malloc; problem reported by twlevo@xs4all.nl.
	* tests/actions.at, tests/calc.at, tests/glr-regression.at:
	Don't start user-code symbols with "yy", to avoid name space problems.

2005-09-19  Akim Demaille  <akim@epita.fr>

	Remove the traits, failed experiment.
	It never proved useful, and anyway because of the current
	definition, it was not possible to have several specialization of
	this traits, making it useless.
	* data/lalr1.cc (yy:traits): Remove.
	Inline its definitions in the parser class.

2005-09-19  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (LIBS): Pass INTLLIBS to address failures on at
	least Mac OSX with a /usr/local install of gettext.

2005-09-19  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yyparse): Rename yylooka and yyilooka as yychar
	and yytoken for similarity with the other skeletons.

2005-09-19  Akim Demaille  <akim@epita.fr>

	* NEWS, configure.ac: update version number to 2.1a.

2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.1.

	* NEWS: Remove notice of yytname change, since it was never in an
	official release.
	* data/glr.c (yydestroyGLRState): Rename local var to avoid shadowing
	diagnostic.
	* src/output.c (prepare): Likewise.
	* data/lalr1.cc (YYERROR_VERBOSE_IF): New macro.
	(yysyntax_error_): Use it to avoid GCC warning when YYERROR_VERBOSE
	is not defined.  This is an awful hack, but it's enough for now.
	All callers changed.
	* tests/glr-regression-at (make_value): Args are const pointers now,
	to avoid GCC warning.
	(Duplicated user destructor for lookahead): New test.  Currently
	skipped.  It fails on my host but I'm not sure it'll always fail.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* src/symtab.h (struct symbol): Declare the printer and destructor
	as const, to avoid accidental calls to free.
	(symbol_destructor_set, symbol_printer_set): Adjust.
	* src/symtab.c: Adjust.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_token_enums): New.
	(b4_token_defines): Rename as...
	(b4_token_enums_defines): this.
	(b4_token_defines): New, output only the #defines.
	* data/yacc.c, data/glr.c: Adjust.
	* data/lalr1.cc: Use b4_token_enums instead of b4_token_enums_defines.
	* data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Define
	as default values.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yylex_): Remove, inline its code.
	(yyreport_syntax_error_): Remove, replaced by...
	(yysyntax_error_): this which returns a string and leaves to the
	caller the call to the users' error function.
	(yylooka_, yyilooka_, yylval, yylloc, yyerror_range_, yyval, yyloc):
	Move from members of the parser object...
	(yylooka, yyilooka, yylval, yylloc, yyerror_range, yyval, yyloc):
	to local variables of the parse function.

2005-09-16  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Calc++ Parser): Don't promote defining YYEOF
	since it's in Bison's name space.

2005-09-15  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyresolveValue): Add default case to pacify
	gcc -Wswitch-default.  Problem reported by twlevo@xs4all.nl.

	* NEWS: Document when yyparse started to return 2.
	* doc/bison.texinfo (Parser Function): Document when yyparse
	returns 2.

	* data/lalr1.cc: Revert part of previous change, as it's incompatible.
	(b4_filename_type): Renamed back from b4_file_name_type.  All uses
	changed.
	(class position): file_name -> filename (reverting).  All uses changed.

2005-09-14  Paul Eggert  <eggert@cs.ucla.edu>

	* examples/calc++/Makefile.am ($(calc_sources_generated)): Don't
	do anything if $@ exists.  This reverts part of the 2005-07-07
	patch.

2005-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	* Makefile.am (EXTRA_DIST): Do not distribute REFERENCES; it
	contains obsolete information and isn't worth distributing as a
	separate file anyway.
	* data/glr.c [defined YYSETJMP]: Don't include <setjmp.h>.
	(YYJMP_BUF, YYSETJMP, YYLONGJMP) [!defined YYSETJMP]: New macros.
	All uses of jmp_buf, setjmp, longjmp changed to use these instead.
	(yyparse): Abort if user code uses longjmp to throw an unexpected
	value.

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

	* data/c.m4 (b4_identification): Define YYBISON_VERSION.
	Suggested by twlevo@xs4all.nl.

	* data/glr.c (YYCHK1): Do not assume YYE is in range.
	This avoids a diagnostic from gcc -Wswitch-enum.
	Problem reported by twlevo@xs4all.nl.

	* doc/bison.texinfo: Don't use "filename", as per GNU coding
	standards.  Use "file name" or "file" or "name", depending on
	the context.
	(Invocation): The output of "bison hack/foo.y" goes to foo.tab.c,
	not to hack/foo.tab.c.
	(Calc++ Top Level): 2nd arg of main is not const.
	* data/glr.c: b4_filename -> b4_file_name.
	* data/lalr1.cc: Likewise.  Also, b4_filename_type -> b4_file_name_type.
	All uses changed.
	(class position): filename -> file_name.  All uses changed.
	* data/yacc.c: b4_filename -> b4_file_name.
	* lib/bitset.h: filename -> file_name in local vars.
	* lib/bitset_stats.c: Likewise.
	* src/files.c: Likewise.
	* src/scan-skel.l ("@output ".*\n): Likewise.
	* src/files.c (file_name_split): Renamed from filename_split.
	* src/muscle_tab.c (muscle_init): Output b4_file_name, not b4_filename.

2005-09-08  Paul Eggert  <eggert@cs.ucla.edu>

	* lib/.cvsignore: Add pipe-safer.c, stdio--.h, unistd--.h,
	to accommodate latest gnulib.

	* tests/glr-regression.at (Duplicate representation of merged trees):
	Add casts to pacify g++.  Problem reported by twlevo@xs4all.nl.

	* bootstrap: Add comment as to why the AM_LANGINFO_CODESET hack is
	needed.

2005-08-26  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yydestroyGLRState): Renamed from yydestroyStackItem.
	All uses changed.  Invoke user destructor after an error during a
	split parse (trivial change from Joel E. Denny).

	* tests/glr-regression.at
	(User destructor after an error during a split parse):  New test case.
	Problem reported by Joel E. Denny in:
	http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html

2005-08-25  Paul Eggert  <eggert@cs.ucla.edu>

	* README-cvs: Give URLs for recommended tools.
	Mention Gzip version problem, and bootstrapping issues.
	Remove troubleshooting section, as it's somewhat obsolete.

	* bootstrap (no_cache): New var, to accommodate different wget
	variants.  Use it instead of '-C off'.  Problem reported by
	twlevo@xs4all.nl.

	* data/glr.c (yydestroyStackItem): New function.
	(yyrecoverSyntaxError, yyreturn): Use it to improve quality of
	debugging information.  Problem reported by Joel E. Denny.

2005-08-25  Akim Demaille  <akim@epita.fr>

	* tests/local.at (AT_COMPILE_CXX): Pass $LINKS too.

2005-08-24  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyrecoverSyntaxError, yyreturn):
	Don't invoke destructor on unresolved entries.
	* tests/glr-regression.at
	(User destructor for unresolved GLR semantic value): New test case.
	Problem reported by Joel E. Denny in:
	http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html

2005-08-21  Paul Eggert  <eggert@cs.ucla.edu>

	* lib/.cvsignore: Remove realloc.c, strncasecmp.c, xstrdup.c.
	Add strnlen.c.
	* m4/.cvsignore: Remove codeset.m4, gettext.m4, lib-ld.m4,
	lib-prefix.m4, po.m4.

	* data/glr.c (yyreturn): Use "Cleanup:" rather than "Error:"
	in yydestruct diagnostic, since it might not be an error.
	Problem reported by Joel Denny near end of
	<http://lists.gnu.org/archive/html/help-bison/2005-07/msg00040.html>.
	* data/lalr1.cc (yyerturn): Likewise.
	* data/yacc.c (yyreturn): Likewise.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Adjust to the above change.

	* src/files.c: Remove obsolete FIXME comment.

	* data/glr.c (YY_SYMBOL_PRINT): Append a newline, for consistency
	with the other templates, and to fix bogus run-on messages such
	as the one reported at the end of
	<http://lists.gnu.org/archive/html/help-bison/2005-07/msg00040.html>.
	All callers changed to avoid the newline.
	(yyprocessOneStack): Output two lines rather than one, to accommodate
	the above change.  This changes the debug output format slightly.

	* data/glr.c (yyresolveValue): Fix redundant parse tree problem
	reported by Joel E. Denny in
	<http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00004.html>
	(trivial change).
	* tests/glr-regression.at (Duplicate representation of merged trees):
	New test, from Joel E. Denny in:
	<http://lists.gnu.org/archive/html/help-bison/2005-07/msg00013.html>.
	* THANKS: Add Joel E. Denny.

	* configure.ac (AC_INIT): Bump to 2.0c.

2005-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.0b.

	* Makefile.am (SUBDIRS): Put examples before tests, so that
	"make check" doesn't finish with "All 1 tests passed".

	* tests/regression.at (Token definitions): Don't rely on
	AT_PARSER_CHECK for data that contains backslashes.  It currently
	uses 'echo', and 'echo' isn't portable if its argument contains
	backslashes.  Problem found on OpenBSD 3.4.  Also, do not assume
	that the byte '\0xff' is not printable in the C locale; it is,
	under OpenBSD 3.4 (!).  Luckily, '\0x80' through '\0x9e' are
	not printable, so use '\0x81' to test.

	* data/glr.c (YYOPTIONAL_LOC): Define even if it's not a recent
	version of GCC, since the macro is used with non-GCC compilers.

	Fix core dump reported by Pablo De Napoli in
	<http://lists.gnu.org/archive/html/bug-bison/2005-07/msg00053.html>.
	* tests/regression.at (Invalid inputs with {}): New test.
	* src/parse-gram.y (token_name): Translate type before using
	it as an index.

	* data/glr.c (ATTRIBUTE_UNUSED): Remove, since it infringes on
	the user's name space.  All uses changed to __attribute__
	((__unused__)).
	(yyFail, yyMemoryExhausted, yyreportAmbiguity):
	Add __attribute__ ((__noreturn__)).

	* etc/clcommit: Remove.  We weren't using it, and it failed
	"make maintainer-distcheck".
	* Makefile.maint: Merge from coreutils.
	(CVS_LIST, CVS_LIST_EXCEPT): New macros.
	(syntax-check-rules): Change list of rules as described below.
	(sc_cast_of_alloca_return_value, sc_dd_max_sym_length):
	(sc_file_system, sc_obsolete_symbols, sc_prohibit_atoi_atof):
	(sc_prohibit_jm_in_m4, sc_root_tests, sc_tight_scope):
	(sc_trailing_space): New rules.
	(sc_xalloc_h_in_src): Remove.
	(sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value):
	(sc_space_tab, sc_error_exit_success, sc_changelog):
	(sc_system_h_headers, sc_sun_os_names, sc_unmarked_diagnostics):
	(makefile-check, po-check, author_mark_check):
	(makefile_path_separator_check, copyright-check):
	Use grep -n, to make it easier to find violations.
	Use CVS_LIST and CVS_LIST_EXCEPT.
	(header_regexp, h_re): Remove.
	(dd_c): New macro.
	(sc_dd_max_sym_length, .re-list, news-date-check): New rules.
	(my-distcheck): Use more-modern GCC flags.
	(signatures, %.asc): Remove.
	(rel-files, announcement): Remove signatures.
	Restore old updating code, even though we don't use it, so
	that we're the same as coreutils.
	(alpha, beta, major): Depend on news-date-check.
	Make the upload commands.

	* data/c.m4, data/lalr1.cc, data/yacc.c: Normalize white space.
	* lib/abitset.h, lib/bbitset.h, lib/bitset.h: Likewise.
	* lib/bitset_stats.c, lib/ebitset.h, lib/lbitset.c: Likewise.
	* lib/libitset.h, lib/timevar.c, lib/vbitset.h: Likewise.
	* src/Makefile.am, src/gram.c, src/muscle_tab.h: Likewise.
	* src/parse-gram.y, src/system.h, src/tables.c, src/vcg.c: Likewise.
	* src/vcg_defaults.h, tests/cxx-type.at, tests/existing.at: Likewise.
	* tests/sets.at: Likewise.

	* data/m4sugar/m4sugar.m4: Sync from Autoconf, except that
	we comment out the Autoconf version number.
	* doc/bison.texinfo (Calc++ Scanner): Don't use atoi, as
	it's error-prone and "make maintainer-distcheck" rejects it.

	* lib/subpipe.c: Include <fcntl.h> without checking for HAVE_FCNTL_H.
	Indent calls to "error" to pacify "make maintainer-distcheck",
	when the calls are not intended to be translated.
	* m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't check for fcntl.h.

	* src/Makefile.am (DEFS): Use +=, to pacify
	"make maintainer-distcheck".
	(bison_SOURCES): Add scan-skel.h.
	(sc_tight_scope): New rule, from coreutils.

	* src/files.c (src_extension, header_extension):
	Now static, not extern.
	* src/getargs.c (short_options): Likewise.
	* src/muscle_tab.c (muscle_table): Likewise.
	* src/parse-gram.y (current_class, current_type, current_prec):
	Likewise.
	* src/reader.c (grammar_end, previous_rule_end): Likewise.
	* src/getargs.h: Redo comments to pacify "make maintainer-distcheck".
	* src/main.c (main): Cast bindtextdomain and textdomain calls to
	void, to avoid warning when NLS is disabled.
	* src/output.c: Include scan-skel.h.
	(scan_skel): Remove decl, since scan-skel.h does this.
	(output_skeleton):
	Indent calls to "error" to pacify "make maintainer-distcheck".
	* src/print_graph.c: Don't include <obstack.h>, as system.h does this.
	* src/reader.h (gram_end, gram_lineno): New decls to pacify
	"make maintainer-distcheck".
	* src/scan-skel.l (skel_lex, skel_get_lineno, skel_get_in):
	(skel_get_out, skel_get_leng, skel_get_text, skel_set_lineno):
	(skel_set_in, skel_set_out, skel_get_debug, skel_set_debug):
	(skel_lex_destroy, scan_skel): Move these decls to...
	* src/scan-skel.h: New file.
	* src/uniqstr.c (uniqstr_assert):
	Indent calls to "error" to pacify "make maintainer-distcheck".

	* tests/Makefile.am ($(srcdir)/package.m4): Use $(VAR),
	not @VAR@.

	* tests/torture.at: Revamp to avoid misuse of atoi that
	"make maintainer-distcheck" complained about.

	* examples/extexi (message): Don't print a message more than once,
	and omit line-number decoration that makes Emacs compile think
	that informative messages are worth worrying about.

2005-07-22  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac: Update version number.

	* Makefile.am (SUBDIRS): Add examples; somehow this got removed
	accidentally.
	* examples/calc++/calc++-parser.yy: Remove from CVS, as it's
	autogenerated by the maintainer.
	* examples/calc++/.cvsignore: Add *.yy.

	* lib/bitset.c (bitset_alloc): Don't cast xcalloc result.
	* lib/bitset_stats.c (bitset_stats_init): Likewise.
	* lib/bitsetv.c (bitsetv_alloc): Likewise.

	* po/POTFILES.in: Add lib/xalloc-die.c; remove lib/xmalloc.c.

	* src/relation.c (relation_transpose): Rewrite to avoid bogus complaint
	from maintainer-distcheck about casting the argument of 'free'.

	* NEWS: Mention recent yytname changes.
	* THANKS: Add Anthony Heading, twlevo@xs4all.nl.

	* bootstrap: For translations that have not yet been upgraded to
	the new runtime-po domain, prime the pump by extracting the
	relevant strings from the obsolete translations.  This code can be
	removed once the bison-runtime domain has been translated by each
	team.

	* src/scan-gram.l (<SC_PRE_CODE>.): Don't double-quote token names,
	now that token names are already quoted.

	Fix problem reported by Anthony Heading.
	* data/glr.c (YYTOKEN_TABLE): New macro.
	(yytname): Define if YYTOKEN_TABLE.
	* data/yacc.c (YYTOKEN_TABLE, yytname): Likewise.
	* data/lalr1.cc (YYTOKEN_TABLE, yytname_): Likewise.
	(YYERROR_VERBOSE): Define the same way the other skeletons do.
	* src/output.c (prepare_symbols): Output token_table_flag.

2005-07-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyinitGLRStack, yyreturn): Don't call malloc
	again if the first call fails.

	* data/glr.c (yytnamerr): New function.
	(yyreportSyntaxError): Use it to dequote most string literals.
	* data/lalr1.c (yytname_): Renamed from yyname_, for compatibility
	with other skeletons.  All uses changed.
	(yytnameerr_): New function.
	(yyreport_syntax_error): Use it to dequote most string literals.
	* data/yacc.c (yytnamerr): New function.
	(yyerrlab): Use it to decode most string literals.
	* doc/bison.texinfo (Decl Summary, Calling Convention):
	Clarify quoting convention of yytname.
	* src/output.c (prepare_symbols): Quote all names.  This undoes
	the 2005-04-17 change, which is now accomplished (mostly) via
	changes in the parsers as described above.
	* tests/regression.at (Token definitions, Web2c Actions):
	Undo most 2005-04-17 change here, too.

2005-07-20  Paul Eggert  <eggert@cs.ucla.edu>

	Fix more problems reported by twlevo@xs4all.nl.
	* tests/cxx-type.at: Don't pipe output of ./types through sed to
	remove trailing spaces.  This loses the exit status of ./types,
	and isn't needed since ./types shouldn't be emitting trailing
	spaces.
	* data/glr.c (yyreturn): Don't pop stack if yyinitStateSet failed,
	as the stack isn't valid in that case.

	* src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
	(gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
	(gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
	Add declarations to pacify "gcc -Wmissing-prototypes" when flex 2.5.31
	is used.
	* src/scan-skel.l (skel_get_lineno, skel_get_in, skel_get_out):
	(skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
	(skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
	Likewise.

	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Work even with
	overly-picky compilers that reject 'char *foo = "bar";'.

	* src/symtab.c (SYMBOL_ATTR_PRINT, symbol_print): Direct output
	to FILE * parameter, not to stderr.  This fixes a typo introduced
	in the 2005-07-12 change.

	* lib/subpipe.c (create_subpipe): Rewrite slightly to avoid
	warnings from GCC 4.

	* data/glr.c (yyexpandGLRStack, yyaddDeferredAction, yyexpandGLRStack):
	(yyglrShiftDefer, yysplitStack):
	Remove unused parameters b4_pure_formals.  All uses changed.
	(yyglrShift): Remove unused parameters b4_user_formals.
	All uses changed.
	(yyglrReduce): Removed unused parameter yylocp.  All uses changed.

2005-07-18  Paul Eggert  <eggert@cs.ucla.edu>

	Destructor cleanups and regularization among the three skeletons.
	* NEWS: Document the behavior changes.
	* data/glr.c (yyrecoverSyntaxError): Don't bother to pop the
	stack before failing, as the cleanup code will do it for us now.
	* data/lalr1.cc (yyerrlab): Likewise.
	* data/glr.c (yyparse): Pop everything off the stack before
	freeing it, so that destructors get called properly.
	* data/lalr1.cc (yyreturn): Likewise.
	* data/yacc.c (yyreturn): Pop and destroy the start symbol, too.
	This is more consistent.
	* doc/bison.texinfo (Destructor Decl): Mention more reasons
	why destructors might be called.  1.875 -> 2.1.
	(Destructor Decl, Decl Summary, Table of Symbols):
	Some English-language cleanups for %destructor.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	Add output line for destructor of start symbol.
	* tests/calc.at (AT_CHECK_CALC): Add one to line counts,
	because of that same extra output line.

	* NEWS: Document minor wording changes in diagnostics of
	Bison-generated parsers.
	* data/glr.c (yyMemoryExhausted): Renamed from yyStackOverflow.
	Remove unused formals.  All uses changed.
	(yyreportAmbiguity): "ambiguity detected" -> "syntax is ambiguous".
	(yyparse): Rename yyoverflowlab to yyexhaustedlab.
	* data/yacc.c (yyparse): "parser stack overflow" -> "memory exhausted".
	Rename yyoverflowab to yyexhaustedlab.
	When memory exhaustion occurs during syntax-error reporting,
	report it separately rather than in a single diagnostic; this
	eases translation.
	* doc/bison.texinfo (Memory Management): Renamed from Stack Overflow.
	(Memory Exhausted): Renamed from Parser Stack Overflow.
	Revamp wording slightly to prefer "memory exhaustion".
	* tests/actions.at: "parser stack overflow" -> "memory exhausted".

	* data/c.m4 (b4_yysymprint_generate): Use YYFPRINTF, not fprintf.

	Add i18n support to the GLR skeleton.  Partially fix the C++
	skeleton; a C++ expert needs to finish this.  Remove debugging
	msgids; there's little point to having them translated, since they
	can be understood only by someone who can read the
	(English-language) source code.

	Generate runtime-po/bison-runtime.pot automatically, so that we
	don't have to worry about garbage getting in that file.  We'll
	make sure after the next official release that old msgids don't
	get lost.  See
	<http://lists.gnu.org/archive/html/bison-patches/2005-07/msg00119.html>.

	* runtime-po/Makefile.in.in, runtime-po/bison-runtime.pot: Remove.
	Now auto-generated.
	* PACKAGING: Don't claim that Gawk, GCC, Perl use this method yet.
	Fix typos in explanations of the runtime file.
	* bootstrap: Change gettext keyword from YYI18N to YY_.
	Use standard Makefile.in.in in runtime-po, since we'll arrange
	for backward-compatible bison-runtime.po files in a different way.
	* data/glr.c (YY_): New macro, from yacc.c.
	(yyuserAction, yyreportAmbiguity, yyreportSyntaxError, yyparse):
	Translate messages intended for users.
	(yyreportSyntaxError): Change "virtual memory" to "memory" to match
	the wording in the other skeletons.  We don't know that the memory
	is virtual.
	* data/lalr1.cc (YY_): Renamed from _.  All uses changed.
	Use same method that yacc.c uses.
	Don't translate debugging messages.
	(yy::yyreport_syntax_error): Put in a FIXME for the i18n stuff;
	it doesn't work (yet), and requires C++ expertise to fix.
	* data/yacc.c (YY_): Renamed from YY18N.  All uses changed.
	Move defn to a more logical place, to be consistent with other
	skeletons.
	Don't translate debugging messages.
	Don't assume line numbers fit in unsigned int; use unsigned long fmts.
	* doc/bison.texinfo: Mention <libintl.h>.  Change glibc cross reference
	to gettext cross reference.  Add indexing terms.  Mention YYENABLE_NLS.
	* runtime-po/POTFILES.in: Add data/glr.c, data/lalr1.cc.

	Fix yyerror / yylex test glitches noted by twlevo@xs4all.nl.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Have yyerror return
	void, not int.
	* tests/glr-regression.at (Badly Collapsed GLR States):
	Likewise.
	(Improper handling of embedded actions and dollar(-N) in GLR parsers):
	yylex should return 0 at EOF rather than aborting.

	Improve tests for stack overflow in GLR parser.
	Problem reported by twlevo@xs4all.nl.
	* data/glr.c (struct yyGLRStack): Remove yyerrflag member.
	All uses removed.
	(yyStackOverflow): Just longjmp, but with value 2 so that caller
	can handle the problem.
	(YYCHK1): Use goto (a la yacc.c) rather than setting a flag.
	(yyparse): New local variable yyresult to record the result.
	Use result of setjmp to set it, rather than storing itinto
	struct.
	(yyDone): Remove label.
	(yyacceptlab, yyabortlab, yyoverflowlab, yyreturn): New labels,
	to mimic yacc.c.  Do not discard lookahead if it's EOF (possible
	if YYABORT is used).
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Exit with
	yyparse status; put status > 1 into diagnostic.
	Check that status==2 works.
	* tests/calc.at, tests/cxx-type.at, tests/glr-regression.at:
	Use exit status 3 for failure to open (which shouldn't happen).

2005-07-17  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/conflicts.at (%nonassoc and eof):  Don't exit with status
	1 on syntax error; just let yyparse do its thing.
	* tests/glr-regression.at (Badly Collapsed GLR States): Likewise.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Likewise.
	(Exploding the Stack Size with Alloca):
	(Exploding the Stack Size with Malloc):
	Expect exit status 2, not 1, since the parser is supposed to blow
	its stack.  Problem reported by twlevo@xs4all.nl.

	* data/glr.c (yyparse): Don't assume that the initial calls
	to YYMALLOC succeed; in that case, yyparse incorrectly returned 0.
	Print a stack-overflow message and fail instead.
	Initialize the line-number information before creating the stack,
	so that the stack-overflow message can report line zero safely.

2005-07-14  Paul Eggert  <eggert@cs.ucla.edu>

	Fix problems reported by twlevo@xs4all.nl.
	* data/glr.c (YYSTACKEXPANDABLE): Don't define if already defined.
	(yyuserMerge): Provide a default case if b4_mergers is empty.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Define YYSTACKEXPANDABLE.
	* tests/glr-regression.at
	(Improper handling of embedded actions and dollar(-N) in GLR parsers):
	Add casts to pacify C++ compilers.
	* tests/glr-regression.at (Improper merging of GLR delayed action
	sets): Declare yylex before using it.
	* tests/Makefile.am (maintainer-check-g++): Fix a stray
	$(GXX) that escaped the renaming of GXX to CXX.  Remove bogus
	test for valgrind; valgrind is independent of g++.
	(maintainer-check-posix): Add _POSIX2_VERSION=200112, to check
	for compatibility with POSIX 1003.1-2001 (if running coreutils).
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Port to stricter C++.
	Use a destructor, so that we can expand the stack.  Change
	YYSTYPE to char * so that we can free it.  Cast result of malloc.

2005-07-13  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* data/glr.c (yyuserAction): Fix uninitialized variable that caused
	a valgrind failure.  Problem reported by twlevo@xs4all.nl.

2005-07-13  Paul Eggert  <eggert@cs.ucla.edu>

	* PACKAGING: New file, suggested by Bruno Haible and taken from
	similar wording in gettext's PACKAGING file.
	* NEWS: Mention PACKAGING.
	* Makefile.am (EXTRA_DIST): Add PACKAGING.

2005-07-12  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Document recent i18n improvements.
	* bootstrap: Get runtime translations into runtime-po.
	Create runtime-po files automatically, if possible.
	* configure.ac: Invoke BISON_I18N, so that we eat our own dog food.
	* data/yacc.c: Rewrite inclusion of <libintl.h> so that ENABLE_NLS
	does not infringe on the user's name space.
	(YYENABLE_NLS): Renamed from ENABLE_BISON_NLS.
	* doc/bison.texinfo (Internationalization): Revamp the English
	and Texinfo syntax a bit, to try to make it clearer.
	(Bison Options, Option Cross Key): Mention --print-localedir.
	* m4/bison-i18n.m4 (BISON_I18N): Rename ENABLE_BISON_NLS to
	YYENABLE_NLS.  Quote a bit more.
	* runtime-po/.cvsignore: New file.
	* runtime-po/Makefile.in.in (mostlyclean): Remove *.old.pot.
	* runtime-po/Rules-quot: Remove; now created by bootstrap.
	* runtime-po/quot.sed: Likewise.
	* runtime-po/boldquot.sed: Likewise.
	* runtime-po/en@quot.header: Likewise.
	* runtime-po/en@boldquot.header: Likewise.
	* runtime-po/insert-header.sin: Likewise.
	* runtime-po/remove-potcdate.sin: Likewise.
	* runtime-po/Makevars: Likewise.
	* runtime-po/LINGUAS: Likewise.
	* runtime-po/de.po: Likewise; we will rely on the translation project
	to maintain this, so "bootstrap" should get it.
	* src/getarg.c (PRINT_LOCALEDIR_OPTION): Let the C compiler determine
	its value.
	* src/main.c (main): Bind the bison-runtime domain, too.

2005-07-12  Bruno Haible  <bruno@clisp.org>

	* data/yacc.c: Include <libintl.h> when NLS is enabled.
	(YYI18N): Renamed from _. Use dgettext when NLS is enabled.
	* po/POTFILES.in: Remove autogenerated file src/parse-gram.c.
	* runtime-po: New directory.
	* runtime-po/Makefile.in.in: New file, copied from po/, with modified
	$(DOMAIN).pot-update rule, so that old messages are never dropped.
	* runtime-po/Rules-quot: New file, copied from po/.
	* runtime-po/quot.sed: Likewise.
	* runtime-po/boldquot.sed: Likewise.
	* runtime-po/en@quot.header: Likewise.
	* runtime-po/en@boldquot.header: Likewise.
	* runtime-po/insert-header.sin: Likewise.
	* runtime-po/remove-potcdate.sin: Likewise.
	* runtime-po/Makevars: New file.
	* runtime-po/POTFILES.in: New file.
	* runtime-po/LINGUAS: New file.
	* runtime-po/bison-runtime.pot: New file.
	* runtime-po/de.po: New file.
	* m4/bison.m4: New file.
	* Makefile.am (SUBDIRS): Add runtime-po.
	(aclocaldir, aclocal_DATA): New variables.
	* configure.ac: Add AC_CONFIG_FILES of runtime-po/Makefile.in.
	Define aclocaldir.
	* src/getargs.c (usage): Document --print-localedir option.
	(PRINT_LOCALEDIR_OPTION): New enum item.
	(long_options): Add --print-localedir option.
	(getargs): Handle --print-localedir option.
	* doc/bison.texinfo (Bison Parser): Remove paragraph about _().
	(Internationalization): New section.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_print): Swap the arguments,
	for consistency with the rest of the code.
	* src/symlist.h, src/symlist.c (symbol_list_print): Ditto.
	Add separators.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y: Use %printer instead of YYPRINT.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_print): New.
	* src/symlist.h, src/symlist.c (symbol_list_print): New.
	* src/symlist.c (symbol_list_n_type_name_get): Report the culprit.

2005-07-12  Akim Demaille  <akim@epita.fr>

	* data/glr.c (b4_syncline): Fix (swap) the definitions of
	b4_at_dollar and b4_dollar_dollar.

2005-07-11  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Mystery Conflicts): Add reference to DeRemer
	and Pennello's paper.

2005-07-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yyparse): Undo previous patch.  Instead,
	set yylsp[0] and yyvsp[0] only if the initial action
	sets yylloc and yylval, respectively.

	* data/yacc.c (yyparse): In the initial action, set
	yylsp[0] and yyvsp[0] rather than yylloc and yylval.
	This avoids the use of undefined variables if the initial
	action does not set yylloc and/or yylval.

2005-07-07  Paul Eggert  <eggert@cs.ucla.edu>

	* examples/calc++/calc++-driver.cc, examples/calc++/calc++-driver.hh:
	* examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc:
	Remove from CVS.  These files are automatically generated.
	* examples/extexi: Clarify that this file is now part of Bison,
	not GNU M4, and that it works with any POSIX-compatible Awk.
	* examples/calc++/Makefile.am (run_extexi): Remove; not used.
	($(calc_extracted)): Renamed from $(calc_sources_extracted),
	so that we also get calc++-parser.yy.  Geneate it.
	Use $(AWK), not gawk, since any conforming Awk will do.
	Put comment before action, since older 'make' can't handle comment
	in action.
	$(BUILT_SOURCES): List all built sources, not just some of them.
	$(MAINTAINERCLEANFILES): Remove *.stamp, and all built sources.
	$($(srcdir)/calc++-parser.stamp): Work even if POSIXLY_CORRECT.
	$($(calc_sources_generated)): Remove unnecessary test for existence
	of target.  (This had a shell syntax error anyway; a stray "x".)
	(calc_extracted): List $(srcdir)/calc++-parser.yy, not
	calc++-parser.yy.
	* examples/.cvsignore, examples/calc++/.cvsignore: New files.

	* bootstrap (gnulib_modules): Add gettext, now that it's no longer
	implied by the other modules.

2005-07-06  Akim Demaille  <akim@epita.fr>

	Bind examples/calc++ to the package.
	* examples/calc++/Makefile: Remove, replaced by...
	* examples/calc++/Makefile.am: ... this new file.
	* examples/calc++/test: Remove input.
	* examples/calc++/compile: Remove.
	* examples/Makefile.am: New.
	* configure.ac, Makefile.am: Adjust.
	* doc/Makefile.am (clean-local): New, for more recent texi2dvis.

2005-07-05  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyFail): Drastically simplify; since the format argument
	never had any % directives, we can simply pass it to yyerror.
	(yyparse): Use "t a; a=b;" rather than "t a = b;" when a will
	be modified later, as that is the usual style in glr.c.
	Problems reported by Paul Hilfinger.

	Rewrite GLR parser to catch more buffer overrun, storage exhaustion,
	and size overflow errors.
	* data/glr.c: Include <stdio.h> etc. after user prolog, not before,
	in case the user prolog sets feature-test macros like _GNU_SOURCE.
	(YYSIZEMAX): New macro.
	(yystpcpy): New function, taken from yacc.c.
	(struct yyGLRStack.yyspaceLeft): Now size_t, not int.
	(yyinitGLRStack, yyfreeGLRstack): Remove unnecessary forward decls,
	so that we don't have to maintain their signatures.
	(yyFail): Check for buffer overflow, by using vsnprintf rather
	than vsprintf.  Allocate a bigger buffer if possible.
	Report an error if buffer allocation fails.
	(yyStackOverflow): New function.
	(yyinitStateSet, yyinitGLRStack): Return a boolean indicating whether
	the initialization was successful.  It might fail if storage was
	exhausted.
	(yyexpandGLRStack): Add more checks for storage allocation failure.
	Use yyStackOverflow to report failures.
	(yymarkStackDeleted, yyglrShift, yyglrShiftDefer, yydoAction):
	(yysplitStack, yyprocessOneStack, yyparse, yypstack):
	Don't assume stack number fits in int.
	(yysplitStack): Check for storage allocation failure.
	(yysplitStack, yyprocessOneStack): Add pure_formals, so that we
	can print diagnostics on storage allocation failure.  All callers
	changed.
	(yyresolveValue): Use yybool for boolean.
	(yyreportSyntaxError): Check for size-calculation overflow.
	This code is taken from yacc.c.
	(yyparse): Check for storage allocation errors when allocating
	the initial stack.

2005-07-05  Akim Demaille  <akim@epita.fr>

	Extract calc++ from the documentation.
	* doc/bison.texinfo (Calc++): Add the extraction marks.
	* examples/extexi: New, from the aborted GNU Programming 2E.
	Separate the different paragraph of a file with empty lines.
	* examples/Makefile: Use it to extract the whole calc++ example.

2005-06-24  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (C++ Parser Interface): Use defcv to define
	class typedefs.

2005-06-22  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (C++ Language Interface): First stab.
	(C++ Parsers): Remove.

2005-06-22  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yylex_): Honor %lex-param.

2005-06-22  Akim Demaille  <akim@epita.fr>

	Start a set of simple examples.
	* examples/calc++/Makefile, examples/calc++/calc++-driver.cc,
	* examples/calc++/calc++-driver.hh,
	* examples/calc++/calc++-parser.yy,
	* examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc,
	* examples/calc++/compile, examples/calc++/test: New.

2005-06-09  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (malloc, free) [defined __cplusplus]: Wrap inside
	extern "C" {}.  This fixes a problem reported by Paul Hilfinger,
	which stems from the 2005-05-27 patch.

2005-06-06  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* data/glr.c: Modify treatment of unused parameters to permit use
	of g++ (which doesn't allow __attribute__ ((unused)) for parameters).

2005-05-30  Paul Eggert  <eggert@cs.ucla.edu>

	Fix infringement on user name space reported by Janos Zoltan Szabo.
	* data/yacc.c (yyparse): strlen -> yystrlen.

2005-05-30  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (_): New.
	Translate the various messages.

2005-05-27  Paul Eggert  <eggert@cs.ucla.edu>

	Fix infringement on user name space reported by Bruno Haible.
	* data/yacc.c (YYSIZE_T): Define first, so that later decls can use it.
	Prefer GCC's __SIZE_TYPE__ if available, so that we don't infringe on
	the user's name space.
	(alloca): Include <stdlib.h> to get it, if it's not built in.
	(YYMALLOC, YYFREE): Define only if needed.
	(malloc, free): Declare, but only if needed, as this infringes on
	the user name space.

2005-05-25  Paul Eggert  <eggert@cs.ucla.edu>

	Fix BeOS, FreeBSD, MacOS porting problems reported by Bruno Haible.
	* lib/bitset.c (bitset_print): Don't assume size_t can be printed
	with %d format.
	* lib/ebitset.c (min, max): Undef before defining.
	* lib/vbitset.c (min, max): Likewise.
	* lib/subpipe.c (create_subpipe): Save local variables in case
	vfork clobbers them.

2005-05-24  Bruno Haible  <bruno@clisp.org>

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the
	error message syntax used by gcc-4.0.

2005-05-23  Paul Eggert  <eggert@cs.ucla.edu>

	* README: Mention m4 1.4.3.  Remove obsolete advice about
	Sun Forte Developer 6 update 2, VMS, and MS-DOS.

	* bootstrap: Remove workaround for problem I encountered with
	gettext 0.14.1; it seems to be fixed now.

2005-05-22  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.0a.

	* src/files.c: Include "stdio-safer.h"; this fixes a typo in
	the previous change.

	Various maintainer cleanups.
	* .cvsignore: Add a.exe, a.out, b.out,, conf[0-9]*, confdefs*,
	conftest*, for benefit of CVS commands run at the same time as
	"configure".  Add build-aux, since "bootstrap" now creates it and
	its subfiles.
	* Makefile.cfg (move_if_change): Remove.
	* Makefile.maint: Remove the update stuff; we now use "bootstrap".
	(ftp-gnu, www-gnu, move_if_change, local_updates, update):
	(po_repo, do-po-update, po-update, wget_files, get-targets):
	(config.guess-url_prefix, config.sub-url_prefix):
	(ansi2knr.c-url_prefix, texinfo.tex-url_prefix):
	(standards.texi-url_prefix, make-stds.texi-url_prefix, taget, url):
	($(get-targets), cvs-files, automake_repo, wget-update, cvs-update):
	Remove.
	* configure.ac (AC_CONFIG_AUX_DIR): Change from config to build-aux;
	this is now the recommended name.
	* config/.cvsignore: Remove config.guess, config.rpath, config.sub,
	depcomp, install-sh, mdate-sh, missing, mkinstalldirs, texinfo.tex,
	ylwrap.  These files now go into build-aux.
	* config/move-if-change: Remove.
	* config/prev-version.txt: Bump from 1.75 to 2.0.

	* bootstrap: Add stdio-safer, unistd-safer modules.
	Remove m4/glibc2.m4 (introduced by latest gnulib, but
	we don't need it).
	* lib/.cvsignore: Add dup-safer.c, fd-safer.c,
	fopen-safer.c, stdio-safer.h, unistd-safer.h.
	* lib/subpipe.c: Include "unistd-safer.h".
	(create_subpipe): Make sure all the newly-created
	file descriptors are > 2, so that diagnostics don't
	get sent down them (which might cause Bison to hang, in theory).
	* m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4.
	* src/files.c (xfopen): Use fopen_safer, not fopen.

	* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port
	yesterday's yacc.c fix.

2005-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c, data/lalr1.cc: Update copyright date.

	Fix a destructor bug reported by Wolfgang Spraul in
	<http://lists.gnu.org/archive/html/bug-bison/2005-05/msg00042.html>.
	* data/yacc.c (yyabortlab): Don't call destructor, and
	don't set yychar to EMPTY.
	(yyoverflowlab): Don't call destructor.
	(yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY.
	* tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines,
	since we no longer output the message "discarding lookahead token
	end of input ()".

2005-05-20  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* data/glr.c (YY_SYMBOL_PRINT): Don't print newline at end to
	fix a small glitch in debugging output.
	(yyprocessOneStack, yyrecoverSyntaxError, yyparse): Print newline
	after YY_SYMBOL_PRINT where needed.

	(struct yyGLRState): Add some comments.
	(struct yySemanticOption): Add some comments.
	(union yyGLRStackItem): Add comment.

	(yymergeOptionSets): Correct this to properly perform the union,
	avoiding infinite reported by Michael Rosien.
	Update comment.

	* tests/glr-regression.at: Add test for GLR merging error reported
	by M. Rosien.

2005-05-13  Paul Eggert  <eggert@cs.ucla.edu>

	* COPYING, ChangeLog, GNUmakefile, HACKING, Makefile.am,
	Makefile.cfg, Makefile.maint, NEWS, README, README-alpha,
	README-cvs, TODO, bootstrap, configure.ac, data/Makefile.am,
	data/README, data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c,
	data/m4sugar/m4sugar.m4, doc/Makefile.am, doc/bison.texinfo,
	doc/fdl.texi, doc/gpl.texi, doc/refcard.tex, lib/Makefile.am,
	lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c,
	lib/bitset.h, lib/bitset_stats.c, lib/bitset_stats.h,
	lib/bitsetv-print.c, lib/bitsetv-print.h, lib/bitsetv.c,
	lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/get-errno.c,
	lib/get-errno.h, lib/lbitset.c, lib/lbitset.h, lib/libiberty.h,
	lib/main.c, lib/subpipe.c, lib/subpipe.h, lib/timevar.c,
	lib/timevar.def, lib/timevar.h, lib/vbitset.c, lib/vbitset.h,
	lib/yyerror.c, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4, m4/timevar.m4,
	m4/warning.m4, src/LR0.c, src/LR0.h, src/Makefile.am, src/assoc.c,
	src/assoc.h, src/closure.c, src/closure.h, src/complain.c,
	src/complain.h, src/conflicts.c, src/conflicts.h, src/derives.c,
	src/derives.h, src/files.c, src/files.h, src/getargs.c,
	src/getargs.h, src/gram.c, src/gram.h, src/lalr.c, src/lalr.h,
	src/location.c, src/location.h, src/main.c, src/muscle_tab.c,
	src/muscle_tab.h, src/nullable.c, src/nullable.h, src/output.c,
	src/output.h, src/parse-gram.c, src/parse-gram.h,
	src/parse-gram.y, src/print.c, src/print.h, src/print_graph.c,
	src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c,
	src/reduce.h, src/relation.c, src/relation.h, src/scan-gram.l,
	src/scan-skel.l, src/state.c, src/state.h, src/symlist.c,
	src/symlist.h, src/symtab.c, src/symtab.h, src/system.h,
	src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h,
	src/vcg.c, src/vcg.h, src/vcg_defaults.h, tests/Makefile.am,
	tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at,
	tests/cxx-type.at, tests/existing.at, tests/glr-regression.at,
	tests/headers.at, tests/input.at, tests/local.at, tests/output.at,
	tests/reduce.at, tests/regression.at, tests/sets.at,
	tests/synclines.at, tests/testsuite.at, tests/torture.at:
	Update FSF postal mail address.

2005-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/local.at (AT_COMPILE_CXX): Treat LDFLAGS like AT_COMPILE does.
	Problem reported by Ralf Menzel.

2005-05-01  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/actions.at: Test that stack overflow invokes destructors.
	From Marcus Holland-Moritz.
	* data/yacc.c (yyerrlab): Move the code that destroys the stack
	from here....
	(yyreturn): to here.  That way, destructors are called properly
	even if the stack overflows, or the user calls YYACCEPT or
	YYABORT.  Stack-overflow problem reported by Marcus Holland-Moritz.
	(yyoverflowlab): Destroy the lookahead.

2005-04-24  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYSTACK_ALLOC_MAXIMUM): Add more-descriptive comment.

2005-04-17  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison-generated C parsers no longer quote literal strings
	associated with tokens.
	* src/output.c (prepare_symbols): Don't escape strings,
	since users don't want to see C escapes.
	* tests/calc.at (AT_CHECK_CALC): Adjust to lack of quotes
	in diagnostics.
	* tests/input.at (Torturing the Scanner): Likewise.
	* tests/regression.at (Token definitions, Web2c Actions): Likewise.

2005-04-16  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/torture.at (AT_INCREASE_DATA_SIZE): Skip the test if
	the data size is known to be too small and we can't increase it.
	This works around an HP-UX 11.00 glitch reported by Andrew Benham.

2005-04-15  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y: Include quotearg.h.
	(string_as_id): Quote $1 before using it as a key, since the
	lexer no longer quotes it for us.
	(string_content): Don't strip quotes, since lexer no longer
	quotes it for us.
	* src/scan-gram.l: Include quotearg.h.
	("\""): Omit quote.
	("'"<SC_ESCAPED_CHARACTER>): Quote symbol before using it as
	a key, since the rest of the lexer doesn't quote it.
	* src/symtab.c (symbol_get): Don't quote symbol; caller does it now.
	* tests/regression.at (Token definitions): Check for backslashes
	in token strings.

	* data/yacc.c (YYSTACK_ALLOC_MAXIMUM): New macro.
	(YYSIZE_T): Define to unsigned long int when using an older compiler.
	(yyparse): Revamp code to generate long syntax error message, to
	make it easier to translate, and to avoid problems with arithmetic
	overflow.  Change "virtual memory" to "memory" in diagnostic, since
	we don't know whether the memory is virtual.

2005-04-13  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison-generated C parsers now use the _ macro to
	translate strings.
	* data/yacc.c (_) [!defined _]: New macro.
	All English strings wrapped inside this macro.
	* doc/bison.texinfo (Bison Parser): Document _.
	* po/POTFILES.in: Include src/parse-gram.c, since it now
	includes translateable strings that parse-gram.y doesn't.

2005-04-12  Paul Eggert  <eggert@cs.ucla.edu>

	* src/symtab.c (symbol_make_alias): Call symbol_type_set,
	reverting the 2004-10-11 change to this function.
	(symbol_check_alias_consistency): Don't call symbol_type_set
	if the type name is already correct.
	* tests/input.at (Typed symbol aliases): New test, from Tim Van Holder.

2005-03-25  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/regression.at (Token definitions): Don't use a token named
	c, as that generates a "#define c ..." that runs afoul of buggy
	stdlib.h that uses the identifier c as a member of struct
	drand48_data.  Problem reported by Horst Wente.

2005-03-21  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap: Change translation URL from
	http://www2.iro.umontreal.ca/~gnutra/po/maint/bison/ to
	http://www.iro.umontreal.ca/translation/maint/bison/ to avoid
	redirection glitches.  Problem reported by twlevo@xs4all.nl.

2005-03-20  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Don't put options
	after operands; POSIX says this isn't portable for the c99 command.

2005-03-18  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/glr-regression.at (glr-regr2a.y): Try to dump core
	immediately if a data overrun has occurred; this may help us track
	down what may be a spurious failure on MacOS.

2005-03-17  Paul Eggert  <eggert@cs.ucla.edu>

	Respond to problems reported by twlevo@xs4all.nl.

	* bootstrap: Use "trap - 0" rather than the unportable "trap 0".

	* src/vcg.h: Comment fix.
	* src/vcg_defaults.h: Parenthesize macro bodies to make them safe.
	(G_CMAX): Change to -1 instead of INT_MAX.

	* data/yacc.c (yyparse): Omit spaces before #line.

2005-03-15  Paul Eggert  <eggert@cs.ucla.edu>

	* src/tables.c (state_number_to_vector_number): Put it inside an
	"#if 0", since it's not currently used.  Problem reported by
	Roland McGrath.

2005-03-06  Paul Eggert  <eggert@cs.ucla.edu>

	* src/output.c (escaped_output): Renamed from
	escaped_file_name_output, since we now use it for symbol tags as
	well.  All uses changed.
	(symbol_destructors_output, symbol_printers_output):
	Escape symbol tags too.
	Problem reported by Matyas Forstner in
	<http://lists.gnu.org/archive/html/bug-bison/2005-03/msg00009.html>.

	* src/muscle_tab.c (muscle_code_grow): Don't quote numbers; it's
	not needed.
	* src/output.c (user_actions_output, token_definitions_output,
	symbol_destructors_output, symbol_printers_output): Likewise.
	* src/reader.c (prologue_augment): Likewise.
	* src/scan-gram.l (handle_action_dollar, handle_action_at): Likewise.

	* src/vcg.c (output_edge): Don't quote linestyle arg.
	Problem reported by twlevo@xs4all.nl.

2005-02-28  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Semantic Tokens): Fix scoping problem in
	example, reported by Derek M Jones.  Also, make the example even
	more outrageous, to better illustrate how bad the problem is.

2005-02-24  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Mfcalc Symtab): Correct the prototype for
	putsym.  Typo reported by Sebastian Piping.

2005-02-23  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Language and Grammar): some -> same
	(Epilogue): int he -> in the
	Typos reported by Sebastian Piping via Justin Pence.

2005-02-07  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/glr-regression.at (Improper handling of embedded actions
	and dollar(-N) in GLR parsers): Renamed from "Improper handling of
	embedded actions and $-N in GLR parsers", work around an Autoconf bug
	with dollar signs in test names.
	* tests/input.at (Invalid dollar-n): Renamed from "Invalid \$n",
	for a similar reason.

2005-01-28  Paul Eggert  <eggert@cs.ucla.edu>

	* src/vcg.c (output_graph): G_VIEW -> normal_view in case someone
	wants to redefine G_VIEW.

2005-01-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/vcg.c (get_view_str): Remove case for normal_view.
	Problem reported by twlevo@xs4all.nl.

2005-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac (O0CFLAGS, O0CXXFLAGS): Fix quoting bug.
	Problem reported by twlevo@xs4all.nl.

	* doc/bison.texinfo: Change @dircategory from "GNU programming
	tools" to "Software development".  Requested by Richard Stallman
	via Karl Berry.

2005-01-23  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/c++.at (AT_CHECK_DOXYGEN): Don't use options after operands.
	Problem reported by twlevo@xs4all.nl.

2005-01-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (YYCOPY, yystpcpy, yyparse): Remove "register"
	keyword; it's not needed with modern compilers, and it doesn't
	affect correctness with older compilers.  Suggested by
	twlevo@xs4all.nl.

2005-01-17  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyuserAction): Add "default: break;" case to pacify
	gcc -Wswitch-default.
	* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Likewise.
	* data/yacc.c (yyparse): Likewise.

2005-01-12  Paul Eggert  <eggert@cs.ucla.edu>

	* src/system.h (OUTPUT_EXT, TAB_EXT): Define only if not defined
	already.  Let config.h define any nonstandard values.

2005-01-10  Paul Eggert  <eggert@cs.ucla.edu>

	* tests/calc.at (_AT_DATA_CALC_Y): Use alarm (100), not alarm (10),
	for the benefit of slower hosts.  Problem reported by
	Nelson H. F. Beebe.

2005-01-07  Paul Eggert  <eggert@cs.ucla.edu>

	* data/yacc.c (yyparse): Pacify non-GCC compilers about yyerrorlab
	being defined and not used.
	* data/lalr1.cc (yyparse): Likewise.
	Use "if (false)" rather than "if (0)".

2005-01-05  Paul Eggert  <eggert@cs.ucla.edu>

	* TODO: Mention that we should allow NUL bytes in tokens.

2005-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	* src/scan-skel.l (<<EOF>>): Don't close standard output.
	Problem reported by Hans Aberg.

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

	* src/getargs.c (version): Happy new year; update overall
	program copyright date from 2004 to 2005.

	* src/scan-skel.l ("@output ".*\n): Don't close standard output.
	Problem reported by Hans Aberg.
	* tests/output.at (AT_CHECK_OUTPUT): New arg SHELLIO.
	(Output file names.): Add a test for the case when standard output
	is closed.

2004-12-26  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (@copying): Update FDL version number to 1.2,
	to fix an oversight in the Bison 2.0 manual.

2004-12-25  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 2.0.  Reformat the existing news items since
	1.875, so that related items are grouped together.
	* configure.ac (AC_INIT): Bump version to 2.0.
	* src/parse-gram.c, src/parse-gram.h: Regenerate with 2.0.

	* tests/torture.at (Exploding the Stack Size with Alloca): Set
	YYSTACK_USE_ALLOCA to 1 if __GNUC__ or alloca are defined;
	otherwise, we're not testing alloca.  Unfortunately there's no
	simple way to consult HAVE_ALLOCA here.

	* data/lalr1.cc (yydestruct_): Pacify unused variable warning
	for yymsg, too.

	* src/LR0.c (new_itemsets): Use memset rather than zeroing by
	hand.  This avoids a warning about comparing int to size_t when
	GCC warnings are enabled.

2004-12-22  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Bison-generated parsers no longer default to using the
	alloca function (when available) to extend the parser stack, due
	to widespread problems in unchecked stack-overflow detection.
	* data/glr.c (YYMAXDEPTH): Remove undef when zero.  It's the user's
	responsibility to set it to a positive value.  This lets the user
	specify a value that is not a preprocessor constant.
	* data/yacc.c (YYMAXDEPTH): Likewise.
	(YYSTACK_ALLOC): Define only if YYSTACK_USE_ALLOCA is nonzero.
	* doc/bison.texinfo (Stack Overflow): YYMAXDEPTH no longer needs
	to be a compile-time constant.  However, explain the constraints on it.
	Also, explain the constraints on YYINITDEPTH.
	(Table of Symbols): Explain that alloca is no longer the default.
	Explain the user's responsibility if they define YYSTACK_USE_ALLOCA
	to 1.

	* doc/bison.texinfo (Location Default Action): Mention that n must
	be zero when k is zero.  Suggested by Frank Heckenbach.

2004-12-22  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (parser::token_number_type, parser::rhs_number_type)
	(parser::state_type, parser::semantic_type, parser::location_type):
	Private, not public.
	(parser::parse): Return ints, not bool.
	Returning a bool introduces a problem: 0 corresponds to false, and
	it seems weird to return false on success.  Returning true changes
	the conventions for yyparse.
	Alternatively we could return void and send an exception.
	There is no clear consensus (yet?).
	(state_stack, semantic_stack, location_stack): Rename as...
	(state_stack_type, semantic_stack_type, location_stack_type): these.
	Private, not public.
	* tests/c++.at: New.
	* tests/testsuite.at, tests/Makefile.am: Adjust.

2004-12-21  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (parser::parse): Return a bool instead of an int.

2004-12-21  Akim Demaille  <akim@epita.fr>

	Don't impose std::string for filenames.

	* data/lalr1.cc (b4_filename_type): New.
	(position::filename): Use it.
	(parser.hh): Move the inclusion of stack.hh and location.hh below
	the user code, so that needed headers for the filename type can be
	included first.
	Forward declare them before the user code.
	* tests/Makefile.am (check-local, installcheck-local): Pass
	TESTSUITEFLAGS to the TESTSUITE.

2004-12-20  Akim Demaille  <akim@epita.fr>

	Use more STL like names: my_class instead of MyClass.

	* data/lalr1.cc (LocationStack, LocationType, RhsNumberType)
	(SemanticStack, SemanticType, StateStack, StateType)
	(TokenNumberType, Stack, Slice, Traits, Parser::location)
	(Parser::value): Rename as...
	(location_stack, location_type, rhs_number_type, semantic_stack)
	(semantic_type, state_stack, state_type, token_number_type, stack)
	(slice, traits, parser::yylloc, parser::yylval): these.

	* tests/calc.at, tests/regression.at, tests/actions.at: Adjust.

2004-12-19  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (YYLLOC_DEFAULT): Use GNU spacing conventions.
	* data/yacc.c (YYLLOC_DEFAULT): Likewise.

2004-12-17  Paul Eggert  <eggert@cs.ucla.edu>

	Remove uses of 'short int' and 'unsigned short int'.  This raises
	some arbitrary limits.  It uses more memory but nowadays that's
	not much of an issue.

	This change does not affect the generated parsers; that's a different
	task, as some users will want to conserve memory there.

	Ideally we should use size_t to represent all object counts, and
	something like ptrdiff_t to represent signed differences of object
	counts; but that will require more code-cleanup than I have the
	time to do right now.

	* src/LR0.c (allocate_itemsets, new_itemsets, save_reductions):
	Use size_t, not int or short int, to count objects.
	* src/closure.c (nritemset, closure): Likewise.
	* src/closure.h (nritemset, closure): Likewise.
	* src/nullable.c (nullable_compute): Likewise.
	* src/print.c (print_core): Likewise.
	* src/print_graph.c (print_core): Likewise.
	* src/state.c (state_compare, state_hash): Likewise.
	* src/state.h (struct state): Likewise.
	* src/tables.c (default_goto, goto_actions): Likewise.

	* src/gram.h (rule_number, rule): Use int, not short int.
	* src/output.c (prepare_rules): Likewise.
	* src/state.h (state_number, STATE_NUMBER_MAXIMUM, transitions,
	errs, reductions): Likewise.
	* src/symtab.h (symbol_number, SYMBOL_NUMBER_MAXIMUM, struct symbol):
	Likewise.
	* src/tables.c (vector_number, tally, action_number,
	ACTION_NUMBER_MINIMUM): Likewise.
	* src/output.c (muscle_insert_short_int_table): Remove.

2004-12-17  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Extensive Doxygenation.
	(error_): Rename as...
	(error): this, since it is visible to the user.
	Adjust callers.
	(Parser::message): Now an automatic variable from...
	(Parser::yyreport_syntax_error_): here.
	* tests/actions.at, tests/calc.at, tests/regression.at: Adjust to
	Parser::error.
	* tests/input.at: Escape $.

2004-12-16  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (b4_lhs_value, b4_rhs_value, b4_rhs-location):
	Parenthesize rhs to avoid obscure problems with mistakes like
	"foo$$bar = foo$1bar;".  Problem reported by twlevo at xs4all.
	* data/lalr1.cc (b4_lhs_value, b4_rhs_value, b4_lhs_location,
	b4_rhs_location): Likewise.
	* data/yacc.c (b4_lhs_value, b4_rhs_value, b4_lhs_location,
	b4_rhs_location): Likewise.

2004-12-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yyreport_syntax_error_): Catch up with glr.c and
	yacc.c: be sure to stay within yycheck_.
	* tests/actions.at: Re-enable C++ tests.

2004-12-16  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (print_graph): Remove layoutalgorithm uses for
	real.

2004-12-16  Akim Demaille  <akim@epita.fr>

	Use #define to handle the %name-prefix.

	* data/glr.c, data/yacc.c: Comment changes.
	* data/lalr1.cc (yylex): Use #define to select the name of yylex,
	so that one can refer to yylex in the parser file, and have it
	renamed, as is the case with other skeletons.

2004-12-16  Akim Demaille  <akim@epita.fr>

	Move lalr1.cc internals into yy*.

	* data/lalr1.cc (semantic_stack_, location_stack_, state_stack_)
	(semantic_stack_, location_stack_, pact_, pact_ninf_, defact_)
	(pgoto_, defgoto_, table_, table_ninf_, check_, stos_, r1_, r2_)
	(name_, rhs_, prhs_, rline_, token_number_, eof_, last_, nnts_)
	(empty_, final_, terror_, errcode_, ntokens_)
	(user_token_number_max_, undef_token_, n_, len_, state_, nerrs_)
	(looka_, ilooka_, error_range_, nerrs_):
	Rename as...
	(yysemantic_stack_, yylocation_stack_, yystate_stack_)
	(yysemantic_stack_, yylocation_stack_, yypact_, yypact_ninf_)
	(yydefact_, yypgoto_, yydefgoto_, yytable_, yytable_ninf_)
	(yycheck_, yystos_, yyr1_, yyr2_, yyname_, yyrhs_, yyprhs_)
	(yyrline_, yytoken_number_, yyeof_, yylast_, yynnts_, yyempty_)
	(yyfinal_, yyterror_, yyerrcode_, yyntokens_)
	(yyuser_token_number_max_, yyundef_token_, yyn_, yylen_, yystate_)
	(yynerrs_, yylooka_, yyilooka_, yyerror_range_, yynerrs_):
	these.

2004-12-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some problems reported by twlevo at xs4all.
	* src/symtab.c (symbol_new): Report an error if the input grammar
	contains too many symbols.  This is better than calling abort() later.
	* src/vcg.h (enum layoutalgorithm): Remove.  All uses removed.
	(struct node, struct graph):
	Rename member expand to stretch.  All uses changed.
	(struct graph): Remove member layoutalgorithm.  All uses removed.
	* src/vcg.c (get_layoutalgorithm_str): Remove.  All uses removed.
	* src/vcg_defaults.h (G_STRETCH): Renamed from G_EXPAND.
	All uses changed.
	(N_STRETCH): Rename from N_EXPAND.  All uses changed.

2004-12-15  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Normalize /** \brief ... */ to ///.
	Add more Doxygen comments.
	(symprint_, stack_print_, reduce_print_, destruct_, pop)
	(report_syntax_error_, translate_): Rename as...
	(yysymprint_, yystack_print_, yyreduce_print_, yydestruct_)
	(yypop_, yyreport_syntax_error_, yytranslate_): this.

2004-12-15  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (lex_): Rename as...
	(yylex_): this.
	Move the trace here.
	Take the %name-prefix into account.
	Reported by Alexandre Duret-Lutz.

2004-12-15  Akim Demaille  <akim@epita.fr>

	Simplify the C++ parser constructor.

	* data/lalr1.cc (debug_): Rename as...
	(yydebug_): so that the parser's internals are always in the yy*
	pseudo namespace.
	Adjust uses.
	(b4_parse_param_decl): Remove the leading comma as it is now only
	called as unique argument list.
	(Parser::Parser): Remove the constructor accepting a location and
	an initial debugging level.
	Remove from the other ctor the argument for the debugging level.
	(debug_level_type, debug_level, set_debug_level): New.

	* tests/actions.at, tests/calc.at, tests/regression.at: Adjust
	constructor calls.

2004-12-15  Akim Demaille  <akim@epita.fr>

	Remove b4_root related material: failure experiment
	(which goal was to allow to derive from a class).

	* data/lalr1.cc (b4_root, b4_param, b4_constructor): Remove
	definitions and uses.

2004-12-14  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (struct yyGLRStack): yyerror_range now has 3 items,
	not 2, since it's not portable to subtract 1 from the start of an
	array.  The new item 0 is never set or used.  All uses changed.

	(yyrecoverSyntaxError): Use YYLLOC_DEFAULT instead of assuming
	the default definition of YYLLOC_DEFAULT.  Problem reported
	by Frank Heckenbach.

2004-12-12  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (YYRHSLOC): Don't have two definitions, one for
	the normal case and one for the error case.  Just use the
	first one uniformly.  Problem reported by Frank Heckenbach.
	(YYLLOC_DEFAULT): Use the conventions of yacc.c, so we can
	use exactly the same macro in both places.
	(yyerror_range): Now of type yyGLRStackItem, not YYLTYPE,
	so that the normal-case YYRHSLOC works for the error case too.
	All uses changed.
	* data/yacc.c (YYRHSLOC): New macro, taken from glr.c.
	(YYLLOC_DEFAULT): Use the same macro as glr.c.
	* doc/bison.texinfo (Location Default Action): Don't claim that
	we have an array of locations.  Use the same macro for both glr
	and lalr parsers.  Mention YYRHSLOC.  Mention what happens when
	the index is 0.

2004-12-10  Paul Eggert  <eggert@cs.ucla.edu>

	* HACKING: Update email addresses to send announcements to.

	* configure.ac (AC_INIT): Bump version to 1.875f.

2004-12-10  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 1.875e.
	* src/parse-gram.c, src/parse-gram.h: Regenerate with 1.875e.

	* src/scan-skel.l: Include "complain.h", for "fatal".

	* src/relation.h (relation_print, relation_digraph):
	Relation sizes are of type relation_node, not size_t (this is
	merely a doc fix, since the two types are equivalent).
	(relation_transpose): Relation sizes are of type relation_node,
	not int.
	* src/relation.c: Likewise.
	(top, infinity): Now of type relation_node, not int.
	(traverse, relation_transpose): Use relation_node, not int.

	* data/glr.c (yyuserAction, yyrecoverSyntaxError): Mark args
	with ATTRIBUTE_UNUSED if they're not used, to avoid GCC warning.
	(yyparse): Remove unused local introduced in 2004-10-25 patch.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): New arg
	specifying whether the test should be skipped.  Use it tp
	specify that the [%defines %skeleton "lalr1.cc"] tests currently
	fail on some hosts, and should be skipped.

2004-12-08  Paul Eggert  <eggert@cs.ucla.edu>

	* src/system.h (CALLOC, MALLOC, REALLOC): Remove.  All callers
	changed to use xcalloc, xnmalloc, xnrealloc, respectively,
	unless otherwise specified below.

	* src/LR0.c (allocate_itemsets): Use xnmalloc, not xcalloc,
	to allocate kernel_base, kernel_items, kernel_size, since
	they needn't be initialized to 0.
	(allocate_storgae): Likewise, for shiftset, redset, shift_symbol.
	* src/closure.c (new_closure): Likewise, for itemset.
	* src/derives.c (derives_compute): Likewise, for delts, derives, q.
	* src/lalr.c (set_goto_map): Likewise, for temp_map.
	(initialize_F): Likewise, for reads, edge, reads[i], includes[i].
	(build_relations): Likewise for edge, states1, includes.
	* src/nullable.c (nullable_compute): Likewise, for squeue, relts.
	* src/reader.c (packgram): Likewise, for ritem, rules.
	* src/reduce.c (nonterminals_reduce): Likewise for nontermmap.
	* src/relation.c (relation_digraph): Likewise for VERTICES.
	(relation_transpose): Likewise for new_R, end_R.
	* src/symtab.c (symbols_token_translations_init): Likewise for
	token_translations.
	* src/tables.c (save_row): Likewise for froms, tos, conflict_tos.
	(token_actions): Likewise for yydefact, actrow, conflrow,
	conflict_list.
	(save_column): Likewise for froms[symno], tos[symno].
	(goto_actions): Likewise for state_count.
	(pack_table): Likewise for base, pos, check.
	(tables_generate): Likewise for width.

	* src/LR0.c (set_states): Don't reuse kernel_size and kernel_base
	for initial core.  Just have a separate core, so we needn't worry
	about whether kernel_size and kernel_base are initialized.

	* src/LR0.c (shift_symbol, redset, shiftset, kernel_base,
	kernel_size, kernel_items): Remove unnecessary initialization.
	* src/conflicts.c (conflicts): Likewise.
	* src/derives.c (derives): Likewise.
	* src/muscle_tablc (muscle_insert): Likewise.
	* src/relation.c (relation_digraph): Likewise.
	* src/tables.c (froms, tos, conflict_tos, tally, width, actrow, order,
	conflrow, conflict_table, conflict_list, table, check):
	Likewise.

	* src/closure.c (new_closure): Arg is of type unsigned int, not int.
	This is because all callers pass unsigned int.
	* src/closure.h (new_closure): Likewise.

	* src/lalr.c (initialize_F): Initialize reads[i] in all cases.
	(build_relations): Initialize includes[i] in all cases.
	* src/reader.c (packgram): Always initialize rules[ruleno].prec
	and rules[ruleno].precsym.  Initialize members in order.
	* src/relation.c (relation_transpose): Always initialize new_R[i]
	and end_R[i].
	* src/table.c (conflict_row): Initialize 0 at end of conflict_list.

	* src/output.c (prepare_actions): Pass 0 instead of conflict_list[0];
	conflict_list[0] was always 0, but now it isn't initialized.

	* src/table.c (table_grow): When conflict_table grew, the grown
	area wasn't cleared.  Fix this.

	* lib/.cvsignore: Add strdup.c, strdup.h.
	* m4/.cvsignore: Add strdup.m4.

2004-12-07  Paul Eggert  <eggert@cs.ucla.edu>

	* src/lalr.h (GOTO_NUMBER_MAXIMUM): New macro.
	* src/lalr.c (set_goto_map): Don't allow ngotos to equal
	GOTO_NUMBER_MAXIMUM, since we occasionally compute
	ngotos + 1 without checking for overflow.
	(build_relations): Use END_NODE, not -1, to denote end of edges.
	* src/lalr.c (set_goto_map, map_goto, initialize_F, add_loopback_edge,
	build_relations): Use goto_number, not int, for goto numbers.
	* src/tables.c (save_column, default_goto): Likewise.

2004-11-23  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (YYSTYPE): Define it as is done for C, instead
	of #defining from yystype.
	Don't typedef yystype, C++ does not need it.
	This lets it possible to forward declare it as union.

2004-11-23  Paul Eggert  <eggert@cs.ucla.edu>

	* bootstrap (gnulib_modules): Add extensions.
	Problem reported by Jim Meyering.

2004-11-22  Paul Eggert  <eggert@cs.ucla.edu>

	* src/LR0.c, src/closure.c, src/derives.c, src/gram.c,
	src/lalr.c, src/nullable.c, src/relation.c, src/scan-skel.l,
	src/system.h, src/tables.c: XFREE -> free, to accommodate
	recent change to gnulib xalloc.h.
	Problem reported by Jim Meyering.

2004-11-17  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings.

2004-11-17  Akim Demaille  <akim@epita.fr>,
	    Alexandre Duret-Lutz <adl@gnu.org>

	* data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow
	changes.
	(YYCDEBUG): Adjust.
	Use it instead of cdebug_.
	(Parser::debug_stream, Parser::set_debug_stream): New.
	(Parser::symprint_): Define cdebug_ for temporary backward
	compatibility.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use
	debug_stream ().

2004-11-17  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser:print_): Remove, use %printer instead.
	* tests/regression.at (_AT_DATA_DANCER_Y): Adjust.
	* tests/calc.at (_AT_DATA_CALC_Y): Ditto.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise.

2004-10-27  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yyloc_default): Remove; not used.
	Problem reported by Frank Heckenbach.

2004-10-25  Akim Demaille  <akim@epita.fr>

	* data/glr.c (YYRHSLOC): Move its definition next to its uses.
	Introduce another definition to address simple location arrays.
	(yyGLRStack): New member: yyerror_range.
	(yyrecoverSyntaxError, yyparse): Update it.
	(yyrecoverSyntaxError): Use it when shifting the error token to
	have an accurate range, equivalent to the one computed by both
	yacc.c and lalr1.cc.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Change its yylex so
	that column numbers start at column 0, as per GNU Coding
	Standards, the others tests, and the doc.
	(_AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_AMBIG_GLR_OUTPUT_WITH_LOC):
	Adjust to the above change (first column is 0).
	And adjust the location of the "<error>", now covering the whole
	line.

2004-10-22  Akim Demaille  <akim@epita.fr>
	and Paul Eggert  <eggert@cs.ucla.edu>

	Remove some arbitrary limits on goto numbers and relations.
	* src/lalr.c (goto_map, ngotos, from_state, to_state): Omit
	initial values, since they're never used.
	(set_goto_map): ngotos is now unsigned, so test for overflow
	by seeing whether it wraps around to zero.
	* src/lalr.h (goto_number): Now size_t, not short int.
	(GOTO_NUMBER_MAXIMUM): Remove.
	* src/relation.c (relation_print, traverse, relation_transpose):
	Check for END_NODE rather than looking at sign.
	* src/relation.h (END_NODE): New macro.
	(relation_node): Now size_t, not short int.

2004-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo (Language and Grammar): In example, "int" is a
	keyword, not an identifier.  Problem reported by Baron Schwartz in
	<http://lists.gnu.org/archive/html/bug-bison/2004-10/msg00017.html>.

2004-10-11  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_check_alias_consistency): Also check
	type names, destructors, and printers.
	Reported by Alexandre Duret-Lutz.
	Recode the handling of associativity and precedence in terms
	of symbol_precedence_set.
	Accept no redeclaration at all, not even equal to the previous
	value.
	(redeclaration): New.
	Use it to factor redeclaration complaints.
	(symbol_make_alias): Don't set the type of the alias, let
	symbol_check_alias_consistency do it as for other features.
	* src/symtab.h (symbol): Add new member prec_location, and
	type_location.
	* src/symtab.c (symbol_precedence_set, symbol_type_set): Set them.
	* tests/input.at (Incompatible Aliases): New.

2004-10-09  Paul Eggert  <eggert@cs.ucla.edu>

	.cvsignore fixes to accommodate gnulib changes,
	and the practice of naming build directories "_build".
	* .cvsignore: Add "_*".  Sort.
	* lib/.cvsignore: Add getopt_.h, xalloc-die.c.
	* m4/.cvsignore: Add "*_gl.m4".

2004-10-06  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (add_param): Fix the truncation of trailing
	spaces.

2004-10-05  Akim Demaille  <akim@epita.fr>

	In Bison 1.875's yacc.c, YYLLOC_DEFAULT was called regardless
	whether the reducion was empty or not.  This leaves room to
	improve the use of YYLLOC_DEFAULT in such a case.
	lalr1.cc is still experimental, so changing this is acceptable.
	And finally, there are probably not many users who changed the
	handling of locations in GLR, so changing is admissible too.

	* data/glr.c, data/lalr1.cc, data/yacc.c (YYLLOC_DEFAULT): On an
	empty reduction, set @$ to an empty location ending the previously
	stacked symbol.
	Adjust uses to make sure the code is triggered on empty
	reductions.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust the
	expected output: empty reductions have empty locations.

2004-09-29  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Move towards a more standard C++ coding style
	for templates: Class < T > -> Class<T>.

2004-09-29  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Reinstall the former ctor, for sake of
	compatibility, but warn it will be removed.
	Move towards a more standard C++ coding style (i.e., type *var ->
	type* var).

2004-09-27  Paul Eggert  <eggert@cs.ucla.edu>

	* src/parse-gram.y (add_param): Rewrite to avoid strchr,
	since it's less likely to work if NULs are involved in the future.

2004-09-27  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (YY_LOCATION_PRINT): Fix its default declaration.

2004-09-27  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (b4_parse_param_decl_1): New.
	(b4_parse_param_decl): Use it to have different names between attribute
	and argument names.
	(b4_cc_constructor_call): Likewise.

2004-09-24  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (add_param): Strip the leading and trailing
	blanks from a formal argument declaration.
	(YY_LOCATION_PRINT): New.

2004-09-24  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yysymprint_generate): Move the YYINPUT invocation
	after the location.

2004-09-24  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Table of Symbols): Sort.

2004-09-21  Akim Demaille  <akim@epita.fr>

	* data/yacc.c, data/glr.c (b4_at_dollar, b4_dollar_dollar): Remove
	the useless parentheses.
	Suggested by Paul Eggert.

2004-09-20  Akim Demaille  <akim@epita.fr>

	Let the initial-action act on the look-ahead, and use it for the
	"initial push" (corresponding to an hypothetical beginning-of-file).
	And let lalr1.cc honor %initial-action.

	* doc/bison.texinfo (Initial Action Decl): Clarify, and add an
	example.
	* data/lalr1.cc (Parser::initlocation_): Remove, bad experiment.
	(Parser::Parser): Remove the ctor that used to initialize it.
	(Parser::parse): Like in the other skeletons, issue the "starting
	parse" message before any action.
	Honor %initial-action.
	Initialize the stacks with the lookahead.
	* data/yacc.c: Let $$ and @$ in %initial-action designate the
	look-ahead.
	Push them in the stacks.
	* tests/actions.at, tests/calc.at: Adjust the C++ ctor invocations.

2004-09-20  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Initial Action Decl): New.

2004-09-20  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (YY_LOCATION_PRINT): Use YYLTYPE_IS_TRIVIAL as a
	clearer criterion to define it.
	(parse): Initialize the initial location when YYLTYPE_IS_TRIVIAL.
	When reducing on an empty RHS, use the latest stacked location as
	location.
	yylloc is not always available.
	* data/glr.c: Likewise.
	Also, honor initial-actions.

2004-09-20  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (YY_LOCATION_PRINT): New.
	Define when we know YYLTYPE's structure, i.e., when the default
	YYLLOC_DEFAULT is used.
	* data/c.m4 (b4_yysymprint_generate): Use it.
	* data/lalr1.cc (YYLLOC_DEFAULT): Stop relying on the initial
	value of the result.
	(error_start_): Replace with...
	(error_range_): this location array.
	This allows to replace code relying on the implementation of
	locations by portable code.
	* data/yacc.c (yylerrsp): Replace with...
	(yyerror_range): this.
	Every time a token is popped, update yyerror_range[0], to have an
	accurate location for the error token.
	* data/glr.c (YY_LOCATION_PRINT): New.
	(yyprocessOneStack): Fix an invocation of YY_SYMBOL_PRINT:
	deference a pointer.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): No longer
	report the location in %printers.

	* src/scan-skel.l: Instead of abort, report error messages to ease
	understanding skeleton scanning failures.

2004-09-16  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Stack::Iterator, Stack::ConstIterator): Rename as...
	(iterator, const_iterator): these, to be more in the C++ spirit.
	Also, return reverse iterators so that when displaying the stack
	we display its bottom first.
	(Parser::stack_print_, Parser::reduce_print_): Match the messages
	from yacc.c.
	We should probably use vector here though.

2004-09-16  Akim Demaille  <akim@epita.fr>

	Have more complete shift traces.

	* data/yacc.c, data/lalr1.c, data/glr.c: Use YY_SYMBOL_PRINT
	to report Shifts instead of ad hoc YYDPRINTF invocations,
	including for the error token.
	* data/lalr1.cc (symprint_): Output the location.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): In C++, don't
	output the location within the %printer.
	Activate GLR tests, at least to make sure they compile properly.
	They still don't pass though.
	* tests/calc.at: Adjust expect verbose output, since now "Entering
	state..." is on a different line than the "Shifting" message.

2004-09-08  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Move the
	Bison directive from the Bison file to the invocation of this
	macro, so that these directives are passed to
	AT_BISON_OPTION_PUSHDEFS to get correct help macros.
	Use these helping macros (e.g., AT_LOC, AT_VAL and so forth).
	Move the AT_SETUP/AT_CLEANUP outside, to report as test title
	the extra Bison directives instead of the whole series.
	Change the grammar so that there are recoverable errors, and
	unrecoverable errors.  Now we can have the parser give up before
	consuming the whole input.  As a result we now can observe that
	the lookahead is freed when needed.
	Change the parser source to parse argv[1] instead of a hard coded
	string.
	Simplify yylex, and give a value and location to EOF.
	Simplify some invocations of AT_CHECK_PRINTER_AND_DESTRUCTOR that
	passed directives already coded in the file.
	Add some tests to check the location of "error".
	For some tests, the C++ parser is correct, and not yacc.c.
	For other tests, they provide different, but unsatisfying, values,
	so keep the C++ value so that at least one parser is "correct"
	according to the test suite.
	(Actions after errors): Remove, this is subsumed by the
	AT_CHECK_PRINTER_AND_DESTRUCTOR series.

2004-09-06  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Adjust the indentation of the labels.
	(Parser::pop): New.
	Use it.

2004-09-06  Akim Demaille  <akim@epita.fr>

	* data/yacc.cc, data/glr.cc (yydestruct): Accept an additional
	argument, an informative message.
	Call YY_SYMBOL_PRINT.
	Adjust all callers: integrate the associated YY_SYMBOL_PRINT.
	* data/lalr1.cc (destruct_): Likewise.
	In addition, no longer depend on b4_yysymprint_generate and
	b4_yydestruct_generate to generate these functions, do it "by
	hand".

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

	* data/glr.c, data/lalr1.cc, data/yacc.c: When YYABORT was
	invoked, yydestruct the lookahead.
	* tests/calc.at (Calculator $1): Update the expected lengths of
	traces: there is an added line for the discarded lookahead.
	* doc/bison.texinfo (Destructor Decl): Some rewording.
	Define "discarded" symbols.

2004-09-02  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (translate_, destruct_): No reason to be static.

2004-09-02  Akim Demaille  <akim@epita.fr>

	* data/glr.c, yacc.c (YYDSYMPRINT): Remove, not used.
	(YYDSYMPRINTF): Rename as...
	(YY_SYMBOL_PRINT): this.
	* data/lalr1.cc (YY_SYMBOL_PRINT): New, modeled after the previous
	two.
	Use it instead of direct symprint_ calls.
	(yybackup): Tweak the "Now at end of input" case to match yacc.c's
	one.

2004-09-02  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (b4_yysymprint_generate): New.
	(symprint_): New member function, defined when YYDEBUG.
	Use it consistently instead of token/nterm debugging output by
	hand.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust
	%printer calls to use cdebug_ when using lalr1.cc.

2004-08-30  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* data/glr.c: Guard the declarations of yypstack and yypdumpstack
	with #ifdef YYDEBUG.

2004-08-26  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Implementing Loops): Rename as...
	(Implementing Gotos/Loops): this.

2004-08-13  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to latest gnulib.
	* bootstrap (gnulib_modules): Add xalloc-die.
	Set LC_ALL=C so that file names sort consistently.
	Prefer the gnulib copies of gettext.m4, glibc21.m4,
	inttypes_h.m4, lib-ld.m4, lib-prefix.m4, po.m4, stdint_h.m4,
	uintmax_t.m4, ulonglong.m4.
	(intl_files_to_remove): Add gettext.m4, lib-ld.m4, lib-prefix.m4,
	po.m4 since we are now using _gl.m4 instead.

2004-08-10  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* src/scan-action.l: Remove. Scanning of semantic actions is
	handled in scan-gram.l.

2004-08-07  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* src/scan-gram.l (handle_syncline): Use uniqstr_new not xstrdup.

	* src/location.h (struct): The file member is a uniqstr.
	(equal_boundaries): Use UNIQSTR_EQ for comparison.

2004-07-22  Paul Eggert  <eggert@cs.ucla.edu>

	Fix bug with non-%union parsers that have printers or destructors,
	which led to a Bison core dump.  Reported by Peter Fales in
	<http://lists.gnu.org/archive/html/bug-bison/2004-07/msg00014.html>.

	* data/c.m4 (b4_symbol_actions): Don't assume %union was used.
	* data/lalr1.cc (yystype) [defined YYSTYPE]: Define to YYSTYPE,
	not to our own type.
	* src/output.c (symbol_destructors_output, symbol_printers_output):
	Don't assume %union.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR,
	AT_CHECK_PRINTER_AND_DESTRUCTOR): New argument
	UNION-FLAG.  All callers changed.
	(_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't assume %union.
	Use type char, not unsigned int, when declaring an array of char;
	this lets us remove a cast.
	(Printers and Destructors): Add non-%union test cases.

2004-06-21  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texinfo: Minor editorial changes, mostly to the new
	GLR writeups.  E.g., avoid frenchspacing and the future tense,
	change "lookahead" to "look-ahead", and change "wrt" to "with
	respect to".

2004-06-21  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* doc/bison.texinfo (Merging GLR Parses, Compiler Requirements):
	New sections, split off from the GLR Parsers section.  Put the new
	Simple GLR Parser near the start of the GLR section, for clarity.
	Rewrite connective text.

2004-06-21  Frank Heckenbach  <frank@g-n-u.de>

	* doc/bison.texinfo (Simple GLR Parsers): New section.

2004-06-21  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS, TODO, doc/bison.texinfo:
	Use "look-ahead" instead of "lookahead", to be consistent.
	* REFERENCES: Fix incorrect reference to DeRemer and Pennello,
	while we're fixing "look-ahead".
	* src/conflicts.c (shift_set): Renamed from shiftset.
	(look_ahead_set): Renamed from lookaheadset.
	* src/print.c: Likewise.
	* src/getargs.c (report_args): Add "look-ahead" as the new canonical
	name for "lookahead".
	(report_types, usage): Likewise.
	* src/getargs.h (report_look_ahead_tokens): Renamed from
	report_lookaheads.
	* src/lalr.c (compute_look_ahead_tokens): Renamed from
	compute_lookaheads.
	(state_look_ahead_tokens_count): Renamed from state_lookaheads_count.
	(look_ahead_tokens_print): Renamed from lookaheads_print.
	* src/state.c (state_rule_look_ahead_tokens_print): Renamed from
	state_rule_lookaheads_print.
	* src/state.h: Likewise.
	(reductions.look_ahead_tokens): Renamed from lookaheads.
	* tests/torture.at (AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR): Renamed from
	AT_DATA_LOOKAHEADS_GRAMMAR.

2004-06-03  Paul Eggert  <eggert@cs.ucla.edu>

	* README: Update location of patched M4 distribution.

2004-05-30  Albert Chin-A-Young  <china@thewrittenword.com>

	Don't assume the C++ compiler takes the same arguments as the C compiler
	(trivial change).
	* configure.ac (O0CXXFLAGS): New var.
	* tests/atlocal.in (CXXFLAGS): Use it.

2004-05-29  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some "make check" problems with C++ reported by
	Albert Chin-A-Young for Tru64 C++ in this thread:
	http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00049.html

	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check for std::cerr.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	Output to a .cc file for C++, not to a .c file.
	* tests/calc.at (AT_CHECK_CALC): Likewise.
	* tests/regression.at (AT_CHECK_DANCER): Likewise.
	* tests/local.at (AT_COMPILE_CXX): Default to OUTPUT.cc, not OUTPUT.c.

2004-05-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* tests/calc.at, tests/actions.at: Workaround for SGI
	C++ compiler.  (trivial change)

2004-05-27  Paul Eggert  <eggert@cs.ucla.edu>

	Spent a few hours checking out which prerequisite versions the
	current sources actually require.  I went all the way back to
	Gettext 0.10.40, Automake 1.4, and Autoconf 2.57 and investigated
	a seemingly endless set of combinations of versions more recent
	than that.  The bottom line is that the current sources require
	fairly recent versions of the build tools, and it'll be some work
	to change this.
	* configure.ac (AC_PREREQ): Increase from 2.58 to 2.59.
	(AM_INIT_AUTOMAKE): Increase from 1.7 to 1.8.
	(AM_GNU_GETTEXT_VERSION): Increase from 0.11.5 to 0.12.
	Add comments explaining why those particular versions are
	currently needed.

	* src/parse-gram.y (lloc_default): Rewrite to avoid compiler bug
	in SGI MIPSpro 7.4.1m.  Problem reported by Albert Chin-A-Young in
	<http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00037.html>.

	* configure.ac (AC_PREREQ): Bump to 2.58, since 2.57 doesn't work
	(it fails with a Autoconf-without-aclocal-m4 diagnostic).

2004-05-26  Paul Eggert  <eggert@cs.ucla.edu>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Lower it from 0.14.1 to
	0.11.5.  Suggested by Bruno Haible.
	* bootstrap: Remove gettext version checking.

	* doc/bison.texinfo (Decl Summary): Also mention that %union
	can depend on prerequisite types.  Problem reported by Tim
	Van Holder.

2004-05-25  Paul Eggert  <eggert@cs.ucla.edu>

	* README: Mention GNU m4 1.4 bugs and Akim's patched version.
	* README-alpha: Don't tell people not to package this.

	* bootstrap: Don't assume $(...) works; use `...` instead.
	Problem reported by Paul Hilfinger.  Also, diagnose non-GNU
	gettext better.

	* doc/bison.texinfo (Decl Summary, Bison Options): Clarify what's
	put into the -d output file, and mention what to do if YYSTYPE is
	defined as a macro.

2004-05-24  Paul Eggert  <eggert@cs.ucla.edu>

	Undo change made earlier today: it caused autopoint to not bring
	in ABOUT-NLS.  Ouch.  Instead, substitute our own diagnostic for
	autopoint's.

	* bootstrap: Check that gettext version matches what's in
	configure.ac.  Warn users to ignore robots.txt ERROR 404.
	* bootstrap: Undo today's earlier change (logged below).
	* configure.ac (AM_GNU_GETTEXT_VERSION): Likewise.

	The gettext version checking is causing more trouble than it's
	curing; remove it.  Problem reported by Paul Hilfinger.

	* bootstrap: Issue a warning that one can expect a message
	'AM_GNU_GETTEXT is used, but not AM_GNU_GETTEXT_VERSION'.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Remove.

2004-05-23  Paul Eggert  <eggert@cs.ucla.edu>

	Ensure that the C++ compiler used for testing actually works on a
	simple test program; if not, skip the C++-related tests.  Problem
	reported by Vin Shelton in:
	http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00026.html

	* m4/cxx.m4: New file.
	* configure.ac (BISON_TEST_FOR_WORKING_CXX_COMPILER): Add.
	* tests/atlocal.in (BISON_CXX_WORKS): Add.
	* tests/local.at (AT_COMPILE_CXX): Use it.

2004-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	* data/glr.c (yylloc): Output this macro even if locations are not
	being generated, as the GLR parser needs it even in that case.
	Problem reported by Troy A. Johnson
	<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=195946>.

	* configure.ac (AC_INIT): Update to 1.875e.

2004-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Version 1.875d.
	* configure.ac (AC_INIT): Likewise.
	* src/parse-gram.c, src/parse-gram.h: Regenerate with 1.875d.

	* configure.ac (--enable-gcc-warnings): Do not enable -Wshadow,
	-Wmissing-prototypes, or -Wstrict-prototypes for C++.  The current
	lalr1.cc runs afoul of the first, and the last two are no longer
	supported by GCC 3.4.0.
	* README: Mention GNU m4 1.4 or later; mention m4 patches.
	* HACKING: Use ./bootstrap, not "make update" to import foreign files.

2004-05-06  Paul Eggert  <eggert@cs.ucla.edu>

	* src/muscle_tab.c (hash_muscle): Accept and return size_t, not
	unsigned int, for compatibility with latest gnulib hash module.
	* src/state.c (state_hash, state_hasher): Likewise.
	* src/symtab.c (hash_symbol, hash_symbol_hasher): Likewise.
	* src/uniqstr.c (hash_uniqstr): Likewise.

2004-05-03  Paul Eggert  <eggert@cs.ucla.edu>

	* NEWS: Unescaped newlines are no longer allowed in char & strings.

	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER,
	SC_CHARACTER,SC_STRING>): Reject unescaped newlines in
	character and string literals.
	(unexpected_end): New function.
	(unexpected_eof): Use it.
	(unexpected_newline): New function.
	(<INITIAL,SC_AFTER_IDENTIFIER,SC_PRE_CODE>): Coalesce duplicate
	actions.

	* NEWS: Document %expect-rr.

	* bootstrap (--gnulib-srcdir=*, --cvs-user=*):
	Fix typo by replacing $1 with $option.
	Remove more 'intl'-related files.
	Don't DEFUN AM_INTL_SUBDIR twice.

	* lib/.cvsignore: Add strndup.h.  Remove memchr.c, memcmp.c,
	memrchr.c, strcasecmp.c, strchr.c, strrchr.c, strspn.c, strtol.c,
	strtoul.c.
	* m4/.cvsignore: Add exitfail.m4, extensions.m4, gnulib.m4,
	hard-locale.m4, mbstate_t.m4, strerror_r.m4, strndup.m4,
	xstrndup.m4.  Remove glibc21.m4, intdiv0.m4, inttypes-pri.m4,
	inttypes.m4, inttypes_h.m4, isc-posix.m4, lcmessage.m4,
	stdint_h.m4, uintmax_t.m4, ulonglong.m4.
	* src/.cvsignore: Add *.output.

	* src/parse-gram.y: Put copyright notice inside %{ %} so it
	gets copied to the output file.

2004-04-28  Paul Eggert  <eggert@twinsun.com>

	Get files from the gnulib and po repositories, instead of relying
	on them being in our CVS.  Upgrade to latest versions of gnulib
	and Automake.

	* Makefile.am (SUBDIRS): Remove m4; Automake now does m4.
	* bootstrap: Bootstrap from gnulib and po repositories.
	Much of this code was stolen from GNU diff and GNU tar's bootstrap.
	* README-cvs: Document these changes.  Remove version numbers from
	mentions of build tools, since they change so often.  Mention Flex.

	* configure.ac (AC_CONFIG_MACRO_DIR): Add, with m4 as arg.
	(gl_USE_SYSTEM_EXTENSIONS): Add.
	(AC_GNU_SOURCE, AC_AIX, AC_MINIX):
	Remove; no longer needed, as gl_USE_SYSTEM_EXTENSIONS
	does this for us.
	(AC_ISC_POSIX): Remove; we no longer support this
	ancient OS, as it gets in the way of latest Autoconf & gnulib.
	(AC_HEADER_STDC): Remove: we now assume C89 or better.
	(AC_CHECK_HEADERS_ONCE): Use instead of AC_CHECK_HEADERS.
	Do not check for C89 headers, except for locale.h which is used
	by the Yacc library and must port to K&R hosts.
	(AC_CHECK_FUNCS_ONCE): Use instead of AC_CHECK_FUNCS.
	Do not check for C89 functions, except for setlocale which is
	used by the Yacc library.
	(AC_CHECK_DECLS, AC_REPLACE_FUNCS): Remove; no longer needed.
	(gl_DIRNAME, gl_ERROR, gl_FUNC_ALLOCA, gl_FUNC_MEMCHR,
	gl_FUNC_MEMRCHR, gl_FUNC_STPCPY, gl_FUNC_STRNLEN, gl_FUNC_STRTOL,
	gl_GETOPT, gl_HASH, gl_MBSWIDTH, gl_OBSTACK, gl_QUOTE,
	gl_QUOTEARG, gl_XALLOC, jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_MALLOC,
	AM_GNU_GETTEXT): Remove; now done by:
	(GNULIB_AUTOCONF_SNIPPET): Add.  "bootstrap" builds this for us.
	(AC_CONFIG_FILES): Remove m4/Makefile, as Automake now does this
	for us.

	* lib/Makefile.am: Include gnulib.mk, built for us by "bootstrap".
	(BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES):
	Define to empty, as gnulib.mk will do the rest for us.
	($(libbison_a_OBJECTS), stdbool.h): Remove, as gnulib.mk does this
	for us.
	(libbison_a_SOURCES): Define to $(lib_SOURCES) now.
	(lib_SOURCES): New symbol, containing only the non-gnulib libs.

	* src/files.c: Include gnulib's xstrndup.h.

	* src/system.h (MALLOC): Use xnmalloc, for better overflow checking.
	(REALLOC): Use xnrealloc, for likewise.
	(xstrndup, stpcpy): Remove decls, as gnulib does this for us now.
	(strnlen, memrchr): Remove decls; functions no longer used.
	Include <stpcpy.h>.

	* config/depcomp, config/install-sh, lib/alloca.c, lib/argmatch.c,
	lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
	lib/error.c, lib/error.h, lib/getopt.c, lib/getopt.h,
	lib/getopt1.c, lib/gettext.h, lib/hash.c, lib/hash.h,
	lib/malloc.c, lib/mbswidth.c, lib/mbswidth.h, lib/memchr.c,
	lib/memcmp.c, lib/memrchr.c, lib/obstack.c, lib/obstack.h,
	lib/quote.c, lib/quote.h, lib/quotearg.c, lib/quotearg.h,
	lib/realloc.c, lib/stdbool_.h, lib/stpcpy.c, lib/strcasecmp.c,
	lib/strchr.c, lib/strncasecmp.c, lib/strnlen.c, lib/strrchr.c,
	lib/strspn.c, lib/strtol.c, lib/strtoul.c, lib/unlocked-io.h,
	lib/xalloc.h, lib/xmalloc.c, lib/xstrdup.c, lib/xstrndup.c,
	m4/Makefile.am, m4/alloca.m4, m4/dirname.m4, m4/dos.m4,
	m4/error.m4, m4/getopt.m4, m4/hash.m4, m4/malloc.m4,
	m4/mbrtowc.m4, m4/mbswidth.m4, m4/memchr.m4, m4/memcmp.m4,
	m4/memrchr.m4, m4/obstack.m4, m4/onceonly.m4, m4/prereq.m4,
	m4/quote.m4, m4/quotearg.m4, m4/realloc.m4, m4/stdbool.m4,
	m4/stpcpy.m4, m4/strnlen.m4, m4/strtol.m4, m4/strtoul.m4,
	m4/unlocked-io.m4, m4/xalloc.m4, po/LINGUAS, po/Makefile.in.in,
	po/Makevars, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po,
	po/hr.po, po/id.po, po/it.po, po/ja.po, po/ms.po, po/nl.po,
	po/pt_BR.po, po/ro.po, po/ru.po, po/sv.po, po/tr.po:
	Remove, as these files are now generated automatically
	by bootstrap or automake.

	* po/ChangeLog: Remove: all but one entry was a duplicate
	of this file, and I moved that 2000-11-02 entry here.

	* config/.cvsignore: Add Makefile, depcomp, install-sh.
	* lib/.cvsignore: Add alloca.c, alloca.h, alloca_.h, argmatch.c,
	argmatch.h, basename.c, dirname.c, dirname.h, error.c, error.h,
	exit.h, exitfail.c, exitfail.h, getopt.c, getopt.h, getopt1.c,
	getopt_int.h, gettext.h, gnulib.mk, hard-locale.c, hard-locale.h,
	hash.c, hash.h, malloc.c, mbswidth.c, mbswidth.h, memchr.c,
	memcmp.c, memrchr.c, obstack.c, obstack.h, quote.c, quote.h,
	quotearg.c, quotearg.h, realloc.c, stdbool_.h, stpcpy.c, stpcpy.h,
	strcasecmp.c, strchr.c, stripslash.c, strncasecmp.c, strndup.c,
	strnlen.c, strrchr.c, strspn.c, strtol.c, strtoul.c,
	unlocked-io.h, xalloc.h, xmalloc.c, xstrdup.c, xstrndup.c,
	xstrndup.h.
	* m4/.cvsignore: Remove Makefile, Makefile.in.  Add alloca.m4,
	dirname.m4, dos.m4, error.m4, getopt.m4, hash.m4, mbrtowc.m4,
	mbswidth.m4, obstack.m4, onceonly.m4, quote.m4, quotearg.m4,
	stdbool.m4, stpcpy.m4, strnlen.m4, unlocked-io.m4, xalloc.m4.
	* po/.cvsignore: Add *.po, LINGUAS, Makefile.in.in, Makevars.
	* src/.cvsignore: Remove *_.c.


	* Makefile.maint (GZIP_ENV): Don't use --rsyncable if gzip doesn't
	support it.  (The latest stable gzip doesn't.)

2004-04-27  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc (Parser::stos_) [! YYDEBUG]: Define even in this
	case, as stos_ is now used by destructors due to the 2004-02-09
	change.

	Remove more K&R C support.
	* lib/libiberty.y (PARAMS): Remove.  All uses removed.
	* lib/subpipe.c (errno): Remove decl.
	Include <stdlib.h> unconditionally.
	(EXIT_FAILURE): Remove macro.
	* src/complain.c (vfprintf, strerror): Remove.
	* src/system.h: Include limits.h, stdlib.h, string.h, locale.h
	unconditionally.
	(EXIT_FAILURE, EXIT_SUCCESS, setlocale): Remove defns.
	Use latest Autoconf recommendations for including inttypes.h, stdint.h.
	(strchr, strspn, memchr): Remove decls.
	* tests/calc.at (_AT_DATA_CALC_Y): Include stdlib.h, string.h
	unconditionally.  Do not declare perror.
	* tests/conflicts.at (%nonassoc and eof): Include stdlib.h
	unconditionally.

	* src/complain.c (_): Remove useless defn, as system.h defines this.

	* lib/bitset.h (__INT_TO_PTR): Remove; workaround no longer needed
	with latest obstack.h.
	* lib/ebitset.c (ebitset_elt_alloc): Don't bother to cast args
	to procedure types, as obstack.h now does that for us.
	* lib/lbitset.c (lbitset_elt_alloc): Likewise.

	* lib/subpipe.h [HAVE_SYS_TYPES_H]: Include <sys/types.h>,
	so that this include file can stand alone.
	* lib/subpipe.c: Do not include <sys/types.h>, as subpipe.h
	does this now.  Include subpipe.h first after config.h, to
	test whether it can stand alone.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't
	declare yyerror when using lalr.cc, as GCC 3.4.0 warns about the
	unused declaration.

	* tests/synclines.at (%union synch line): Put a dummy member in
	the union, because empty unions aren't allowed in C.  Caught
	by GCC 3.4.0.

2004-04-13  Jim Meyering  <jim@meyering.net>

	* src/conflicts.c (conflicts_print): Correct format string typo:
	use `%%' to produce literal `%'.  (trivial change)

2004-03-30  Paul Eggert  <eggert@twinsun.com>

	* src/getargs.c (version): Update copyright year to 2004.

	* data/c.m4 (b4_int_type): Use 'short int' rather than
	'short', and similarly for 'long', 'unsigned', etc.
	* data/glr.c (YYTRANSLATE, yyconfl, yySymbol, yyItemNum,
	yygetLRActions, yyprocessOneStack, yyrecoverSyntaxError,
	yy_yypstack, yydumpstack): Likewise.
	* data/lalr1.cc (user_token_number_max_, user_token_number_max_,
	translate_, seq_, [], pop, Slice, range_, operator+, operator+=):
	Likewise.
	* data/yacc.c (b4_int_type, yyss, YYSTACK_BYTES, yysigned_char,
	yy_stack_print, yyparse): Likewise.
	* doc/bison.texinfo (Prologue, Multiple Types): Likewise.
	* lib/bbitset.h (bitset_word, BITSET_WORD_BITS): Likewise.
	* lib/bitset.c (bitset_print): Likewise.
	* lib/bitset_stats.c (bitste_log_histogram_print): Likewise.
	* lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
	* lib/bitsetv.c (bitsetv_dump): Likewise.
	* lib/ebitset.c (EBITSET_ELT_BITS, ebitset_elt_alloc): Likewise.
	* lib/lbitset.c (LBITSET_ELT_BITS, lbitset_elt_alloc, debug_lbitset):
	Likewise.
	* src/LR0.c (allocate_itemsets): Likewise.
	* src/gram.h (rule_number, rule): Likewise.
	* src/lalr.h (goto_number): Likewise.
	* src/nullable.c (nullable_compute): Likewise.
	* src/output.c (prepare_rules): Likewise.
	* src/relation.c (relation_print, relation_digraph): Likewise.
	* src/relation.h (relation_node): Likewise.
	* src/state.h (state_number, transitions, errs, reductions,
	struct state): Likewise.
	* src/symtab.h (symbol_number, struct symbol): Likewise.
	* src/tables.c (vector_number, tally, action_number,
	default_goto, goto_actions): Likewise.
	* tests/existing.at (GNU Cim Grammar): Likewise.
	* tests/regression.at (Web2c Actions): Likewise.

	* src/output.c (muscle_insert_short_int_table): Renamed from
	muscle_insert_short_table.  All uses changed.

2004-03-25  Paul Hilfinger  <hilfingr@tully.CS.Berkeley.EDU>

	* src/parse-gram.y: Define PERCENT_EXPECT_RR.
	(declaration): Replace expected_conflicts with expected_sr_conflicts.
	Add %expect-rr rule.

	* src/scan-gram.l: Recognize %expect-rr.

	* src/conflicts.h (expected_sr_conflicts): Rename from
	expected_conflicts.
	(expected_rr_conflicts): Declare.

	* src/conflicts.c (expected_sr_conflicts): Rename from
	expected_conflicts.
	(expected_rr_conflicts): Define.
	(conflicts_print): Check r/r conflicts against expected_rr_conflicts
	for GLR parsers.
	Use expected_sr_conflicts in place of expected_conflicts.
	Warn if expected_rr_conflicts used in non-GLR parser.

	* doc/bison.texinfo: Add documentation for %expect-rr.

2004-03-08  Paul Eggert  <eggert@gnu.org>

	Add support for hex token numbers.  Suggested by Odd Arild Olsen in
	<http://lists.gnu.org/archive/html/bison-patches/2004-03/msg00000.html>.

	* NEWS: Document hexadecimal tokens, no NUL bytes, %destructor
	in lalr1.cc.
	* doc/bison.texinfo (Token Decl): Add hexadecimal token numbers.
	* src/scan-gram.l (scan_integer): New function.
	({int}): Use it.
	(0[xX][0-9abcdefABCDEF]+): New pattern, to support hex numbers.
	(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>, \\x[0-9abcdefABCDEF]+,
	handle_action_dollar, handle_action_at, convert_ucn_to_byte):
	Say "long int", not "long", for uniformity with GNU style.

2004-02-25  Paul Eggert  <eggert@twinsun.com>

	* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Ignore stdout from
	compilers.  This fixes a problem with Intel's C++ compiler being
	chatty, reported by Guido Trentalancia in
	<http://lists.gnu.org/archive/html/bug-bison/2004-02/msg00030.html>.

2004-02-09  Alexandre Duret-Lutz  <adl@gnu.org>

	Support %destructor and merge error locations in lalr1.cc.

	* data/lalr1.cc (b4_cxx_destruct_def): New macro.
	(Parser::stos_): Define unconditionally.
	(Parser::destruct_): New method.  Generate its body with
	b4_yydestruct_generate.
	(Parser::error_start_): New attribute.
	(Parser::parse) <yyerrlab, yyerrlab1>: Call destruct_ on erroneous
	token which are discarded.
	(Parser::parse) <yyerrlab, yyerrorlab, yyerrlab1>: Update
	error_start_ when erroneous token are discarded.
	(Parser::parse) <yyerrlab1>: Compute the location of the error
	token so that it covers all the discarded tokens.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust so
	it can be called with `%skeleton "lalr1.cc"', and do that.

2004-02-02  Paul Eggert  <eggert@twinsun.com>

	* src/Makefile.am (AM_CPPFLAGS): New macro.  It mentions
	$(top_srcdir)/lib and ../lib.  This fixes a bug reported
	by Paul Hilfinger; the old INCLUDES value didn't mention ../lib.
	There's no need to mention top_builddir since Automake does that
	for us.
	(INCLUDES): Remove, as Automake says it's obsolescent.
	Contents migrated into AM_CPPFLAGS as described above.
	* lib/Makefile.am (INCLUDES): Remove; obsolescent.

2004-01-14  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>

	* data/glr.c (yytokenName): Bullet-proof against YYEMPTY token.
	(yyreportSyntaxError): Handle case where lookahead token is
	YYEMPTY.

2004-01-13  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c: Put casts on uses of YYREALLOC and YYMALLOC so that
	resulting parsers are compilable with C++.

2003-12-23  Paul Eggert  <eggert@twinsun.com>

	* config/depcomp, config/install-sh: Sync with Automake 1.8.
	* src/output.c (output_skeleton): Rename local var.
	* tests/input.at (Torturing the Scanner): Don't use \x0 or \0 in
	Bison tokens, as this runs afoul of the 2003-10-07 change that
	disallowed NUL bytes in character constants or string literals.

	* tests/local.at: Require Autoconf 2.59's Autotest.
	* tests/testsuite.at: Don't include local.at, since we now assume
	Autoconf 2.59 or later.  Autoconf 2.59 had some problems with
	including it.
	* tests/Makefile.am ($(TESTSUITE)): Remove warning about ignoring
	multiple inclusion warnings.

2003-12-02  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (How Can I Reset the Parser): More about start
	conditions.
	From Bruno Haible.

2003-11-18  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/bison.texinfo (Bison Options): Escape `@' in `$@'.

2003-10-07  Paul Eggert  <eggert@twinsun.com>

	* tests/Makefile.am (clean-local): Don't run 'testsuite --clean'
	if testsuite doesn't exist.

	* doc/bison.texinfo (Symbols): NUL bytes are not allowed in string
	literals, unfortunately.
	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>):
	Complain about NUL bytes in character constants or string literals.

2003-10-05  Paul Eggert  <eggert@twinsun.com>

	* NEWS: Don't document %no-default-prec, as it's still
	too experimental.
	* doc/bison.texinfo: Document %no-default-prec only if
	the defaultprec flag is set.  Normally it's not.

2003-10-04  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (b4_rhs_value, b4_rhs_location): Yield a
	non-modifiable lvalue, instead of a modifiable one.
	* doc/bison.texinfo (Actions): Document that $$ can
	be assigned to.  Do not claim that $$ and $N are
	array element references: user code should not rely on this.

2003-10-01  Paul Eggert  <eggert@twinsun.com>

	* src/parse-gram.h (PERCENT_NO_DEFAULT_PREC): New token.
	(grammar_declaration): Use it.
	* src/scan-gram.l: New token %no-default-prec.
	* tests/conflicts.at: Revamp tests to use %no-default-prec.
	* NEWS, doc/bison.texinfo: Document the above.

2003-10-01  Akim Demaille  <akim@epita.fr>

	VCG no longer supports long_straight_phase.

	* src/vcg.c, src/vcg.h: Remove the handling of long_straight_phase.
	* src/print_graph.c (print_graph): Adjust.

2003-09-30  Frank Heckenbach  <frank@g-n-u.de>
	and Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Decl Summary, Contextual Precedence,
	Table of Symbols): Document %default-prec.
	* src/parse-gram.y (PERCENT_DEFAULT_PREC): New token.
	(grammar_declaration): Set default_prec on %default-prec.
	* src/scan-gram.l (%default-prec): New token.
	* src/reader.h (default_prec): New flag.
	* src/reader.c: Likewise.
	(packgram): Handle it.
	* tests/conflicts.at (%default-prec without %prec,
	%default-prec with %prec, %default-prec 1): New tests.

2003-09-30  Paul Eggert  <eggert@twinsun.com>

	* tests/testsuite.at: Include local.at, not input.at, fixing
	a typo in the 2003-08-25 patch.

2003-08-27  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (yyparse) [__GNUC__]: "Use" yyerrorlab to pacify
	GCC warnings.

2003-08-26  Akim Demaille  <akim@epita.fr>

	* config/announce-gen (print_changelog_deltas): Neutralize "<#" as
	"<\#" to avoid magic from Gnus when posting parts of this script.

2003-08-26  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::report_syntax_error_): New, extracted from
	(Parser::parse): here.
	Adjust: nerrs and errstatus is now replaced by...
	(Parser::nerrs_, Parser::errstatus_): New.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* config/announce-gen, Makefile.cfg: New.
	* Makefile.am: Adjust.
	* GNUmakefile, Makefile.maint: Update from CVS Autoconf, but
	keeping local WGET and WGETFLAGS modifications from Paul Eggert.

2003-08-25  Akim Demaille  <akim@epita.fr>

	When reducing initial empty rules, Bison parser read an initial
	location that is not defined.  This results in garbage, and that
	affects Bison's own parser.  Therefore we need (i) to extend Bison
	to support a means to initialize this location, and (ii) to use
	this CVS Bison to fix CVS Bison's parser.

	* src/reader.h, reader.c (epilogue_augment): Remove, replace
	with...
	* src/muscle_tab.h, src/muscle_tab.c (muscle_code_grow): this.
	* src/parse-gram.y: Adjust.
	(%initial-action): New.
	(%error-verbose): Since we require CVS Bison, there is no reason
	not to use it.
	* src/scan-gram.l: Adjust.
	* src/Makefile.am (YACC): New, to make sure we use our own parser.
	* data/yacc.c (yyparse): Use b4_initial_action.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Don't promote stdout for error messages.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::reduce_print_): Remove unused yyi.
	From Alexandre Duret-Lutz.

2003-08-25  Akim Demaille  <akim@epita.fr>

	Version 1.875c.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::stack_print_, YY_STACK_PRINT): New.
	Use them.

2003-08-25  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (Parser::reduce_print_): New.
	Use it.

2003-08-25  Akim Demaille  <akim@epita.fr>

	Have lalr1.cc catch with Paul Eggert's patch to fix the infinite
	error recovery loops.  This patch is based on
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00000.html>.
	Also, augment the similarity between lalr1.cc and yacc.c.
	Note: the locations of error recovery rules are not correct yet.

	* data/lalr1.cc: Comment changes to augment the similarity between
	lalr1.cc and yacc.c.
	(YYERROR): Goto to yyerrorlab, not yyerrlab1.
	(yyerrlab1): Remove, but where it used to be (now the bottom part of
	yyerrlab), when hitting EOF, pop the whole stack here instead of
	merely falling through the default error handling mechanism.
	(yyerrorlab): New label, with the old contents of YYERROR,
	plus the following change: pop the stack of rhs corresponding
	to the production that invoked YYERROR.  That is how Yacc
	behaves (required by POSIX).
	* tests/calc.at (AT_CHECK_CALC_LALR1_CC): No longer expected to
	fail.

2003-08-25  Akim Demaille  <akim@epita.fr>

	Tune local.at so that people can "autom4te -l autotest calc.at -o
	calc" for instance, to extract a sub test suite.

	* tests/testsuite.at: Move the initialization, Autotest version
	requirement, and AT_TESTED invocation into...
	* tests/local.at: here.
	* tests/testsuite.at: Include it for compatibility with Autoconf
	2.57.
	* tests/Makefile.am ($(TESTSUITE)): Report that the warning should
	be ignore.

2003-08-04  Paul Eggert  <eggert@twinsun.com>

	Rework code slightly to avoid gcc -Wtraditional warnings.
	* data/glr.c (yyuserMerge): Return void, not YYSTYPE.
	The returned value is now stored in *YY0.  All callers changed.
	* src/output.c (merge_output): Adjust to the above change.

2003-07-26  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (YYASSERT): New macro.
	(yyfillin, yydoAction, yyglrReduce, yysplitStack,
	yyresolveStates, yyprocessOneStack):
	Use `YYASSERT (FOO);' rather than `if (! (FOO)) abort ();'.
	Derived from a suggestion by Frank Heckenbach.

2003-07-25  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yyglrReduce): Don't use C89 string concatenation,
	for portability to K&R C (after ansi2knr, presumably).  See
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00041.html>
	by Frank Heckenbach, though I have omitted the structure-initialization
	part of his glr-knr.diff patch since I recall that the Portable
	C Compiler didn't require that change.

	Let the user specify how to allocate and free memory.
	Derived from a suggestion by Frank Heckenbach in
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00041.html>.
	* data/glr.c (YYFREE, YYMALLOC, YYREALLOC): New macros.
	All uses of free, malloc, realloc changed to use these macros,
	and unnecessary casts removed.
	* data/yacc.c (YYFREE, YYMALLOC): Likewise.

2003-07-06  Matthias Mann  <MatthiasMann@gmx.de>

	* data/lalr1.cc (operator<<(std::ostream&, const Position&)):
	use s.empty() rather than s == "" to test for empty string; see
	<http://lists.gnu.org/archive/html/bison-patches/2003-07/msg00003.html>
	(trivial change)

2003-06-25  Akim Demaille  <akim@epita.fr>

	* config/depcomp, config/install-sh: Update from masters.

2003-06-20  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (YYLLOC_DEFAULT): Parenthesize arguments as needed,
	and return properly parenthesized result.
	* data/lalar1.cc (YYLLOC_DEFAULT): Likewise.
	* data/yacc.c (YYLLOC_DEFAULT): Likewise.
	Remove unnecessary parentheses from uses.
	* doc/bison.texinfo (Location Default Action): Describe the
	conventions for parentheses.

2003-06-19  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yyremoveDeletes, yy_reduce_print, yyglrReduce,
	yyreportTree): Do not assume that size_t is the same width as int,
	when printing sizes.  Print sizes using an unsigned format.
	Problem reported by Frank Heckenbach in
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00035.html>.

	Port to Forte Developer 7 C compiler.
	* data/glr.c (struct YYLTYPE): If locations are not being used,
	declare a single dummy member, as empty structs do not conform
	to the C standard.
	(YYERROR, YYBACKUP): Do not use "do { ...; return foo; } while (0)";
	the Forte Developer 7 C compiler complains that end-of-loop
	code is not reached.

2003-06-17  Paul Eggert  <eggert@twinsun.com>

	* lib/libiberty.h (PARAMS): Spell argument as Args, not as X, to
	avoid warnings from picky compilers about redefinition of PARAMS.

2003-06-17  Paul Eggert  <eggert@twinsun.com>

	Version 1.875b.

	* NEWS: Document 1.875b.

	* lib/bbitset.h: Do not include config.h; that's the includer's job.
	Do not include <sys/types.h>; shouldn't be needed on a C89 host.
	* lib/bitset.h (bitset_compatible_p): Indent as per GNU standard.
	Don't use 'index' in comments, as it's a builtin fn on some hosts.
	* lib/bitset_stats.c: Include gettext.h unconditionally, as
	per recent gettext manual's suggestion.
	* lib/ebitset.c (ebitset_resize, ebitset_unused_clear):
	Use prototypes, not old-style definitions.
	* lib/lbitset.c (lbitset_unused_clear): Likewise.
	* lib/vbitset.c (vbitset_resize, vbitset_ones, vbitset_zero,
	vbitset_empty_p, vbitset_copy1, vbitset_not, vbitset_equal_p,
	vbitset_subset_p, vbitset_disjoint_p, vbitset_and, vbitset_and_cmp,
	vbitset_andn, vbitset_andn_cmp, vbitset_or, vbitset_or_cmp,
	vbitset_xor, vbitset_xor_cmp, vbitset_and_or, vbitset_and_or_cmp,
	vbitset_andn_or, vbitset_andn_or_cmp, vbitset_or_and,
	vbitset_or_and_cmp, vbitset_copy): Likewise.

	* lib/libiberty.h: Do not include config.h; that's the includer's job.
	Do not include <stdlib.h>.
	(PARAMS): Define unconditionally for C89.
	(ATTRIBUTE_NORETURN): Remove.
	(ATTRIBUTE_UNUSED): Define unconditionally.

	Upgrade to 2003-06-08 libbitset, submitted by Michael Hayes in:
	<http://lists.gnu.org/archive/html/bison-patches/2003-06/msg00005.html>
	* lib/Makefile.am (bitsets_sources): Add vbitset.c, vbitset.h.
	* lib/vbitset.c, lib/vbitset.h: New files.
	* lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
	lib/bitset_stats.c, lib/ebitset.c, lib/lbitset.c: Import
	from libbitset.

	* doc/bison.texinfo (How Can I Reset the Parser): Renamed from
	`How Can I Reset @code{yyparse}', since texinfo does not allow
	arbitrary @ in node names.

	* m4/Makefile.am (EXTRA_DIST): Add the following files, which
	shouldn't be needed according to the gettext 0.12.1 documentation
	but which seem to be needed anyway: codeset.m4 glibc21.m4
	intdiv0.m4 inttypes-pri.m4 inttypes.m4 inttypes_h.m4 isc-posix.m4
	lcmessage.m4 nls.m4 po.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4.
	* po/Makefile.in.in: Upgrade to gettext 0.12.1 version.

	* lib/.cvsignore: Add stdbool.h.
	* m4/.cvsignore: Add nls.m4, po.m4.

	Upgrade to CVS gnulib.
	* stdbool_.h: File renamed from stdbool.h.in.
	* configure.ac (AM_STDBOOL_H): Invoke this instead of
	AC_HEADER_STDBOOL.
	(AM_GNU_GETTEXT): Put brackets around args, as latest manual suggests.
	(AM_GNU_GETTEXT_VERSION): Update to 0.12.1.
	* lib/Makefile.am (EXTRA_DIST): Add stdbool_.h.
	(MOSTLYCLEANFILES): New var.
	($(libbison_a_OBJECTS)): Depend on $(STDBOOL_H).
	(stdbool.h): New rule.
	* lib/dirname.c, lib/dirname.h, lib/hash.c, lib/hash.h,
	lib/malloc.c, lib/obstack.h, lib/quote.c, lib/realloc.c,
	lib/strcasecmp.c, lib/xalloc.h, m4/alloca.m4, m4/onceonly.m4,
	m4/quote.m4: Upgrade to today's gnulib.

	* tests/calc.at (AT_CHECK_CALC): New option EXPECTED-TO-FAIL.
	(AT_CHECK_CALC_LALR1_CC): Use it, since the C++ LALR parser fails
	the tests right now.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Ensure yylex and
	yyerror are declared before use; C99 requires this.

2003-06-09  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c (YYERROR): Update definition to reset yyerrState to 0
	first.
	(yyrecoverSyntaxError): Correct the logic for setting and testing
	yyerrState.
	Correct comment on handling EOF.
	Allow states with only a default reduction, rather than failing
	(I can't quite reconstruct why these were not allowed before).

	Fixes to avoid problem that $-N rules in GLR parsers can cause
	buffer overruns, corrupting state.

	* src/output.c (prepare_rules): Output max_left_semantic_context
	definition.
	* src/reader.h (max_left_semantic_context): New variable declaration.
	* src/scan-gram.l (max_left_semantic_context): Define.
	(handle_action_dollar): Update max_left_semantic_context.
	* data/glr.c (YYMAXLEFT): New definition.
	(yydoAction): Increase size of yyrhsVals by YYMAXLEFT.
	(yyresolveAction): Ditto.

	Fixes to problems with location handling in GLR parsers reported by
	Frank Heckenbach (2003/06/05).

	* data/glr.c (YYLTYPE): Make trivial if locations not used.
	(YYRHSLOC): Add parentheses, and define only if locations used.
	(YYLLOC_DEFAULT): Add parentheses, and give trivial definition if
	locations not used.
	(yyuserAction): Use YYLLOC_DEFAULT to set *yylocp.
	(yydoAction): Remove redundant initialization of *yyvalp and *yylocp.

	* tests/cxx-type.at: Exercise location information; update tests
	to differentiate output with and without locations.
	Remove forward declarations of yylex and yyerror---caused errors
	because default YYLTYPE not yet defined.
	Change semantic actions to compute strings, rather than printing
	them directly (to test proper passing of semantics values).  Change
	output to prefix notation and update test data and expected results.
	(yylex): Track locations.
	(stmtMerge): Return value rather than printing, and include arguments
	in value.

2003-06-03  Paul Eggert  <eggert@twinsun.com>

	Avoid warnings generated by GCC 2.95.4 when Bison is
	configured with --enable-gcc-warnings.
	* data/lalr1.cc (yy::]b4_parser_class_name[::parse,
	yy::]b4_parser_class_name[::translate_,
	yy::Stack::operator[] (unsigned),
	yy::Stack::operator[] (unsigned) const,
	yy::Slice::operator[] (unsigned),
	yy::Slice::operator[] (unsigned) const):
	Rename local vars to avoid warnings.
	* tests/glr-regression.at (Improper handling of embedded actions
	and $-N in GLR parsers): Remove unused local variable from yylex.
	* tests/regression.at (_AT_DATA_DANCER_Y): Declare yylex to take
	(void) as arg when not pure, since we now assume C89 when building
	Bison.  Pacify GCC by using parameter.

2003-06-02  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc (yy::Position::lines, yy::Position::columns,
	yy::Location::lines, yy::Location::columns): Rename arguments
	to avoid shadowing; this removes a warning generated by GCC 3.3.

2003-06-01  Paul Eggert  <eggert@twinsun.com>

	Don't pass C-only warning optins (e.g., -Wmissing-declarations)
	to g++, as GCC 3.3 complains if you do it.
	* configure.ac (WARNING_CXXFLAGS): New subst.  Set it to
	everything that WARNING_CFLAGS has, except omit warnings
	not suitable for C++.
	(AC_PROG_CXX): Use this instead of AC_CHECK_PROGS([CXX], [g++]).
	* tests/atlocal.in (CXXFLAGS): New var.
	* tests/local.at (AT_COMPILE_CXX): Use it instead of CFLAGS.

	Fix a GLR parser bug I reported in February; see
	<http://lists.gnu.org/archive/html/bison-patches/2003-02/msg00008.html>.
	The problem was that GLR parsers did not conform to the C standard,
	because actions like { $1 = $2 + $3; } expanded to expressions
	that invoked YYFILL in separate subexpressions, and YYFILL assigned
	to a local variable.  The C standard says that expressions
	like (var = f ()) + (var = f ()) have undefined behavior.
	Another problem was that GCC sometimes issues warnings that
	yyfill and its parameters are unused.

	* data/glr.c (yyfillin): Renamed from the old yyfill.  Mark
	as possibly unused.
	(yyfill): New function.
	(YYFILL): Use it.
	(yyuserAction): Change type of yynormal to bool, so that it matches
	the new yyfill signature.  Mark it as possibly unused.


	Follow up on a bug I reported in February, where a Bison-generated
	parser can loop.  Provide a test case and a fix for yacc.c.  I
	don't have a fix for lalr1.cc or for glr.c, unfortunately.
	The original bug report is in:
	<http://lists.gnu.org/archive/html/bison-patches/2003-02/msg00044.html>

	* data/yacc.c (YYERROR): Now just 'goto yyerrorlab', since the
	macro's size was becoming unwieldy.
	(yyerrlab): Do not discard an empty lookahead symbol, as this
	might destroy garbage.
	(yyerrorlab): New label, with the old contents of YYERROR,
	plus the following change: pop the stack of rhs corresponding
	to the production that invoked YYERROR.  That is how Yacc
	behaves, and POSIX requires this behavior.
	(yyerrlab1): Use YYPOPSTACK instead of its definiens.
	* tests/calc.at (_AT_DATA_CALC_Y): Include unistd.h if available.
	Define 'alarm' to do nothing if unistd.h is not available.
	Add a new rule "exp: '-' error;" to test the above change to
	data/yacc.c.  Use 'alarm' to abort any test taking longer than
	10 seconds, as it's probably looping.
	(AT_CHECK_CALC): Test recovery from error in new grammar rule.
	Also, the new yacc.c generates two fewer diagnostics for an
	existing test.

2003-05-24  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (YYSTACKEXPANDABLE): Do not evaluate
	YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined.
	This fixes a problem reported by John Bowman when the Compaq/HP
	Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM
	-ansi -Wall -gall).
	* data/yacc.c (union yyalloc): Likewise.
	(YYCOPY): Do not evaluate __GNUC__ unless it is defined.

	Switch from 'int' to 'bool' where that makes sense.

	* lib/abitset.c (abitset_test, abitset_empty_p, abitset_equal_p,
	abitset_subset_p, abitset_disjoint_p, abitset_and_cmp,
	abitset_andn_cmp, abitset_or_cmp, abitset_xor_cmp, abitset_and_or,
	abitset_and_or_cmp, abitset_andn_or_cmp, abitset_or_and_cmp):
	Return or accept bool, not int.  All callers changed.
	* lib/bbitset.h: (bitset_toggle_, bitset_copy_, bitset_and_or_cmp_,
	bitset_andn_or_cmp_, bitset_or_and_cmp_): Likewise.
	* lib/bitset.c (bitset_only_set_p, bitset_print, bitset_toggle_,
	bitset_copy_, bitset_op4_cmp, bitset_and_or_cmp_, bitset_andn_or_cmp_,
	bitset_or_and_cmp_): Likewise.
	* lib/bitset.h (bitset_test, bitset_only_set_p): Likewise.
	* lib/bitset_stats.c (bitset_stats_print, bitset_stats_toggle,
	bitset_stats_test, bitset_stats_empty_p, bitset_stats_disjoint_p,
	bitset_stats_equal_p, bitset_stats_subset_p, bitset_stats_and_cmp,
	bitset_stats_andn_cmp, bitset_stats_or_cmp, bitset_stats_xor_cmp,
	bitset_stats_and_or_cmp, bitset_stats_andn_or_cmp,
	bitset_stats_or_and_cmp): Likewise.
	* lib/ebitset.c (ebitset_elt_zero_p, ebitset_equal_p, ebitset_copy_cmp,
	ebitset_test, ebitset_empty_p, ebitset_subset_p, ebitset_disjoint_p,
	ebitset_op3_cmp, ebitset_and_cmp, ebitset_andn_cmp, ebitset_or_cmp,
	ebitset_xor_cmp): Likewise.
	* lib/lbitset.c (lbitset_elt_zero_p, lbitset_equal_p, lbitset_copy_cmp,
	lbitset_test, lbitset_empty_p, lbitset_subset_p, lbitset_disjoint_p,
	lbitset_op3_cmp, lbitset_and_cmp, lbitset_andn_cmp, lbitset_or_cmp,
	lbitset_xor_cmp): Likewise.
	* lib/bbitset.h: Include <stdbool.h>.
	(struct bitset_vtable): The following members now return bool, not
	int: toggle, test, empty_p, disjoint_p, equal_p, subset_p,
	and_cmp, andn_cmp, or_cmp, xor_cmp, and_or_cmp, andn_or_cmp,
	or_and_cmp).
	* src/conflicts.c (count_rr_conflicts): Likewise.
	* lib/bitset_stats.h (bitset_stats_enabled): Now bool, not int.
	All uses changed.
	* lib/ebitset.c (ebitset_obstack_init): Likewise.
	* lib/lbitset.c (lbitset_obstack_init): Likewise.
	* src/getargs.c (debug_flag, defines_flag, locations_flag,
	no_lines_flag, no_parser_flag, token_table_flag, yacc_flag,
	graph_flag): Likewise.
	* src/getargs.h (debug_flag, defines_flag, locations_flag,
	no_lines_flag, no_parser_flag, token_table_flag, yacc_flag,
	graph_flag): Likewise.
	* src/output.c (error_verbose): Likewise.
	* src/output.h (error_verbose): Likewise.
	* src/reader.c (start_flag, typed): Likewise.
	* src/reader.h (typed): Likewise.
	* src/getargs.c (LOCATIONS_OPTION): New constant.
	(long_options, getargs): Use it.
	* src/lalr.c (build_relations): Use bool, not int.
	* src/nullable.c (nullable_compute): Likewise.
	* src/print.c (print_reductions): Likewise.
	* src/tables.c (action_row, pack_vector): Likewise.
	* src/muscle_tab.h (MUSCLE_INSERT_BOOL): New macro.
	* src/output.c (prepare): Use it.
	* src/output.c (token_definitions_output,
	symbol_destructors_output, symbol_destructors_output): Use string,
	not boolean integer, to keep track of whether to output separator.
	* src/print_graph.c (print_core): Likewise.
	* src/state.c (state_rule_lookaheads_print): Likewise.

	* config/install-sh: Sync from automake 1.7.5.

2003-05-14  Paul Eggert  <eggert@twinsun.com>

	* src/parse-gram.y (rules_or_grammar_declaration): Require a
	semicolon after a grammar declaration, in the interest of possible
	future changes to the Bison input language.
	Do not allow a stray semicolon at the start of the grammar.
	(rhses.1): Allow one or more semicolons after any rule, including
	just before "|" as required by POSIX.
	* tests/input.at (Torturing the Scanner): Add tests for ";|" in a
	grammar.

2003-05-14  Alexandre Duret-Lutz  <adl@gnu.org>

	%parse-param support for lalr1.cc.

	* data/lalr1.cc (b4_parse_param_decl, b4_parse_param_cons,
	b4_cc_constructor_calls, b4_cc_constructor_call,
	b4_parse_param_vars, b4_cc_var_decls, b4_cc_var_decl): New m4
	definitions.
	(yy::b4_parser_class_name::b4_parser_class_name): Take extra
	parse-param arguments.
	(yy::b4_parser_class_name): Declare instance variables to
	hold parse-param arguments.
	* tests/calc.at: s/value/semantic_value/ because value clashes
	with a member of yy::b4_parser_class_name.  Adjust C++ code
	to handle %parse-param.  Enable %parse-param test in C++.

2003-05-12  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (How Can I Reset @code{yyparse}): Reword the
	English a bit.  Fix fclose typo.  Change "const char" to "char
	const", and use ANSI C rather than K&R for "main".  Suggest
	YY_FLUSH_BUFFER over yyrestart (as that is what Flex recommends)
	and suggest yy_switch_to_buffer.

2003-05-05  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset.h (__INT_TO_PTR): Define to a value that presumes
	C89.  This avoids a diagnostic on compilers that define __STDC__
	to 0, fixing a problem with Tru64 cc reported by Martin Mokrejs in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.

2003-05-03  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset.h (BITSET_FOR_EACH, BITSET_FOR_EACH_REVERSE):
	Do not overrun array bounds.
	This should fix a bug reported today by Olatunji Oluwabukunmi in
	<http://lists.gnu.org/archive/html/bug-bison/2003-05/msg00004.html>.

2003-04-29  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (pure_parser, glr_parser): Move to...
	* src/getargs.c, src/getargs.h: here, as bool, not int.
	(nondeterministic_parser): New.
	* src/parse-gram.y, src/scan-gram.l: Support
	%nondeterministic-parser.
	* src/output.c (prepare): Use nondeterministic_parser instead
	of glr_parser where appropriate.
	* src/tables.c (conflict_row, action_row, save_row)
	(token_actions, token_actions, pack_vector): Ditto.

2003-04-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (C++ Parsers, Implementing Loops): New.

2003-04-29  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Also test yacc.c and glr.c (but not lalr1.cc yet)
	with %pure-parser and %locations to exercise the patch from Yakov
	Markovitch below.

2003-04-28  Tim Van Holder <tim.van.holder@pandora.be>

	* data/yacc.c: (b4_lex_param): Corrected for the case where
	%lex-param is provided and %pure-parser isn't.

2003-04-27  Paul Eggert  <eggert@twinsun.com>

	Avoid gcc -Wundef warnings reported by Gerald Pfeifer in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00044.html>.
	* data/yacc.c (YYSTACK_ALLOC): Don't evaluate YYSTACK_USE_ALLOCA
	if it is not defined.
	(YYMAXDEPTH): Don't evaluate YYMAXDEPTH if it is not defined.

2003-04-26  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc (yy::Parser::pact_ninf_, yy::Parser::table_ninf_):
	Declare to be of type suitable for the ninf value itself, not of
	type suitable for the corresponding table, since the latter might
	be unsigned but the ninf value might be negative.  This fixes a
	bug reported by Alexandre Duret-Lutz in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00017.html>.

	* configure.ac (AC_FUNC_ERROR_AT_LINE): Remove, since gl_ERROR
	invokes it.  We shouldn't invoke it twice because it will attempt
	to put error.o in the archive twice.  This fixes a glitch reported
	by Martin Mokrejs in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.

2003-04-21  Paul Eggert  <eggert@twinsun.com>

	* m4/error.m4: Update from Bruno Haible's 2003-04-14 patch
	to gnulib.

2003-04-21  Yakov Markovitch <Markovitch@iso.ru>

	* data/glr.c (yyexpandGLRStack) [!YYSTACKEXPANDABLE]:
	Fix obvious typo that results in uncompilable GLR parsers
	when both %pure-parser and %locations are used.  (trivial change)

2003-04-17  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l: Add %option nounput, since we no longer use unput.
	(unexpected_eof): Renamed from unexpected_end_of_file, for brevity.
	Do not insert the expected token via unput, as this runs afoul
	of a POSIX-compatibility bug in flex 2.5.31.
	All uses changed to BEGIN the parent state,
	since we no longer insert the expected token via unput.
	* tests/regression.at (Invalid inputs): Remove cascaded diagnostic
	that is no longer emitted after the above change.

	* src/conflicts.c (set_conflicts): Resolve all conflicts, not just
	the first one.  This change is from Paul Hilfinger, and it fixes
	regression reported by Werner Lemberg in
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.

	(resolve_sr_conflict): Don't invoke state_errs_set
	unless one or more tokens have been explicitly made errors.
	Otherwise, the above change causes Bison to abort.

	* tests/existing.at (GNU pic Grammar): New test case, taken from
	Lemberg's email.

2003-03-31  Akim Demaille  <akim@epita.fr>

	* doc/Makefile.am (AM_MAKEINFOFLAGS): Don't split the info file.

2003-03-31  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare_symbols): Avoid trailing spaces in the
	output.

2003-03-31  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Strings are Destroyed): s/losses/loses/.
	From Paul Hilfinger.

2003-03-29  Akim Demaille  <akim@epita.fr>

	* m4/error.m4: Do not put under dynamic conditions some code which
	expansion is under static control.

2003-03-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (How Can I Reset @code{yyparse}): New.

2003-03-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Strings are Destroyed): New.

2003-03-13  Paul Eggert  <eggert@twinsun.com>

	* .cvsignore: Add configure.lineno.
	* src/.cvsignore: Add yacc.
	* tests/.cvsignore: Add testsuite.log.
	* doc/fdl.texi: Sync with latest FSF version.

2003-03-12  Paul Eggert  <eggert@twinsun.com>

	* scan-gram.l (YY_USER_INIT): Initialize code_start, too.
	(<INITIAL><<EOF>>, <SC_PRE_CODE><<EOF>>): Set *loc to the scanner
	cursor, instead of leaving it undefined.  This fixes a bug
	reported by Tim Van Holder in
	<http://lists.gnu.org/archive/html/bug-bison/2003-03/msg00023.html>.
	* tests/input.at (Torturing the Scanner): Test the scanner on
	an empty input file, which was Tim Van Holder's test case.

	* m4/timevar.m4 (BISON_PREREQ_TIMEVAR): When checking whether
	<sys/resource.h> can be included, include sys/time.h and
	sys/times.h first, if available.  This works around the SunOS
	4.1.4 porting bug reported by Bruce Becker in
	<http://lists.gnu.org/archive/html/bug-bison/2003-03/msg00018.html>.

	* m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't
	AC_CHECK_HEADERS([sys/wait.h]), as this interferes with
	AC_HEADER_SYS_WAIT.

	Merge changes from gnulib.  This was prompted because the CVS
	snapshot didn't build on Solaris 7 due to strnlen problems.

	These changes need to be merged back into gnulib:
	* lib/hash.c: Include <stdbool.h> unconditionally.
	* m4/onceonly.m4 (m4_quote): New macro.
	(AC_CHECK_HEADERS_ONCE, AC_CHECK_FUNCS_ONCE, AC_CHECK_DECLS_ONCE):
	Quote AC_FOREACH variable-expansions properly.
	The 2003-01-03 obstack.h change also needs merging.
	{end of changes requiring merging}

	* lib/stdbool.h.in, m4/alloca.m4, m4/dirname.m4, m4/dos.m4,
	m4/getopt.m4, m4/hash.m4, m4/malloc.m4, m4/memchr.m4,
	m4/memrchr.m4, m4/obstack.m4, m4/onceonly.m4, m4/quote.m4,
	m4/quotearg.m4, m4/realloc.m4, m4/stpcpy.m4, m4/strnlen.m4,
	m4/strtol.m4, m4/strtoul.m4, m4/unlocked-io.m4, m4/xalloc.m4:
	New files, imported from gnulib.
	* m4/Makefile.am (EXTRA_DIST): Add the new m4/*.m4 files mentioned
	above.

	* lib/mbswidth.c, m4/error.m4, m4/mbrtowc.m4, m4/mbswidth.m4,
	m4/memcmp.m4, m4/prereq.m4, m4/stdbool.m4: Update to current
	gnulib sources.

	* configure.ac (gl_DIRNAME, gl_GETOPT, gl_HASH, gl_QUOTE, gl_XALLOC):
	Add.
	(gl_ERROR): New, replacing jm_PREREQ_ERROR.
	(gl_FUNC_ALLOCA): New, replacing AC_FUNC_ALLOCA.
	(gl_FUNC_STPCPY): New, replacing AC_REPLACE_FUNCS(stpcpy).
	(gl_FUNC_STRNLEN): New, replacing AC_FUNC_STRNLEN.
	(gl_MBSWIDTH): New, replacing jm_PREREQ_MBSWIDTH.
	(gl_OBSTACK): New, replacing AC_FUNC_OBSTACK.
	(gl_QUOTEARG): New, replacing jm_PREREQ_QUOTEARG.
	(jm_FUNC_GLIBC_UNLOCKED_IO, gl_FUNC_STPCPY, gl_FUNC_STRTOL): New.
	(jm_FUNC_MALLOC): New, replacing AC_FUNC_MALLOC.
	(jm_FUNC_REALLOC): New, replacing AC_FUNC_REALLOC.
	(jm_PREREQ_ARGMATCH): Remove.
	(AC_REPLACE_FUNCS): Remove memchr, memrchr, stpcpy, strtol, strtoul.
	* lib/Makefile.am (libbison_a_SOURCES): Add argmatch.c, argmatch.h.

	* src/system.h: Include <stdbool.h> unconditionally.

	* lib/bbitset.h: Include <limits.h> unconditionally.  We have been
	assuming at least C89 in the bitset code for some time now.

2003-03-03  Akim Demaille  <akim@epita.fr>

	* ro.po: New.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Table of Symbols): Reactivate the
	documentation for %lex-param, and %parse-param.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* data/yacc.c, data/glr.c, data/lal1.cc: Use similar code to
	generate verbose error messages.
	Use the number of tokens as an upper bound in yytname, as it
	cannot be a non terminal.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (_AT_DATA_DANCER_Y): Fix the expected error
	message.

2003-03-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (_AT_DATA_DANCER_Y, AT_CHECK_DANCER): New.
	Use them to exercise yycheck overrun.
	Based on Andrew Suffield's grammar.

2003-03-02  Akim Demaille  <akim@epita.fr>

	Create tests/local.at for Bison generic testing macros.

	* tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Move to...
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	This new file.
	* tests/calc.at (AT_CHECK_CALC): Adjust.
	* tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR)
	(AT_COMPILE, AT_COMPILE_CXX, AT_PARSER_CHECK): Move to...
	* tests/local.at: here.
	(AT_COMPILE_CXX): Tags the tests using it as c++.
	Ignore the test if CXX is not functional.

2003-03-01  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (code_start): Initialize it to scanner_cursor,
	not loc->end, since loc->end might contain garbage and this leads
	to undefined behavior on some platforms.
	(id_loc, token_start): Use (IF_LINTed) initial values that do not
	depend on *loc, so that the reader doesn't give the the false
	impression that *loc is initialized.
	(<INITIAL>"%%"): Do not bother setting code_start, since its value
	does not survive the return.

2003-03-01  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (code_start): Always initialize it when entering
	into yylex, as SC_EPILOGUE is activated *before* the corresponding
	yylex invocation.  An alternative would be making it static, but
	then it starts with the second %%'s beginning, instead of its end.

2003-02-28  Paul Eggert  <eggert@twinsun.com>

	* lib/mbswidth.c: Include <wchar.h> before "mbswidth.h", to work
	around a UnixWare 7.1.1 porting bug reported by John Hughes in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00030.html>.

2003-02-26  Paul Eggert  <eggert@twinsun.com>

	* README: Mention compiler bug in Sun Forte Developer 6 update 2.
	Remove Sequent/Pyramid discussion (nobody uses them any more).
	Merge VMS and MS-DOS discussion; these ports may well be dead
	but let's keep mentioning them for now.  Put <> around email
	addresses.  Add copyright notice.

2003-02-24  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yy_reduce_print): yylineno -> yylno,
	to avoid collision with flex use of yylineno.
	Problem reported by Bruce Lilly in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00016.html>.
	* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Likewise.
	* data/yacc.c (yy_reduce_print): Likewise.

	* config/depcomp: Sync with Automake 1.7.3.

2003-02-21  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: Use temporary variables instead of casts to
	change integer types.
	Suggested by Paul Eggert.

2003-02-21  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Use "location" consistently to refer to @n,
	to avoid confusions with lalr1.cc's notion of Position.
	Suggested by Paul Eggert.

2003-02-20  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (position.hh): Make sure "columns" never pushes
	before initial_columns.
	(location.hh): Use consistent variable names when defining the
	operator<<.
	Use "last" so that we subtract from Positions, not from unsigned.

2003-02-20  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (position.hh): New subfile, including the extended
	and Doxygen'ed documentation of class Position.
	(location.hh): Use it.
	Document a` la Doxygen.
	With the help of Benoit Perrot.

2003-02-20  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Define
	AT_YACC_IF.
	Redefine AT_YYERROR_SEES_LOC_IF using it.
	(_AT_DATA_CALC_Y): Don't declare yyerror when lalr1.cc, as it is
	not defined.
	Don't use the location in yy::Parser::error_ and
	yy::Parser::print_ when not %locations.
	Activate more lalr1.cc tests.

2003-02-19  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: When displaying a line number, be sure to make it
	an int.

2003-02-19  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (b4_stack_depth_init, yy::Parser::initdepth_):
	Remove, useless.
	(YYABORT, YYACCEPT, YYERROR): New.
	* tests/calc.at: Renable the lalr1.cc test.

2003-02-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (AT_CHECK_CALC): Check different scenarios of
	error recovery, mixing with/without pops and discarding of the
	lookahead.
	Exercise YYERROR.
	Disable the lalr1.cc tests as currently it doesn't support YYERROR.

2003-02-17  Paul Eggert  <eggert@twinsun.com>

	* tests/atlocal.in (LDFLAGS, LIBS): New vars.
	* tests/testsuite.at (AT_COMPILE): Use them.
	This fixes the testsuite problem reported by Robert Lentz in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00011.html>.

2003-02-12  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyerrlab) [YYERROR_VERBOSE]:
	Avoid subscript error in yycheck.  Bug reported by Andrew Suffield in
	<http://lists.gnu.org/archive/html/bug-bison/2003-02/msg00003.html>.
	* data/glr.c (yyreportSyntaxError) [YYERROR_VERBOSE]: Likewise.
	Check for malloc failure, for consistency with yacc.c.
	(yytname_size): Remove, for consistency with yacc.c.

	The bug still remains in data/lalr1.cc, as I didn't have time
	to fix it there.

2003-02-06  Akim Demaille  <akim@epita.fr>

	* configure.ac (GXX): Rename as...
	(CXX): this, to keep the original Autoconf semantics.
	Require 2.57.
	* data/lalr1.cc: Fix b4_copyright invocations.
	If YYDEBUG is not defined, don't depend upon name_ being defined.
	(location.hh): Include string and iostream.
	(Position::filename): New member.
	(Position::Position ()): New.
	(operator<< (Position)): New.
	(operator- (Position, int)): New.
	(Location::first, Location::last): Rename as...
	(Location::begin, Location::end): these, to mock the conventional
	iterator names.
	(operator<< (Location)): New.
	* tests/atlocal.in (CXX): New.
	* tests/testsuite.at (AT_COMPILE_CXX): New.
	* tests/calc.at (_AT_DATA_CALC_Y): Adjust yyerror to report the
	locations in a more synthetic way.
	(AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF is positive if
	lalr1.cc is used.
	Adjust the C locations to match those from Emacs: first column is
	column 0.
	Change all the expected results.
	Conform to the GCS: simplify the locations when applicable.
	(LOC, VAL, YYLLOC_FORMAL, YYLLOC_ARG, USE_YYLLOC, LEX_FORMALS)
	(LEX_ARGS, USE_LEX_ARGS, LEX_PRE_FORMALS, LEX_PRE_ARGS): Replace
	these CPP macros with the m4 macros new defined by...
	(AT_CHECK_PUSHDEFS): this, i.e.:
	(AT_LALR1_CC_IF, AT_PURE_LEX_IF, AT_LOC, AT_VAL, AT_LEX_FORMALS)
	(AT_LEX_ARGS, AT_USE_LEX_ARGS, AT_LEX_PRE_FORMALS, AT_LEX_PRE_ARGS)
	New macros.
	(AT_CHECK_POPDEFS): Undefine them.
	(AT_CHECK_CALC_LALR1_CC): New.
	Use it for the first lalr1.cc test.

2003-02-04  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc (YYLLOC_DEFAULT): Fix its definition: be based on
	Location as is defined.

2003-02-04  Akim Demaille  <akim@epita.fr>

	* data/lalr1.cc: If YYDEBUG is not defined, don't depend upon
	name_ being defined.

2003-02-03  Paul Eggert  <eggert@twinsun.com>

	* src/gram.h (start_symbol): Remove unused decl.

	Use more-consistent naming conventions for local vars.

	* src/derives.c (derives_compute): Change type of local var from
	int to rule_number.
	* src/gram.c (grammar_rules_partial_print): Likewise.
	* src/print.c (print_core): Likewise.
	* src/reduce.c (reduce_grammar_tables): Likewise.

	* src/gram.c (grammar_dump): Change name of item_number *
	local var from r to rp.
	* src/nullable.c (nullable_compute): Likewise.

	* src/gram.h (ISTOKEN, ISVAR): Use i, not s, for int var.

	* src/gram.h (symbol_number_as_item_number): Use sym, not s,
	for symbol or symbol_number var.
	* src/reader.c (grammar_start_symbol_set): Likewise.
	* src/reader.h (grammar_start_symbol_set, grammar_symbol_append):
	Likewise.
	* src/state.c (transitions_to): Likewise.
	* src/state.h: Likewise.
	* src/tables.c (symbol_number_to_vector_number): Likewise.

	* src/muscle_tab.h (MUSCLE_OBSTACK_SGROW): Use p, not s, for
	char * var.

	* src/parse-gram.y (lloc_default): Use loc, not r, for YYLTYPE
	var.

	* src/scan-gram.l (no_cr_read): Use bytes_read, not s, for size
	var.

	* src/system.h (xstrndup, strchr, strspn, strnlen, memchr, memrchr):
	Use str, not s, for char * var.  Use ch, not c, for character var.
	Use size for size var.

	* src/uniqstr.c (uniqstr_new, uniqstr_assert): Use str, not s, for
	char * var.
	(uniqstr_print, uniqst_print_processor): Use ustr, not s, for
	uniqstr var.
	* src/uniqstr.h: Likewise.

	* src/vcg.c (get_color_str, get_textmode_str, get_shape_str,
	get_layoutalgorithm_str, get_decision_str, get_orientation_str,
	get_node_alignment_str, get_arrow_mode_str, get_crossing_type_str,
	get_view_str, get_linestyle_str, get_arrowstyle_str): Rename
	param to have same name as that of enum, so that we don't use
	"s" to stand for a non-state.

2003-02-02  Akim Demaille  <akim@epita.fr>

	* src/scan-skel.l: Scan more than one inert character per yylex
	invocation.

2003-02-01  Paul Eggert  <eggert@twinsun.com>

	Version 1.875a.

	* po/LINGUAS: Add ms.

2003-01-30  Akim Demaille  <akim@epita.fr>

	* doc/Makefile.am (CLEANFILES): Add bison.fns for distcheck.

2003-01-29  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* tests/cxx-type.at: Correct apparent typo in Bison input: $$ instead
	of $1.

	Changes in response to error report by S. Eken: GLR mode does not
	handle negative $ indices or $ indices in embedded rules correctly.
	See <http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00076.html>.

	* data/glr.c (b4_rhs_value): Change to use YYFILL macro.
	(b4_rhs_location): Ditto.
	(yyfill): New function to copy from stack tree into array
	incrementally.
	(yyuserAction): Modify to allow incremental move of semantic values
	to rhs array when in GLR mode.
	Define YYFILL to use in user-defined actions to fill semantic array
	as needed.
	Remove dummy use of yystack, as there is now a guaranteed use.
	(yydoAction): Modify to allow incremental move of semantic values
	to rhs array when in GLR mode.
	(yyresolveAction): Ditto.
	(yyglrShiftDefer): Update comment.
	(yyresolveStates): Use X == NULL for pointers, not !X.
	(yyglrReduce): Ditto.
	(yydoAction): Ditto

	* tests/glr-regr1.at: Rename to ...
	* tests/glr-regression.at: Add new regression test for the problems
	described above (adapted from S. Eken).
	Update copyright notice.
	* tests/testsuite.at: Rename glr-regr1.at to glr-regression.at.
	* tests/Makefile.am: Ditto.

2003-01-28  Paul Eggert  <eggert@twinsun.com>

	* data/lalr1.cc: Do not use @output_header_name@ unless
	b4_defines_flag is set.  This fixes two bugs reported by
	Tim Van Holder in
	<http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00071.html>
	and <http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00073.html>.

2003-01-21  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (YYERROR): Move code from yyerrlab1 to here, so that
	we don't need to worry about yyerrlab1 being reported as an
	"unused label" by non-GCC C compilers.  The downside is that if
	locations are used then a couple of statements are duplicated each
	time YYERROR is invoked, but the upside is that the warnings
	should vanish.
	(yyerrlab1): Move code to YERROR.
	(yyerrlab2): Remove.  Change uses back to yyerrlab1.
	This reverts some of the 2002-12-27 change.

2003-01-17  Paul Eggert  <eggert@twinsun.com>

	* src/output.c (symbol_printers_output): Fix typo that led
	to core dump.  Problem reported by Antonio Rus in
	<http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00058.html>.

2003-01-13  Akim Demaille  <akim@epita.fr>,
		Quoc Peyrot <chojin@lrde.epita.fr>,
		Robert Anisko <anisko_r@lrde.epita.fr>

	* data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop
	when the stacks contain one element, as the loop would otherwise
	free the last state, and then use the top state (the one we just
	popped).  This means that the initial elements will not be freed
	explicitly, as is the case in yacc.c; it is not a problem, as
	these elements have fake values.

2003-01-11  Paul Eggert  <eggert@twinsun.com>

	* NEWS: %expect-violations are now just warnings, reverting
	to Bison 1.30 and 1.75 behavior.  This fixes the GCC 3.2
	bootstrapping problem reported by Matthias Klose; see
	<http://lists.gnu.org/archive/html/bug-bison/2003-01/msg00053.html>.
	* src/conflicts.c (conflicts_print): Likewise.
	* tests/conflicts.at (%expect not enough, %expect too much,
	%expect with reduce conflicts): Likewise.
	* doc/bison.texinfo (Expect Decl): Document this.  Also mention
	that the warning is enabled if the number of conflicts changes
	(not necessarily increases).

	* src/getargs.c (version): Update copyright year.

2003-01-09  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am, lib/Makefile.am: Use $(VAR) instead of @VAR@.

2003-01-08  Paul Eggert  <eggert@twinsun.com>

	* Makefile.maint (WGETFLAGS):
	New macro, containing "-C off" to disable proxy caches.
	All uses of $(WGET) changed to $(WGET) $(WGETFLAGS).
	(rel-check): Use $(WGET) instead of wget.

2003-01-06  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Generalized LR Parsing): Add a reference to
	the GLR paper of Scott, Johnstone and Hussain.

2003-01-04  Paul Eggert  <eggert@twinsun.com>

	* configure.ac (AC_ARG_ENABLE): Add --disable-yacc.
	(YACC_SCRIPT, YACC_LIBRARY): New vars to AC_SUBST.
	* lib/Makefile.am (lib_LIBRARIES): liby.a -> @YACC_LIBRARY@.
	(EXTRA_LIBRARIES): New var, for liby.a.
	* src/Makefile.am (bin_SCRIPTS): yacc -> @YACC_SCRIPT@.
	(EXTRA_SCRIPTS): New var, for yacc.

	* data/yacc.c (yyerrlab1): Omit attribute if __cplusplus is defined,
	since GNU C++ (as of 3.2.1) does not allow attributes on labels.
	Problem reported by Nelson H. F. Beebe.

2003-01-03  Paul Eggert  <eggert@twinsun.com>

	* lib/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to
	(void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
	when compiling Bison 1.875's `bitset bset = obstack_alloc
	(bobstack, bytes);'.  Problem reported by Nelson H. F. Beebe.

	* src/scan-skel.l (QPUTS): Omit redundant `;' from macro definition.
	([^@\n]): Renamed from [^@\n]+ so that the token buffer does not
	grow to a huge size with typical invocation.

	* lib/hash.c (_Bool, bool, false, true, __bool_true_false_are_defined):
	Use the pattern recommended by Autoconf 2.57, except also protect
	against double-definition.
	* src/system.h: Likewise.
	Portability issues reported by Nelson H. F. Beebe.

	* data/glr.c (yybool): Renamed from bool, to avoid collisions in C.
	All uses changed.  Provide a definition in both C and C++.
	(yytrue, yyfalse): Define even if defined (__cplusplus).

	* lib/bitset_stats.c (bitset_stats_list): Remove unused var.
	Reported by Nelson H. F. Beebe.

	* src/scan-skel.l ("@oline@"): Output lineno+1, not lineno.

2003-01-02  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyerrlab1): Append `;' after attribute, to
	pacify the buggy "smart preprocessor" in MacOS 10.2.3.
	Bug reported by Nelson H. F. Beebe.

2003-01-01  Paul Eggert  <eggert@twinsun.com>

	* Version 1.875.

2002-12-30  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (<INITIAL,SC_AFTER_IDENTIFIER,SC_PRE_CODE>","):
	Moved here from...
	(<INITIAL>","): Here.  This causes stray "," to be treated
	more uniformly.

	* src/scan-gram.l (<SC_BRACED_CODE>"}"): Output ";" before the
	last brace in braced code when not in Yacc mode, for compatibility
	with Bison 1.35.  This resurrects the 2001-12-15 patch to
	src/reader.c.

	* src/reader.h (YYDECL): Use YYSTYPE, not its deprecated alias
	yystype.  This follows up the 2002-12-24 YYSTYPE bug fix.

2002-12-28  Paul Eggert  <eggert@twinsun.com>

	* src/symtab.c (symbol_make_alias): Set type of SYMVAL to be
	that of SYM's type.  This fixes Debian bug 168069, reported by
	Thomas Olsson.

2002-12-28  Paul Eggert  <eggert@twinsun.com>

	Version 1.75f.

	Switch back to the Yacc style of conflict reports, undoing some
	of the 2002-07-30 change.
	* doc/bison.texinfo (Understanding): Use Yacc style for
	conflict reports.  Also, use new way of locating rules.
	* src/conflicts.c (conflict_report):
	Renamed from conflict_report_yacc, removing the old
	'conflict_report'.  Translate the entire conflict report at once,
	so that we don't assume that "," has the same interpretation in
	all languages.
	(conflicts_output): Use Yacc-style conflict report for each state,
	instead of our more-complicated style.
	(conflicts_print): Use Yacc-style conflict report, except print
	the input file name when not emulating Yacc.
	* tests/conflicts.at (Unresolved SR Conflicts, Defaulted
	Conflicted Reduction, %expect not enough, %expect too much,
	%expect with reduce conflicts): Switch to Yacc-style conflict reports.
	* tests/existing.at (GNU Cim Grammar): Likewise.
	* tests/glr-regr1.at (Badly Collapsed GLR States): Likewise.

	* src/complain.c (warn_at, warn, complain_at, complain, fatal_at,
	fatal): Don't invoke fflush; it's not needed and it might even be
	harmful for stdout, as stdout might not be open.
	* src/reduce.c (reduce_print): Likewise.

2002-12-27  Paul Eggert  <eggert@twinsun.com>

	Fix a bug where error locations were not being recorded correctly.
	This problem was originally reported by Paul Hilfinger in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00086.html>.

	* data/yacc.c (yyparse): New local var yylerrsp, to record the
	top of the location stack's error locations.
	(yyerrlab): Set it.  When discarding a token, push its location
	onto yylerrsp so that we don't lose track of the error's end.
	(yyerrlab1): Now is only the target of YYERROR, so that we can
	properly record the location of the action that failed.  For GCC
	2.93 and later, insert an __attribute__ ((__unused__)) to avoid
	GCC warning about yyerrlab1 being unused if YYERROR is unused.
	(yyerrlab2): New label, which yyerrlab now falls through to.
	Compute the error's location by applying YYLLOC_DEFAULT to
	the locations of all the symbols that went into the error.
	* doc/bison.texinfo (Location Default Action): Mention that
	YYLLOC_DEFAULT is also invoked for syntax errors.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	Error locations include the locations of all the tokens that were
	discarded, not just the last token.

2002-12-26  Paul Eggert  <eggert@twinsun.com>

	* src/files.c: Include quote.h.
	(compute_output_file_names): Warn if we detect conflicting
	outputs to the same file.  This should catch the misunderstanding
	exemplified by Debian Bug 165349, reported by Bruce Stephens..

	* src/conflicts.c (conflicts_print): If the user specifies
	"%expect N", report an error if there are any reduce/reduce
	conflicts.  This is what the manual says should happen.
	This fixes Debian bug 130890, reported by Anthony DeRobertis.
	* tests/conflicts.at (%expect with reduce conflicts): New test.

	Don't use m4_include on relative file names, as it doesn't work as
	desired if there happens to be a file with that name under ".".

	* m4sugar/version.m4: Remove; it was included but it wasn't used.
	* data/Makefile.am (dist_m4sugar_DATA): Remove m4sugar/version.m4.
	* data/m4sugar/m4sugar.m4: Don't include m4sugar/version.m4.
	* data/glr.c, data/lalr1.cc, data/yacc.c: Don't include c.m4.
	* src/output.c (output_skeleton): Use full path names when
	specifying a file to include; don't rely on include path, as
	it's unreliable when the working file contains a file with
	that name.

2002-12-25  Paul Eggert  <eggert@twinsun.com>

	Remove obsolete references to bison.simple and bison.hairy.
	Problem mentioned by Aubin Mahe in
	<http://lists.gnu.org/archive/html/help-bison/2002-12/msg00010.html>.
	* data/glr.c: Comment fix.
	* doc/bison.1: Remove references.  Also, mention "yacc".

	* src/getargs.c (getargs) [MSDOS]: Don't assume optarg != NULL
	with -g option.

	* src/parse-gram.y (declaration): Use enum "report_states" rather
	than its numeric value 1.

	* src/scan-skel.l ("@output ".*\n): Close any old yyout before
	opening a new one.  This fixes Debian bug 165349, reported by
	Bruce Stephens.

2002-12-24  Paul Eggert  <eggert@twinsun.com>

	Version 1.75e.

	* Makefile.maint (cvs-update): Don't assume that the shell
	supports $(...), as Solaris sh doesn't.

	* src/parse-gram.y (lloc_default): Remove test for empty
	nonterminals at the end, since it didn't change the result.

2002-12-24  Paul Eggert  <eggert@twinsun.com>

	If the user does not define YYSTYPE as a macro, Bison now declares it
	using typedef instead of defining it as a macro.  POSIX requires this.
	For consistency, YYLTYPE is also declared instead of defined.

	%union directives can now have a tag before the `{', e.g., the
	directive `%union foo {...}' now generates the C code
	`typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility.
	The default union tag is `YYSTYPE', for compatibility with Solaris 9
	Yacc.  For consistency, YYLTYPE's struct tag is now `YYLTYPE'
	instead of `yyltype'.

	`yystype' and `yyltype' are now obsolescent macros instead of being
	typedefs or tags; they are no longer documented and will be
	withdrawn in a future release.

	* data/glr.c (b4_location_type): Remove.
	(YYSTYPE): Renamed from yystype.
	(YYSTYPE_IS_DECLARED): New macro, used to prevent double-typedef.
	(struct YYLTYPE): Renamed from struct yyltype.
	(YYLTYPE): Renamed from yyltype.
	(yyltype, yystype): New (and obsolescent) macros,
	for backward compatibility.
	* data/yacc.c: Likewise.

	* data/yacc.c (YYSTYPE): Declare as union YYSTYPE if the user
	does not specify a union tag.  This is for compatibility with
	Solaris 9 yacc.

	* src/parse-gram.y (add_param): 2nd arg is now char * not char
	const *, since it is now modified by stripping surrounding { }.
	(current_braced_code): Remove.
	(PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_UNION,
	PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Change names to include
	trailing " {...}".  Now of type <chars>.
	(grammar_declaration): Adjust to bundled tokens.
	(code_content): Remove; stripping is now done by add_param.
	(print_token_value): Print contents of bundled tokens.
	(token_name): New function.

	* src/reader.h (braced_code, current_braced_code): Remove.
	(token_name): New decl.

	* src/scan-gram.l (handle_dollar, handle_at): Now takes int
	token_type, not braced_code code_kind.  All uses changed.
	(SC_PRE_CODE): New state, for scanning after a keyword that
	has (or usually has) an immediately-following braced code.
	(token_type): New local var, to keep track of which token type
	to return when scanning braced code.
	(<INITIAL>"%destructor", <INITIAL>"%lex-param",
	<INITIAL>"%parse-param", <INITIAL>"%printer",
	<INITIAL>"%union"): Set token type and BEGIN SC_PRE_CODE
	instead of returning a token type immediately.
	(<INITIAL>"{"): Set token type.
	(<SC_BRACED_CODE>"}"): Use it.
	(handle_action_dollar, handle_action_at): Now returns bool
	indicating success.  Fail if ! current_rule; this prevents a core dump.
	(handle_symbol_code_dollar, handle_symbol_code_at):
	Remove; merge body into caller.
	(handle_dollar, handle_at): Complain in invalid contexts.

	* NEWS, doc/bison.texinfo: Document the above.
	* NEWS: Fix years and program names in copyright notice.

2002-12-17  Paul Eggert  <eggert@twinsun.com>

	* NEWS, doc/bison.texinfo (Parser Function, Pure Calling, Error
	Reporting, Table of Symbols): Omit mentions of %lex-param and
	%parse-param from the documentation for now.

2002-12-15  Paul Eggert  <eggert@twinsun.com>

	Undo most of the 2002-11-12 yychar -> yytoken patch, as it broke
	GCC 3.2.1 (which depends on yychar == YYEMPTY when there is no
	lookahead symbol, and which sets yychar in parser actions) and it
	disagreed with the Bison documentation.  Bug
	reported by Andrew Walrond.

	* data/yacc.c (YYTRANSLATE): Don't check for negative argument,
	as the caller now does that.
	(yyclearin, YYBACKUP, yyparse): Use yychar, not yytoken.
	(YYEMPTY): Parenthesize right hand side, since others use it.
	(yyparse): Don't assume that our generated code is the only code
	that sets yychar.

2002-12-13  Paul Eggert  <eggert@twinsun.com>

	Version 1.75d.

	POSIX requires a "yacc" command.
	* src/Makefile.am (bin_SCRIPTS): New macro, for yacc.
	(MOSTLYCLEANFILES): Add yacc.
	(yacc): New rule.
	* doc/bison.texinfo (Invocation, Bison Options): Mention yacc
	as an alias for bison y.

	* po/LINGUAS: Add da.

	* src/getargs.c (__GNU_LIBRARY__) [lint]: Define to work around
	problem with latest <getopt.h>.
	(HACK_FOR___GNU_LIBRARY___PROTOTYPE): New macro.

	* doc/fdl.texi: Upgrade to 1.2.
	* lib/alloca.c, lib/error.c, lib/getopt.c, lib/getopt.h
	lib/getopt1.c, lib/gettext.h, lib/memrchr.c, lib/obstack.c,
	lib/obstack.h, lib/strnlen.c, lib/unlocked-io.h: Sync with
	gnulib.
	* config/install-sh: Sync with autotools.

	Fix a bad interaction with flex 2.5.23 reported by Bruce Lilly in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00114.html>.
	* data/yacc.c (YYLTYPE, struct yyltype): Do not define unless
	locations are requested.
	(union yyalloc): Do not depend on YYLTYPE_IS_TRIVIAL unless
	locations are requested.

2002-12-12  Paul Eggert  <eggert@twinsun.com>

	Remove unportable casts and storage allocation tricks.
	While we're at it, remove almost all casts, since they
	usually aren't needed and are a sign of trouble.

	* configure.ac (AC_CHECK_TYPES): Check for uintptr_t.

	* src/derives.c (derives_compute): Do not subtract NTOKENS from
	the pointer DSET returned by malloc; this isn't portable.
	Instead, always use DSET[i - NTOKENS] rather than DSET[i].
	Similarly for DERIVES.
	* src/lalr.c (set_goto_map): Likewise, for GOTO_MAP and TEMP_MAP.
	* src/nullable.c (nullable_compute): Likewise, for RSETS and NULLABLE.
	* src/reduce.c (reduce_grammar_tables): Likewise, for nontermmap

	* src/derives.c (derives_compute): Do not bother invoking
	int_of_rule_number, since rule numbers are integers.

	* src/files.c (concat2, tr, compute_base_name): Use xmalloc (N)
	rather than XMALLOC (char, N).

	* src/files.c (filename_split): Rewrite to avoid cast.

	* src/gram.h (symbol_number_as_item_number,
	item_number_as_symbol_number, rule_number_as_item_number,
	item_number_as_rule_number):
	Now inline functions rather than macros, to avoid casts.
	* src/state.h (state_number_as_int): Likewise.
	* src/tables.c (state_number_to_vector_number,
	symbol_number_to_vector_number): Likewise.

	* src/gram.h (int_of_rule_number): Remove; no longer used.

	* src/lalr.c (add_lookback_edge): Use malloc rather than calloc,
	since the resulting storage is always stored into.

	* src/main.c (alloca) [C_ALLOCA]: Add decl here, the only place
	where it's needed.

	* src/muscle_tab.c (muscle_m4_output):
	Now inline.  Return bool, not int.
	* src/state.c (state_compare): Likewise.
	* src/symtab.c (symbol_check_defined,
	symbol_check_alias_consistency, symbol_pack, symbol_translation,
	hash_compare_symbol, hash_symbol):
	Likewise.
	* src/uniqstr.c (uniqstr_print): Likewise.
	* src/muscle_tab.c (muscle_m4_output_processor):
	New function, to avoid casts.
	* src/state.c (state_comparator, stage_hasher): Likewise.
	* src/symtab.c (symbol_check_defined_processor,
	symbol_check_alias_consistency_processor, symbol_pack_processor,
	symbol_translation_processor, hash_symbol_comparator,
	hash_symbol_hasher): Likewise.
	* src/uniqstr.c (uniqstr_print_processor): Likewise.
	* src/muscle_tab.c (muscles_m4_output):
	Use new functions instead of casting old functions unportably.
	* src/state.c (state_hash_new): Likewise.
	* src/symtab.c (symbols_new, symbols_do, symbols_check_defined,
	symbols_token_translations_init):
	Likewise.
	* src/uniqstr.c (uniqstrs_new, hash_initialize, uniqstrs_do): Likewise.

	* src/output.c (GENERATE_MUSCLE_INSERT_TABLE): Use long local
	var instead of casting to long, to avoid casts.
	(prepare_states): Use MALLOC rather than alloca, so that we don't
	have to worry about alloca.
	* src/state.c (state_hash_lookup): Likewise.

	* src/scan-gram.l (<SC_ESCAPED_CHARACTER>"'"): Use unsigned char
	local var instead of casting to unsigned char, to avoid casts.

	* src/state.c (TRANSITIONS_ALLOC, ERRS_ALLOC, REDUCTIONS_ALLOC,
	STATE_ALLOC): Remove.
	(transitions_new, errs_new, reductions_new, state_new): Use malloc
	rather than calloc, and use offsetof to avoid allocating slightly
	too much storage.
	(state_new): Initialize all members.

	* src/state.c (state_hash): Use unsigned accumulator, not signed.

	* src/symtab.c (symbol_free): Remove; unused.
	(symbol_get): Remove cast in lhs of assignment.
	(symbols_do): Now static.  Accept generic arguments, not
	hashing-related ones.

	* src/symtab.h: (NUMBER_UNDEFINED): Remove unnecessary cast.
	(symbol_processor): Remove.
	(symbols_do): Remove decl; now static.

	* src/system.h (alloca): Remove; decl no longer needed.
	(<stddef.h>): Include, for offsetof.
	(<inttypes.>, <stdint.h>): Include if available.
	(uintptr_t): New type, if system lacks it.
	(CALLOC, MALLOC, REALLOC): New macros.
	All uses of XCALLOC, XMALLOC, and XREALLOC changed to use these
	new macros.

	* src/tables.c (table_size): Now int, to pacify GCC.
	(table_grow, table_ninf_remap): Use signed table size.
	(save_row): Don't bother initializing locals when not needed.
	(default_goto, goto_actions, pack_vector): Remove unnecessary casts.
	* src/uniqstr.c (hash_compare_uniqstr):  Likewise.

	* src/vcg.h: Correct misspellings.

	* src/vcg_defaults.h (G_CMAX): Now INT_MAX.


	* src/getargs.c (getargs): Don't assume EOF == -1.

2002-12-09  Paul Eggert  <eggert@twinsun.com>

	Change identifier spellings to avoid collisions with names
	that are reserved by POSIX.

	Don't use names ending in _t, since POSIX reserves them.
	For consistency, remove _e and _s endings -- they're weren't
	needed to remove ambiguity.  All uses changed.
	* src/uniqstr.h (uniqstr): Renamed from uniqstr_t, which in
	turn was just renamed from struniq_t.
	* src/uniqstr.c (uniqstr_processor): Renamed from struniq_processor,
	which in turn was just renamed from struniq_processor_t.
	(hash_compare_uniqstr): Renamed from hash_compare_struniq, which
	in turn was renamed from hash_compare_struniq_t.
	* src/LR0.c (struct state_list): Renamed from struct state_list_s.
	(state_list): Renamed from state_list_t.
	* src/assoc.h (assoc): Renamed from assoc_t.
	* src/conflicts.c (enum conflict_resolution): Renamed from
	enum conflict_resolution_e.
	* src/derives.c (struct rule_list): Renamed from struct rule_list_s.
	(rule_list): Renamed from rule_list_t.
	* src/getargs.h (enum trace): Renamed from enum trace_e.
	(enum report): Renamed from enum report_e.
	* src/gram.h (item_number): Renamed from item_number_t.
	(rule_number): Renamed from rule_number_t.
	(struct rule_s): Remove the "rule_s" part; not used.
	(rule): Renamed from rule_t.
	(rule_filter): Renamed from rule_filter_t.
	* src/lalr.c (struct goto_list): Renamed from struct goto_list_s.
	(goto_list): Renamed from goto_list_t.
	* src/lalr.h (goto_number): Renamed from goto_number_t.
	* src/location.h (location): Renamed from location_t.
	* src/muscle_tab.c (muscle_entry): Renamed from muscle_entry_t,
	and moved here from:
	* src/muscle_tab.h (muscle_entry_t): here.
	* src/nullable.c (struct rule_list): Renamed from struct rule_list_s.
	(rule_list): Renamed from rule_list_t.
	* src/print_graph.c (static_graph): Renamed from graph.
	* src/reader.h (braced_code): Renamed from braced_code_t.
	Remove brace_code_e tag.
	* src/relation.h (relation_node): Renamed from relation_node_t.
	(relation_nodes): Renamed from relation_nodes_t.
	(relation): Renamed from relation_t.
	* src/state.h (state_number): Renamed from state_number_t.
	(struct state): Renamed from struct state_s.
	(state): Renamed from state_t.
	(transitions): Renamed from transitions_t.  Unused (and
	misspelled) transtion_s tag removed.
	(errs): Renamed from errs_t.  Unused errs_s tag removed.
	(reductions): Renamed from reductions_t.  Unused tag
	reductions_s removed.
	* src/symlist.h (symbol_list): Renamed from symbol_list_t.
	(struct symbol_list): Renamed from struct symbol_list_s.
	* src/symtab.h (symbol_number): Renamed from symbol_number_t.
	(struct symbol): Renamed from struct symbol_s.
	(symbol): Renamed from symbol_t.
	* src/tables.c (vector_number): Renamed from vector_number_t.
	(action_number): Renamed from action_t.
	* src/tables.h (base_number): Renamed from base_t.
	* src/vcg.h (enum color): Renamed from enum color_e.
	(enum textmode): Renamed from enum textmode_e.
	(enum shape): Renamed from enum shape_e.
	(struct colorentry): Renamed from struct colorentry_s.
	(struct classname): Renamed from struct classname_s.
	(struct infoname): Renamed from struct infoname_s.
	(enum layoutalgorithm): Renamed from enum layoutalgorithm_e.
	(enum decision): Renamed from enum decision_e.
	(enum orientation): Renamed from enum orientation_e.
	(enum alignment): Renamed from enum alignment_e.
	(enum arrow_mode): Renamed from enum arrow_mode_e.
	(enum crossing_type): Renamed from enum crossing_type_e.
	(enum view): Renamed from enum view_e.
	(struct node): Renamed from struct node_s.
	(node): Renamed from node_t.
	(enum linestyle): Renamed from enum linestyle_e.
	(enum arrowstyle): Renamed from enum arrowstyle_e.
	(struct edge): Renamed from struct edge.
	(edge): Renamed from edge_t.
	(struct graph): Renamed from struct graph_s.
	(graph): Renamed from graph_t.
	* tests/calc.at (_AT_DATA_CALC_Y, Simple LALR Calculator):
	Rename value_t -> value.
	* tests/input.at (Torturing the Scanner): Rename value_t -> value,
	value_t_as_yystype -> value_as_yystype.

	Don't include <errno.h> in the mainstream code, since it
	reserves E[A-Z0-9]* and we want to use symbols like 'EQUALS'.
	* lib/get-errno.c, lib/get-errno.h: New files.
	* lib/Makefile.am (libbison_a_SOURCES): Add get-errno.h,
	get-errno.c.
	* src/files.c (xfopen, xfclose): Use get_errno instead of errno.
	* src/output.c (output_skeleton): Likewise.
	* src/scan-gram.l (<INITIAL>{int}): Use set_errno and get_errno
	instead of errno.
	(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>\\x[0-9abcdefABCDEF]+):
	Likewise.
	(handle_action_dollar, handle_action_at): Likewise.
	* src/system.h: Do not include <errno.h>.
	(TAB_EXT): Renamed from EXT_TAB.
	(OUTPUT_EXT): Renamed from EXT_OUTPUT.

	Avoid str[a-z]*, since <string.h> reserves that name space.
	Change all instances of "struniq" in names to "uniqstr", and
	likewise for "STRUNIQ" and "UNIQSTR".
	* src/uniqstr.c: Renamed from src/struniq.c.
	* src/uniqstr.h: Renamed from src/struniq.h.
	* src/Makefile.am (bison_SOURCES): Adjust to these renamings.
	* src/files.c (strsuffix): Remove; unused.
	(concat2): Renamed from stringappend.  Now static.
	* src/files.h (strsuffix, stringappend): Remove; unused.
	* src/parse-gram.y (<chars>): Renamed from <string>.
	(<uniqstr>): Renamed from <struniq>.
	* src/scan-gram.l (obstack_for_string): Renamed from string_obstack.
	* src/vcg.h (struct node_s.expand): Renamed from struct node_s.stretch.
	(struct graph_s.expand): Renamed from struct graph_s.stretch.
	* src/vcg_defaults.h (G_EXPAND): Renamed from G_STRETCH.
	(G_LONG_STRAIGHT_PHASE): Renamed from G_STRAIGHT_PHASE.
	(N_EXPAND): Renamed from N_STRETCH.

	Avoid *_MAX and *_MIN, since <limits.h> reserves that name space.
	* data/yacc.c (YYSTACK_GAP_MAXIMUM): Renamed from YYSTACK_GAP_MAX.
	* src/gram.h (ITEM_NUMBER_MAX, ITEM_NUMBER_MIN, RULE_NUMBER_MAX):
	Remove; unused.
	* src/lalr.h (GOTO_NUMBER_MAXIMUM): Renamed from GOTO_NUMBER_MAX.
	* src/state.h (STATE_NUMBER_MAXIMUM): Renamed from STATE_NUMBER_MAX.
	* src/symtab.h (SYMBOL_NUMBER_MAXIMUM): Renamed from SYMBOL_NUMBER_MAX.
	* src/tables.c (VECTOR_NUMBER_MAX, VECTOR_NUMBER_MIN): Remove; unused.
	(BASE_MAXIMUM): Renamed from BASE_MAX.
	(BASE_MINIMUM): Renamed from BASE_MIN.
	(ACTION_MAX): Remove; unused.
	(ACTION_NUMBER_MINIMUM): Renamed from ACTION_MIN.
	Unnecessary casts removed from above defines.


	Fix misspelling in names.
	* src/vcg.h (enum_alignment_e): Renamed from enum_alignement_e.
	* src/vcg_defaults.h (G_NODE_ALIGNMENT): Renamed from
	G_NODE_ALIGNEMENT.


	* lib/timevar.c (timevar_report): Renamed from time_report,
	for consistency with other names.
	* lib/timevar.h (timevar_report): New decl.
	* src/system.h (time_report): Remove; decl is now in lib/timevar.h.


	Sort include-file uses.

	Reorder all include files under src to be in the order "system.h".
	then the ../lib include files in angle brackets (alphabetized),
	then the . include files in double-quotes (alphabetized).  Fix
	dependency breakages encountered in this process, as follows:
	* src/closure.h, src/derives.h, src/state.h: Include "gram.h".
	* src/complain.c: Don't include stdlib.h, string.h _LIBC stuff.
	* src/state.h: Include "symtab.h".

2002-12-08  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c, data/lalr1.cc, data/yacc.c: Do not use __file__,
	since this causes problems when __file__ contains character
	sequences like "@" that are treated specially by src/scan-skel.l.
	Instead, just use the file's basename.  This fixes the bug
	reported by Martin Mokrejs in
	<http://lists.gnu.org/archive/html/bug-bison/2002-12/msg00007.html>.

2002-12-06  Paul Eggert  <eggert@twinsun.com>

	Add support for rules that do not have trailing semicolons, as
	POSIX requires.  Improve the quality of locations in Bison
	diagnostics.

	* src/location.c: Include <quotearg.h>.
	(empty_location): Now const.
	(location_print): New function.  Follow the recommendation of the
	GNU Coding Standards for locations that span file boundaries.
	* src/location.h: Do not include <quotearg.h>; no longer needed.
	(boundary): New type.
	(location_t): Use it.  This allows locations to span file boundaries.
	All member uses changed: file -> start.file or end.file (as needed),
	first_line -> start.line, first_column -> start.column,
	last_line -> end.line, last_column -> end.column.
	(equal_boundaries): New function.
	(LOCATION_RESET, LOCATION_STEP): Remove.
	(LOCATION_PRINT): Remove.  All callers changed to use location_print.
	(empty_location): Now const.
	(location_print): New decl.
	* src/parse-gram.y (lloc_default): New function, which handles
	empty locations more accurately.
	(YYLLOC_DEFAULT): Use it.
	(%token COLON): Remove.
	(%token ID_COLON): New token.
	(rules): Use it.
	(declarations, rules): Remove trailing semicolon.
	(declaration, rules_or_grammar_declaration):
	Allow empty (";") declaration.
	(symbol_def): Remove empty actions; no longer needed.
	(rules_or_grammar_declaration): Remove trailing semicolon.
	(semi_colon.opt): Remove.
	* src/reader.h: Include location.h.
	(scanner_cursor): New decl.
	* src/reduce.c (nonterminals_reduce): Use warn_at rather than
	rolling our own.
	* src/scan-gram.l (YY_USER_INIT): Initialize scanner_cursor instead
	of *loc.
	(STEP): Remove.  No longer needed, now that adjust_location does
	the work.  All uses removed.
	(scanner_cursor): New var.
	(adjust_location): Renamed from extend_location.  It now sets
	*loc and adjusts the scanner cursor.  All uses changed.
	Don't bother testing for CR.
	(handle_syncline): Remove location arg; now updates scanner cursor.
	All callers changed.
	(unexpected_end_of_file): Now accepts start boundary of token or
	comment, not location.  All callers changed.  Update scanner cursor,
	not the location.
	(SC_AFTER_IDENTIFIER): New state.
	(context_state): Renamed from c_context.  All uses changed.
	(id_loc, code_start, token_start): New local vars.
	(<INITIAL,SC_AFTER_IDENTIFIER>): New initial context.  Move all
	processing of Yacc white space and equivalents here.
	(<INITIAL>{id}): Save id_loc.  Begin state SC_AFTER_IDENTIFIER
	instead of returning ID immediately, since we need to search for
	a subsequent colon.
	(<INITIAL>"'", "\""): Save token_start.
	(<INITIAL>"%{", "{", "%%"): Save code_start.
	(<SC_AFTER_IDENTIFIER>): New state, looking for a colon.
	(<SC_YACC_COMMENT>, <SC_COMMENT>, <SC_LINE_COMMENT>):
	BEGIN context_state at end, not INITIAL.
	(<SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'",
	<SC_BRACED_CODE>"}", <SC_PROLOGUE>"%}", <SC_EPILOGUE><<EOF>>):
	Return correct token start.
	(<SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>): Save start boundary when
	the start of a character, string or multiline comment is found.
	* tests/conflicts.at (S/R in initial, Defaulted Conflicted
	Reduction): Adjust reported locations to match the more-precise
	results now expected.
	* tests/input.at (Invalid $n, Invalid @n, Type Clashes): Likewise.
	* tests/reduce.at (Useless Rules, Reduced Automaton,
	Underivable Rules): Likewise.
	* tests/regression.at (Invalid inputs): No longer `expecting ";"
	or "|"' now that so many other tokens are allowed by the new grammar.

	* src/complain.h (current_file): Remove duplicate decl;
	current_file is now owned by files.h.
	* src/complain.c, src/scan-gram.l: Include files.h.

2002-12-06  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yy_reduce_print): Don't assume that yyrline[yyrule]
	promotes to int; it might be unsigned int.
	* data/yacc.c (yy_reduce_print): Likewise.

	* doc/bison.texinfo (Table of Symbols): YYERROR_VERBOSE should
	be #defined in the prologue, not in the Bison declarations.
	This fixes Debian Bug 102878, reported by Shaul Karl.

2002-12-02  Paul Eggert  <eggert@twinsun.com>

	* configure.ac (AC_REPLACE_FUNCS): Add strtoul.
	* lib/strtoul.c: New file, from gnulib.
	This fixes a porting bug reported by Peter Klein in
	<http://lists.gnu.org/archive/html/bug-bison/2002-12/msg00000.html>.

2002-11-30  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (no_cr_read, extend_location): Move to epilogue,
	and put only a forward declaration in the prologue.  This is for
	consistency with the other scanner helper functions.

	Type clashes now generate warnings, not errors, since it
	appears that POSIX may allow some grammars with type clashes.
	* src/reader.c (grammar_current_rule_check): Warn about
	type clashes instead of complaining.
	* tests/input.at (Type Clashes): Expect warnings, not complaints.

	Add Yacc library, since POSIX requires it.
	* doc/bison.texinfo (Yacc Library): New node.  Regenerate top menu.
	* lib/Makefile.am (lib_LIBRARIES, liby_a_SOURCES): New macros.
	* lib/main.c, lib/yyerror.c: New files.

	gram_error can be static; it need not be extern.
	* src/reader.h (gram_error): Remove decl.
	* src/parse-gram.y (gram_error): Now static.  Add static decl.
	(print_token_value): Omit parameter names from forward decl,
	for consistency.

2002-11-29  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo: Emphasize that yylex and yyerror must
	be declared before being used.  E.g., one should typically
	declare them in the prologue.  Use GNU coding style in examples.
	Put "const" consistently after the type it modifies.  Mention
	that C99 supports "inline".  Mention that yyerror traditionally
	returns "int".

	%parse-param and %lex-param now take just one argument, the
	declaration; the argument name is deduced from the declaration.

	* doc/bison.texinfo (Parser Function, Pure Calling, Error
	Reporting, Table of Symbols): Document this.
	* src/parse-gram.y (add_param): New function.
	(COMMA): Remove.
	(declaration): Implement new rule for %parse-param and %lex-param.
	* src/scan-gram.l: "," now elicits a warning, rather than being
	a token; this is more compatible with byacc.
	* tests/calc.at (Simple LALR Calculator): Adopt new convention.

2002-11-27  Paul Eggert  <eggert@twinsun.com>

	Rename identifiers to avoid real and potential collisions.

	* data/c.m4 (b4_yysymprint_generate): yyout -> yyoutput,
	to avoid collision with lex macro described by Bruce Lilly in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00114.html>.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise.
	* doc/bison.texinfo (Prologue, Tracing): yyprint -> print_token_value.
	* src/parse-gram.y (print_token_value): Renamed from yyprint.
	All uses changed.
	(YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove.  All uses changed.
	The name "yycontrol" violates the name space rules, and this stuff
	wasn't being used anyway.
	(input): Remove action; this stuff wasn't being used.
	(gram_error): Rename local variable yylloc -> loc.
	* src/reader.h (struct gram_control_s, gram_control_t): Remove.
	(YY_DECL): Don't use "yy" at start of local variables.
	All uses changed, e.g., yylloc -> loc.
	* src/scan-gram.l (STEP): Renamed from YY_STEP.  All uses changed.
	(STRING_GROW): Renamed from YY_OBS_GROW.  All uses changed.
	(STRING_FINISH): Renamed from YY_OBS_FINISH.  All uses changed.
	(STRING_FREE): Renamed from YY_OBS_FREE.  All uses changed.

	* src/parse-gram.y (gram_error): loc is now const *.
	* src/reader.h (gram_error): Likewise.

2002-11-24  Paul Eggert  <eggert@twinsun.com>

	Version 1.75c.

	* tests/actions.at (Actions after errors): Use an output format
	more similar to that of the Printers and Destructors test.
	Test the position of the ';' token too.
	(Printers and Destructors): Likewise.
	(Printers and Destructors: %glr-parser): Remove for now, to avoid
	unnecessarily alarming people when the test fails.

	* data/yacc.c (yyerrlab1): Move this label down, so that the
	parser does not discard the lookahead token if the user code
	invokes YYERROR.  This change is required for POSIX conformance.

	* lib/error.c: Sync with gnulib.

2002-11-22  Paul Eggert  <eggert@twinsun.com>

	* lib/quotearg.c, lib/quotearg.h: Sync with gnulib.
	* lib/mbswidth.c, lib/mbswidth.h: Likewise.
	* lib/xmalloc.c: Likewise.

2002-11-20  Paul Eggert  <eggert@twinsun.com>

	* lib/argmatch.c, lib/argmatch.h: Sync with gnulib.

2002-11-20  Paul Eggert  <eggert@twinsun.com>

	Avoid use of <assert.h>, as the GNU Coding Standards hint that one
	should use `if (! x) abort ();' rather than `assert (x);', and
	anyway it's one less thing to worry about configuring.

	* data/glr.c, lib/hash.c, src/system.h: Do not include <assert.h>.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise,
	and replace all instances of assert with abort.
	* tests/calc.at (_AT_DATA_CALC_Y): Likewise.
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise.

	* data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates,
	yyresolveAction, yyprocessOneStack): Use abort rather than assert.
	* lib/hash.c (hash_lookup, hash_get_first, hash_get_next,
	hash_find_entry, hash_rehash, hash_insert): Likewise.
	* src/conflicts.c (resolve_sr_conflict): Likewise.
	* src/lalr.c (set_goto_map, map_goto): Likewise.
	* src/nullable.c (nullable_compute): Likewise.
	* src/output.c (prepare_rules, token_definitions_output): Likewise.
	* src/reader.c (packgram, reader): Likewise.
	* src/state.c (state_new, state_free, state_transitions_set,
	state_reduction_find): Likewise.
	* src/symtab.c (symbol_user_token_number_set, symbol_make_alias,
	symbol_pack): Likewise.
	* src/tables.c (conflict_row, pack_vector): Likewise.
	* src/vcg.c (get_color_str, get_textmode_str, get_shape_str,
	get_layoutalgorithm_str, get_decision_str, get_orientation_str,
	get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str,
	get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise.

	* lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef.
	(ARGMATCH_CONSTRAINT): New macro.
	(ARGMATCH_ASSERT): Use it.

	* src/system.h (verify): New macro.
	* src/getargs.c (trace_argmatch, report_argmatch): Use verify
	rather than assert.
	* src/tables.c (tables_generate): Likewise.

	* src/struniq.c (struniq_assert): Now returns void, and aborts
	if the assertion is false.
	(struniq_assert_p): Remove.
	* src/struniq.h: Likewise.

2002-11-18  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yygetLRActions): Replace `yyindex' with
	`yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch.
	This fixes the regression with Sun ONE Studio 7 cc that I reported in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00077.html>.

2002-11-18  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a
	space.
	From Tim Van Holder.

2002-11-17  Paul Eggert  <eggert@twinsun.com>

	Pacify Sun ONE Studio 7 lint.  Also, rename "ParseError"
	to "SyntaxError" for consistency with my 2002-11-15 change.

	* data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do
	not define to {}, since this breaks the common use of `YYDPRINTF
	((...));' if a single statement is desired (e.g. before `else').
	Work around GCC warnings by surrounding corresponding calls with
	{} if needed.
	(yyhasResolvedValue): Remove unused function.
	(yymergeOptionSets, yyresolvStack): Use `continue;' for empty
	loop body.
	(yyreportSyntaxError): Renamed from yyreportParseError.
	(yyrecoverSyntaxError): Renamed from yyrecoverParseError.
	All uses changed.
	* tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of
	extern when possible.  Remove unused initializations.

2002-11-16  Akim Demaille  <akim@epita.fr>

	Augment the similarity between GLR and LALR traces.

	* data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print)
	(YY_REDUCE_PRINT): New.
	(yyparse): Use them.
	* data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for
	YYDPRINT here.
	(yyglrReduce, yyrecoverParseError, yyparse): Don't report the
	state reached after the reduction/recovery, since...
	(yyparse, yyprocessOneStack): Report the state we are entering in.

2002-11-16  Akim Demaille  <akim@epita.fr>

	* src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
	Add support for --trace=skeleton.
	* src/scan-skel.l: %option debug.
	Scan strings of non-@ or \n instead of character by character.
	(scan_skel): Handle trace_skeleton.
	(QPUTS): New.
	(@output_parser_name@, @output_header_name@): ``Restore'' their
	support (used to be M4 macros).
	* data/yacc.c: Quote larger chunks, a la glr.c.
	* data/lalr1.cc: Likewise.
	The header guards are no longer available, so use some other
	string than `YYLSP_NEEDED'.

2002-11-16  Akim Demaille  <akim@epita.fr>

	Make the ``Printers and Destructors'' test more verbose, taking
	`yacc.c''s behavior as (possibly wrong) reference.

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf
	instead of fprint on stdout.
	Set and report the last_line of the symbols.
	Consistently display values and locations.

2002-11-16  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c: Avoid over-quoting of __line__ and __file__.

2002-11-15  Paul Eggert  <eggert@twinsun.com>

	* tests/actions.at (Actions after errors): New test case.

	* data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo,
	src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h,
	tests/action.at, tests/calc.at, tests/conflicts.at,
	tests/cxx-type.at, tests/regression.at:
	"parse error" -> "syntax error" for POSIX compatibility.
	"parsing stack overflow..." -> "parser stack overflow" so
	that code matches Bison documentation.

2002-11-15  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (declaration): Have %parse-param and %lex-param
	take two BRACED_CODE, not two string_content.
	Free the scanner's obstack when we are done.
	(code_content): New.
	* tests/calc.at: Adjust.
	* doc/bison.texinfo: Adjust.
	Also, make sure to include the `,' for these declarations.

2002-11-15  Tim Van Holder  <tim.van.holder@pandora.be>

	* m4/prereq.m4: Removed the commented jm_PREREQ_HASH
	definition; avoids potential autoreconf problems.

2002-11-15  Akim Demaille  <akim@epita.fr>

	Always check the value returned by yyparse.

	* tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value
	returned by yyparse.
	(_AT_CHECK_CALC_ERROR): Take the expected exit value as argument.
	Adjust calls.
	* tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value
	returned by yyparse.

2002-11-14  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c (yyFail): Always set yyerrflag.  Corrects regression
	on input.at test.

2002-11-14  Paul Eggert  <eggert@twinsun.com>

	* src/output.c (output_skeleton): Call xfopen instead of
	duplicating xfopen's body.

	Fix bugs reported by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00078.html>.

	* tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that
	"$CC -E foo.h" is allowed, as this doesn't work with the Portland
	Group compiler.  Instead, use "$CC -E bar.c".  Include the .h
	file twice in the grammar, as an extra check.

	* tests/input.at (Torturing the Scanner): Surround the
	backslash-newline tests with "#if 0", to make it less likely that
	we'll run into compiler bugs.  Bring back solitary \ inside
	comment, but add a closing comment to work around HP C bug.  Don't
	test backslash-newline in C character constant.

2002-11-14  Akim Demaille  <akim@epita.fr>

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit
	status of the compiler.
	Calling `exit 1' is no longer needed.
	Reported by Nelson H. F. Beebe.

2002-11-14  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (CPPFLAGS): We have config.h.
	* tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR):
	New.
	* tests/actions.at, tests/calc.at, tests/conflicts.at,
	* tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at,
	* tests/regression.at, tests/torture.at: Use them for all the
	grammars that are to be compiled.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as...
	* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this.
	* doc/bison.texinfo (GLR Parsers): Document `inline'.

2002-11-14  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Various formatting changes (alignments in
	samples, additional @group/@end group, GCS in samples.
	Use @deffn instead of simple @table to define the directives,
	macros, variables etc.

2002-11-13  Paul Eggert  <eggert@twinsun.com>

	Fix some bugs reported by Albert Chin-A-Young in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00066.html>.

	* tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c
	-o c"; the HP C compiler chatters during compilation.
	Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c".
	* tests/headers.at (export YYLTYPE): Likewise.

	* tests/input.at (Torturing the Scanner): Remove lines containing
	solitary backslashes, as they tickle a bug in the HP C compiler.

	* tests/glr-regr1.at (Badly Collapsed GLR States): Avoid //
	comments, since they're not portable.  Use GNU coding style.

2002-11-13  Akim Demaille  <akim@epita.fr>

	* data/yacc.c: Leave bigger chunks of quoted text.
	(YYDSYMPRINTF): New.
	Use it to report symbol activities.
	* data/glr.c (YYDSYMPRINTF): New.
	Use it.

2002-11-12  Paul Eggert  <eggert@twinsun.com>

	Version 1.75b.

	* data/glr.c (yydoAction): Return YYRESULTTAG, not int.
	(yyglrReduce): Return yyok, not 0.
	This should avoid the enumerated-type warnings reported
	by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00057.html>.

	* lib/bbitset.h (BITSET_INLINE): Remove.
	* lib/bitset.h [! BITSET_INLINE]: Remove.
	(bitset_set, bitset_reset, bitset_test): Rename local vars
	to avoid shadowing warnings by GCC.

	* data/glr.c (inline): Remove #define.  It's the user's
	responsibility to #define it away, just like 'const'.
	This fixes one of the bugs reported by Nelson H. F. Beebe in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00058.html>.

	* Makefile.maint (po-check): Scan .l and .y files instead of the
	.c and the .h files that they generate.  This fixes the bug
	reported by Tim Van Holder in:
	<http://lists.gnu.org/archive/html/bison-patches/2002-11/msg00062.html>
	Look for N_ as well as for _.  Try to avoid matching #define for
	N_ and _.
	* po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c,
	src/system.h.  Add src/parse-gram.y, src/scan-gram.l.
	* src/scan-gram.l: Revamp regular expressions so that " and '
	do not confuse xgettext.

	* src/struniq.h (struniq_new): Do not declare the return type
	to be 'const'; this violates the C standard.
	* src/struniq.c (struniq_new): Likewise.

2002-11-12  Albert Chin-A-Young <china@thewrittenword.com>

	* src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the
	duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq
	linker.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Sync with Autoconf:
	(local_updates): New.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* po/POTFILES.in (src/lalr.c, src/state.c): Remove

2002-11-12  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
	locations.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
	not yyvalue.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
	Use it to test the GLR parser.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
	defines it.
	* data/glr.c (yystos): New.
	(b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
	(YYDSYMPRINT): New.
	(yyval): Don't define it, it is handled via M4.
	(yyrecoverParseError): Free verbosely the discarded symbols.
	* data/yacc.c (yysymprint): Remove, rather...
	(b4_yysymprint_generate): invoke.
	* data/c.m4 (b4_yysymprint_generate): New.
	Accept pointers as arguments, as opposed to the version from
	yacc.c.
	(b4_yydestruct_generate): Likewise.
	* tests/cations.at (Printers and Destructors): Use Bison directives
	instead of CPP macros.
	Don't rely on internal details.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
	* data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
	Don't work on yychar (i.e., do set it to YYEMPTY, don't match
	it against YYEMPTY and so forth), work on yytoken (i.e., set
	it to YYEMPTY etc.).
	(yydestruct): Replace with a b4_yydestruct_generate invocation.
	(b4_symbol_actions): Remove.
	* data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
	for 0, end-of-input.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Destructor Decl): New.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/tables.c (tables_generate): Use free for pointers that
	cannot be NULL, not XFREE.
	(pack_vector): Use assert, not fatal, for bound violations.
	* src/state.c (state_new): Likewise.
	* src/reader.c (reader): Likewise.
	* src/lalr.c (set_goto_map): Likewise.
	* src/location.h (LOCATION_PRINT): If first_line is 0, just issue
	the file name.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l, src/reader.h (scanner_last_string_free):
	Restore.
	* src/scan-gram.l (last_string): Is global to the file, not to
	yylex.
	* src/parse-gram.y (input): Don't append the epilogue here,
	(epilogue.opt): do it here, and free the scanner's obstack.
	* src/reader.c (epilogue_set): Rename as...
	(epilogue_augment): this.
	* data/c.m4 (b4_epilogue): Defaults to empty.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (long_options): Remove duplicates.
	* src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
	Remove.
	* doc/bison.rnh: Remove.
	* doc/bison.texinfo (VMS Invocation): Remove.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/struniq.h, src/struniq.c (struniq_t): Is const.
	(STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.

	Use struniq for symbols.

	* src/symtab.h (symbol_t): The tag member is a struniq.
	(symbol_type_set): Adjust.
	* src/symtab.c (symbol_new): Takes a struniq.
	(symbol_free): Don't free the tag member.
	(hash_compare_symbol_t, hash_symbol_t): Rename as...
	(hash_compare_symbol, hash_symbol): these.
	Use the fact that tags as struniqs.
	(symbol_get): Use struniq_new.
	* src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
	Returns a strniq.
	* src/reader.h (merger_list, grammar_currentmerge_set): The name
	and type members are struniqs.
	* src/reader.c (get_merge_function)
	(grammar_current_rule_merge_set): Adjust.
	(TYPE, current_type): Are struniq.

	Use struniq for file names.

	* src/files.h, src/files.c (infile): Split into...
	(grammar_file, current_file): these.
	* src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
	* src/reduce.c (reduce_print): Likewise.
	* src/getargs.c (getargs): Likewise.
	* src/complain.h, src/complain.c: Likewise.
	* src/main.c (main): Call struniqs_new early enough to use it for
	file names.
	Don't free the input file name.

2002-11-12  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_free): Remove dead deactivated code:
	type_name are properly removed.
	Don't use XFREE to free items that cannot be NULL.
	* src/struniq.h, src/struniq.c: New.
	* src/main.c (main): Initialize/free struniqs.
	* src/parse-gram.y (%union): Add astruniq member.
	(yyprint): Adjust.
	* src/scan-gram.l (<{tag}>): Return a struniq.
	Free the obstack bit that used to store it.
	* src/symtab.h (symbol_t): The 'type_name' member is a struniq.

2002-11-11  Paul Eggert  <eggert@twinsun.com>

	Revamp to fix many (but not all) of the C- and M4-related quoting
	problems.  Among other things, this fixes the Bison bug reported
	by Jan Hubicka when processing the Bash grammar; see:
	<http://lists.gnu.org/archive/html/bison-patches/2002-11/msg00039.html>

	Use new @ escapes consistently.  Represent brackets with @{ and @}
	rather than @<:@ and @:>@, since this works a bit better with dumb
	editors like vi.  Represent @ with @@, since @ is now consistently
	an escape.  Use @oline@ and @ofile@ rather than __oline__ and
	__ofile__, to avoid unexpected expansions.  Similarly, use @output
	rather than #output.

	* data/c.m4 (b4_copyright): Omit file name from comment, since
	the file name could contain "*/".
	(b4_synclines_flag): Don't quote the 2nd argument; it should already
	be quoted.  All uses changed.

	* data/glr.c: Use new @ escapes consistently.
	(b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
	b4_output_header_suffix, b4_output_header_name, b4_header_guard):
	Remove, since they couldn't handle arbitrary characters in file
	names.
	* data/lalr1.cc: Likewise.
	* data/yacc.c: Likewise.

	* src/files.c (output_infix): Remove; all uses removed.
	* src/files.h: Likewise.

	* data/glr.c: Remove use of "#ifdef b4_header_guard", since it
	mishandled funny characters in file names, and anyway it isn't
	needed any more.
	* data/yacc.c: Likewise.
	* data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.

	* data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
	* data/yacc.c: Likewise.

	* src/muscle_tab.c: Include quotearg.h, since we need to quote C
	strings now.
	(muscle_init): Quote filename as a C string.
	* src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
	(MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
	* src/output.c (escaped_file_name_output): New function.
	(prepare_symbols): Quote tokens for M4.
	(prepare): Don't insert output_infix, output_prefix,
	output_parser_name, output_header_name; this is now down by scan-skel.
	Insert skeleton as a C string.

	* src/output.c (user_actions_output, symbol_destructors_output,
	symbol_printers_output): Quote filenames for C and M4.
	* src/reader.c (prologue_augment, epilogue_set): Likewise.

	* src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
	escapes other than \\ and \'; this simplifies the code.
	(<SC_STRING>): Likewise, for \\ and \".
	(<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
	SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
	Use new escapes @{ and @} for [ and ].

	* src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
	them with auto vars.
	Switch to new escape scheme, where @ is the escape character uniformly.
	Abort if a stray escape character is found.  Avoid unbounded input
	buffer when parsing non-escaped text.

	* tests/input.at (Torturing the Scanner): Add tests that @oline@,
	__oline__, #output, $@, and @{ do not have unintended meanings.

2002-11-09  Paul Eggert  <eggert@twinsun.com>

	Fix the test failure due to GCC warnings described in
	<http://lists.gnu.org/archive/html/bug-bison/2002-11/msg00000.html>.
	* data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which
	evaluate to 0 if it's impossible for NINF to be in the respective
	table.
	(yygetLRActions, yyrecoverParseError): Use them.

	* src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
	counted in the token inserted at end of file.  Now takes
	location_t *, not location_t, so that the location can be
	adjusted.  All uses changed.

	* tests/regression.at (Invalid inputs): Adjust wording in
	diagnostic to match the new behavior.

	* tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
	AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
	AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
	abort ();'.  This reduces the runtime of the "Many lookaheads"
	test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
	GCC 3.2.

2002-11-07  Paul Eggert  <eggert@twinsun.com>

	* src/parse-gram.y (CHARACTER): Remove unused token.
	All uses removed.

	* src/scan-gram.l: Remove stack option.  We no longer use the
	stack, since the stack was never deeper than 1; instead, use the
	new auto var c_context to record the stacked value.

	Remove nounput option.  At an unexpected end of file, we now unput
	the minimal input necessary to end cleanly; this simplifies the
	code.

	Avoid unbounded token sizes where this is easy.

	(unexpected_end_of_file): New function.
	Use it to systematize the error message on unexpected EOF.
	(last-string): Now auto, not static.
	(YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
	(scanner_last_string_free): Remove; not used.
	(percent_percent_count): Move decl to just before use.
	(SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
	not the (never otherwised-used) CHARACTER.

2002-11-07  Akim Demaille  <akim@epita.fr>

	Let yyerror always receive the msg as last argument, so that
	yyerror can be variadic.

	* data/yacc.c (b4_yyerror_args): New.
	Use it when calling yyerror.
	* data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
	Use it when calling yyerror.
	* doc/bison.texinfo (Error Reporting): Adjust.
	* tests/calc.at (_AT_DATA_CALC_Y): Adjust.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.

2002-11-06  Akim Demaille  <akim@epita.fr>

	#line should have quoted strings.
	Ideally, this should be done by m4_quotearg.

	* src/scan-skel.l: Include quotearg.h.
	Quote __ofile__.
	* src/output.c (symbol_printers_output)
	(symbol_destructors_output): Quote the file name.

2002-11-06  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid inputs): Adjust to the recent
	messages.

2002-11-06  Akim Demaille  <akim@epita.fr>

	Restore --no-lines.
	Reported by Jim Kent.

	* data/c.m4 (b4_syncline): New.
	* data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
	* src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
	* src/output.c (user_actions_output): Likewise.
	(prepare): Define 'b4_synclines_flag'.
	* src/muscle_tab.c (muscle_init): Don't define b4_linef.

2002-11-06  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): Free `infile'.
	* src/scan-gram.l (handle_syncline): New.
	Recognize `#line'.
	* src/output.c (user_actions_output, symbol_destructors_output)
	(symbol_printers_output): Use the location's file name, not
	infile.
	* src/reader.c (prologue_augment, epilogue_set): Likewise.

2002-11-05  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/tables.c (matching_state): Don't allow states to match if
	either has GLR conflict entries.

2002-11-05  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l: Use more accurate diagnostics, e.g.
	"integer out of range" rather than "invalid value".
	* tests/input.at (Invalid $n, Invalid @n): Change expected wording
	accordingly.

	Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
	Also, remove one static variable in the scanner.

	* src/scan-gram.l (braces_level): Now auto, not static.
	Initialize to zero if the compiler is being picky.
	(INITIAL): Clear braces_level instead of incrementing it.
	(SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
	as POSIX 1003.1-2001 requires.
	* src/system.h (IF_LINT): New macro, taken from coreutils.
	* configure.ac: Define "lint" if --enable-gcc-warnings.

2002-11-05  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: When it starts with `%', complain about the
	whole directive, not just that `invalid character: %'.

2002-11-04  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Update from Autoconf.
	(update, cvs-update, po-update, do-po-update): New.

2002-11-04  Akim Demaille  <akim@epita.fr>

	* tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
	and yyerror.
	Have yyerror `use' its arguments.
	* tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
	returns true when location & yacc & pure & parse-param.
	(_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.

2002-11-04  Akim Demaille  <akim@epita.fr>

	* src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
	clashes.
	* src/scan-gram.l: Use [\'] instead of ['] to pacify
	font-lock-mode.
	Use complain_at.
	Use quote, not quote_n since LOCATION_PRINT no longer uses the
	slot 0.

2002-11-03  Paul Eggert  <eggert@twinsun.com>

	* src/reader.c (get_merge_function, grammar_current_rule_check):
	Use consistent diagnostics for reporting type name clashes.
	Quote the types with <>, for consistency with Yacc.
	* tests/input.at (Type Clashes): Adjust to diagnostic changes.

2002-11-03  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
	New.
	* data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
	(b4_parse_param): Remove.
	Use b4_identification.
	Propagate b4_pure_args where needed to pass them to yyerror.
	* data/glr.m4 (b4_parse_param): Remove.
	(b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
	(b4_lpure_formals): New.
	Use b4_identification.
	(YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
	b4_user_formals and b4_user_args.
	(yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
	(yyreportAmbiguity): When using a pure parser, also need
	the location, and the parse-params.
	Adjust callers.
	(yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
	When using a pure parser, also need the parse-params.
	Adjust callers.
	* tests/calc.at: Test pure (%pure-parser) and absolutely pure
	(%pure-parser + %parse-param) LALR and GLR parsers.
	(AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
	AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
	AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
	(_AT_DATA_CALC_Y): Equip for purity of yyerror.
	(_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
	* doc/bison.texinfo: Untabify the whole file.
	(Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
	(Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
	(Error Reporting): Adjust to these new directives.
	Document %error-verbose, deprecate YYERROR_VERBOSE.

2002-11-03  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Change all the AT_CHECK_CALC_LALR and
	AT_CHECK_CALC_GLR invocations to use % directives, instead of
	command line options.
	* tests/cxx-type.at: Formatting changes.

2002-11-03  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l: Revamp to fix POSIX incompatibilities,
	to count columns correctly, and to check for invalid inputs.

	Use mbsnwidth to count columns correctly.  Account for tabs, too.
	Include mbswidth.h.
	(YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
	(extend_location): New function.
	(YY_LINES): Remove.

	Handle CRLF in C code rather than in Lex code.
	(YY_INPUT): New macro.
	(no_cr_read): New function.

	Scan UCNs, even though we don't fully handle them yet.
	(convert_ucn_to_byte): New function.

	Handle backslash-newline correctly in C code.
	(SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
	(eols, blanks): Remove.  YY_USER_ACTION now counts newlines etc.;
	all uses changed.
	(tag, splice): New EREs.  Do not allow NUL or newline in tags.
	Use {splice} wherever C allows backslash-newline.
	YY_STEP after space, newline, vertical-tab.
	("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).

	(letter, id): Don't assume ASCII; e.g., spell out a-z.

	({int}, handle_action_dollar, handle_action_at): Check for integer
	overflow.

	(YY_STEP): Omit trailing semicolon, so that it's more like C.

	(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
	as well as \000.  Check for UCHAR_MAX, not 255.
	Allow \x with an arbitrary positive number of digits, as in C.
	Check for overflow here.
	Allow \? and UCNs, for compatibility with C.

	(handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
	with quote slot used by complain_at.

	* tests/input.at: Add tests for backslash-newline, m4 quotes
	in symbols, long literals, and funny escapes in strings.

	* configure.ac (jm_PREREQ_MBSWIDTH): Add.
	* lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
	* lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
	* m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
	* m4/mbswidth.m4: New file, from GNU coreutils.

	* doc/bison.texinfo (Grammar Outline): Document // comments.
	(Symbols): Document that trigraphs have no special meaning in Bison,
	nor is backslash-newline allowed.
	(Actions): Document that trigraphs have no special meaning.

	* src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
	no longer used.

2002-11-02  Paul Eggert  <eggert@twinsun.com>

	* src/reader.c: Don't include quote.h; not needed.
	(get_merge_function): Reword warning to be consistent with
	type clash diagnostic in grammar_current_rule_check.

	* lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
	bug in trigraph handling.

	* src/output.c (prepare_symbols): When printing token names,
	escape "[" as "@<:@" and likewise for "]".

	* src/system.h (errno): Remove declaration, as we are now
	assuming C89 or better, and C89 guarantees errno.

2002-10-30  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
	Check for close failures.
	* src/files.h (xfclose): Return void, not int, since it always
	returned zero.
	* src/files.c (xfclose): Likewise.  Report I/O error if ferror
	indicates one.
	* src/output.c (output_skeleton): Use xfclose rather than fclose
	and ferror.  xfclose now checks ferror.

	* data/glr.c (YYLEFTMOST_STATE): Remove.
	(yyreportTree): Use a stack-based leftmost state.  This avoids
	our continuing battles with bogus warnings about initializers.

2002-10-30  Akim Demaille  <akim@epita.fr>

	* src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
	#if.

2002-10-29  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* tests/glr-regr1.at: New test for reported regressions.
	* tests/testsuite.at: Add glr-regr1.at test.
	* tests/Makefile.am: Add glr-regr1.at test.

2002-10-24  Paul Eggert  <eggert@twinsun.com>

	Version 1.75a.

	* tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
	* tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
	we use malloc.  Don't assume 'A' through 'Z' are contiguous.
	Don't assume strdup exists; POSIX says its an XSI extension.
	Check for buffer overflow on input.

2002-10-24  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): Don't disable M4sugar comments
	too soon: it results in comments being expanded.
	* data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the
	first output.

2002-10-24  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (m4_int_type): New.
	* data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed
	char' as only yacc.c wants K&R portability.
	* data/glr.c (yysigned_char): Remove.
	* data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name.
	Reported by Quoc Peyrot.

2002-10-23  Paul Eggert  <eggert@twinsun.com>

	* src/main.c (main): With --trace=time, report times even if a
	non-fatal error occurs.  Formerly, the times were reported in some
	such cases but not in others.
	* src/reader.c (reader): Just return if a complaint has been issued,
	instead of exiting, so that 'main' can report times.

2002-10-22  Akim Demaille  <akim@epita.fr>

	* src/system.h: Include sys/types.
	Reported by Bert Deknuydt.

2002-10-23  Paul Eggert  <eggert@twinsun.com>

	* configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX.
	Suggested by Art Haas.

2002-10-22  Paul Eggert  <eggert@twinsun.com>

	* src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit
	decl; not needed any more.
	* src/main.c (main): Use return to exit, undoing yesterday's change.
	The last OS that we could find where this wouldn't work is
	SunOS 3.5, and that's too old to worry about now.

	* data/glr.c (struct yyltype): Define members even when not
	doing locations.  This is more consistent with yacc.c, and it
	works around the following bug reports:
	http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00106.html
	http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00111.html

	* doc/bison.texinfo: Minor spelling and typographical fixes.  Use
	@acronym consistently.  Standardize on "Yacc" instead of "YACC",
	"Algol" instead of "ALGOL".  Give a bit more history about BNF.

2002-10-22  Akim Demaille  <akim@epita.fr>

	* data/README: New.

2002-10-21  Paul Eggert  <eggert@twinsun.com>

	Be consistent about 'bool'; the old code used an enum in one
	module and an int in another, and this violates the C standard.
	* m4/stdbool.m4: New file, from coreutils 4.5.3.
	* configure.ac (AC_HEADER_STDBOOL): Add.
	* m4/Makefile.am (EXTRA_DIST): Add stdbool.m4.
	* src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a)
	* src/symtab.c (hash_compare_symbol_t): Likewise.
	* src/system.h (bool, false, true): Use a definition consistent
	with ../lib/hash.c.  All uses changed.

	* src/complain.c (warning_issued): Renamed from warn_message_count,
	so that we needn't worry about integer overflow (!).
	Now of type bool.  All uses changed.
	(complaint_issued): Renamed from complain_message_count; likewise.

	* src/main.c (main): Use exit to exit with failure.

	* src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS
	rather than 1 and 0.
	* src/main.c (main): Likewise.
	* src/getargs.c (getargs): Likewise.
	* src/reader.c (reader): Likewise.

	* src/getarg.c (getargs): Remove duplicate code for
	"Try `bison --help'".

	* src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2.
	What was that "2" for?

	* src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)).
	* src/getargs.c (usage): Likewise.

	* src/getargs.c (getargs): When there are too few operands, report
	the last one.  When there are too many, report the first extra
	one.  This is how diffutils does it.

2002-10-20  Paul Eggert  <eggert@twinsun.com>

	Remove K&R vestiges.
	* configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove.
	* src/complain.c (VA_START): Remove.  Assume prototypes.
	(vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro.
	(private_strerror, warn_at, warn, complain_at, complain, fatal_at,
	fatal): Assume prototypes.
	* src/complain.h: Assume prototypes.
	* src/system.h (PARAMS): Remove.
	Include <limits.h> unconditionally, since it's guaranteeed even
	for a freestanding C89 compiler.
	(SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them.
	* src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_grow): Remove trailing debugging code.
	* data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New.
	(yyuserAction, yydoAction, yyglrReduce, yyresolveValue)
	(yyresolveStates, yyresolveAction, yyresolveStack)
	(yyprocessOneStack): Use them.
	(yy_reduce_print): New.
	* tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_c_ansi_args): Recognize functions with no
	arguments and output `void'.
	(b4_c_function): Rename as...
	(b4_c_function_def): this.
	(b4_c_function_decl, b4_c_ansi_function_def)
	(b4_c_ansi_function_decl): New.
	Change the interpretation of the arguments: before `int, foo', now
	`int foo, foo'.
	* data/yacc.c (yyparse): Prototype and define thanks to these.
	Adjust b4_c_function_def uses.
	* data/glr.c (yyparse): Likewise, but ANSI only.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare): Move the definition of `tokens_number',
	`nterms_number', `undef_token_number', `user_token_number_max'
	to...
	(prepare_tokens): Here.
	(prepare_tokens): Rename as...
	(prepare_symbols): this.
	(prepare): Move the definition of `rules_number' to...
	(prepare_rules): here.
	(prepare): Move the definition of `last', `final_state_number',
	`states_number' to...
	(prepare_states): here.
	* data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/tables.h, src/tables.c, src/output.c: Comment changes.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
	* data/c.m4: here.

2002-10-20  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare): Use MUSCLE_INSERT_STRING.
	* src/muscle_tab.c (muscle_pair_list_grow): Rename `val as
	`pair'.
	(muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth',
	`name' to...
	* data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type)
	(b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name):
	These.

2002-10-19  Paul Eggert  <eggert@twinsun.com>

	Do not create a temporary file, as that involves security and
	cleanup headaches.  Instead, use a pair of pipes.
	Derived from a suggestion by Florian Krohm.
	* lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files.
	* lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove.
	* configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove.
	(BISON_PREREQ_SUBPIPE): Add.
	* lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c.
	Add subpipe.h, subpipe.c.
	* m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4.  Add subpipe.m4.
	* po/POTFILES.in: Add lib/subpipe.c.
	* src/output.c: Include "subpipe.h".
	(m4_invoke): Remove decl.
	(scan_skel): New decl.
	(output_skeleton): Use pipe rather than temporary file for m4 input.
	Check that m4sugar.m4 is readable, to avoid deadlock.
	Check for pipe I/O error.
	* src/scan-skel.l (readpipe): Remove decl.
	(scan_skel): New function, to be used in place of m4_invoke.
	Read from stream rather than file.

	* lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
	float, as this generates a warning on Solaris 8 + GCC 3.2 with
	--enable-gcc-warnings.  Instead, divide into 1.0 rather than 1;
	this generates a more-accurate value anyway.

	* lib/timevar.c (timervar_accumulate): Rename locals to
	avoid confusion with similarly-named more-global.
	* src/muscle_tab.c (muscle_pair_list_grow): Likewise.

	* src/output.c (prepare): Use xstrdup to convert char const *
	to char *, to avoid GCC warning.

2002-10-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
	LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
	Use them to have `calc.y' ready for %pure-parser.
	* data/yacc.c (YYLEX): Pass a yylex return type to
	b4_c_function_call.

2002-10-19  Akim Demaille  <akim@epita.fr>

	Prototype support of %lex-param and %parse-param.

	* src/parse-gram.y: Add the definition of the %lex-param and
	%parse-param tokens, plus their rules.
	Drop the `_' version of %glr-parser.
	Add the "," token.
	* src/scan-gram.l (INITIAL): Scan them.
	* src/muscle_tab.c: Comment changes.
	(muscle_insert, muscle_find): Rename `pair' as `probe'.
	* src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
	(muscle_entry_s): The `value' member is no longer const.
	Adjust all dependencies.
	* src/muscle_tab.c (muscle_init): Adjust: use
	MUSCLE_INSERT_STRING.
	Initialize the obstack earlier.
	* src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
	(muscle_pair_list_grow): New.
	* data/c.m4 (b4_c_function_call, b4_c_args): New.
	* data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
	* tests/calc.at: Use %locations, not --locations.
	(AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.

2002-10-19  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (usage): Take status as argument and exit
	accordingly.
	Report the traditional `Try ... --help' message when status != 0.
	(usage, version): Don't take a FILE * as arg, it is pointless.
	(getargs): When there is an incorrect number of arguments, make it
	an error, and report it GNUlically thanks to `usage ()'.

2002-10-18  Paul Eggert  <eggert@twinsun.com>

	* data/glr.c (yyreportParseError): Don't assume that sprintf
	yields the length of the printed string, as this is not true
	on SunOS 4.1.4.  Reported by Peter Klein.

	* tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
	* tests/conflicts.at (%nonassoc and eof): Likewise.
	Fixes SunOS 4.1.4 test failure reported by Peter Klein.

2002-10-17  Akim Demaille  <akim@epita.fr>

	* src/getargs.h (trace_e): Add trace_scan, and trace_parse.
	* src/getargs.c (trace_types, trace_args): Adjust.
	* src/reader.c (grammar_current_rule_prec_set)
	(grammar_current_rule_dprec_set, grammar_current_rule_merge_set):
	Standardize error messages.
	And s/@prec/%prec/!
	(reader): Use trace_flag to enable scanner/parser debugging,
	instead of an adhoc scheme.
	* src/scan-gram.l: Remove trailing debugging code.

2002-10-16  Paul Eggert  <eggert@twinsun.com>

	* src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as
	MUSCLE_TAB_H.

	* NEWS: Officially drop support for building Bison with K&R C,
	since it didn't work anyway and it's not worth worrying about.
	* Makefile.maint (wget_files): Remove ansi2knr.c.
	(ansi2knr.c-url_prefix): Remove.
	* lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
	* lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
	* src/Makefile.am (AUTOMAKE_OPTIONS): Remove.

2002-10-15  Paul Eggert  <eggert@twinsun.com>

	Stop using the "enum_" trick for K&R-style function definitions;
	it confused me, and I was the author!  Instead, assume that people
	who want to use K&R C compilers (when using these modules in GCC,
	perhaps?) will run ansi2knr.

	* lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove.
	All uses of "enum_" changed to "enum ".
	* lib/ebitset.c (enum_ebitset_find_mode): Likewise.
	* lib/lbitset.c (enum_lbitset_find_mode): Likewise.

	* lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or,
	abitset_and_or_cmp, abitset_andn, abitset_andn_cmp,
	abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy,
	abitset_copy1, abitset_disjoint_p, abitset_empty_p,
	abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse,
	abitset_not, abitset_ones, abitset_or, abitset_or_and,
	abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set,
	abitset_size, abitset_small_list, abitset_subset_p, abitset_test,
	abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero):
	Use function prototypes; this removes the need for declaring
	static functions simply to provide their prototypes.
	* lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_,
	bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_,
	bitset_count_, bitset_create, bitset_dump, bitset_first,
	bitset_free, bitset_init, bitset_last, bitset_next,
	bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p,
	bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev,
	bitset_print, bitset_release_memory, bitset_toggle_,
	bitset_type_choose, bitset_type_get, bitset_type_name_get,
	debug_bitset): Likewise.
	* lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise.
	* lib/bitset_stats.c (bitset_log_histogram_print,
	bitset_percent_histogram_print, bitset_stats_and,
	bitset_stats_and_cmp, bitset_stats_and_or,
	bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp,
	bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy,
	bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p,
	bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable,
	bitset_stats_equal_p, bitset_stats_free, bitset_stats_init,
	bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not,
	bitset_stats_ones, bitset_stats_or, bitset_stats_or_and,
	bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print,
	bitset_stats_print_1, bitset_stats_read, bitset_stats_reset,
	bitset_stats_set, bitset_stats_size, bitset_stats_subset_p,
	bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get,
	bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp,
	bitset_stats_zero): Likewise.
	* lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
	bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
	bitsetv_dump, debug_bitsetv): Likewise.
	* lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn,
	ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_,
	ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add,
	ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find,
	ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove,
	ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p,
	ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list,
	ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp,
	ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset,
	ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test,
	ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero):
	Likewise.
	* lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp,
	lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy,
	lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc,
	lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free,
	lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p,
	lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init,
	lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones,
	lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune,
	lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size,
	lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor,
	lbitset_xor_cmp, lbitset_zero): Likewise.

2002-10-14  Akim Demaille  <akim@epita.fr>

	Version 1.75.

2002-10-14  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (maintainer-check-posix): New.

2002-10-14  Akim Demaille  <akim@epita.fr>

	* data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc
	member.

2002-10-14  Akim Demaille  <akim@epita.fr>

	* src/tables.c (table_ninf_remap): base -> tab.
	Reported by Matt Rosing.

2002-10-14  Paul Eggert  <eggert@twinsun.com>

	* tests/action.at, tests/calc.at, tests/conflicts.at,
	tests/cxx-type.at, tests/headers.at, tests/input.at,
	tests/regression.at, tests/synclines.at, tests/torture.at:
	Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
	so that the tests still work even if POSIXLY_CORRECT is set.
	* doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.

	* data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
	for portability to K&R hosts.  Fix typo: signed char is guaranteed
	only to 127, not to 128.
	* data/glr.c (yysigned_char): New type.
	* data/yacc.c (yysigned_char): Likewise.
	* tests/regression.at (Web2c Actions): signed char -> yysigned_char.

2002-10-13  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyparse): Rewrite to avoid "comparison is always
	true due to limited range of data type" warning from GCC.

	* data/c.m4 (b4_token_defines): Protect against double-inclusion
	by wrapping enum yytokentype's definition inside #ifndef
	YYTOKENTYPE.  This undoes a bug I introduced on 2002-10-12.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction):
	Un yy- yyrhs to avoid the name clash with the global YYRHS.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Update from Autoconf 2.54.
	* m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_state): Separate the list of solved conflicts
	from the other items.
	* tests/conflicts.at (Resolved SR Conflicts): Adjust.

2002-10-13  Akim Demaille  <akim@epita.fr>

	Let nondeterministic skeletons be usable with deterministic
	tables.

	With the patch, GAWK compiled by GCC without -O2 passes its test
	suite using a GLR parser driven by LALR tables.  It fails with -O2
	because `struct stat' gives two different answers on my machine:
	88 (definition of an auto var) and later 96 (memset on this var).
	Hence the stack is badly corrumpted.  The headers inclusion is to
	blame: if I move the awk.h inclusion before GLR's system header
	inclusion, the two struct stat have the same size.

	* src/tables.c (pack_table): Always create conflict_table.
	(token_actions): Always create conflict_list.
	* data/glr.c (YYFLAG): Remove, unused.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
	(O0FLAGS): New.
	(VALGRIND, GXX): New.
	* tests/atlocal.in (CFLAGS): Use O0FLAGS.
	* tests/bison.in: Run $PREBISON a pre-command.
	* tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
	(maintainer-check-g++): New.
	* Makefile.am (maintainer-check): New.

2002-10-13  Akim Demaille  <akim@epita.fr>

	* data/glr.c: Formatting changes.
	Tweak some trace messages to match yacc.c's.

2002-10-13  Akim Demaille  <akim@epita.fr>

	GLR parsers sometimes raise parse errors instead of performing the
	default reduction.
	Reported by Charles-Henry de Boysson.

	* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
	check the length of the traces when %glr.
	(_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
	GLR's traces.
	(AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
	Test GLR parsers.
	* data/glr.c (YYLEFTMOST_STATE): Fix its value.
	(yyltype): Remove the yy prefix from the member names.
	(yytable): Complete its comment.
	(yygetLRActions): Map error action number from YYTABLE from
	YYTABLE_NINF to 0.
	(yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
	(which was a bug: it should have been YYTABEL_NINF, and yet it was
	not satisfying as we could compare an YYACTION computed from
	YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
	only value for error actions.
	(yyreportParseError): In verbose parse error messages, don't issue
	`error' in the list of expected tokens.
	* data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
	next action to perform to match glr.c's decoding.
	(yytable): Complete its comment.

2002-10-13  Paul Eggert  <eggert@twinsun.com>

	Fix problem reported by Henrik Grubbstroem in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00098.html>:
	"nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
	because the Bison parser reads the second action before reducing
	the first one.
	* src/scan-gram.l (rule_length): New static var.
	Use it to keep track of the rule length in the scanner, since
	we can't expect the parser to be in lock-step sync with the scanner.
	(handle_action_dollar, handle_action_at): Use this var.
	* tests/actions.at (Exotic Dollars): Test for the problem.

2002-10-12  Paul Eggert  <eggert@twinsun.com>

	* lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
	* m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for <sys/time.h>.
	Include <sys/time.h> when checking for clock_t and struct tms.
	Use same include order as source.
	This is for the SunOS 4.1.4 porting bug reported by Peter Klein in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00016.html>.

	* lib/timevar.c: Update copyright date and clarify comments.
	(get_time) [IN_GCC]: Keep the GCC version for reference.

	* lib/timevar.c, lib/timevar.h, lib/timevar.def: Import
	GCC version as of today, then merge Bison's changes.
	Change "GCC" to "Bison" in copyright notice.  timevar.def's
	author is Akim, so change that too.

	* src/reader.c (grammar_current_rule_check):
	Don't worry about the default action if $$ is untyped.
	Prevents bogus warnings reported by Jim Gifford in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00015.html>.

	* data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE.
	* data/glr.c, data/lalr1.cc, data/yacc.c:
	Output token definitions before the first part of user declarations.
	Fixes compatibility problem reported by Jim Gifford for kbd in
	<http://lists.gnu.org/archive/html/bug-bison/2002-10/msg00014.html>.

2002-10-11  Paul Eggert  <eggert@twinsun.com>

	* data/yacc.c (yyreport_parse_error): Remove, putting its body into...
	(yyparse): here.  This undoes some of the 2002-07-25 change.
	Compatibility problem reported by Ralf S. Engelschall with
	OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.

2002-10-11  Akim Demaille  <akim@epita.fr>

	* tests/regression.at Characters Escapes): New.
	* src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and
	characters.
	Reported by Jan Nieuwenhuizen.

2002-10-11  Akim Demaille  <akim@epita.fr>

	* po/id.po: New.

2002-10-10  Paul Eggert  <eggert@twinsun.com>

	Portability fixes for bitsets; this also avoids several GCC
	warnings.

	* lib/abitset.c: Include <stddef.h>, for offsetof.
	* lib/lbitset.c: Likewise.

	* lib/abitset.c (abitset_bytes): Return a size that is aligned
	properly for vectors of objects.  Do not assume that adding a
	header size to a multiple of a word size yields a value that is
	properly aligned for the whole union.
	* lib/bitsetv.c (bitsetv_alloc): Likewise.

	* lib/bitset_stats.c (bitset_stats_bytes): Adjust to new,
	unique names for structures.
	* lib/ebitset.c (ebitset_bytes): Likewise.
	* lib/lbitset.c (lbitset_bytes): Likewise.

	* lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p,
	abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p,
	abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn,
	abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor,
	abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp,
	abitset_andn_or, abitset_andn_or_cmp, abitset_or_and,
	abitset_or_and_cmp, abitset_copy): Supply prototype decls,
	to improve the type-checking that GCC can do.
	* lib/bitset.c (bitset_op4_cmp): Likewise.
	* lib/bitset_stats.c (bitset_stats_count,
	bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero,
	bitset_stats_copy, bitset_stats_disjoint_p,
	bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p,
	bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn,
	bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp,
	bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or,
	bitset_stats_and_or_cmp, bitset_stats_andn_or,
	bitset_stats_andn_or_cmp, bitset_stats_or_and,
	bitset_stats_or_and_cmp): Likewise.
	* lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn,
	lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor,
	lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not,
	lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise.

	* lib/abitset.h: Include bitset.h, not bbitset.h.
	* lib/ebitset.h: Likewise.
	* lib/lbitset.h: Likewise.

	* lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types.
	All instances of parameters of type enum bitset_opts are now of
	type enum_bitset_opts, to conform to the C Standard, and similarly
	for enum_bitset_type.
	* lib/ebitset.c (enum_ebitset_find_mode): Likewise.
	* lib/lbitset.c (enum_lbitset_find_mode): Likewise.

	Do not use "struct bitset_struct" to mean different things in
	different modules.  Not only is this confusing, it violates
	the C Standard, which requires that structure types in different
	modules must be compatible if one is to be passed to the other.
	* lib/bbitset.h (bitset): Now points to a union, not to a struct.
	All instances of "struct bitset_struct *" replaced with "bitset".
	* lib/bitset.h (struct bitset_struct): Remove, replacing with....
	(union bitset_union, struct abitset_struct, struct ebitset_struct,
	struct lbitset_struct, struct bitset_stats_struct): New types.
	All uses of struct bitset_struct changed to union bitset_union,
	etc.
	* lib/abitset.c (struct abitset_struct, abitset,
	struct bitset_struct): Remove.
	* lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats,
	struct bitset_struct): Remove.
	* lib/ebitset.c (struct ebitset_struct, ebitset, struct
	bitset_struct): Remove.
	* lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct):
	Likewise.

	Do not call a function of type T using a call that assumes the
	function is of a different type U.  Standard C requires that a
	function must be called with a type that is compatible with its
	definition.
	* lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
	New decls.
	* lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_):
	New functions.
	* lib/ebitset.c (PFV): Remove.
	* lib/lbitset.c (PFV): Likewise.
	* lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or,
	ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New
	decls.
	(ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions.
	(ebitset_vtable): Use them.
	* lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or,
	lbitset_xor): New functions.
	(lbitset_vtable): Use them.

	* lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p):
	Declare.

	* lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a
	GCC warning.
	* lib/lbitset.c (LBITSET_CURRENT1): Likewise.
	Use offsetof, for simplicity.

2002-10-06  Paul Eggert  <eggert@twinsun.com>

	* lib/bitset.h (bitset_reset): Do not assume that bitset_word is
	the same width as int.  This reapplies a hunk of the 2002-08-12 patch
	<http://lists.gnu.org/archive/html/bison-patches/2002-08/msg00007.html>,
	which was inadvertently undone by the 2002-09-30 patch.
	* lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is
	the same width as int.

2002-10-04  Paul Eggert  <eggert@twinsun.com>

	Version 1.50.

	* configure.ac (AC_INIT), NEWS: Increment version number.

	* doc/bison.texinfo: Minor spelling, grammar, and white space
	fixes.
	(Symbols): Mention that any negative value returned from yylex
	signifies end-of-input.  Warn about negative chars.  Mention
	the portable Standard C character set.

	The GNU coding standard says CFLAGS and YFLAGS are reserved
	for the installer to set.
	* lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS.
	* src/Makefile.am (AM_CFLAGS): Likewise.
	(AM_YFLAGS): Renamed from YFLAGS.

	Fix some MAX and MIN problems.
	* src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN.
	* src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX.
	* src/symtab.h (SYMBOL_NUMBER_MAX): New macro.
	* src/reader.c (reader): Use it.

	* tests/regression.at (Braces parsing): Use grep, not fgrep, as
	POSIX 1003.1-2001 has removed fgrep.

2002-10-04  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
	interpreted as signed.
	* lib/ebitset.c (ebitset_list): Fix bug.

2002-10-01  Paul Eggert  <eggert@twinsun.com>

	More fixes for 64-bit hosts and large bitsets.

	* lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list,
	abitset_size, abitset_list, abitset_list_reverse, abitset_list):
	Use bitset_bindex, not int or unsigned int or size_t, to count bits.
	* lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count,
	struct bitset_vtable.list, struct bitset_vtable.list_reverse,
	bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last,
	bitset_count_): Likewise.
	* lib/bitset.h (bitset_iterator.num, bitset_iterator.i,
	bitset_first, bitset_last): Likewise.
	* lib/bitset_stats.c (bitset_stats_size, bitset_stats_list,
	bitset_stats_list_reverse, bitset_stats_size,
	bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse):
	Likewise.
	* lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
	* lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free,
	bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure,
	bitsetv_reflexive_transitive_closure): Likewise.
	* lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise.
	* lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse):
	Likewise.
	* lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge):
	Likewise.

	* lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes):
	Use size_t, not unsigned int, to count bytes.
	* lib/abitset.h (abitset_bytes): Likewise.
	* lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc):
	Likewise.
	* lib/bitset.h (bitset_bytes): Likewise.
	* lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise.
	* lib/bitset_stats.h (bitset_stats_bytes): Likewise.
	* lib/bitsetv.c (bitsetv_alloc): Likewise.
	* lib/ebitset.c (ebitset_bytes): Likewise.
	* lib/ebitset.h (ebitset_bytes): Likewise.
	* lib/lbitset.c (lbitset_bytes): Likewise.
	* lib/lbitset.h (lbitset_bytes): Likewise.

	* lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p,
	abitset_subset_p, abitset_disjoint_p, abitset_and,
	abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or,
	abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or,
	abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp,
	abitset_or_and, abitset_or_and_cmp):
	Use bitset_windex instead of unsigned int.
	* lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
	* lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow,
	ebitset_elt_add, ebitset_elt_remove, ebitset_weed,
	ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init):
	Likewise.
	* lib/lbitset.c (lbitset_ones, lbitset_not): Likewise.

	* lib/bitset.c (bitset_print):
	Use proper printf formats for widths of integer types.
	* lib/bitset_stats.c (bitset_percent_histogram_print,
	bitset_log_histogram_print, bitset_stats_print_1): Likewise.
	* lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise.
	* lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise.
	* lib/lbitset.c (lbitset_bytes): Likewise.

	* lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX,
	BITSET_SIZE_MAX): New macros.
	(BITSET_INDEX_MAX): Remove.  It wasn't right, since it assumed that
	sizeof (bitset_word) == sizeof (bitset_windex).  All uses changed
	to BITSET_WINDEX_MAX.

	* lib/bitset.c (bitset_next, bitset_prev, bitset_first,
	bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value,
	since we now return the bitset_bindex type (not int).

	* lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow
	when computing sizes.
	* lib/ebitset.c (ebitset_elts_grow): Likewise.

	* lib/lbitset.c (lbitset_elt_find): Simplify windex calculation
	and avoid cast to unsigned.

2002-09-30  Akim Demaille  <akim@epita.fr>

	* lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
	* lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c:
	Updates from Michael Hayes.

2002-09-30  Art Haas  <ahaas@neosoft.com>

	* configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER
	invocations.
	* tests/cxx-type.at (declarator): Don't rely on NDEBUG being not
	defined.

2002-09-27  Akim Demaille  <akim@epita.fr>

	Version 1.49c.

2002-09-27  Akim Demaille  <akim@epita.fr>

	* configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
	(Because of AC_LIBSOURCE).

2002-09-27  Akim Demaille  <akim@epita.fr>

	Playing with Autoscan.

	* configure.ac: Remove the old LIBOBJ tweaks.
	(AC_REPLACE_FUNCS): Add strrchr and strtol.
	* lib/strrchr.c: New.
	* lib/strtol.c: New, from the Coreutils 4.5.1.

2002-09-27  Akim Demaille  <akim@epita.fr>

	Playing with Autoscan.

	* m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
	* lib/Makefile.am (libbison_a_SOURCES): No longer include
	argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
	* lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
	Coreutils 4.5.1.

2002-09-24  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Stack Overflow): xref to Recursion.
	(Frequently Asked Questions, Parser Stack Overflow): New.

2002-09-13  Akim Demaille  <akim@epita.fr>

	Playing with autoscan.

	* src/reader.c (get_merge_function): Use xstrdup, not strdup.
	* src/files.c (skeleton_find): Remove, unused.
	* m4/memcmp.m4: New, from the Coreutils 4.5.1.
	* m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.

2002-09-13  Akim Demaille  <akim@epita.fr>

	* configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
	* Makefile.am (AUTOMAKE_OPTIONS): Don't.

2002-09-13  Akim Demaille  <akim@epita.fr>

	* configure.ac: Require 2.54.
	s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
	s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
	* m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
	Remove, provided by Autoconf macros.

2002-09-12  Akim Demaille  <akim@epita.fr>

	* m4/prereq.m4: Update, from Coreutils 4.5.1.

2002-09-12  Akim Demaille  <akim@epita.fr>

	* m4/prereq.m4: Update, from Fileutils 4.1.5.
	* configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
	Reported by Martin Mokrejs.

2002-09-10  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y: Associate a human readable string to each
	token type.
	* tests/regression.at (Invalid inputs): Adjust.

2002-09-10  Gary V. Vaughan  <gary@gnu.org>

	* tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
	with an Autoconf-2.5x style configure.ac.

2002-09-06  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Conditions): Make explicit that the GPL
	exception applies only to yacc.c.  This is a modification of a
	patch originally suggested by Akim Demaille.

2002-09-06  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_copyright): Move the GPL exception comment from
	here to...
	* data/yacc.c: here.

	* data/lalr1.cc (struct yyltype): Don't define it, since we use
	LocationType.
	(b4_ltype): Default to yy::Location from location.hh.

2002-09-04  Jim Meyering  <jim@meyering.net>

	* data/yacc.c: Guard the declaration of yytoknum also with
	`#ifdef YYPRINT', so it is declared only when used.

2002-09-04  Akim Demaille  <akim@epita.fr>

	* configure.in: Rename as...
	* configure.ac: this.
	Bump to 1.49c.

2002-09-04  Akim Demaille  <akim@epita.fr>

	* src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
	* src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
	translate maintainer only messages.

2002-08-12  Paul Eggert  <eggert@twinsun.com>

	Version 1.49b.

	* Makefile.am (SUBDIRS): Remove intl.
	(DISTCLEANFILES): Remove.
	* NEWS: Mention that GNU M4 is now required.  Clarify what is
	meant by "larger grammars".  Mention the pt_BR translation.
	* configure.in (AC_CHECK_DECLS): Add getenv, getopt.
	(AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var.
	Bump version from 0.11.2 to 0.11.5.
	(BISON_PREREQ_STAGE): Remove.
	(AM_GNU_GETTEXT): Use external gettext.
	(AC_OUTPUT): Remove intl/Makefile.

	* config/depcomp, config/install-sh: Sync with Automake 1.6.3.

	* data/glr.c: Include string.h, for strlen.
	(yyreportParseError): Use size_t for yysize.
	(yy_yypstack): No longer nested inside yypstates, as nested
	functions are not portable.  Do not assume size_t is the
	same width as int.
	(yypstates): Do not assume that ptrdiff_t is the same width
	as int, and similarly for yyposn and YYINDEX.

	* data/yacc.c: Fix comment about `$$ = $1': it can copy garbage.

	* lib/Makefile.am (INCLUDES): Do not include from the intl
	directory, which has been removed.
	* src/Makefile.am (INCLUDES): Likewise.

	* lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h.
	(bitsets_sources, additional_bitsets_sources, timevars_sources):
	New vars.

	* lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension.
	* tests/Makefile.am (EXTRA_DIST): Likewise.

	* lib/abitset.c (abitset_reverse_list, ebitset_reverse_list):
	Do not assume that bitset_windex is the same width as unsigned.

	* lib/abitset.c (abitset_unused_clear): Do not assume that
	bitset_word is the same width as int.
	* lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise.
	* lib/bitset.h (bitset_set, bitset_reset): Likewise.
	* lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise.
	* lib/ebitset.c (ebitset_set, ebitset_reset): Likewise.
	* lib/lbitset.c (lbitset_set, lbitset_reset): Likewise.

	* lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for
	portability to one's complement hosts!).
	* lib/ebitset.c (ebitset_op1): Likewise.
	* lib/lbitset.c (lbitset_op1): Likewise.

	* lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar.
	* lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h,
	lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c:
	Sync with fileutils.
	* lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c,
	lib/gettext.h: Sync with diffutils.

	* lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c,
	lib/strspn.c, lib/tempname.c: Use GPL, not LGPL.

	* lib/obstack.c, lib/obstack.h: Sync with fileutils, except use
	PROTOTYPES to check for prototypes, and "defined __STDC__" to
	check for void *.

	* lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not
	size_t; the old version tried to do this but casted improperly.
	(bitset_bindex, bitset_windex): Now size_t, not unsigned long.
	(bitset_test): Now returns int, not unsigned long.

	* lib/bitset_stats.c: Include "gettext.h".
	(_): New macro.
	(bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't
	name locals "index", as it generates unnecessary warnings on some
	hosts that have an "index" function.

	* lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print,
	bitset_stats_read, bitset_stats_write): Wrap strings in _() if
	they need translation.
	* src/LR0.c (state_list_append, new_itemsets, get_state,
	append_states, generate_states): Likewise.
	* src/assoc.c (assoc_to_string): Likewise.
	* src/closure.c (print_closure, set_firsts, closure): Likewise.
	* src/gram.c (grammar_dump): Likewise.
	* src/injections.c (injections_compute): Likewise.
	* src/lalr.c (lookaheads_print): Likewise.
	* src/relation.c (relation_transpose): Likewise.
	* src/scan-gram.l: Likewise.
	* src/tables.c (table_grow, pack_vector): Likewise.

	* m4/Makefile.am (EXTRA_DIST): Remove codeset.m4,
	glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4.
	* m4/malloc.m4, m4/realloc.m4: Sync with diffutils.
	* m4/mbstate_t.m4: Sync with fileutils.
	* m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T.

	* po/LINGUAS: Add pt_BR.
	* po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c,
	src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c,
	lib/timevar.c.
	Use src/parse-gram.y instead of src/parse-gram.c, as the gettext
	manual recommends.
	Similarly, use src/scan-gram.l instead of src/scan-gram.c.

	* src/complain.c (strerror_r): Remove decl; not needed.
	(strerror): Use same pattern as ../lib/error.c.

	* src/files.c, src/files.h (compute_header_macro): Remove; unused.

	* src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int.

	* src/main.c (main): Cast result of bindtextdomain and textdomain
	to void, to avoid a GCC warning when --disable-nls is in effect.

	* src/scan-gram.l: Use strings rather than escapes when possible,
	to minimize the number of warnings from xgettext.
	(handle_action_dollar, handle_action_at): Don't use isdigit,
	as it mishandles negative chars and it may not work as expected
	outside the C locale.

	* src/symtab.c (symbol_get): Don't cast LHS of an assignment;
	this is a GCC extension and is not portable to other compilers.

	* src/system.h (alloca): Use same pattern as ../lib/error.c.
	Do not include <ctype.h>; no longer needed.
	Do not include <malloc.h>; no longer needed (and generates
	warnings on OpenBSD 3.0).

	* tests/cxx-type.at (yylex): Do not pass signed char to isupper;
	it's not portable.

	* tests/regression.at: Do not use 'cc -c input.c -o input';
	Sun C rejects this.  Instead, use 'cc -c input.c -o input.o'.

	* tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero
	exit status as failure, not just exit status 1.  Sun C exits
	with status 2 sometimes.

	* tests/torture.at (AT_INCREASE_DATA_SIZE): New macro.
	Use it for the two large tests.

2002-08-02  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_output): Don't output rules never
	reduced here, since anyway that computation doesn't work.
	* src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
	(rule_useless_p, rule_never_reduced_p): New.
	(grammar_rules_partial_print): Use a filter instead of a range.
	Display the title only if needed.
	(grammar_rules_print): Adjust.
	(grammar_rules_never_reduced_report): New.
	* src/tables.c (action_row): Move the computation of rules never
	reduced to...
	(token_actions): here.
	* src/main.c (main): Make the parser before making the report, so
	that rules never reduced are computed.
	Call grammar_rules_never_reduced_report.
	* src/print.c (print_results): Report rules never reduced.
	* tests/conflicts.at, tests/reduce.at: Adjust.

2002-08-01  Akim Demaille  <akim@epita.fr>

	Instead of attaching lookaheads and duplicating the rules being
	reduced by a state, attach the lookaheads to the reductions.

	* src/state.h (state_t): Remove the `lookaheads',
	`lookaheads_rule' member.
	(reductions_t): Add a `lookaheads' member.
	Use a regular array for the `rules'.
	* src/state.c (reductions_new): Initialize the lookaheads member
	to 0.
	(state_rule_lookaheads_print): Adjust.
	* src/state.h, src/state.c (state_reductions_find): New.
	* src/conflicts.c (resolve_sr_conflict, set_conflicts)
	(count_rr_conflicts): Adjust.
	* src/lalr.c (LArule): Remove.
	(add_lookback_edge): Adjust.
	(state_lookaheads_count): New.
	(states_lookaheads_initialize): Merge into...
	(initialize_LA): this.
	(lalr_free): Adjust.
	* src/main.c (main): Don't free nullable and derives too early: it
	is used by --verbose.
	* src/print.c, src/print_graph.c, src/tables.c: Adjust.

2002-08-01  Akim Demaille  <akim@epita.fr>

	* src/derives.h, src/derives.c (derives): A `rule_t***' instead of
	`rule_number_t**'.
	(set_derives, free_derives): Rename as...
	(derives_compute, derives_free): this.
	Adjust all dependencies.
	* src/nullable.c (set_nullable, free_nullable): Rename as...
	(nullable_compute, nullable_free): these.
	(rule_list_t): Store rule_t *, not rule_number_t.
	* src/state.c (state_rule_lookaheads_print): Directly compare rule
	pointers, instead of their numbers.
	* src/main.c (main): Call nullable_free, and derives_free earlier,
	as they were lo longer used.

2002-08-01  Akim Demaille  <akim@epita.fr>

	* lib/timevar.c (get_time): Include children time.
	* src/lalr.h (LA, LArule): Don't export them: used with the
	state_t.
	* src/lalr.c (LA, LArule): Static.
	* src/lalr.h, src/lalr.c (lalr_free): New.
	* src/main.c (main): Call it.
	* src/tables.c (pack_vector): Check whether loc is >= to the
	table_size, not >.
	(pack_tables): Don't free froms, tos, conflict_tos, and pos...
	(tables_generate): do it, since that's also it which allocates
	them.
	Don't free LA and LArule, main does.

2002-07-31  Akim Demaille  <akim@epita.fr>

	Separate parser tables computation and output.

	* src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
	(conflict_list, conflict_list_cnt, table, check, table_ninf)
	(yydefgoto, yydefact, high): Move to...
	* src/tables.h, src/tables.c: here.
	* src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
	(VECTOR_NUMBER_MIN, state_number_to_vector_number)
	(symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
	(froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
	(ACTION_MIN, actrow, order, nentries, pos, conflrow)
	(conflict_list_free, table_size, lowzero, table_grow, conflict_row)
	(action_row, save_row, token_actions, save_column, default_goto)
	(goto_actions, sort_actions, matching_state, pack_vector)
	(table_ninf_remap, pack_table, prepare_actions): Move to...
	* src/tables.c: here.
	* src/tables.h, src/tables.c(tables_generate, tables_free): New.
	* src/output.c (token_actions, output_base, output_conflicts)
	(output_check): Merge into...
	(prepare_actions): this.
	(actions_output): Rename as...
	(user_actions_output): this.
	* src/main.c (main): Call tables_generate and tables_free.

2002-07-31  Akim Demaille  <akim@epita.fr>

	Steal GCC's --time-report support.

	* lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
	stolen/adjusted from GCC.
	* m4/stage.m4: Remove time related checks.
	* m4/timevar.m4: New.
	* configure.in: Adjust.
	* src/system.h: Adjust to using timevar.h.
	* src/getargs.h, src/getargs.c: Support trace_time for
	--trace=time.
	* src/main.c (stage): Remove.
	(main): Replace `stage' invocations with timevar calls.
	* src/output.c: Insert pertinent timevar calls.

2002-07-31  Akim Demaille  <akim@epita.fr>

	Let --trace have arguments.

	* src/getargs.h (enum trace_e): New.
	* src/getargs.c (trace_args, trace_types, trace_argmatch): New.
	(long_options, short_options): --trace/-T takes an optional
	argument.
	Change all the uses of trace_flag to reflect the new flags.
	* tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.

	Strengthen `stage' portability.

	* m4/stage.m4 (BISON_PREREQ_STAGE): New.
	* configure.in: Use it.
	Don't check for malloc.h and sys/times.h.
	* src/system.h: Include them when appropriate.
	* src/main.c (stage): Compile only when mallinfo, struct mallinfo,
	times and struct tms are available.

2002-07-30  Akim Demaille  <akim@epita.fr>

	In verbose parse error message, don't report `error' as an
	expected token.
	* tests/actions.at (Printers and Destructors): Adjust.
	* tests/calc.at (Calculator $1): Adjust.
	* data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
	error message, do not report the parser accepts the error token in
	that state.

2002-07-30  Akim Demaille  <akim@epita.fr>

	Normalize conflict related messages.

	* src/complain.h, src/complain.c (warn, complain): New.
	* src/conflicts.c (conflicts_print): Use them.
	(conflict_report_yacc): New, extracted from...
	(conflicts_print): here.
	* tests/conflicts.at, tests/existing.at: Adjust.

2002-07-30  Akim Demaille  <akim@epita.fr>

	Report rules which are never reduced by the parser: those hidden
	by conflicts.

	* src/LR0.c (save_reductions): Don't make the final state too
	different: save its reduction (accept) instead of having a state
	without any action (no shift or goto, no reduce).
	Note: the final state is now a ``regular'' state, i.e., the
	parsers now contain `reduce 0' as default reduction.
	Nevertheless, since they decide to `accept' when yystate =
	final_state, they still will not reduce rule 0.
	* src/print.c (print_actions, print_reduction): Adjust.
	* src/output.c (action_row): Track reduced rules.
	(token_actions): Report rules never reduced.
	* tests/conflicts.at, tests/regression.at: Adjust.

2002-07-30  Akim Demaille  <akim@epita.fr>

	`stage' was accidentally included in a previous patch.
	Initiate its autoconfiscation.

	* configure.in: Look for malloc.h and sys/times.h.
	* src/main.c (stage): Adjust.
	Report only when trace_flag.

2002-07-29  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
	state_number_t.
	(errs_t): symbol_t*, not symbol_number_t.
	(reductions_t): rule_t*, not rule_number_t.
	(FOR_EACH_SHIFT): New.
	* src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
	* src/print.c, src/print_graph.c: Adjust.

2002-07-29  Akim Demaille  <akim@epita.fr>

	Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.

	* src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
	(endtoken, accept): these.
	* src/reader.c (reader): Set endtoken's default tag to "$end".
	Set undeftoken's tag to "$undefined" instead of "$undefined.".
	* doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
	Adjust.

2002-07-29  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_grammar): When the language is empty,
	complain about the start symbol, not the axiom.
	Use its location.
	* tests/reduce.at (Empty Language): New.

2002-07-26  Akim Demaille  <akim@epita.fr>

	* src/reader.h, src/reader.c (gram_error): ... can't get
	yycontrol without making too strong assumptions on the parser
	itself.
	* src/output.c (prepare_tokens): Use the real 0th value of
	token_translations instead of `0'.
	* src/parse-gram.y (yyerror): Don't rely on yycontrol being
	visible here.
	* data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
	for the time being: %locations ought to provide it to yyerror.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
	* doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
	* tests/regression.at (Web2c Actions): Adjust.

2002-07-25  Akim Demaille  <akim@epita.fr>

	Stop storing rules from 1 to nrules + 1.

	* src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
	* src/nullable.c, src/output.c, src/print.c, src/reader.c
	* src/reduce.c: Allocate and free from &rules[0], not &rules[1].
	Iterate from 0 to nrules.
	Use rule_number_as_item_number and item_number_as_rule_number.
	Adjust to `derive' now containing possibly 0.
	* src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
	Handle the `- 1' part in rule numbers from/to item numbers.
	* src/conflicts.c (log_resolution): Fix the message which reversed
	shift and reduce.
	* src/output.c (action_row): Initialize default_rule to -1.
	(token_actions): Adjust.
	* tests/sets.at (Nullable, Firsts): Fix the previously bogus
	expected output.
	* tests/conflicts.at (Resolved SR Conflicts): Likewise.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
	(b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
	(b4_c_knr_arg_decl): New.
	* data/yacc.c: Use it to define yysymprint, yydestruct, and
	yyreport_parse_error.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (yyreport_parse_error): New, extracted from...
	(yyparse): here.
	(yydestruct, yysymprint): Move above yyparse.
	Be K&R compliant.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
	replace...
	(b4_sint_type, b4_uint_type): these.
	* data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
	* tests/regression.at (Web2c Actions): Adjust.

2002-07-25  Akim Demaille  <akim@epita.fr>

	* src/gram.h (TIEM_NUMBER_MAX): New.
	(item_number_of_rule_number, rule_number_of_item_number): Rename
	as...
	(rule_number_as_item_number, item_number_as_rule_number): these.
	Adjust dependencies.
	* src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
	(VECTOR_NUMBER_MIN, state_number_to_vector_number)
	(symbol_number_to_vector_number): New.
	(order): Of vector_number_t* type.
	(base_t, BASE_MAX, BASE_MIN): New.
	(froms, tos, width, pos, check): Of base_t type.
	(action_number_t, ACTION_MIN, ACTION_MAX): New.
	(actrow): Of action_number_t type.
	(conflrow): Of unsigned int type.
	(table_ninf, base_ninf): New.
	(GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
	(muscle_insert_int_table, muscle_insert_base_table)
	(muscle_insert_rule_number_table): New.
	(prepare_tokens): Output `toknum' as int_table.
	(action_row): Returns a rule_number_t.
	Use ACTION_MIN, not SHRT_MIN.
	(token_actions): yydefact is rule_number_t*.
	(table_ninf_remap): New.
	(pack_table): Use it for `base' and `table'.
	* data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
	replaced with...
	(YYPACT_NINF, YYTABLE_NINF): these.
	(yypact, yytable): Compute their types instead of hard-coded
	`short'.
	* tests/regression.at (Web2c Actions): Adjust.

2002-07-19  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (id): Can start with an underscore.

2002-07-16  Akim Demaille  <akim@epita.fr>

	* src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
	Adjust all former `associativity' dependencies.
	* src/symtab.c (symbol_new): Default associativity is `undef', not
	`right'.
	(symbol_check_alias_consistence): Adjust.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Properly set the ``header'' part.
	Use @dircategory ``GNU programming tools'' as per Texinfo's
	documentation.
	Use @copying.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* lib/quotearg.h: Protect against multiple inclusions.
	* src/location.h (location_t): Add a `file' member.
	(LOCATION_RESET, LOCATION_PRINT): Adjust.
	* src/complain.c (warn_at, complain_at, fatal_at): Drop
	`error_one_per_line' support.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* src/complain.h, src/complain.c (warn, complain): Remove, unused.
	* src/reader.c (lineno): Remove.
	Adjust all dependencies.
	(get_merge_function): Take a location and use complain_at.
	* src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
	* tests/regression.at (Invalid inputs, Mixing %token styles):
	Adjust.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (rules_or_grammar_declaration): Add an error
	recovery rule, and forbid extensions when --yacc.
	(gram_error): Use complain_at.
	* src/reader.c (reader): Exit if there were parse errors.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* tests/synclines.at (AT_SYNCLINES_COMPILE): New.
	(AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
	Reported by R Blake <blakers@mac.com>.

2002-07-09  Akim Demaille  <akim@epita.fr>

	* data/yacc.c: Output the copyright notive in the header.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/output.c (froms, tos): Are state_number_t.
	(save_column): sp, sp1, and sp2 are state_number_t.
	(prepare): Rename `final' as `final_state_number', `nnts' as
	`nterms_number', `nrules' as `rules_number', `nstates' as
	`states_number', and `ntokens' as `tokens_number'.  Remove `nsym',
	unused.
	* data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
	* data/lalr1.cc (nsym_): Remove, unused.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/lalr.h, src/lalr.c (goto_number_t): New.
	* src/lalr.c (goto_list_t): New.
	Propagate them.
	* src/nullable.c (rule_list_t): New.
	Propagate.
	* src/types.h: Remove.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_fderives): Use rule_rhs_print.
	* src/derives.c (print_derives): Use rule_rhs_print.
	(rule_list_t): New, replaces `shorts'.
	(set_derives): Add comments.
	* tests/sets.at (Nullable, Firsts): Adjust.

2002-07-03  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare_actions): Free `tally' and `width'.
	(prepare_actions): Allocate and free `order'.
	* src/symtab.c (symbols_free): Free `symbols'.
	* src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
	* src/output.c (m4_invoke): Move to...
	* src/scan-skel.l: here.
	(<<EOF>>): Close yyout, and free its name.

2002-07-03  Akim Demaille  <akim@epita.fr>

	Fix some memory leaks, and fix a bug: state 0 was examined twice.

	* src/LR0.c (new_state): Merge into...
	(state_list_append): this.
	(new_states): Merge into...
	(generate_states): here.
	(set_states): Don't ensure a proper `errs' state member here, do it...
	* src/conflicts.c (conflicts_solve): here.
	* src/state.h, src/state.c: Comment changes.
	(state_t): Rename member `shifts' as `transitions'.
	Adjust all dependencies.
	(errs_new): For consistency, also take the values as argument.
	(errs_dup): Remove.
	(state_errs_set): New.
	(state_reductions_set, state_transitions_set): Assert that no
	previous value was assigned.
	(state_free): New.
	(states_free): Use it.
	* src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
	temporary storage: use `errs' and `nerrs' as elsewhere.
	(set_conflicts): Allocate and free this `errs'.

2002-07-02  Akim Demaille  <akim@epita.fr>

	* lib/libiberty.h: New.
	* lib: Update the bitset implementation from upstream.
	* src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
	* src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
	* src/main.c: Adjust bitset stats calls.

2002-07-01  Paul Eggert  <eggert@twinsun.com>

	* src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
	char, so that negative chars don't collide with $.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Have the GLR tests be `warning' checked, and fix the warnings.

	* data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
	(yyuserAction, yyreportAmbiguity): `Use' all the arguments.
	(yyremoveDeletes): `yyi' and `yyj' are size_t.
	Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
	(yyaddDeferredAction): static.
	(yyglrReduce): yyi, yyk, amd yyposn are size_t.
	(yyreportParseError): yyprefix is const.
	yytokenp is used only when verbose.
	(yy__GNUC__): Replace with __GNUC__.
	(yypdumpstack): yyi is size_t.
	(yypreference): Un-yy local variables and arguments, to avoid
	clashes with `yyr1'.  Anyway, we are not in the user name space.
	(yytname_size): be an int, as is compared with ints.
	* tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
	Use them.
	* tests/cxx-gram.at: Use quotation to protect $1.
	Use AT_COMPILE to enable warnings hunts.
	Prototype yylex and yyerror.
	`Use' argc.
	Include `string.h', not `strings.h'.
	Produce and prototype stmtMerge only when used.
	yylex takes a location.

2002-06-30  Akim Demaille  <akim@epita.fr>

	We spend a lot of time in quotearg, in particular when --verbose.

	* src/symtab.c (symbol_get): Store a quoted version of the key.
	(symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
	Adjust all callers.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h (reductions_t): Rename member `nreds' as num.
	(errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
	* src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
	(SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
	(shifts_to): Rename as...
	(transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
	(TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
	(TRANSITION_IS_DISABLED, transitions_to): these.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_shifts, print_gotos): Merge into...
	(print_transitions): this.
	(print_transitions, print_errs, print_reductions): Align the
	lookaheads columns.
	(print_core, print_transitions, print_errs, print_state,
	print_grammar): Output empty lines separator before, not after.
	(state_default_rule_compute): Rename as...
	(state_default_rule): this.
	* tests/conflicts.at (Defaulted Conflicted Reduction),
	(Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
	* tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Display items as we display rules.

	* src/gram.h, src/gram.c (rule_lhs_print): New.
	* src/gram.c (grammar_rules_partial_print): Use it.
	* src/print.c (print_core): Likewise.
	* tests/conflicts.at (Defaulted Conflicted Reduction),
	(Unresolved SR Conflicts): Adjust.
	(Unresolved SR Conflicts): Adjust and rename as...
	(Resolved SR Conflicts): this, as was meant.
	* tests/regression.at (Web2c Report): Adjust.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/print.c (state_default_rule_compute): New, extracted from...
	(print_reductions): here.
	Pessimize, but clarify the code.
	* tests/conflicts.at (Defaulted Conflicted Reduction): New.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row): Let default_rule be always a rule
	number.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_firsts, print_fderives, closure):
	Use BITSET_EXECUTE.
	* src/lalr.c (lookaheads_print): Likewise.
	* src/state.c (state_rule_lookaheads_print): Likewise.
	* src/print_graph.c (print_core): Likewise.
	* src/print.c (print_reductions): Likewise.
	* src/output.c (action_row): Likewise.
	Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c: Use report_flag.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (traverse, digraph, matrix_print, transpose): Move
	to...
	* src/relation.h, src/relation.c (traverse, relation_digraph)
	(relation_print, relation_transpose): New.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (shifts_to): New.
	* src/lalr.c (build_relations): Use it.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
	(item_number_of_rule_number, rule_number_of_item_number): New.
	* src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
	* src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
	* src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
	Propagate their use.
	Much remains to be done, in particular wrt `shorts' from types.h.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_new): Initialize the `printer' member.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (save_reductions): Remove, replaced by...
	* src/state.h, src/state.c (state_reductions_set): New.
	(reductions, errs): Rename as...
	(reductions_t, errs_t): these.
	Adjust all dependencies.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (state_list_t, state_list_append): New.
	(first_state, last_state): Now symbol_list_t.
	(this_state): Remove.
	(new_itemsets, append_states, save_reductions): Take a state_t as
	argument.
	(set_states, generate_states): Adjust.
	(save_shifts): Remove, replaced by...
	* src/state.h, src/state.c (state_shifts_set): New.
	(shifts): Rename as...
	(shifts_t): this.
	Adjust all dependencies.
	* src/state.h (state_t): Remove the `next' member.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/vcg.c (quote): Use slot 2, since we often pass symbol tag
	escaped in slot 0.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Use hash.h for the state hash table.

	* src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
	(allocate_storage): Use state_hash_new.
	(free_storage): Use state_hash_free.
	(new_state, get_state): Adjust.
	* src/lalr.h, src/lalr.c (states): Move to...
	* src/states.h (state_t): Remove the `link' member, no longer
	used.
	* src/states.h, src/states.c: here.
	(state_hash_new, state_hash_free, state_hash_lookup)
	(state_hash_insert, states_free): New.
	* src/states.c (state_table, state_compare, state_hash): New.
	* src/output.c (output_actions): Do not free states now, since we
	still need to know the final_state number in `prepare', called
	afterwards.  Do it...
	* src/main.c (main): here: call states_free after `output'.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (state_new): New, extracted from...
	* src/LR0.c (new_state): here.
	* src/state.h (STATE_ALLOC): Move to...
	* src/state.c: here.
	* src/LR0.h, src/LR0.c (nstates, final_state): Move to...
	* src/state.h, src/state.c: here.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/reader.c (gensym): Rename as...
	* src/symtab.h, src/symtab.c (dummy_symbol_get): this.
	(getsym): Rename as...
	(symbol_get): this.

2002-06-30  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_number_t, STATE_NUMBER_MAX): New.
	* src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
	* src/output.c, src/print.c, src/print_graph.c: Propagate.
	* src/LR0.h, src/LR0.h (final_state): Is a state_t*.

2002-06-30  Akim Demaille  <akim@epita.fr>

	Make the test suite pass with warnings checked.

	* tests/actions.at (Printers and Destructors): Improve.
	Avoid unsigned vs. signed issues.
	* tests/calc.at: Don't exercise the scanner here, do it...
	* tests/input.at (Torturing the Scanner): here.

2002-06-28  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/glr.c: Correct typo in Emacs-mode directive.  Slightly
	reorganize first lines parallel to yacc.c.

2002-06-28  Akim Demaille  <akim@epita.fr>

	* data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
	(b4_token_enum, b4_token_defines): New, factored from...
	* data/lalr1.cc, data/yacc.c, glr.c: here.

2002-06-28  Akim Demaille  <akim@epita.fr>

	* data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
	unused variables.
	* src/output.c (merger_output): static.

2002-06-28  Akim Demaille  <akim@epita.fr>

	* src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
	* src/conflicts.c (conflicts_total_count): `i' is unsigned, to
	pacify GCC.
	* src/output.c (save_row): Initialize all the variables to pacify GCC.

2002-06-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	Accumulated changelog for new GLR parsing features.

	* src/conflicts.c (count_total_conflicts): Change name to
	conflicts_total_count.
	* src/conflicts.h: Ditto.
	* src/output.c (token_actions): Use the new name.
	(output_conflicts): Change conflp => conflict_list_heads, and
	confl => conflict_list for better readability.
	* data/glr.c: Use the new names.
	* NEWS: Add self to GLR announcement.

	* src/reader.c (free_merger_functions): Cleanup: XFREE->free.

	* doc/bison.texinfo (GLR Parsers): Make corrections suggested by
	Akim Demaille.

	* data/bison.glr: Change name to glr.c
	* data/glr.c: Renamed from bison.glr.
	* data/Makefile.am: Add glr.c

	* src/getargs.c:

	* src/symlist.h:  Add dprec and merger fields to symbol_list_s.
	* src/symlist.c (symbol_list_new): Initialize dprec and merger fields.

	Originally 2002-06-16  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.glr: Be sure to restore the
	current #line when returning to the skeleton contents after having
	exposed the input file's #line.

	Originally 2002-06-13  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.glr: Bring up to date with changes to bison.simple.

	Originally 2002-06-03  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.glr: Correct definitions that use b4_prefix.
	Various reformatting.
	(GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
	(yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
	yytokenp argument; now part of stack.
	(yychar): Define to behave as documented.
	(yyclearin): Ditto.

	Originally 2002-05-14  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/reader.h: Add declaration for free_merger_functions.

	* src/reader.c (merge_functions): New variable.
	(get_merge_function): New function.
	(free_merger_functions): New function.
	(readgram): Check for %prec that is not followed by a symbol.
	Handle %dprec and %merge declarations.
	(packgram): Initialize dprec and merger fields in rules array.

	* src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
	conflict_list_cnt, conflict_list_free): New variables.
	(table_grow): Also grow conflict_table.
	(prepare_rules): Output dprec and merger tables.
	(conflict_row): New function.
	(action_row): Output conflict lists for GLR parser.  Don't use
	default reduction in conflicted states for GLR parser so that there
	are spaces for the conflict lists.
	(save_row): Also save conflict information.
	(token_actions): Allocate conflict list.
	(merger_output): New function.
	(pack_vector): Pack conflict table, too.
	(output_conflicts): New function to output yyconflp and yyconfl.
	(output_check): Allocate conflict_tos.
	(output_actions): Output conflict tables, also.
	(output_skeleton): Output b4_mergers definition.
	(prepare): Output b4_max_rhs_length definition.
	Use 'bison.glr' as default skeleton for GLR parsers.

	* src/gram.c (glr_parser): New flag.
	(grammar_free): Call free_merger_functions.

	* src/conflicts.c (count_rr_conflicts): Augment to optionally count
	all pairs of conflicting reductions, rather than just all tokens
	causing conflicts.  Needed to size conflict tables.
	(conflicts_output): Modify call to count_rr_conflicts for new
	interface.
	(conflicts_print): Ditto.
	(count_total_conflicts): New function.

	* src/reader.h (merger_list): New type.
	(merge_functions): New variable.

	* src/lex.h (tok_dprec, tok_merge): New token types.

	* src/gram.h (rule_s): Add dprec and merger fields.
	(glr_parser): New flag.

	* src/conflicts.h (count_total_conflicts): New function.

	* src/options.c (option_table): Add %dprec, %merge, and %glr-parser.

	* doc/bison.texinfo (Generalized LR Parsing): New section.
	(GLR Parsers): New section.
	(Language and Grammar): Mention GLR parsing.
	(Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
	Correct typo ("tge" -> "the").

	* data/bison.glr: New skeleton for GLR parsing.

	* tests/cxx-gram.at: New tests for GLR parsing.

	* tests/testsuite.at: Include cxx-gram.at.

	* tests/Makefile.am: Add cxx-gram.at.

	* src/parse-gram.y:

	* src/scan-gram.l: Add %dprec, %glr-parser, %merge.

	* src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.

2002-06-27  Akim Demaille  <akim@epita.fr>

	* src/options.h, src/options.c: Remove.
	* src/getargs.c (short_options, long_options): New.

2002-06-27  Akim Demaille  <akim@epita.fr>

	* data/bison.simple, data/bison.c++: Rename as...
	* data/yacc.c, data/lalr1.cc: these.
	* doc/bison.texinfo (Environment Variables): Remove.

2002-06-25  Raja R Harinath  <harinath@cs.umn.edu>

	* src/getargs.c (report_argmatch): Initialize strtok().

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_symbol_actions): New, replaces...
	(b4_symbol_destructor, b4_symbol_printer): these.
	(yysymprint): Be sure to call YYPRINT only for tokens, and using
	user token numbers.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yydestructor): Rename as...
	(yydestruct): this.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_type_set)
	(symbol_destructor_set, symbol_precedence_set): The location is
	the last argument.
	Adjust all callers.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
	internals.
	* src/reader.h, src/reader.c (grammar_current_rule_prec_set):
	Takes a location.
	* src/symtab.h, src/symtab.c (symbol_class_set)
	(symbol_user_token_number_set): Likewise.
	Adjust all callers.
	Promote complain_at.
	* tests/input.at (Type Clashes): Adjust.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (YYLEX): Fix the declaration when
	%pure-parser.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yysymprint): Don't print the token number,
	just its name.
	* tests/actions.at (Destructors): Rename as...
	(Printers and Destructors): this.
	Also exercise %printer.

2002-06-20  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (YYDSYMPRINT): New.
	Use it to remove many of the #if YYDEBUG/if (yydebug).

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_t): printer and
	printer_location are new members.
	(symbol_printer_set): New.
	* src/parse-gram.y (PERCENT_PRINTER): New token.
	Handle its associated rule.
	* src/scan-gram.l: Adjust.
	(handle_destructor_at, handle_destructor_dollar): Rename as...
	(handle_symbol_code_at, handle_symbol_code_dollar): these.
	* src/output.c (symbol_printers_output): New.
	(output_skeleton): Call it.
	* data/bison.simple (yysymprint): New.  Cannot be named yyprint
	since there are already many grammar files with a user `yyprint'.
	Replace the calls to YYPRINT to calls to yysymprint.
	* tests/calc.at: Adjust.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
	taking advantage of parser very internal details (stack size!).

2002-06-20  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l: Complete the scanner with the missing patterns
	to pacify Flex.
	Use `quote' and `symbol_tag_get' where appropriate.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (Destructors): Augment to test locations.
	* data/bison.simple (yydestructor): Pass it the current location
	if locations are enabled.
	Prototype only when __STDC__ or C++.
	Change the argument names to move into the yy name space: there is
	user code here.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_pure_if): New.
	Use it instead of #ifdef YYPURE.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_location_if): New.
	Use it instead of #ifdef YYLSP_NEEDED.

2002-06-19  Akim Demaille  <akim@epita.fr>

	Prepare @$ in %destructor, but currently don't bind it in the
	skeleton, as %location use is not cleaned up yet.

	* src/scan-gram.l (handle_dollar, handle_destructor_at)
	(handle_action_at): New.
	(handle_at, handle_action_dollar, handle_destructor_dollar): Take
	a braced_code_t and a location as additional arguments.
	(handle_destructor_dollar): Instead of requiring `b4_eval', just
	unquote one when outputting `b4_dollar_dollar'.
	Adjust callers.
	* data/bison.simple (b4_eval): Remove.
	(b4_symbol_destructor): Adjust.
	* tests/input.at (Invalid @n): Adjust.

2002-06-19  Zack Weinberg  <zack@codesourcery.com>

	* doc/bison.texinfo: Document ability to have multiple
	prologue sections.

2002-06-18  Akim Demaille  <akim@epita.fr>

	* src/files.c (compute_base_names): When computing the output file
	names from the input file name, strip the directory part.

2002-06-18  Akim Demaille  <akim@epita.fr>

	* data/bison.simple.new: Comment changes.
	Reported by Andreas Schwab.

2002-06-18  Matt Kraai  <kraai@alumni.cmu.edu>

	* data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
	there are no `label `yyoverflowlab' defined but not used' warnings
	when yyoverflow is defined.

2002-06-18  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
	new member.
	(symbol_destructor_set): Adjust.
	* src/output.c (symbol_destructors_output): Output the destructor
	locations.
	Output the symbol name.
	* data/bison.simple (b4_symbol_destructor): Adjust.

2002-06-18  Cris Bailiff  <c.bailiff@awayweb.com>
	and Akim Demaille  <akim@epita.fr>

	* data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
	what's left on the stack when the error recovery hits EOF.
	* tests/actions.at (Destructors): Complete to exercise this case.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
	arguments is really empty, not only equal to `[]'.
	* src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
	member.
	(symbol_destructor_set): New.
	* src/output.c (symbol_destructors_output): New.
	* src/reader.h (brace_code_t, current_braced_code): New.
	* src/scan-gram.l (BRACED_CODE): Use it to branch on...
	(handle_dollar): Rename as...
	(handle_action_dollar): this.
	(handle_destructor_dollar): New.
	* src/parse-gram.y (PERCENT_DESTRUCTOR): New.
	(grammar_declaration): Use it.
	* data/bison.simple (yystos): Is always defined.
	(yydestructor): New.
	* tests/actions.at (Destructors): New.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* src/symlist.h, src/symlist.c (symbol_list_length): New.
	* src/scan-gram.l (handle_dollar, handle_at): Compute the
	rule_length only when needed.
	* src/output.c (actions_output, token_definitions_output): Output
	the full M4 block.
	* src/symtab.c: Don't access directly to the symbol tag, use
	symbol_tag_get.
	* src/parse-gram.y: Use symbol_list_free.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* src/reader.h, src/reader.c (symbol_list, symbol_list_new)
	(symbol_list_prepend, get_type_name): Move to...
	* src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
	(symbol_list_prepend, symbol_list_n_type_name_get): here.
	Adjust all callers.
	(symbol_list_free): New.
	* src/scan-gram.l (handle_dollar): Takes a location.
	* tests/input.at (Invalid $n): Adjust.

2002-06-17  Akim Demaille  <akim@epita.fr>

	* src/reader.h, src/reader.c (symbol_list_new): Export it.
	(symbol_list_prepend): New.
	* src/parse-gram.y (%union): `list' is a new member.
	(symbols.1): New, replaces...
	(terms_to_prec.1, nterms_to_type.1): these.
	* src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
	Take a location as additional argument.
	Adjust all callers.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y: Move %token in the declaration section so that
	we don't depend upon CVS Bison.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (state_rule_lookaheads_print): New.
	* src/print.c (print_core): Use it.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (log_resolution): Accept the rule involved in
	the sr conflicts instead of the lookahead number that points to
	that rule.
	(flush_reduce): Accept the current lookahead vector as argument,
	instead of the index in LA.
	(resolve_sr_conflict): Accept the current number of lookahead
	bitset to consider for the STATE, instead of the index in LA.
	(set_conflicts): Adjust.
	* src/lalr.c, src/lalr.h, src/state.h: Comment changes.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_t): Replace the `lookaheadsp' member, a
	short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
	Adjust all dependencies.
	* src/lalr.c (initialize_lookaheads): Split into...
	(states_lookaheads_count, states_lookaheads_initialize): these.
	(lalr): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
	out of...
	(grammar_rules_print): here.
	* src/reduce.c (reduce_output): Use it.
	* tests/reduce.at (Useless Rules, Reduced Automaton)
	(Underivable Rules): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	Copy BYacc's nice way to report the grammar.

	* src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
	New.
	Don't print the rules' location, it is confusing and useless.
	(rule_print): Use grammar_rhs_print.
	* src/print.c (print_grammar): Use grammar_rules_print.

2002-06-15  Akim Demaille  <akim@epita.fr>

	Complete and rationalize `useless thing' warnings.

	* src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n)
	(symbol_tag_print): New.
	Use them everywhere in place of accessing directly the tag member.
	* src/gram.h, src/gram.c (rule_print): New.
	Use it where a rule used to be printed `by hand'.
	* src/reduce.c (nonterminals_reduce): Report the use nonterminals.
	(reduce_grammar_tables): Report the useless rules.
	(reduce_print): Useless things are a warning, not an error.
	Report it as such.
	* tests/reduce.at (Useless Nonterminals, Useless Rules):
	(Reduced Automaton, Underivable Rules): Adjust.
	* tests/regression.at (Web2c Report, Web2c Report): Adjust.
	* tests/conflicts.at (Unresolved SR Conflicts)
	(Solved SR Conflicts): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	Let symbols have a location.

	* src/symtab.h, src/symtab.c (symbol_t): Location is a new member.
	(getsym): Adjust.
	Adjust all callers.
	* src/complain.h, src/complain.c (complain_at, fatal_at, warn_at):
	Use location_t, not int.
	* src/symtab.c (symbol_check_defined): Take advantage of the
	location.
	* tests/regression.at (Invalid inputs): Adjust.

2002-06-15  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
	(input): Don't try to initialize yylloc here, do it in the
	scanner.
	* src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
	* src/gram.h (rule_t): Change line and action_line into location
	and action_location, of location_t type.
	Adjust all dependencies.
	* src/location.h, src/location.c (empty_location): New.
	* src/reader.h, src/reader.c (grammar_start_symbol_set)
	(grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
	(grammar_current_rule_symbol_append)
	(grammar_current_rule_action_append): Expect a location as argument.
	* src/reader.c (grammar_midrule_action): Adjust to attach an
	action's location as dummy symbol location.
	* src/symtab.h, src/symtab.c (startsymbol_location): New.
	* tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
	the line numbers.

2002-06-14  Akim Demaille  <akim@epita.fr>

	Grammar declarations may be found in the grammar section.

	* src/parse-gram.y (rules_or_grammar_declaration): New.
	(declarations): Each declaration may end with a semicolon, not
	just...
	(grammar_declaration): `"%union"'.
	(grammar): Branch to rules_or_grammar_declaration.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): Invoke scanner_free.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/output.c (m4_invoke): Extracted from...
	(output_skeleton): here.
	Free tempfile.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/parse-gram.y (directives, directive, gram)
	(grammar_directives, precedence_directives, precedence_directive):
	Rename as...
	(declarations, declaration, grammar, grammar_declaration)
	(precedence_declaration, precedence_declarator): these.
	(symbol_declaration): New.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/files.c (action_obstack): Remove, unused.
	(output_obstack): Remove it, and all its dependencies, as it is no
	longer needed.
	* src/reader.c (epilogue_set): Build the epilogue in the
	muscle_obstack.
	* src/output.h, src/output.c (muscle_obstack): Move to...
	* src/muscle_tab.h, src/muscle_tab.h: here.
	(muscle_init): Initialize muscle_obstack.
	(muscle_free): New.
	* src/main.c (main): Call it.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* src/location.h: New, extracted from...
	* src/reader.h: here.
	* src/Makefile.am (noinst_HEADERS): Merge into
	(bison_SOURCES): this.
	Add location.h.
	* src/parse-gram.y: Use location_t instead of Bison's.
	* src/reader.h, src/reader.c (prologue_augment, epilogue_set):
	Use location_t instead of ints.

2002-06-14  Akim Demaille  <akim@epita.fr>

	* data/bison.simple, data/bison.c++: Be sure to restore the
	current #line when returning to the skeleton contents after having
	exposed the input file's #line.

2002-06-12  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
	eager.
	* tests/actions.at (Exotic Dollars): New.

2002-06-12  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
	['"/] too eagerly.
	* tests/input.at (Torturing the Scanner): New.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (YY_OBS_INIT): Remove, replace with...
	[SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE]
	[SC_EPILOGUE]: Output the quadrigraphs only when not in a comment.
	* src/reader.h, src/scan-gram.l (scanner_initialize): this.
	* src/reader.c (reader): Use it.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (YY_OBS_FINISH): Don't set yylval.
	Adjust all callers.
	(scanner_last_string_free): New.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as...
	(YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these.
	(last_string, YY_OBS_FREE): New.
	Use them when returning an ID.

2002-06-11  Akim Demaille  <akim@epita.fr>

	Have Bison grammars parsed by a Bison grammar.

	* src/reader.c, src/reader.h (prologue_augment): New.
	* src/reader.c (copy_definition): Remove.

	* src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
	(grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
	(grammar_current_rule_prec_set, grammar_current_rule_check)
	(grammar_current_rule_symbol_append)
	(grammar_current_rule_action_append): Export.
	* src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
	(symbol_list_action_append): Remove.
	Hook the routines from reader.
	* src/scan-gram.l: In INITIAL, characters and strings are tokens.
	* src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.

	* src/reader.c (read_declarations): Remove, unused.

	* src/parse-gram.y: Handle the epilogue.
	* src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
	(grammar_start_symbol_set): this.
	* src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
	* src/reader.c (readgram): Remove, unused.
	(reader): Adjust to insert eoftoken and axiom where appropriate.

	* src/reader.c (copy_dollar): Replace with...
	* src/scan-gram.h (handle_dollar): this.
	* src/parse-gram.y: Remove `%thong'.

	* src/reader.c (copy_at): Replace with...
	* src/scan-gram.h (handle_at): this.

	* src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
	New.

	* src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
	time being.

	* src/reader.h, src/reader.c (grammar_rule_end): New.

	* src/parse.y (current_type, current_class): New.
	Implement `%nterm', `%token' support.
	Merge `%term' into `%token'.
	(string_as_id): New.
	* src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
	type name.

	* src/parse-gram.y: Be sure to handle properly the beginning of
	rules.

	* src/parse-gram.y: Handle %type.
	* src/reader.c (grammar_rule_end): Call grammar_current_rule_check.

	* src/parse-gram.y: More directives support.
	* src/options.c: No longer handle source directives.

	* src/parse-gram.y: Fix %output.

	* src/parse-gram.y: Handle %union.
	Use the prologue locations.
	* src/reader.c (parse_union_decl): Remove.

	* src/reader.h, src/reader.c (epilogue_set): New.
	* src/parse-gram.y: Use it.

	* data/bison.simple, data/bison.c++: b4_stype is now either not
	defined, then default to int, or to the contents of %union,
	without `union' itself.
	Adjust.
	* src/muscle_tab.c (muscle_init): Don't predefine `stype'.

	* src/output.c (actions_output): Don't output braces, as they are
	already handled by the scanner.

	* src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
	characters to themselves.

	* tests/reduce.at (Reduced Automaton): End the grammars with %% so
	that the epilogue has a proper #line.

	* src/parse-gram.y: Handle precedence/associativity.

	* src/symtab.c (symbol_precedence_set): Requires the symbol to be
	a terminal.
	* src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
	* tests/calc.at: Do not use `%token "foo"' as it makes not sense
	at all to define terminals that cannot be emitted.

	* src/scan-gram.l: Escape M4 characters.

	* src/scan-gram.l: Working properly with escapes in user
	strings/characters.

	* tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
	(AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
	grammar.
	Use more modest sizes, as for the time being the parser does not
	release memory, and therefore the process swallows a huge amount
	of memory.

	* tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
	stricter %token grammar.

	* src/symtab.h (associativity): Add `undef_assoc'.
	(symbol_precedence_set): Do nothing when passed an undef_assoc.
	* src/symtab.c (symbol_check_alias_consistence): Adjust.

	* tests/regression.at (Invalid %directive): Remove, as it is now
	meaningless.
	(Invalid inputs): Adjust to the new error messages.
	(Token definitions): The new grammar doesn't allow too many
	eccentricities.

	* src/lex.h, src/lex.c: Remove.
	* src/reader.c (lastprec, skip_to_char, read_signed_integer)
	(copy_character, copy_string2, copy_string, copy_identifier)
	(copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
	(parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
	(parse_action): Remove.
	* po/POTFILES.in: Adjust.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_action): Don't store directly into the
	rule's action member: return the action as a string.
	Don't require `rule_length' as an argument: compute it.
	(grammar_current_rule_symbol_append)
	(grammar_current_rule_action_append): New, eved out from
	(readgram): here.
	Remove `action_flag', `rulelength', unused now.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_current_rule_prec_set).
	(grammar_current_rule_check): New, eved out from...
	(readgram): here.
	Remove `xaction', `first_rhs': useless.
	* tests/input.at (Type clashes): New.
	* tests/existing.at (GNU Cim Grammar): Adjust.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_midrule_action): New, Eved out from
	(readgram): here.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_rule_begin, previous_rule, current_rule):
	New.
	(readgram): Use them as replacement of inlined code, crule and
	crule1.

2002-06-11  Akim Demaille  <akim@epita.fr>

	* src/reader.c (grammar_end, grammar_symbol_append): New.
	(readgram): Use them.
	Make the use of `p' as local as possible.

2002-06-10  Akim Demaille  <akim@epita.fr>

	GCJ's parser requires the tokens to be defined before the prologue.

	* data/bison.simple: Output the token definition before the user's
	prologue.
	* tests/regression.at (Braces parsing, Duplicate string)
	(Mixing %token styles): Check the output from bison.
	(Early token definitions): New.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (symbol_user_token_number_set): Don't complain when
	assigning twice the same user number to a token, so that we can
	use it in...
	* src/lex.c (lex): here.
	Also use `symbol_class_set' instead of hand written code.
	* src/reader.c (parse_assoc_decl): Likewise.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* src/symtab.c, src/symtab.c (symbol_class_set)
	(symbol_user_token_number_set): New.
	* src/reader.c (parse_token_decl): Use them.
	Use a switch instead of ifs.
	Use a single argument.

2002-06-10  Akim Demaille  <akim@epita.fr>

	Remove `%thong' support as it is undocumented, unused, duplicates
	`%token's job, and creates useless e-mail traffic with people who
	want to know what it is, why it is undocumented, unused, and
	duplicates `%token's job.

	* src/reader.c (parse_thong_decl): Remove.
	* src/options.c (option_table): Remove "thong".
	* src/lex.h (tok_thong): Remove.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* src/symtab.c, src/symtab.c (symbol_type_set)
	(symbol_precedence_set): New.
	* src/reader.c (parse_type_decl, parse_assoc_decl): Use them.
	(value_components_used): Remove, unused.

2002-06-09  Akim Demaille  <akim@epita.fr>

	Move symbols handling code out of the reader.

	* src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken)
	(axiom): Move to...
	* src/symtab.h, src/symtab.c: here.

	* src/gram.c (start_symbol): Remove: use startsymbol->number.
	* src/reader.c (startval): Rename as...
	* src/symtab.h, src/symtab.c (startsymbol): this.
	* src/reader.c: Adjust.

	* src/reader.c (symbol_check_defined, symbol_make_alias)
	(symbol_check_alias_consistence, symbol_pack, symbol_translation)
	(token_translations_init)
	Move to...
	* src/symtab.c: here.
	* src/reader.c (packsymbols): Move to...
	* src/symtab.h, src/symtab.c (symbols_pack): here.
	* src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as
	argument.

2002-06-03  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_insert, muscle_find): Declarations,
	then statements.

2002-06-03  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
	structs with non literals.
	* src/scan-skel.l: never-interactive.
	* src/conflicts.c (enum conflict_resolution_e): No trailing
	comma.
	* src/getargs.c (usage): Split long literal strings.
	Reported by Hans Aberg.

2002-05-28  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Use C++ ostreams.
	(cdebug_): New member.

2002-05-28  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): Be sure to allocate enough room
	for `/' _and_ for `\0' in full_skeleton.

2002-05-28  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Catch up with bison.simple:
	2002-05-24  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
	and Paul Eggert  <eggert@twinsun.com>: `error' handing.
	2002-05-26  Akim Demaille  <akim@epita.fr>: stos_, token_number_,
	and popping traces.

2002-05-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/output.c (output_skeleton): Put an explicit path in front of
	the skeleton file name, rather than relying on the -I directory,
	to partially alleviate effects of having a skeleton file lying around
	in the current directory.

2002-05-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/conflicts.c (log_resolution): Correct typo:
	obstack_printf should be obstack_fgrow1.

2002-05-26  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_t): `solved_conflicts' is a new member.
	* src/LR0.c (new_state): Set it to 0.
	* src/conflicts.h, src/conflicts.c (print_conflicts)
	(free_conflicts, solve_conflicts): Rename as...
	(conflicts_print, conflicts_free, conflicts_solve): these.
	Adjust callers.
	* src/conflicts.c (enum conflict_resolution_e)
	(solved_conflicts_obstack): New, used by...
	(log_resolution): this.
	Adjust to attach the conflict resolution to each state.
	Complete the description with the precedence/associativity
	information.
	(resolve_sr_conflict): Adjust.
	* src/print.c (print_state): Output its solved_conflicts.
	* tests/conflicts.at (Unresolved SR Conflicts)
	(Solved SR Conflicts): Exercise --report=all.

2002-05-26  Akim Demaille  <akim@epita.fr>

	* src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
	* src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/reduce.c, src/state.h, src/symtab.h
	(token_number_t, item_number_as_token_number)
	(token_number_as_item_number, muscle_insert_token_number_table):
	Rename as...
	(symbol_number_t, item_number_as_symbol_number)
	(symbol_number_as_item_number, muscle_insert_symbol_number_table):
	these, since it is more appropriate.

2002-05-26  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
	`Error:' lines.
	* data/bison.simple (yystos) [YYDEBUG]: New.
	(yyparse) [YYDEBUG]: Display the symbols which are popped during
	error recovery.
	* tests/regression.at (Web2c Actions): Adjust: yystos is output now.

2002-05-25  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Debugging): Split into...
	(Tracing): this new section, its former contents, and...
	(Understanding): this new section.
	* src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
	by...
	(report_flag): this.
	Adjust all dependencies.
	(report_args, report_types, report_argmatch): New.
	(usage, getargs): Report/support -r, --report.
	* src/options.h
	(struct option_table_struct): Rename as..,
	(struct option_table_s): this.
	Rename the `set_flag' member to `flag' to match with getopt_long's
	struct.
	* src/options.c (option_table): Split verbose into an entry for
	%verbose, and another for --verbose.
	Support --report/-r, so remove -r from the obsolete --raw.
	* src/print.c: Attach full item sets and lookaheads reports to
	report_flag instead of trace_flag.
	* lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.

2002-05-24  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
	and Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple (yyparse): Correct error handling to conform to
	POSIX and yacc.  Specifically, after syntax error is discovered,
	do not reduce further before shifting the error token.
	Clean up the code a bit by removing the labels yyerrdefault,
	yyerrhandle, yyerrpop.
	* NEWS: Document the above.

2002-05-20  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* data/bison.simple (yyr1): Don't use yy_token_number_type as element
	type; it isn't always big enough, since it doesn't necessarily
	include non-terminals.
	(yytranslate): Expand definition of yy_token_number_type, so that
	the latter can be removed.
	(yy_token_number_type): Remove, only one use.
	* data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
	don't use TokenNumberType as element type.

	* tests/regression.at: Modify expected output to agree with change
	to yyr1 and yytranslate.

2002-05-13  Florian Krohm  <florian@edamail.fishkill.ibm.com>

	* src/reader.c (parse_action): Use copy_character instead of
	obstack_1grow.

2002-05-13  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Token definitions): Prototype yylex and
	yyerror.

2002-05-12  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>

	* src/scan-skel.l: Correct off-by-one error in handling of __oline__.
	* data/bison.simple (b4_sint_type, b4_uint_type): Correct to reflect
	32-bit arithmetic.
	* data/bison.c++ (b4_sint_type, b4_uint_type): Ditto.

2002-05-07  Akim Demaille  <akim@epita.fr>

	* tests/synclines.at: Be sure to prototype yylex and yyerror to
	avoid GCC warnings.

2002-05-07  Akim Demaille  <akim@epita.fr>

	Kill GCC warnings.

	* src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
	over the RHS of each rule.
	* src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
	* src/state.h (state_t): Member `nitems' is unsigned short.
	* src/LR0.c (get_state): Adjust.
	* src/reader.c (packgram): Likewise.
	* src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
	`Type'.
	(muscle_insert_int_table): Remove, unused.
	(prepare_rules): Remove `max'.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_firsts): Display of the symbol tags.
	(bitmatrix_print): Move to...
	* lib/bitsetv-print.h, lib/bitsetv-print.c (bitsetv_matrix_dump):
	here.
	* tests/sets.at (Nullable, Broken Closure, Firsts): Adjust.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_m4_output): Must return TRUE for
	hash_do_for_each.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state, get_state): Instead of using the global
	`kernel_size' and `kernel_base', have two new arguments:
	`core_size' and `core'.
	Adjust callers.

2002-05-06  Akim Demaille  <akim@epita.fr>

	* src/reader.c (packgram): No longer end `ritem' with a 0
	sentinel: it is not used.

2002-05-05  Akim Demaille  <akim@epita.fr>

	New experimental feature: display the lookaheads in the report and
	graph.

	* src/print (print_core): When --trace-flag, display the rules
	lookaheads.
	* src/print_graph.c (print_core): Likewise.
	Swap the arguments.
	Adjust caller.

2002-05-05  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (Many lookaheads): New test.

2002-05-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
	(GENERATE_MUSCLE_INSERT_TABLE): this.
	(output_int_table, output_unsigned_int_table, output_short_table)
	(output_token_number_table, output_item_number_table): Replace with...
	(muscle_insert_int_table, muscle_insert_unsigned_int_table)
	(muscle_insert_short_table, muscle_insert_token_number_table)
	(muscle_insert_item_number_table): these.
	Adjust all callers.
	(prepare_tokens): Don't free `translations', since...
	* src/reader.h, src/reader.c (grammar_free): do it.
	Move to...
	* src/gram.h, src/gram.c (grammar_free): here.
	* data/bison.simple, data/bison.c++: b4_token_number_max is now
	b4_translate_max.

2002-05-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_unsigned_int_table): New.
	(prepare_rules): `i' is unsigned.
	`prhs', `rline', `r2' are unsigned int.
	Rename muscle `rhs_number_max' as `rhs_max'.
	Output muscles `prhs_max', `rline_max', and `r2_max'.
	Free rline and r1.
	* data/bison.simple, data/bison.c++: Adjust to use these muscles
	to compute types instead of constant types.
	* tests/regression.at (Web2c Actions): Adjust.

2002-05-04  Akim Demaille  <akim@epita.fr>

	* src/symtab.h (SALIAS, SUNDEF): Rename as...
	(USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
	Adjust dependencies.
	* src/output.c (token_definitions_output): Be sure not to output a
	`#define 'a'' when fed with `%token 'a' "a"'.
	* tests/regression.at (Token definitions): New.

2002-05-03  Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple (b4_token_defines): Also define YYTOKENTYPE
	for K&R C.

2002-05-03  gettextize  <bug-gnu-gettext@gnu.org>

	* Makefile.am (SUBDIRS): Remove intl.
	(EXTRA_DIST): Add config/config.rpath.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (m4_if): Don't output empty enums.
	And actually, output valid enum definitions :(.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* configure.bat: Remove, completely obsolete.
	* Makefile.am (EXTRA_DIST): Adjust.
	Don't distribute config.rpath...
	* config/Makefile.am (EXTRA_DIST): Do it.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* configure.in (GETTEXT_VERSION): New.
	Suggested by Bruno Haible for the forthcoming Gettext 0.10.3.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (b4_token_enum): New.
	(b4_token_defines): Use it to output tokens both as #define and
	enums.
	Suggested by Paul Eggert.
	* src/output.c (token_definitions_output): Don't output spurious
	white spaces.

2002-05-03  Akim Demaille  <akim@epita.fr>

	* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.

2002-05-02  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Adapt expansion of $s and @s to the C++ parser.
	Update the stack class, give a try to deque as the default container.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yyparse): Do not implement @$ = @1.
	(YYLLOC_DEFAULT): Adjust to do it.
	* doc/bison.texinfo (Location Default Action): Fix.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_braces): Merge into...
	(parse_action): this.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* configure.in (ALL_LINGUAS): Remove.
	* po/LINGUAS, hr.po: New.

2002-05-02  Akim Demaille  <akim@epita.fr>

	Remove the so called hairy (semantic) parsers.

	* src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
	* src/gram.h, src/gram.c (semantic_parser): Remove.
	(rule_t): Remove the guard and guard_line members.
	* src/lex.h (token_t): remove tok_guard.
	* src/options.c (option_table): Remove %guard and %semantic_parser
	support.
	* src/output.c, src/output.h (guards_output): Remove.
	(prepare): Adjust.
	(token_definitions_output): Don't output the `T'
	tokens (???).
	(output_skeleton): Don't output the guards.
	* src/files.c, src/files.c (attrsfile): Remove.
	* src/reader.c (symbol_list): Remove the guard and guard_line
	members.
	Adjust dependencies.
	(parse_guard): Remove.
	* data/bison.hairy: Remove.
	* doc/bison.texinfo (Environment Variables): Remove occurrences of
	BISON_HAIRY.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_at, copy_dollarm parse_braces, parse_action)
	(parse_guard): Rename the formal argument `stack_offset' as
	`rule_length', which is more readable.
	Adjust callers.
	(copy_at, copy_dollar): Instead of outputting the hard coded
	values of $$, $n and so forth, output invocation to b4_lhs_value,
	b4_lhs_location, b4_rhs_value, and b4_rhs_location.
	Note: this patch partially drops `semantic-parser' support: it
	always does `rule_length - n', where semantic parsers ought to
	always use `-n'.
	* data/bison.simple, data/bison.c++ (b4_lhs_value)
	(b4_lhs_location, b4_rhs_value, and b4_rhs_location: New.

2002-05-02  Akim Demaille  <akim@epita.fr>

	* configure.in (AC_INIT): Bump to 1.49b.
	(AM_INIT_AUTOMAKE): Short invocation.

2002-05-02  Akim Demaille  <akim@epita.fr>

	Version 1.49a.

2002-05-01  Akim Demaille  <akim@epita.fr>

	* src/skeleton.h: Remove.

2002-05-01  Akim Demaille  <akim@epita.fr>

	* src/skeleton.h: Fix the #endif.
	Reported by Magnus Fromreide.

2002-04-26  Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL):
	Define if we define YYSTYPE and YYLTYPE, respectively.
	(YYCOPY): Fix [] quoting problem in the non-GCC case.

2002-04-25  Robert Anisko  <robert@lrde.epita.fr>

	* src/scan-skel.l: Postprocess quadrigraphs.

	* src/reader.c (copy_character): New function, used to output
	single characters while replacing `[' and `]' with quadrigraphs, to
	avoid troubles with M4 quotes.
	(copy_comment): Output characters with copy_character.
	(read_additionnal_code): Likewise.
	(copy_string2): Likewise.
	(copy_definition): Likewise.

	* tests/calc.at: Exercise M4 quoting.

2002-04-25  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space
	between `!' and the command.
	Reported by Paul Eggert.

2002-04-24  Robert Anisko  <robert@lrde.epita.fr>

	* tests/calc.at: Exercise prologue splitting.

	* data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
	`b4_post_prologue' instead of `b4_prologue'.

	* src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
	muscles.
	(output): Free pre_prologue_obstack and post_prologue_obstack.
	* src/files.h, src/files.c (attrs_obstack): Remove.
	(pre_prologue_obstack, post_prologue_obstack): New.
	* src/reader.c (copy_definition): Add a parameter to specify the
	obstack to fill, instead of using attrs_obstack unconditionally.
	(read_declarations): Pass pre_prologue_obstack to copy_definition if
	`%union' has not yet been seen, pass post_prologue_obstack otherwise.

2002-04-23  Paul Eggert  <eggert@twinsun.com>

	* data/bison.simple: Remove unnecessary commentary and white
	space differences from 1_29-branch.
	Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).

	(union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYCOPY,
	YYSTACK_RELOCATE): Do not define if yyoverflow is defined, or
	if this is a C++ parser and YYSTYPE or YYLTYPE has nontrivial
	constructors or destructors.

	(yyparse) [! defined YYSTACK_RELOCATE]: Do not relocate the stack.

2002-04-23  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
	* tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's
	location with columns.
	* tests/conflicts.at (%nonassoc and eof): Don't use `error.h'.
	All reported by Paul Eggert.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (dump_grammar): Move to...
	* src/gram.h, src/gram.c (grammar_dump): here.
	Be sure to separate long item numbers.
	Don't read the members of a rule's prec if its nil.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/output.c (table_size, table_grow): New.
	(MAXTABLE): Remove, replace uses with table_size.
	(pack_vector): Instead of dying when the table is too big, grow it.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* data/bison.simple (yyr1): Its type is that of a token number.
	* data/bison.c++ (r1_): Likewise.
	* tests/regression.at (Web2c Actions): Adjust.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/reader.c (token_translations_init): 256 is now the default
	value for the error token, i.e., it will be assigned another
	number if the user assigned 256 to one of her tokens.
	(reader): Don't force 256 to error.
	* doc/bison.texinfo (Symbols): Adjust.
	* tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR)
	(AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3
	etc. instead of 10, 20, 30 (which was used to `jump' over error
	(256) and undefined (2)).

2002-04-22  Akim Demaille  <akim@epita.fr>

	Propagate more token_number_t.

	* src/gram.h (token_number_as_item_number)
	(item_number_as_token_number): New.
	* src/output.c (GENERATE_OUTPUT_TABLE): New.
	Use it to create output_item_number_table and
	output_token_number_table.
	* src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
	* src/lex.c, src/nullable.c, src/output.c, src/print.c,
	* src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
	* src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.

2002-04-22  Akim Demaille  <akim@epita.fr>

	* src/output.h, src/output.c (get_lines_number): Remove.

2002-04-19  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Actions): Make clear that `|' is not the same
	as Lex/Flex'.
	(Debugging): More details about enabling the debugging features.
	(Table of Symbols): Describe $$, $n, @$, and @n.
	Suggested by Tim Josling.

2002-04-19  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Remove the uses of the obsolete @refill.

2002-04-10  Akim Demaille  <akim@epita.fr>

	* src/system.h: Rely on HAVE_LIMITS_H.
	Suggested by Paul Eggert.

2002-04-09  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the
	full stderr, and strip it according to the bison options, instead
	of composing the error message from different bits.
	This makes it easier to check for several error messages.
	Adjust all the invocations.
	Add an invocation exercising the error token.
	Add an invocation demonstrating a stupid error message.
	(_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0.
	Adjust the tests.
	Error message are for stderr, not stdout.

2002-04-09  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (error_token_number): Remove, use
	errtoken->number.
	* src/reader.c (reader): Don't specify the user token number (2)
	for $undefined, as it uselessly prevents using it.
	* src/gram.h (token_number_t): Move to...
	* src/symtab.h: here.
	(state_t.number): Is a token_number_t.
	* src/print.c, src/reader.c: Use undeftoken->number instead of
	hard coded 2.
	(Even though this 2 is not the same as above: the number of the
	undeftoken remains being 2, it is its user token number which
	might not be 2).
	* src/output.c (prepare_tokens): Rename the `maxtok' muscle with
	`user_token_number_max'.
	Output `undef_token_number'.
	* data/bison.simple, data/bison.c++: Use them.
	Be sure to map invalid yylex return values to
	`undef_token_number'.  This saves us from gratuitous SEGV.

	* tests/conflicts.at (Solved SR Conflicts)
	(Unresolved SR Conflicts): Adjust.
	* tests/regression.at (Web2c Actions): Adjust.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/.
	Adding #line.
	Remove the duplicate `typedefs'.
	(RhsNumberType): Fix the declaration and various other typos.
	Use __ofile__.
	* data/bison.simple: Use __ofile__.
	* src/scan-skel.l: Handle __ofile__.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* src/gram.h (item_number_t): New, the type of item numbers in
	RITEM.  Note that it must be able to code symbol numbers as
	positive number, and the negation of rule numbers as negative
	numbers.
	Adjust all dependencies (pretty many).
	* src/reduce.c (rule): Remove this `short *' pointer: use
	item_number_t.
	* src/system.h (MINSHORT, MAXSHORT): Remove.
	Include `limits.h'.
	Adjust dependencies to using SHRT_MAX and SHRT_MIN.
	(shortcpy): Remove.
	(MAXTABLE): Move to...
	* src/output.c (MAXTABLE): here.
	(prepare_rules): Use output_int_table to output rhs.
	* data/bison.simple, data/bison.c++: Adjust.
	* tests/torture.at (Big triangle): Move the limit from 254 to
	500.
	* tests/regression.at (Web2c Actions): Ajust.

	Trying with bigger grammars shows various phenomena: at 3000 (28Mb
	of grammar file) bison is killed by my system, at 2000 (12Mb) bison
	passes, but produces negative #line number, once fixed, GCC is
	killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
	C), it passes.
	* src/state.h (state_h): Code input lines on ints, not shorts.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_grammar): First reduce the nonterminals,
	and then the grammar.

2002-04-08  Akim Demaille  <akim@epita.fr>

	* src/system.h: No longer using strndup.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
	* src/output.c (output_table_data): Return the longest number.
	(prepare_tokens): Output `token_number_max').
	* data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
	New.
	Use them to define yy_token_number_type/TokenNumberType.
	Use this type for yytranslate.
	* tests/torture.at (Big triangle): Push the limit from 124 to
	253.
	* tests/regression.at (Web2c Actions): Adjust.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (Big triangle): New.
	(GNU AWK Grammar, GNU Cim Grammar): Move to...
	* tests/existing.at: here.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (nitems): Remove, it is an alias of
	nritems.
	Adjust dependencies.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/reader.c: Normalize increments to prefix form.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/reader.c, symtab.c: Remove debugging code.

2002-04-07  Akim Demaille  <akim@epita.fr>

	Rename all the `bucket's as `symbol_t'.

	* src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
	* src/reader.c, src/reader.h, src/reduce.c, src/state.h,
	* src/symtab.c, src/symtab.h (bucket): Rename as...
	(symbol_t): this.
	(symbol_list_new, bucket_check_defined, bucket_make_alias)
	(bucket_check_alias_consistence, bucket_pack, bucket_translation)
	(bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
	(buckets_new, buckets_free, buckets_do): Rename as...
	(symbol_list_new, symbol_check_defined, symbol_make_alias)
	(symbol_check_alias_consistence, symbol_pack, symbol_translation)
	(symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
	(symbols_new, symbols_free, symbols_do): these.

2002-04-07  Akim Demaille  <akim@epita.fr>

	Use lib/hash for the symbol table.

	* src/gram.c (ntokens): Initialize to 1, to reserve a slot for
	EOF.
	* src/lex.c (lex): Set the `number' member of new terminals.
	* src/reader.c (bucket_check_defined, bucket_make_alias)
	(bucket_check_alias_consistence, bucket_translation): New.
	(reader, grammar_free, readgram, token_translations_init)
	(packsymbols): Adjust.
	(reader): Number the predefined tokens.
	* src/reduce.c (inaccessable_symbols): Just use hard coded numbers
	for predefined tokens.
	* src/symtab.h (bucket): Remove all the hash table related
	members.
	* src/symtab.c (symtab): Replace by...
	(bucket_table): this.
	(bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
	(buckets_new, buckets_do): New.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
	(start_symbol, max_user_token_number, semantic_parser)
	(error_token_number): Initialize.
	* src/reader.c (grammar, start_flag, startval, typed, lastprec):
	Initialize.
	(reader): Don't.
	(errtoken, eoftoken, undeftoken, axiom): Extern.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_s): prec and precsym are now pointers
	to the bucket giving the priority/associativity.
	Member `associativity' removed: useless.
	* src/reduce.c, src/conflicts.c: Adjust.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c:
	Properly escape the symbols' TAG when outputting them.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (LA): Is a bitsetv, not bitset*.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/lalr.h, src/lalr.c (LAruleno): Replace with...
	(LArule): this, which is an array to rule_t*.
	* src/print.c, src/conflicts.c: Adjust.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): Rename `number' as `user_number'.
	`number' is a new member.
	Adjust dependencies.
	* src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.

2002-04-07  Akim Demaille  <akim@epita.fr>

	As a result of the previous patch, it is no longer needed
	to reorder ritem itself.

	* src/reduce.c (reduce_grammar_tables): Don't sort RITEM.

2002-04-07  Akim Demaille  <akim@epita.fr>

	Be sure never to walk through RITEMS, but use only data related to
	the rules themselves. RITEMS should be banished.

	* src/output.c (output_token_translations): Rename as...
	(prepare_tokens): this.
	In addition to `translate', prepare the muscles `tname' and
	`toknum', which were handled by...
	(output_rule_data): this.
	Remove, and move the remainder of its outputs into...
	(prepare_rules): this new routines, which also merges content from
	(output_gram): this.
	(prepare_rules): Be sure never to walk through RITEMS.
	(output_stos): Rename as...
	(prepare_stos): this.
	(output): Always invoke prepare_states, after all, just don't use it
	in the output if you don't need it.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state): Display `nstates' as the name of the
	newly created state.
	Adjust to initialize first_state and last_state if needed.
	Be sure to distinguish the initial from the final state.
	(new_states): Create the itemset of the initial state, and use
	new_state.
	* src/closure.c (closure): Now that the initial state has its
	items properly set, there is no need for a special case when
	creating `ruleset'.

	As a result, now the rule 0, reducing to $axiom, is visible in the
	outputs.  Adjust the test suite.

	* tests/conflicts.at (Solved SR Conflicts)
	(Unresolved SR Conflicts): Adjust.
	* tests/regression.at (Web2c Report, Rule Line Numbers): Idem.
	* tests/conflicts.at (S/R in initial): New.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
	the RHS of the rules.
	* src/output.c (output_gram): Likewise.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): `lhs' is now a pointer to the symbol's
	bucket.
	Adjust all dependencies.
	* src/reduce.c (nonterminals_reduce): Don't forget to renumber the
	`number' of the buckets too.
	* src/gram.h: Include `symtab.h'.
	(associativity): Move to...
	* src/symtab.h: here.
	No longer include `gram.h'.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (rules_rhs_length): New.
	(ritem_longest_rhs): Use it.
	* src/gram.h (rule_t): `number' is a new member.
	* src/reader.c (packgram): Set it.
	* src/reduce.c (reduce_grammar_tables): Move the useless rules at
	the end of `rules', and count them out of `nrules'.
	(reduce_output, dump_grammar): Adjust.
	* src/print.c (print_grammar): It is no longer needed to check for
	the usefulness of a rule, as useless rules are beyond `nrules + 1'.
	* tests/reduce.at (Reduced Automaton): New test.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (inaccessable_symbols): Fix a buglet: because of a
	lacking `+ 1' to nrules, Bison reported as useless a token if it
	was used solely to set the precedence of the last rule...

2002-04-07  Akim Demaille  <akim@epita.fr>

	* data/bison.c++, data/bison.simple: Don't output the current file
	name in #line, to avoid useless diffs between two identical
	outputs under different names.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/print.c, src/reader.c, src/reduce.c:
	Normalize loops to using `< nrules + 1', not `<= nrules'.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* TODO: Update.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/output.c, src/reader.c, src/symtab.c, src/symtab.h: Rename
	bucket.value as bucket.number.

2002-04-07  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/derives.c, src/gram.h, src/lalr.c,
	* src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/reduce.c: Let rule_t.rhs point directly to the
	RHS, instead of being an index in RITEMS.

2002-04-04  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo: Update copyright date.
	(Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII.
	(Symbols): Warn about running Bison in one character set,
	but compiling and/or running in an incompatible one.
	Warn about character code 256, too.

2002-04-03  Paul Eggert  <eggert@twinsun.com>

	* src/bison.data (YYSTACK_ALLOC): Depend on whether
	YYERROR_VERBOSE is nonzero, not whether it is defined.

	Merge changes from bison-1_29-branch.

2002-03-20  Paul Eggert  <eggert@twinsun.com>

	Merge fixes from Debian bison_1.34-1.diff.

	* configure.in (AC_PREREQ): 2.53.

2002-03-20  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (log_resolution): Argument `resolution' is const.

2002-03-19  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYCOPY): New macro.
	(YYSTACK_RELOCATE): Use it.
	Remove Type arg; no longer needed.  All callers changed.
	(yymemcpy): Remove; no longer needed.

	* Makefile.am (AUTOMAKE_OPTIONS): 1.6.
	* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.

2002-03-19  Akim Demaille  <akim@epita.fr>

	Test and fix the #line outputs.

	* tests/atlocal.at (GCC): New.
	* tests/synclines.at (AT_TEST_SYNCLINE): New macro.
	(Prologue synch line, %union synch line, Postprologue synch line)
	(Action synch line, Epilogue synch line): New tests.
	* src/reader.c (parse_union_decl): Define the muscle stype_line.
	* data/bison.simple, data/bison.c++: Use it.

2002-03-19  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
	(Solved SR Conflicts, %expect not enough, %expect right)
	(%expect too much): Move to...
	* tests/conflicts.at: this new file.

2002-03-19  Akim Demaille  <akim@epita.fr>

	* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
	* data/bison.simple, data/bison.c++: Handle the `#define' part, so
	that we can move to enums for instance.
	* src/output.c (token_definitions_output): Output a list of
	`token-name, token-number' instead of the #define.
	(output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.

2002-03-14  Akim Demaille  <akim@epita.fr>

	Use Gettext 0.11.1.

2002-03-09  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Make the user able to add members to the generated
	parser by subclassing.

2002-03-05  Robert Anisko  <robert@lrde.epita.fr>

	* src/reader.c (read_additionnal_code): `c' should be an integer, not
	a character.
	Reported by Nicolas Tisserand and Nicolas Burrus.

2002-03-04  Robert Anisko  <robert@lrde.epita.fr>

	* src/reader.c: Warn about lacking semi-colons, do not complain.

2002-03-04  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Remove a debug line.

2002-03-04  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Unmerge value as yylval and value as yyval.  Unmerge
	location as yylloc and location as yyloc.  Use YYLLOC_DEFAULT, and
	provide a default implementation.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
	* tests/output.at (AT_CHECK_OUTPUT): Likewise.
	* tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
	* tests/semantic.at (Parsing Guards): Similarly.
	* src/reader.at (readgram): Complain if the last rule is not ended
	with a semi-colon.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
	* src/closure.c: here.
	(set_firsts): Use bitsetv_reflexive_transitive_closure instead of
	RTC.
	* src/warshall.h, src/warshall.c: Remove.
	* tests/sets.at (Broken Closure): Adjust.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_skeleton): tempdir is const.
	bytes_read is unused.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
	* lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
	Update.
	From Michael Hayes.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): `r' is unused.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (Broken Closure): Add the ending `;'.
	* src/reader.at (readgram): Complain if a rule is not ended with a
	semi-colon.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
	(count_sr_conflicts): Use bitset_count.
	* src/reduce.c (inaccessable_symbols): Ditto.
	(bits_size): Remove.
	* src/warshall.h, src/warshall.c: Convert to bitsetv.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
	* src/reduce.c: Remove the `bitset_zero's following the
	`bitset_create's, as now it is performed by the latter.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
	* lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
	* lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
	latest sources from Michael.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/output.c (output): Don't free the grammar.
	* src/reader.c (grammar_free): New.
	* src/main.c (main): Call it and don't free symtab here.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
	before returning.
	Reported by Benoit Perrot.

2002-03-04  Akim Demaille  <akim@epita.fr>

	Use bitset operations when possible, not loops over bits.

	* src/conflicts.c (set_conflicts, count_sr_conflicts): Use
	bitset_or.
	* src/print.c (print_reductions): Use bitset_and, bitset_andn.
	* src/reduce.c (useless_nonterminals): Formatting changes.
	* src/warshall.c (TC): Use bitset_or.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
	* src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
	Ditto.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (F): Now a bitset*.
	Adjust all dependencies.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (shiftset, lookaheadset): Now bitset.
	Adjust all dependencies.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/L0.c, src/LR0.h (nstates): Be size_t.
	Adjust comparisons (signed vs unsigned).
	* src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
	bitset*.
	Adjust all dependencies.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c (firsts): Now, also a bitset.
	Adjust all dependencies.
	(varsetsize): Remove, now unused.
	* src/warshall.h, src/warshall.c: Now work on arrays of bitsets.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/print.c: Convert to use bitset.h, not hand coded iterations
	over ints.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/reduce.c: Convert to use bitset.h, not hand coded BSet.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* src/closure.c (ruleset): Be a bitset.
	(rulesetsize): Remove.

2002-03-04  Akim Demaille  <akim@epita.fr>

	* lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
	* lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
	* lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
	* src/closure.c (fderives): Be an array of bitsets.

2002-02-28  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Merge the two generated headers.  Insert a copyright
	notice in each output file.

2002-02-28  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Copy the prologue of bison.simple to fetch
	useful M4 definitions, such as b4_header_guard.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (version): Give the name of the authors, and use a
	translator friendly scheme for the bgr
	copyright notice.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* src/output.c (header_output): Remove, now handled completely via
	M4.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* m4/m4.m4: New, from CVS Autoconf.
	* configure.in: Invoke it.
	* src/output.c (output_skeleton): Use its result instead of the
	hard coded name.

2002-02-25  Akim Demaille  <akim@epita.fr>

	* lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
	Fileutils 4.1.5.
	* configure.in: Invoke UTILS_FUNC_MKSTEMP.
	* src/output.c (output_skeleton): Use mkstemp to create a real
	temporary file.
	Move the filling of `skeleton' and its muscle to...
	(prepare): here.
	(output): Move the definition of the prologue muscle to...
	(prepare): here.
	* src/system.h (DEFAULT_TMPDIR): New.

2002-02-14  Paul Eggert  <eggert@twinsun.com>

	Remove the support for C++ namespace cleanliness; it was
	causing more problems than it was curing, since it didn't work
	properly on some nonstandard C++ compilers.  This can wait
	for a proper C++ parser.

	* NEWS: Document this.
	* doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
	of C++, as it's treated like C now.
	* src/bison.simple (YYSTD): Remove.
	(YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
	Treat C++ just like Standard C instead of trying to support
	namespace cleanliness.

2002-02-14  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (else): Adjust to Andreas' change.

2002-02-14  Akim Demaille  <akim@epita.fr>

	* lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.

2002-02-13  Andreas Schwab  <schwab@suse.de>

	* src/output.c (output_rule_data): Don't output NULL, it might
	not be defined yet.

2002-02-11  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
	(Copyright notice): Update.

2002-02-11  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (%nonassoc and eof): Don't include
	nonportable headers.

2002-02-08  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Correct error recovery.  Make the user able to
	initialize the starting location.

2002-02-07  Akim Demaille  <akim@epita.fr>

	* tests/input.at: New.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Replace some direct m4 expansions by constants.  Be
	more consistent when naming methods and variables.  Put preprocessor
	directives around tables only needed for debugging.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
	C++ parsers.
	(yy::b4_name::parse): Use print_.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (yy::b4_name::parse): Error recovery is back.

2002-02-07  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
	C++ parsers.
	(yy::b4_name::parse): Build verbose error messages, and use error_.

2002-02-06  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Fix m4 quoting in comments.

2002-02-06  Robert Anisko  <robert@lrde.epita.fr>

	* data/bison.c++: Adjust the parser code.  Fix some muscles that were
	not expanded by m4.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* data/bison.c++: Adjust to the M4 back end.
	More is certainly needed.

2002-02-05  Akim Demaille  <akim@epita.fr>

	Give a try to M4 as a back end.

	* lib/readpipe.c: New, from wdiff.
	* src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
	BISON_HAIRY.
	* src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
	specific values.  Now it is m4 that performs the lookup.
	* src/parse-skel.y: Remove.
	* src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
	* src/output.c (actions_output, guards_output)
	(token_definitions_output): No longer keeps track of the output
	line number, hence remove the second argument.
	(guards_output): Check against the guard member of a rule, not the
	action member.
	Adjust callers.
	(output_skeleton): Don't look for the skeleton location, let m4 do
	that.
	Create `/tmp/muscles.m4'.  This is temporary, a proper temporary
	file will be used.
	Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
	(prepare): Given that for the time being changesyntax is not
	usable in M4, rename the muscles using `-' to `_'.
	Define `defines_flag', `output_parser_name' and `output_header_name'.
	* src/output.h (actions_output, guards_output)
	(token_definitions_output): Adjust prototypes.
	* src/scan-skel.l: Instead of scanning the skeletons, it now
	processes the output of m4: `__oline__' and `#output'.
	* data/bison.simple: Adjust to be used by M4(sugar).
	* tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
	to date.
	* tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
	instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
	* data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
	shamelessly stolen from CVS Autoconf.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
	* configure.in: Check for the declarations of free and malloc.
	* src/muscle_tab.c: Adjust.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_init): Don't default to NULL muscle
	which have no values.

2002-02-05  Akim Demaille  <akim@epita.fr>

	* src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
	* data/: here.

2002-01-29  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSIZE_T): Do not define merely because
	YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
	On some platforms, <alloca.h> does not declare YYSTD (size_t).

2002-01-27  Akim Demaille  <akim@epita.fr>

	Fix `%nonassoc and eof'.

	* src/state.c (errs_dup): Aaaah!  The failure was due to bytes
	which were not properly copied!  Replace
	memcpy (res->errs, src->errs, src->nerrs);
	with
	memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
	!!!
	* tests/regression.at (%nonassoc and eof): Adjust to newest
	Autotest: `.' is not in the PATH.

2002-01-27  Akim Demaille  <akim@epita.fr>

	* tests/sets.at (AT_EXTRACT_SETS): New.
	(Nullable): Use it.
	(Firsts): New.

2002-01-26  Akim Demaille  <akim@epita.fr>

	* tests/actions.at, tests/calc.at, tests/headers.at,
	* tests/torture.at: Adjust to the newest Autotest which no longer
	forces `.' in the PATH.

2002-01-25  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (%nonassoc and eof): New.
	Suggested by Robert Anisko.

2002-01-24  Akim Demaille  <akim@epita.fr>

	Bison dumps core when trying to complain about broken input files.
	Reported by Cris van Pelt.

	* src/lex.c (parse_percent_token): Be sure to set token_buffer.
	* tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
	into...
	(Invalid inputs): Strengthen: exercise parse_percent_token.

2002-01-24  Robert Anisko  <robert.anisko@epita.fr>

	* src/Makefile.am: Add bison.c++.
	* src/bison.c++: New skeleton.

2002-01-21  Paolo Bonzini <bonzini@gnu.org>

	* po/it.po: New.

2002-01-21  Kees Zeelenberg  <kzlg@users.sourceforge.net>

	* src/files.c (skeleton_find) [MSDOS]: Fix cp definition.

2002-01-20  Marc Autret  <marc@gnu.org>

	* src/files.c (compute_output_file_names): Fix

2002-01-20  Marc Autret  <marc@gnu.org>

	* tests/output.at: New test.
	* src/files.c (compute_base_names): Don't map extensions when
	the YACC flag is set, use defaults.
	Reported by Evgeny Stambulchik.

2002-01-20  Marc Autret  <marc@gnu.org>

	* src/system.h: Need to define __attribute__ away for non-GCC
	compilers as well (i.e., the vendor C compiler).
	Suggested by Albert Chin-A-Young.

2002-01-11  Tim Van Holder  <tim.van.holder@pandora.be>

	* lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
	canonical definition.
	* src/system.h: Use the canonical definition for PARAMS (avoids
	a conflict with the macro from lib/hash.h).

2002-01-11  Akim Demaille  <akim@epita.fr>

	* configure.in: Use AC_FUNC_STRNLEN.
	Fixes the failures observed on AIX 4.3 by H.Merijn Brand.

2002-01-09  Akim Demaille  <akim@epita.fr>

	* src/files.c, src/files.h (output_infix): New.
	(tab_extension): Remove.
	(compute_base_names): Compute the former, drop the latter.
	* src/output.c (prepare): Insert the muscles `output-infix', and
	`output-suffix'.
	* src/parse-skel.y (string, string.1): New.
	(section.header): Use it.
	(section.yacc): Remove.
	(prefix): Remove too.
	* src/scan-skel.l: Adjust.
	* src/bison.simple, src/bison.hairy: Adjust.

2002-01-09  Akim Demaille  <akim@epita.fr>

	* configure.in (WERROR_CFLAGS): Compute it.
	* src/Makefile.am (CFLAGS): Pass it.
	* tests/atlocal.in (CFLAGS): Idem.
	* src/files.c: Fix a few warnings.
	(get_extension_index): Remove, unused.

2002-01-08  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (AS_FILE_NAME): New.
	(getargs): Use it to convert DOSish file names.
	* src/files.c (base_name): Rename as full_base_name to avoid
	clashes with `base_name ()'.
	(filename_split): New.
	(compute_base_names): N-th rewrite, using filename_split.

2002-01-08  Akim Demaille  <akim@epita.fr>

	* lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
	New, stolen from the Fileutils 4.1.
	* lib/Makefile.am (libbison_a_SOURCES): Adjust.
	* configure.in: Check for the presence of memrchr, and of its
	prototype.

2002-01-07  Tim Van Holder  <tim.van.holder@pandora.be>

	* lib/hash.h (__P): Added definition for this macro.
	* src/Makefile.am: Add parse-skel.c and scan-skel.c to
	BUILT_SOURCES, to ensure they are generated first.
	* src/parse-skel.y: Use YYERROR_VERBOSE instead of
	%error-verbose to allow bootstrapping with bison 1.30x.

2002-01-06  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_braces): Don't fetch the next char, the
	convention is to fetch on entry.
	* tests/torture.at (GNU Cim Grammar): Reintroduce their weird
	'switch' without a following semicolon.
	* tests/regression.at (braces parsing): New.

2002-01-06  Akim Demaille  <akim@epita.fr>

	Bison is dead wrong in its RR conflict reports.

	* tests/torture.at (GNU Cim Grammar): New.
	* src/conflicts.c (count_rr_conflicts): Fix.

2002-01-06  Akim Demaille  <akim@epita.fr>

	Creating package.m4 from configure.ac causes too many problems.

	* tests/Makefile.am (package.m4): Create it by hand,
	AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.

2002-01-06  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (bison_SOURCES): Add parse-skel.h and
	skeleton.h.

2002-01-04  Paul Eggert  <eggert@twinsun.com>

	* doc/bison.texinfo (Debugging):
	Remove YYSTDERR; it's no longer defined or used.
	Also, s/cstdio.h/cstdio/.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* src/parse-skel.y (process_skeleton): Don't bind the parser's
	tracing code to --trace, wait for a better --trace option, with
	args.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTDERR): Remove, replace `stderr'.
	The ISO C++ standard is extremely clear about it: stderr is
	considered a macro, not a regular symbol (see table 94 `Header
	<cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
	Therefore std:: does not apply to it.  It still does with fprintf.
	Also, s/cstdio.h/cstdio/.

2002-01-03  Akim Demaille  <akim@epita.fr>

	* lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
	for non system headers.

2002-01-02  Akim Demaille  <akim@epita.fr>

	Equip the skeleton chain with location tracking, runtime trace,
	pure parser and scanner.

	* src/parse-skel.y: Request a pure parser, locations, and prefix
	renaming.
	(%union): Having several members with the same type does not help
	type mismatches, simplify.
	(YYPRINT, yyprint): New.
	(yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
	(skel_error): this.
	Handle locations.
	* src/scan-skel.l: Adjust to these changes.
	* src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
	(LOCATION_PRINT, skel_control_t): New.

2001-12-30  Akim Demaille  <akim@epita.fr>

	* src/parse-skel.y: Get rid of the shift/reduce conflict:
	replace `gb' with BLANKS.
	* src/scan-skel.l: Adjust.

2001-12-30  Akim Demaille  <akim@epita.fr>

	* src/system.h: We don't need nor want bcopy.
	Throw away MS-DOS crap: we don't need getpid.
	* configure.in: We don't need strndup.  It was even causing
	problems: because Flex includes the headers *before* us,
	_GNU_SOURCE is not defined by config.h, and therefore strndup was
	not visible.
	* lib/xstrndup.c: New.
	* src/scan-skel.l: Use it.
	Be sure to initialize yylval.muscle member when scanning a MUSCLE.
	* src/parse-skel.y: Use %directives instead of #defines.

2001-12-30  Akim Demaille  <akim@epita.fr>

	* src/skeleton.h: New.
	* src/output.c (output_parser, output_master_parser): Remove, dead
	code.
	* src/output.h (get_lines_number, actions_output, guards_output)
	(token_definitions_output): Prototype them.
	* src/parse-skel.y: Add the license notice.
	Include output.h and skeleton.h.
	(process_skeleton): Returns void, and takes a single parameter.
	* src/scan-skel.l: Add the license notice.
	Include skeleton.h.
	Don't use %option yylineno: it seems that then Flex imagines
	REJECT has been used, and therefore it won't reallocate its
	buffers (which makes no other sense to me than a bug).  It results
	in warnings for `unused: yy_flex_realloc'.

2001-12-30  Robert Anisko  <robert.anisko@epita.fr>

	* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
	(MUSCLE_INSERT_PREFIX): ...to there.
	* src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
	(MUSCLE_INSERT_PREFIX): Move from here...

	* src/bison.hairy: Add a section directive.  Put braces around muscle
	names.  This parser skeleton is still broken, but Bison should not
	choke on a bad muscle 'syntax'.
	* src/bison.simple: Add a section directive.  Put braces around muscle
	names.

	* src/files.h (strsuffix, stringappend): Add declarations.
	(tab_extension): Add declaration.
	(short_base_name): Add declaration.

	* src/files.c (strsuffix, stringappend): No longer static.  These
	functions are used in the skeleton parser.
	(tab_extension): New.
	(compute_base_names): Use the computations done in this function
	to guess if the generated parsers should have '.tab' in their
	names.
	(short_base_name): No longer static.

	* src/output.c (output_skeleton): New.
	(output): Disable call to output_master_parser, and give a try to
	a new skeleton handling system.
	(guards_output, actions_output): No longer static.
	(token_definitions_output, get_lines_number): No longer static.

	* configure.in: Use AM_PROG_LEX and AC_PROG_YACC.

	* src/Makefile.am (bison_SOURCES): Add scan-skel.l and
	parse-skel.y.

	* src/parse-skel.y: New file.
	* src/scan-skel.l: New file.

2001-12-29  Akim Demaille  <akim@epita.fr>

	%name-prefix is broken.

	* src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
	Adjust all dependencies.
	* tests/headers.at (export YYLTYPE): Strengthen this test: use
	%name-prefix.

	Renaming yylval but not yylloc is not consistent.  Now we do.

	* src/bison.simple: Prefix yylloc if used.
	* doc/bison.texinfo (Decl Summary): Document that.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Promote `%long-directive' over
	`%long_directive'.
	Remove all references to fixed-output-files, yacc is enough.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
	user prologue.  These are defaults.
	* tests/actions.at (Mid-rule actions): Make sure the user can
	define YYDEBUG and YYERROR_VERBOSE.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/output.c (header_output): Don't forget to export YYLTYPE and
	yylloc.
	* tests/headers.at (export YYLTYPE): New, make sure it does.
	* tests/regression.at (%union and --defines, Invalid CPP headers):
	Move to...
	* tests/headers.at: here.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_s): Member `assoc' is of type `associativity'.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/actions.at (Mid-rule actions): Output on a single line
	instead of several.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Formatting changes.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Don't store the token defs in a muscle, just be ready to output it
	on command.  Now possible via `symbols'.  Fixes a memory leak.

	* src/output.c (token_definitions_output): New.
	(output_parser, header_output): Use it.
	* src/reader.c (symbols_save): Remove.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/bison.simple: Do not provide a default for YYSTYPE and
	YYLTYPE before the user's prologue.  Otherwise it's hardly... a
	default.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Mid-rule actions are simply... ignored!

	* src/reader.c (readgram): Be sure to attach mid-rule actions to
	the empty-rule associated to the dummy symbol, not to the host
	rule.
	* tests/actions.at (Mid-rule actions): New.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Memory leak.

	* src/reader.c (reader): Free grammar.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Memory leak.

	* src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
	since it allocates it for each state, although only one is needed.
	(allocate_storage): Do it here.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/options.h, src/options.c (create_long_option_table): Rename
	as...
	(long_option_table_new): this, with a clearer prototype.
	(percent_table): Remove, unused,
	* src/getargs.c (getargs): Adjust.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
	* src/print.c, src/print_graph.c, src/state.h: Rename state_table
	as states.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (build_relations): Rename `states' as `states1'.
	Sorry, I don't understand exactly what it is, no better name...

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
	* src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
	* src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
	as rules.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
	ago.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c, src/reader.h (user_toknums): Remove.
	Adjust all users to use symbols[i]->user_token_number.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.c, src/gram.h (sprec, sassoc): Remove.
	Adjust all users to use symbols[i]->prec or ->assoc.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c, src/reader.h (tags): Remove.
	Adjust all users to use symbols[i]->tag.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.h, src/gram.c (symbols): New, similar to state_table
	and rule_table.
	* src/reader.c (packsymbols): Fill this table.
	Drop sprec.
	* src/conflicts.c (resolve_sr_conflict): Adjust.
	* src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
	single table.
	Use symbols[i]->tag instead of tags[i].

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
	In addition, put a comment in there, to replace...
	* tests/regression.at (%union and C comments): Remove.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Web2c Actions): Blindly move the actual
	output as expected output.  The contents *seem* right to me, but I
	can't pretend reading perfectly parser tables...  Nonetheless, all
	the other tests pass correctly, the table look OK, even though the
	presence of `$axiom' is to be noted: AFAICS it is useless (but
	harmless).

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Don't add the rule 0 if there were no
	rules read.  In other words, add it _after_ having performed
	grammar sanity checks.
	Fixes the `tests/regression.at (Invalid input: 1)' Failure.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
	visible, and some states have now a different number.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Bind the initial rule's lineno to that
	of the first rule.
	* tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
	(Solved SR Conflicts): Adjust rule 0's line number.

2001-12-29  Akim Demaille  <akim@epita.fr>

	Fix the `GAWK Grammar' failure.

	* src/LR0.c (final_state): Initialize to -1 so that we do compute
	the reductions of the first state which was mistakenly confused
	with the final state because precisely final_state was initialized
	to 0.
	* tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
	now noticed by Bison.
	* tests/regression.at (Rule Line Numbers): Adjust: state 0 does
	have a reduction on $default.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
	rule line numbers.
	* src/closure.c (print_closure): Likewise.
	* src/derives.c (print_derives): Likewise.
	* tests/sets.at (Nullable): Adjust: the rule numbers are correct
	now.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (lookaheads_print): New.
	(lalr): Call it when --trace-flag.
	* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
	are dumped.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
	when walking through ritem, even via rule->rhs.
	* src/reduce.c (dump_grammar, useful_production, reduce_output)
	(useful_production, useless_nonterminals): Likewise.
	(reduce_grammar_tables): Likewise, plus update nritems.
	* src/nullable.c (set_nullable): Likewise.
	* src/lalr.c (build_relations): Likewise.
	* tests/sets.at (Nullable): Adjust.
	Fortunately, now, the $axiom is no longer nullable.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (generate_states): Use nritems, not nitems, nor using
	the 0-sentinel.
	* src/gram.c (ritem_longest_rhs): Likewise.
	* src/reduce.c (nonterminals_reduce): Likewise.
	* src/print_graph.c (print_graph): Likewise.
	* src/output.c (output_rule_data): Likewise.
	* src/nullable.c (set_nullable):  Likewise.

2001-12-29  Akim Demaille  <akim@epita.fr>

	* src/output.c: Comment changes.

2001-12-27  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
	cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
	Sparc, as they were causing more porting problems than the
	(minor) performance improvement was worth.

	Also, catch up with 1.31's YYSTD.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_gram): Rely on nritems, not the
	0-sentinel.  See below.
	Use -1 as separator, not 0.
	* src/bison.simple (yyparse): Subtract 1 to the rule numbers.
	Rely on -1 as separator in yyrhs, instead of 0.
	* tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
	twice `Now at end of input', therefore there are two lines less to
	expect.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Unresolved SR Conflicts):
	(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
	below.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state): Recognize the final state by the fact it
	is reached by eoftoken.
	(insert_start_shifting_state, insert_eof_shifting_state)
	(insert_accepting_state, augment_automaton): Remove, since now
	these states are automatically computed from the initial state.
	(generate_states): Adjust.
	* src/print.c: When reporting a rule number to the user, subtract
	1, so that the axiom rule is rule 0, and the first user rule is 1.
	* src/reduce.c: Likewise.
	* src/print_graph.c (print_core): For the time being, just as for
	the report, depend upon --trace-flags to dump the full set of
	items.
	* src/reader.c (readgram): Once the grammar read, insert the rule
	0: `$axiom: START-SYMBOL $'.
	* tests/set.at: Adjust: rule 0 is now displayed, and since the
	number of the states has changed (the final state is no longer
	necessarily the last), catch up.

2001-12-27  Akim Demaille  <akim@epita.fr>

	Try to make the use of the eoftoken valid.  Given that its value
	is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
	is used instead of > 0 where appropriate, (ii), depend upon nritems
	instead of the 0-sentinel.

	* src/gram.h, src/gram.c (nritems): New.
	Expected to be duplication of nitems, but for the time being...
	* src/reader.c (packgram): Assert nritems and nitems are equal.
	* src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
	* src/closure.c (print_closure, print_fderives): Likewise.
	* src/gram.c (ritem_print): Likewise.
	* src/print.c (print_core, print_grammar): Likewise.
	* src/print_graph.c: Likewise.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): If there are complains after grammar
	reductions, then output the report anyway if requested, then die.
	* src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
	* src/reader.c (eoftoken): New.
	(parse_token_decl): If the token being defined has value `0', it
	is the eoftoken.
	(packsymbols): No longer hack `tags' to insert `$' by hand.
	Be sure to preserve the value of the eoftoken.
	(reader): Make sure eoftoken is defined.
	Initialize nsyms to 0: now eoftoken is created just like the others.
	* src/print.c (print_grammar): Don't special case the eof token.
	* src/regression.at: Adjust: `$' has value 0, not -1, which was a
	lie anyway, albeit pleasant.
	* tests/calc.at: Exercise error messages with eoftoken.
	Change the grammar so that empty input is invalid.
	Adjust expectations.
	When yyungeting, be sure to use a valid yylloc: use last_yylloc.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* configure.in: Check the protos of strchr ans strspn.
	Replace strchr if needed.
	* src/system.h: Provide the protos of strchr, strspn and memchr if
	missing.
	* lib/strchr.c: New.
	* src/reader.c (symbols_save): Use strchr.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/print.c, src/print_graph.c (escape): New.
	Use it to quote the TAGS outputs.
	* src/print_graph.c (print_state): Now errors are in red, and
	reductions in green.
	Prefer high to wide: output the state number on a line of its own.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (reductions_new): New.
	* src/LR0.c (set_state_table): Let all the states have a
	`reductions', even if reduced to 0.
	(save_reductions): Adjust.
	* src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
	* src/print.c (print_reductions, print_actions): Adjust.
	* src/output.c (action_row): Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/state.h, src/state.c (errs_new, errs_dup): New.
	* src/LR0.c (set_state_table): Let all the states have an errs,
	even if reduced to 0.
	* src/print.c (print_errs, print_reductions): Adjust.
	* src/output.c (output_actions, action_row): Adjust.
	* src/conflicts.c (resolve_sr_conflict): Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
	* src/print.c: here.
	(lookaheadset, shiftset): New, used as additional storage by
	print_reductions.
	(print_results): Adjust.
	(print_shifts, print_gotos, print_errs): New, extracted from...
	(print_actions): here.
	* src/print_graph.c (print_actions): Remove dead code.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
	`$n' and `@n'.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
	(build_relations): Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_goto_map): Remove a wrong but benign loop
	duplication.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (packgram): Catch nitems overflows.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/files.c, src/files.h (guard_obstack): Remove.
	* src/output.c (output): Adjust.
	* src/reader.c (parse_braces): New, factoring...
	(copy_action, copy_guard): these two which are renamed as...
	(parse_action, parse_guard): these.
	As a voluntary consequence, using braces around guards is now
	mandatory.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): `guard' and `guard_line' are new members.
	* src/reader.c (symbol_list): `guard' and `guard_line' are new
	members.
	(symbol_list_new): Adjust.
	(copy_action): action_line is the first line, not the last.
	(copy_guard): Just as for actions, store the `action' only, not
	the switch/case/break flesh.
	Don't parse the user action that might follow the guard, let...
	(readgram): do it, i.e., now, there can be an action after a
	guard.
	In other words the guard is just explicitly optional.
	(packgram): Adjust.
	* src/output.c (guards_output): New.
	(output_parser): Call it when needed.
	(output): Also free the guard and attrs obstacks.
	* src/files.c, src/files.h (obstack_save): Remove.
	(output_files): Remove.
	As a result, if one needs the former `.act' file, using an
	appropriate skeleton which requires actions and guards is now
	required.
	* src/main.c (main): Adjust.
	* tests/semantic.at: New.
	* tests/regression.at: Use `input.y' as input file name.
	Avoid 8+3 problems by requiring input.c when the test needs the
	parser.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/reader.c (symbol_list_new): Be sure to initialize all the
	fields.

2001-12-27  Akim Demaille  <akim@epita.fr>

	All the hacks using a final pseudo state are now useless.

	* src/LR0.c (set_state_table): state_table holds exactly nstates.
	* src/lalr.c (nLA): New.
	(initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
	instead of lookaheadsp from the pseudo state (nstate + 1).

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row, token_actions): Use a state_t instead
	of a integer, and nlookaheads instead of the following state's
	lookaheadsp.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (log_resolution, flush_shift)
	(resolve_sr_conflict, set_conflicts, solve_conflicts)
	(count_sr_conflicts, count_rr_conflicts, conflicts_output)
	(conflicts_print, print_reductions): Use a state_t instead of an
	integer when referring to a state.
	As much as possible, depend upon nlookaheads, instead of the
	`lookaheadsp' member of the following state (since lookaheads of
	successive states are successive, the difference between state n + 1
	and n served as the number of lookaheads for state n).
	* src/lalr.c (add_lookback_edge): Likewise.
	* src/print.c (print_core, print_actions, print_state)
	(print_results): Likewise.
	* src/print_graph.c (print_core, print_actions, print_state)
	(print_graph): Likewise.
	* src/conflicts.h: Adjust.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/bison.hairy: Formatting/comment changes.
	ANSIfy.
	Remove `register' indications.
	Add plenty of `static'.

2001-12-27  Akim Demaille  <akim@epita.fr>

	* src/output.c (prepare): Drop the muscle `ntbase' which
	duplicates ntokens.
	* src/bison.simple: Formatting/comment changes.
	Use YYNTOKENS only, which is documented, but not YYNTBASE, which
	is an undocumented synonym.

2001-12-22  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_table_data): Change the prototype to use
	`int' for array ranges: some invocations do pass an int, not a
	short.
	Reported by Wayne Green.

2001-12-22  Akim Demaille  <akim@epita.fr>

	Some actions of web2c.y are improperly triggered.
	Reported by Mike Castle.

	* src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
	* tests/regression.at (Web2c): Rename as...
	(Web2c Report): this.
	(Web2c Actions): New.

2001-12-22  Akim Demaille  <akim@epita.fr>

	Reductions in web2c.y are improperly reported.
	Reported by Mike Castle.

	* src/conflicts.c (print_reductions): Fix.
	* tests/regression.at (Web2c): New.

2001-12-18  Akim Demaille  <akim@epita.fr>

	Some host fail on `assert (!"foo")', which expands to
	((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
	Reported by Nelson Beebee.

	* src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
	`#define it_succeeded 0' and `assert (it_succeeded)'.

2001-12-17  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Don't hard code the skeleton line and filename.
	* src/output.c (output_parser): Rename 'line' as 'output_line'.
	New line counter 'skeleton_line' (skeleton-line muscle).

2001-12-17  Paul Eggert  <eggert@twinsun.com>

	* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
	YYDEBUG must be defined to a nonzero value.

	* src/bison.simple (yytname): Do not assume that the user defines
	YYDEBUG to a properly parenthesized expression.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/state.h (state_t): Rename lookaheads as lookaheadsp.
	nlookaheads is a new member.
	Adjust all users.
	* src/lalr.h (nlookaheads): Remove this orphan declaration.
	* src/lalr.c (initialize_lookaheads): Set nlookaheads for each
	state.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/files.h, src/files.c (open_files, close_files): Remove.
	* src/main.c (main): Don't open/close files, nor invoke lex_free,
	let...
	* src/reader.c (reader): Do it.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Formatting changes.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (flush_shift): Also adjust lookaheadset.
	(flush_reduce): New.
	(resolve_sr_conflict): Adjust.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_obstack): Be static and rename as...
	(format_obstack): this, to avoid any confusion with files.c's
	output_obstack.
	* src/reader.h (muscle_obstack): Move to...
	* src/output.h: here, since it's defined in output.c.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row, save_column, default_goto)
	(sort_actions, matching_state, pack_vector): Better variable
	locality.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/output.c: Various formatting changes.

2001-12-17  Akim Demaille  <akim@epita.fr>

	* src/files.c (output_files): Free the output_obstack.
	* src/main.c (main): Call print and print_graph conditionally.
	* src/print.c (print): Work unconditionally.
	* src/print_graph.c (print_graph): Work unconditionally.
	* src/conflicts.c (log_resolution): Output only if verbose_flag.

2001-12-16  Marc Autret  <autret_m@epita.fr>

	* src/output.c (actions_output): Fix. When we use %no-lines,
	there is one less line per action.

2001-12-16  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Remove a useless #line directive.
	s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
	* src/output.c (get_lines_number): New.
	(output_parser): Adjust, now takes care about the lines of a
	output muscles.
	Fix line numbering.
	(actions_output): Computes the number of lines taken by actions.
	(output_master_parser): Insert new skeleton which is the name of
	the output parser file name.

2001-12-15  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.

2001-12-15  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_gram): Keep track of the hairy one.

2001-12-15  Akim Demaille  <akim@epita.fr>

	Make `make distcheck' work.

	* lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
	system.h which uses libgettext.h.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (set_nullable): Useless rules must be skipped,
	otherwise, since we range over their symbols, we might look at a
	nonterminal which no longer ``exists'', i.e., it is not counted in
	`nvars', hence we overflow our arrays.

2001-12-15  Akim Demaille  <akim@epita.fr>

	The header can also be produced directly, without any obstack!
	Yahoo!

	* src/files.c, src/files.h (defines_obstack): Remove.
	(compute_header_macro): Global.
	(defines_obstack_save): Remove.
	* src/reader.c (parse_union_decl): No longer output to
	defines_obstack: its content can be found in the `stype' muscle
	anyway.
	(output_token_translations): Merge into...
	(symbols_output): this.
	Rename as...
	(symbols_save): this.
	(reader): Adjust.
	* src/output.c (header_output): New.
	(output): Call it.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_union_decl): Instead of handling two obstack
	simultaneously, use one to define the `stype' muscle, and use the
	value of the latter to fill defines_obstack.
	(copy_comment): Remove.
	(copy_comment2): Work for a single obstack.
	Rename as...
	(copy_comment): this.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/lex.c, src/lex.h (xgetc): No longer static.
	* src/reader.c (parse_union_decl): Revamp.

2001-12-15  Akim Demaille  <akim@epita.fr>

	Still making progress in separating Bison into (i) input, (ii)
	process, (iii) output: now we can directly output the parser file
	without using table_obstack at all.

	* src/files.c, src/files.h (table_obstack): Bye bye.
	(parser_file_name): New.
	* src/files.c (compute_output_file_names): Compute it.
	* src/output.c (actions_output, output_parser)
	(output_master_parser): To a file instead of an obstack.

2001-12-15  Akim Demaille  <akim@epita.fr>

	Attach actions to rules, instead of pre-outputting them to
	actions_obstack.

	* src/gram.h (rule_t): action and action_line are new members.
	* src/reader.c (symbol_list): Likewise.
	(copy_action): Save the actions within the rule.
	(packgram): Save them in rule_table.
	* src/output.c (actions_output): New.
	(output_parser): Use it on `%%actions'.
	(output_rule_data): Don't free rule_table.
	(output): Do it.
	(prepare): Don't save the `action' muscle.
	* src/bison.simple: s/%%action/%%actions/.

2001-12-15  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_action): When --yacc, don't append a `;'
	to the user action: let it fail if lacking.
	Suggested by Arnold Robbins and Tom Tromey.

2001-12-14  Akim Demaille  <akim@epita.fr>

	* src/lex.c (literalchar): Simply return the char you decoded, non
	longer mess around with obstacks and int pointers.
	Adjust all callers.

2001-12-14  Akim Demaille  <akim@epita.fr>

	* src/lex.c (literalchar): Don't escape the special characters,
	just decode them, and keep them as char (before, eol was output as
	the 2 char string `\n' etc.).
	* src/output.c (output_rule_data): Use quotearg to output the
	token strings.

2001-12-13  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
	Do not infringe on the global user namespace when using C++.
	(YYFPRINTF, YYSTDERR): New macros, needed for the above.
	All uses of `fprintf' and `stderr' changed.

	* doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.

2001-12-13  Akim Demaille  <akim@epita.fr>

	The computation of nullable is broken: it doesn't handle empty
	RHS's properly.

	* tests/torture.at (GNU AWK Grammar): New.
	* tests/sets.at (Nullable): New.
	* src/nullable.c (set_nullable): Instead of blindly looping over
	`ritems', loop over the rules, and then over their rhs's.

	Work around Autotest bugs.

	* src/warshall.c (bitmatrix_print): Don't use `+--+' as table
	frame, because Autotest understand lines starting with a `+' as
	traces from the shell.  Then, they are not processed properly.
	Admittedly an Autotest bug, but we don't have time to wait for
	Autotest to catch up.
	* tests/regression.at (Broken Closure): Adjust to the new table
	frames.
	Move to...
	* tests/sets.at: here.

2001-12-13  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): Use nrules instead of playing tricks
	with BITS_PER_WORD.

2001-12-13  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_actions): Output the handling of `$' as the
	traces do: shifting the token EOF.  Before EOF was treated as a
	nonterminal.
	* tests/regression.at: Adjust some tests.
	* src/print_graph.c (print_core): Complete the set of items via
	closure.  The next-to-final and final states are still unsatisfying,
	but that's to be addressed elsewhere.
	No longer output the rule numbers, but do output the state number.
	A single loop for the shifts + gotos is enough, but picked a
	distinct color for each.
	(print_graph): Initialize and finalize closure.

2001-12-13  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Remove dead code, an strip useless
	braces.
	(get_type): Remove, unused.

2001-12-12  Akim Demaille  <akim@epita.fr>

	* src/complain.h, src/complain.c: Remove error_one_per_line, rely
	on that of lib/error.c.

2001-12-12  Akim Demaille  <akim@epita.fr>

	Some hosts don't like `/' in includes.

	* src/system.h: Include libgettext.h without qualifying the path.
	* src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
	$(top_srcdir).

2001-12-11  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_parser): Remove useless muscle.

2001-12-11  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Remove #line just before %%epilogue. It
	is now handled in ...
	* src/reader.c (read_additionnal_code): Add the output of a
	#line for the epilogue.

2001-12-10  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (copy_definition): Re-use CPP-outed code which
	replace precedent remove.
	* src/bison.simple: Remove #line before %%prologue because
	%%input-line is wrong at this time.

2001-12-10  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (symbols_output): Clean up.
	* src/output.c (output_gram, output): Clean up.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (initialize_lookaheads): New.  Extracted from...
	* src/LR0.c (set_state_table): here.
	* src/lalr.c (lalr): Call it.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/state.h (shifts): Remove the `number' member: shifts are
	attached to state, hence no longer need to be labelled with a
	state number.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Now that states have a complete set of members, the linked list of
	shifts is useless: just fill directly the state's shifts member.

	* src/state.h (shifts): Remove the `next' member.
	* src/LR0.c (first_state, last_state): Remove.
	Adjust the callers.
	(augment_automaton): Don't look for the shifts that must be added
	a shift on EOF: it is those of the state we looked for!  But now,
	since shifts are attached, it is no longer needed to looking
	merely by its id: its number.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Better variable locality.
	Remove an impossible branch: if there is a state corresponding to
	the start symbol being shifted, then there is shift for the start
	symbol from the initial state.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
	only when appropriate: when insert_start_shifting_state' is not
	invoked.
	* tests/regression.at (Rule Line Numbers): Adjust.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Now that all states have shifts,
	merge the two cases addition shifts to the initial state.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_state_table): Move to...
	* src/LR0.c: here.
	* src/lalr.c (lalr): Don't call it...
	* src/LR0.c (generate_states): do it.
	* src/LR0.h (first_state): Remove, only the table is used.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.h (first_shift, first_reduction): Remove.
	* src/lalr.c: Don't use first_shift: find shifts through the
	states.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c: Attach shifts to states as soon as they are
	computed.
	* src/lalr.c (set_state_table): Instead of assigning shifts to
	state, just assert that the mapping was properly done.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (insert_start_shift): Rename as...
	(insert_start_shifting_state): this.
	(insert_eof_shifting_state, insert_accepting_state): New.
	(augment_automaton): Adjust.
	Better locality of the variables.
	When looking if the start_symbol is shifted from the initial
	state, using `while (... symbol != start_symbol ...)' sounds
	better than `while (... symbol < start_symbol ...)': If fail
	to see how the order between symbols could be relevant!

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/getargs.h: Don't declare `spec_name_prefix' and
	`spec_file_prefix', declared by src/files.h.
	* src/files.c, src/files.h: Default for spec_name_prefix is "yy".
	* src/muscle_tab.c (muscle_init): Default prefix to NULL.
	* src/output.c (prepare): Adjust.
	* src/reader.c (symbols_output): Likewise.
	* src/vmsgetargs.c: Vaguely adjust, but who cares?

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/muscle_tab.c (muscle_init): NULL is a better default than
	`"0"'.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/reader.c (reader): Calling symbols_output once is enough.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Now that states have a complete set of members, the linked list of
	reductions is useless: just fill directly the state's reductions
	member.

	* src/state.h (struct reductions): Remove member `number' and
	`next'.
	* src/LR0.c (first_reduction, last_reduction): Remove.
	(save_reductions): Don't link the new reductions, store them in
	this_state.
	* src/lalr.c (set_state_table): No need to attach reductions to
	states, it's already done.
	* src/output.c (output_actions): No longer free the shifts, then
	the reductions, then the states: free all the states and their
	members.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/options.c (OPTN, DRTV, BOTH): New.
	(option_table): Use them.

	* src/muscle_tab.c: Don't include xalloc.h and string.h: that's
	the job of system.h.
	* src/options.c: Don't include stdio.h and xalloc.h for the same
	reasons.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* src/output.c (output, prepare): Make sure the values of the
	muscles `action' and `prologue' are 0-terminated.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Clean up GCC warnings.

	* src/reader.c (copy_action): `buf' is not used.
	(parse_skel_decl): Be static.
	* src/muscle_tab.c (mhash1, mhash2, muscle_insert): Preserve `const'.
	* src/options.h (create_long_option_table): Have a real prototype.
	* lib/hash.c, lib/hash.h (hash_insert, hash_insert_at, hash_delete)
	(hash_delete_at): Return const void *.
	Adjust casts to preserve the const.

2001-12-10  Akim Demaille  <akim@epita.fr>

	* configure.in: Require 2.52g.
	M4 is not needed, but AUTOM4TE is.
	* m4/m4.m4: Remove.
	* tests/Makefile.am: Adjust.

2001-12-10  Akim Demaille  <akim@epita.fr>

	One structure for states is enough, even though theoretically
	there are LR(0) states and LALR(1) states.

	* src/lalr.h (state_t): Remove.
	(state_table): Be state_t **, not state_t *.
	* src/state.h (core, CORE_ALLOC): Rename as...
	(state_t, STATE_ALLOC): this.
	Add the LALR(1) members: shifts, reductions, errs.
	* src/LR0.c (state_table): Rename as...
	(state_hash): this, to avoid name clashes with the global
	`state_table'.
	* src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
	* src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.

2001-12-10  Akim Demaille  <akim@epita.fr>

	Bison dumps core on bash.y.
	Reported by Pascal Bart.

	* src/warshall.c (bitmatrix_print): New.
	(TC): Use it.
	When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
	j must be the outer loop.
	* tests/regression.at (Broken Closure): New.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
	its argument.
	Reported by Peter Hamorsky.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (err_table): Remove.
	(resolve_sr_conflict): Adjust.
	* src/lalr.h (state_t.reduction_table, state_t.shift_table):
	Rename as...
	(state_t.reductions, state_t.shifts): this.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_grammar_tables): No longer disable the
	removal of useless rules via CPP but via `if (0)', so that the
	compiler still check the code is valid.
	For instance, it should have noticed `rline' no longer exists: use
	the `line' member of rule_t.
	* src/gram.c (dummy, rline): Remove, unused.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (pack_vector): Use assert, not berror.
	* src/main.c (berror): Remove, unused.

2001-12-05  Akim Demaille  <akim@epita.fr>

	New experimental feature: if --verbose --trace output all the
	items of a state, not only its kernel.

	* src/print.c (print_core): If `trace_flag', then invoke closure
	before outputting the items of the state (print_core is no longer
	a correct name them).
	(print_results): Invoke new_closure/free_closure if needed.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_itemsets): Use nshifts only, not shiftcount.
	* src/closure.c, src/closure.h (itemsetsize): Rename as...
	(nitemset): for consistency with the rest of the project.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_closure): Improve.
	(closure): Use it for printing input and output.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are
	indexed by nonterminals.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/warshall.c (TC, RTC): De-obsfucate (source reduced to 22% of
	what it was!).
	* src/warshall.h: Remove accidental duplication of the content.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (set_fderives): De-obfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (print_firsts, print_fderives): De-obfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/closure.c (set_firsts): De-obfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/output.c (action_row): De-obfuscate
	using the good o' techniques: arrays not pointers, variable
	locality, BITISSET, RESETBIT etc.

2001-12-05  Akim Demaille  <akim@epita.fr>

	Pessimize the code to simplify it: from now on, all the states
	have a valid SHIFTS, which NSHIFTS is possibly 0.

	* src/LR0.c (shifts_new): Be global and move to..
	* src/state.c, src/state.h: here.
	* src/conflicts, src/lalr.c, src/output.c, src/print.c,
	* src/print_graph: Adjust.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/state.h (SHIFT_DISABLE, SHIFT_IS_DISABLED): New.
	* src/conflicts.c: Use it.
	Restore a few missing `if (!SHIFT_IS_DISABLED)' which were
	incorrectly ``simplified''.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate
	using the good o' techniques: arrays not pointers, variable
	locality, BITISSET, RESETBIT etc.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/state.h (SHIFT_SYMBOL): New.
	* src/conflicts.c: Use it to deobfuscate.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (count_sr_conflicts, count_rr_conflicts)
	(print_reductions): De-obfuscate using the good o' techniques:
	arrays not pointers, variable locality, BITISSET.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Arrays, not pointers.
	Use BITISSET.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Pessimize, but clarify.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Improve variable locality.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Pessimize, but clarify.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Improve variable locality.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/state.h (SHIFT_IS_ERROR, SHIFT_IS_GOTO, SHIFT_IS_SHIFT): New.
	* src/lalr.c: Use them.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (augment_automaton): Formatting changes.
	Better variable locality.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (matrix_print): New.
	(transpose): Use it.
	Use arrays instead of pointers.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (maxrhs): Move to...
	* src/gram.c, src/gram.h (ritem_longest_rhs): here.
	* src/lalr.c (build_relations): Adjust.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (transpose): Free the memory allocated to the
	argument, as it is replaced by the results by the unique caller.
	(build_relations): Merely invoke transpose: it handles the memory
	deallocation.
	Improve variable locality.
	Avoid variables used as mere abbreviations.
	(compute_lookaheads): Use arrays instead of pointers.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (initialize_F): Improve variable locality.
	Avoid variables used as mere abbreviations.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/derives.c (print_derives): Display the ruleno.
	* src/lalr.c (initialize_F, transpose): Better variable locality
	to improve readability.
	Avoid variables used as mere abbreviations.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (traverse): Use arrays instead of pointers.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (set_nullable): Use a for loop to de-obfuscate
	the handling of squeue.
	`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

2001-12-05  Akim Demaille  <akim@epita.fr>

	Because useless nonterminals are now kept alive (instead of being
	`destroyed'), we now sometimes examine them, and store information
	related to them.  Hence we need to know their number, and adjust
	memory allocations.

	* src/reduce.c, src/reduce.h (nuseless_nonterminals): No longer
	static.
	* src/LR0.c (allocate_itemsets): The memory allocated to
	`symbol_count' was used for two different purpose: once to count
	the number of occurrences of each symbol, and later reassigned to
	`shift_symbol', containing the symbol that can be shifted from a
	given state.
	Deobfuscate, i.e., allocate, use and free `symbol_count' here
	only, and...
	(new_itemsets): Allocate `shift_symbol' here.
	(allocate_itemsets): symbol_count includes useless nonterminals.
	Make room for them.
	(free_storage): Use `free', not `XFREE', for pointers that cannot
	be null.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (set_nullable): Deobfuscate the handling of
	ritem.
	`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

2001-12-05  Akim Demaille  <akim@epita.fr>

	* src/gram.c, src/gram.h (ritem_print): New.
	* src/gram.c (dummy): Remove, now there is actual code in gram.c.
	(This useless function was defined only to work around VMS linkers
	that can't handle compilation units with variables only).
	* src/reduce.c (dump_grammar): Use it to trace the construction of
	ritem.

2001-12-04  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (union yyalloc): Change member names
	to be the same as the stack names.
	(yyparse): yyptr is now union yyalloc *, not char *.
	(YYSTACK_RELOCATE): Likewise.  This avoids a GCC warning,
	and may generate better code on some machines.
	(yystpcpy): Use prototype if __STDC__ is defined, not just
	if __cplusplus is defined.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* configure.in (WARNING_CFLAGS): Add -Werror when possible.
	(CFLAGS): Do not include the WARNING_CFLAGS here, since GNU
	Gettext doesn't compile cleanly, and dies with -Werror.
	* src/Makefile.am, lib/Makefile.am, tests/atlocal.in (CFLAGS):
	Include WARNING_CFLAGS here.
	* lib/xstrdup.c: Include xalloc.h, so that xstrdup be declared
	before being defined.

2001-11-27  Paul Eggert  <eggert@twinsun.com>

	* lib/quotearg.h (quotearg_n, quotearg_n_style):
	First arg is int, not unsigned.
	* lib/quotearg.c (quotearg_n, quotearg_n_style): Likewise.
	(SIZE_MAX, UINT_MAX): New macros.
	(quotearg_n_options): Abort if N is negative.
	Avoid overflow check on hosts where size_t is 64 bits and int
	is 32 bits, as overflow is impossible there.
	Fix off-by-one typo that caused unnecessary reallocation.

2001-11-29  Paul Eggert  <eggert@twinsun.com>

	Name space cleanup in generated parser.

	* doc/bison.texinfo (Bison Parser): Discuss system headers
	and their effect on the user name space.

	* src/bison.simple:
	(YYSTACK_ALLOC, YYSTACK_FREE, union yyalloc, YYSTACK_GAP_MAX,
	YYSTACK_BYTES, YYSTACK_RELOCATE): Do not define unless necessary,
	i.e. unless ! defined (yyoverflow) || defined (YYERROR_VERBOSE).

	(YYSIZE_T): New macro.  Use it instead of size_t, to avoid infringing
	on user names when possible.

	(YYSTACK_USE_ALLOCA): Do not define; just use any existing defn.
	Simplify test for whather <alloca.h> exists.

	(<stdlib.h>): Include if we will use malloc, and if standard C or C++.

	(<stdio.h>): Include if YYDEBUG.

	(yymemcpy): Renamed from __yy_memcpy.  Do not define unless
	! defined (yyoverflow) && ! defined (yymemcpy).

	(yymemcpy, yyparse): Rename local variables as needed so that
	they all begin with 'yy'.

	(yystrlen, yystpcpy): New functions.

	(YY_DECL_NON_LSP_VARIABLES): Renamed from _YY_DECL_VARIABLES.
	All uses changed.

	(yyparse): size_t -> YYSIZE_T.  Use yystrlen and yystpcpy
	instead of relying on string.h functions.  Use YYSTACK_ALLOC
	and YYSTACK_FREE instead of malloc and free.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTYPE, YYLTYPE): Move their definitions
	before their first uses.
	(YYBISON, YYPURE): Move to the top of the output.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* tests/reduce.at (Useless Nonterminals): Fix.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTACK_FREE): Use `do {;} while (0)' as empty
	if body instead of `;' to pacify GCC's warnings.

2001-11-30  Akim Demaille  <akim@epita.fr>

	Instead of mapping the LHS of unused rules to -1, keep the LHS
	valid, but flag the rules as invalid.

	* src/gram.h (rule_t): `useful' is a new member.
	* src/print.c (print_grammar): Adjust.
	* src/derives.c (set_derives): Likewise.
	* src/reader.c (packgram, reduce_output): Likewise.
	* src/reduce.c (reduce_grammar_tables): Likewise.
	* tests/reduce.at (Underivable Rules, Useless Rules): New.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_output): Formatting changes.
	* src/print.c (print_results, print_grammar): Likewise.
	* tests/regression.at (Rule Line Numbers)
	(Solved SR Conflicts, Unresolved SR Conflicts): Adjust.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (nonterminals_reduce): Instead of throwing away
	useless nonterminals, move them at the end of the symbol arrays.
	(reduce_output): Adjust.
	* tests/reduce.at (Useless Nonterminals): Adjust.

2001-11-30  Akim Demaille  <akim@epita.fr>

	* src/reduce.c: Various comment/formatting changes.
	(nonterminals_reduce): New, extracted from...
	(reduce_grammar_tables): here.
	(reduce_grammar): Call nonterminals_reduce.

2001-11-29  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSTACK_REALLOC): Remove.
	(YYSTACK_ALLOC): Resurrect this macro, with its old meaning.
	(YYSTACK_FREE, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
	New macros.
	(union yyalloc): New type.
	(__yy_memcpy): Last arg is size_t, not unsigned int, to remove
	an arbitrary restriction on hosts where size_t is wider than int.

	(yyparse): Don't dump core if alloca or malloc fails; instead, report
	a parser stack overflow.  Allocate just one block of memory for all
	three stacks, instead of allocating three blocks; this typically is
	faster and reduces fragmentation.

	Do not limit the number of items in the stack to a value that fits
	in 'int', as this is an arbitrary limit on hosts with 64-bit
	size_t and 32-bit int.

2001-11-29  Marc Autret  <autret_m@epita.fr>

	* tests/calc.at [AT_DATA_CALC_Y]: Use %error-verbose instead
	of defining YYERROR_VERBOSE.
	[AT_DATA]: $4 is now out of C declarations in the prologue.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_dquoted_param): New.
	(parse_skel_decl): Use it.
	* src/lex.h: Add its prototype.
	* src/lex.c (literalchar): Become not static.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/output.h: And put its extern declaration here.
	* src/output.c (error_verbose): Define here.
	(prepare): Echo name modification.
	* src/getargs.h: Clean its extern declaration.
	* src/getargs.c (error_verbose_flag): Remove.
	(getargs): Remove case 'e'.
	* src/options.c (option_table): 'error-verbose' is now seen as simple
	percent option.
	Include output.h.

	* src/reader.c (read_declarations): Remove case tok_include.
	(parse_include_decl): Remove.
	* src/lex.h (token_t): Remove tok_include.
	* src/options.c (option_table): 'include' is now a simple command line
	option.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Adjust muscle names.
	* src/muscle_tab.c (muscle_init): Also rename the muscles.
	* src/output.c (prepare): s/_/-/ for the muscles names.
	(output_parser): When scanning for a muscle, allow '-' instead of '_'.

2001-11-28  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Fix debug.
	[YYERROR_VERBOSE]: Re-integrate as an internal macro.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (shifts_new): New.
	(save_shifts, insert_start_shift, augment_automaton): Use it.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): `b' and `ruleno' denote the same value:
	keep ruleno only.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): Instead of looping over word in array
	then bits in words, loop over bits in array.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): No longer optimize the special case
	where all the bits of `ruleset[r]' are set to 0, to make the code
	clearer.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): `r' and `c' are new variables, used to
	de-obfuscate accesses to RULESET and CORE.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (reduce_print): Use ngettext.
	(dump_grammar): Improve the trace accuracy.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (dump_grammar): Don't translate trace messages.

2001-11-28  Akim Demaille  <akim@epita.fr>

	* tests/reduce.at (Useless Terminals, Useless Nonterminals): New.
	* src/reduce.c (reduce_grammar_tables): Do not free useless tags,
	as all tags are free'ed afterwards.
	From Enrico Scholz.

2001-11-27  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (YYSTACK_REALLOC): Fix typo that caused us to
	use alloca when we didn't want to, and vice versa.

2001-11-27  Marc Autret  <autret_m@epita.fr>

	* src/muscle_tab.c (muscle_init): Remove 'verbose' muscle
	initialization.
	* src/output.c (prepare): Remove its update.

2001-11-27  Marc Autret  <autret_m@epita.fr>

	* tests/torture.at [AT_DATA]: Remove YYERROR_VERBOSE definition.
	Use %error-verbose.

2001-11-27  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Remove YYERROR_VERBOSE using.
	Use %%error_verbose.
	(yyparse): Likewise.
	* src/output.c (prepare): Give its final value.
	* src/muscle_tab.c (muscle_init): Init new muscle 'error_verbose'.
	* src/getargs.h: Add its extern declaration.
	* src/getargs.c (error_verbose_flag): New int.
	(getargs): Update to catch new case.
	* src/options.c (option_table): 'error-verbose' is a new option.
	(shortopts): Update.

2001-11-27  Akim Demaille  <akim@epita.fr>

	* src/system.h: Use intl/libgettext.h.
	* src/Makefile.am (INCLUDES): Add -I $(top_srcdir).

2001-11-27  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (Exploding the Stack Size with Malloc):
	s/YYSTACK_USE_ALLOCA_ALLOCA/YYSTACK_USE_ALLOCA/.

2001-11-27  Akim Demaille  <akim@epita.fr>

	* src/files.c: Include error.h.
	Reported by Hans Aberg.

2001-11-26  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_include_decl): New, not yet implemented.
	(read_declarations): Add case tok_include.
	* src/getargs.h (include): Add its extern definition.
	* src/getargs.c (include): New const char *.
	(getargs): Add case '-I'.
	* src/options.c (option_table): Add include as command line and
	percent option.
	* src/lex.h (token_t): Add tok_include.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Make sure rules for mid-rule actions
	have a lineno equal to that of their host rule.
	Reported by Hans Aberg.
	* tests/regression.at (Rule Line Numbers): New.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (allocate_itemsets): kernel_size contains ints, not
	size_ts.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/complain.c, src/complain.h (error): Remove, provided by
	lib/error.[ch].

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/reader.c (read_declarations): Don't abort on tok_illegal,
	issue an error message.
	* tests/regression.at (Invalid %directive): New.
	Reported by Hans Aberg.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* configure.in: Invoke AC_FUNC_OBSTACK and AC_FUNC_ERROR_AT_LINE.
	* lib/Makefile.am (libbison_a_SOURCES): Adjust.

2001-11-26  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_print): Don't complain at all when
	there are no reduce/reduce conflicts, and as many shift/reduce
	conflicts as expected.
	* tests/regression.at (%expect right): Adjust.

2001-11-23  Akim Demaille  <akim@epita.fr>

	* lib/alloca.c: Update, from fileutils.

2001-11-23  Akim Demaille  <akim@epita.fr>

	* lib/Makefile.am (libbison_a_LIBADD): Add @ALLOCA@.

2001-11-23  Akim Demaille  <akim@epita.fr>

	* src/system.h: Include alloca.h.
	* src/main.c (main) [C_ALLOCA]: Call alloca (0).

2001-11-23  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (print_actions): Remove `rule', unused.
	* src/LR0.c (kernel_size): Contain `int' instead of `size_t' to
	pacify GCC's signed < unsigned warnings.
	* src/closure.c (itemsetsize): Likewise.
	* src/reader.c (symbol_list_new): Static.

2001-11-23  Akim Demaille  <akim@epita.fr>

	Attaching lineno to buckets is stupid, since only one copy of each
	symbol is kept, only the line of the first occurrence is kept too.

	* src/symtab.h, src/symtab.c (bucket): Remove the line member.
	* src/reader.c (rline_allocated): Remove, unused.
	(symbol_list): Have a `line' member.
	(symbol_list_new): New.
	(readgram): Use it.
	* src/print.c (print_grammar): Output the rule line numbers.
	* tests/regression.at (Solved SR Conflicts)
	(Unresolved SR Conflicts): Adjust.
	Reported by Hans Aberg.

2001-11-22  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple [YYERROR_VERBOSE]: Force its value to be 1 or 0.

2001-11-22  Marc Autret  <autret_m@epita.fr>

	* src/muscle_tab.c (muscle_init): Remove initialization of
	skeleton muscle.
	* src/output.c (output_master_parser): Do it here.

2001-11-20  Akim Demaille  <akim@epita.fr>

	* po/sv.po: New.
	* configure.in (ALL_LINGUAS): Adjust.
	* po/POTFILE.in: Remove `nullable.c' and `derives.c' which no
	longer contains strings to translate.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflicts_print): Add a missing \n.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/nullable.c (nullable_print): New.
	(set_nullable): Call it when tracing.
	Better locality of variables.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/print.c (print_actions): Better locality of variables.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/derives.c (print_derives): Fix and enrich.
	* src/closure.c (print_fderives): Likewise.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/closure.c (itemsetend): Remove, replaced with...
	(itemsetsize): new.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (kernel_end): Remove, replaced with...
	(kernel_size): new.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (set_conflicts): Use arrays instead of pointers
	to clarify.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/closure.c (closure): Use arrays instead of pointers to clarify.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/closure.c, src/derives.c, src/nullable.c: Adjust various
	trace messages.
	* src/LR0.c: Likewise.
	(allocate_itemsets): Use arrays instead of pointers to clarify.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (statistics_flag): Replace with...
	(trace_flag): New.
	(longopts): Accept --trace instead of --statistics.
	* src/getargs.h, src/options.c: Adjust.
	* src/LR0.c, src/closure.c, src/derives.c, src/nullable.c,
	* src/reduce.c: Use trace_flags instead of the CPP conditional TRACE.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_itemsets, get_state): Use more arrays and fewer
	pointers to clarify the code.
	(save_reductions, save_shifts): Factor common parts of alternatives.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state, get_state): Complete TRACE code.
	* src/closure.c: Include `reader.h' to get `tags', needed by the
	trace code.
	Rename the conditional DEBUG as TRACE.
	Output consistently TRACEs to stderr, not stdout.
	* src/derives.c: Likewise.
	* src/reduce.c: (inaccessable_symbols): Using if is better style
	than goto.
	Use `#if TRACE' instead of `#if 0' for tracing code.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/system.h (LIST_FREE, shortcpy): New.
	* src/LR0.c: Use them.
	* src/output.c (free_itemsets, free_reductions, free_shifts):
	Remove, replaced by LIST_FREE.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/state.h (CORE_ALLOC, SHIFTS_ALLOC, ERRS_ALLOC)
	(REDUCTIONS_ALLOC):  New.
	* src/LR0.c, src/conflicts.c: Use them to de-obfuscate memory
	allocation.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/LR0.c (new_state): Complete trace code.
	* src/nullable.c (set_nullable): Don't translate traces.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (print_core): Better locality of variables.
	* src/print.c (print_core): Likewise.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/vcg.c: You do the output, so you are responsible of the
	handling of VCG syntax, in particular: use quotearg.
	* src/print_graph.c: Don't.
	(print_actions): Don't output the actions as part of the nodes,
	since that's the job of the edges.
	(print_state): Don't output by hand: fill the node description,
	and ask for its output.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (yyparse): When verbosely reporting an error,
	no longer put additional quotes around token names.
	* tests/calc.at: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/symtab.h, src/symtab.c: `line' is a new member of `bucket'.
	* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
	* src/output.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rprec, rprecsym, rassoc): Remove, now part of...
	(rule_t): this.
	* src/conflicts.c, src/reader.c, src/reduce.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/gram.h (rule_t): New.
	(rule_table): New.
	(rrhs, rlhs): Remove, part of state_t.
	* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
	* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
	* src/reader.c, src/reduce.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/reader.c (symbols_output): New, extracted from...
	(packsymbols): Here.
	(reader): Call it.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (set_maxrhs, maxrhs): Remove, replaced with...
	(maxrhs): this new function.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (F): New macro to access the variable F.
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (LA): New macro to access the variable LA.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	* src/lalr.c: Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.c (initialize_LA): Only initialize LA.  Let...
	(set_state_table): handle the `lookaheads' members.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (lookaheads): Removed array, whose contents is now
	a member of...
	(state_t): this structure.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (consistent): Removed array, whose contents is now
	a member of...
	(state_t): this structure.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (reduction_table, shift_table): Removed arrays, whose
	contents are now members of...
	(state_t): this structure.
	* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
	Adjust.

2001-11-19  Akim Demaille  <akim@epita.fr>

	* src/lalr.h (state_t): New.
	(state_table): Be a state_t * instead of a core **.
	(accessing_symbol): Remove, part of state_t.
	* src/lalr.c: Adjust.
	(set_accessing_symbol): Merge into...
	(set_state_table): this.
	* src/print_graph.c, src/conflicts.c: Adjust.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* tests/calc.at, tests/output.at, tests/regression.at,
	* tests/testsuite.at, tests/torture.at: Rely on Autotest 2.52g:
	now the tests are run in private dirs, therefore AC_CLEANUP and
	family can be simplified to 0-ary.
	* tests/atlocal.in: Now that we run `elsewhere' than in tests/,
	use abs. path to find config.h.
	* tests/calc.at (AT_CHECK_CALC): Don't try to check the compiler's
	stderr, there can be way too much random noise.
	Instead pass -Werror to GCC and rely on the exit status.
	Reported by Wolfram Wagner.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (yyparse): Let yyls1, yyss1 and yyvs1 be
	defined only if yyoverflow is defined, to avoid `warning: unused
	variable `yyvs1''.
	Reported by The Test Suite.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/print.c: Include reduce.h.
	Reported by Hans Aberg.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/lex.c, src/lex.h (token_buffer, unlexed_token_buffer):
	Revert a previous patch:  these are really const.
	* src/conflicts.c (conflict_report): Additional useless pair of
	braces to pacify GCC's warnings for `if () if () {} else {}'.
	* src/lex.c (parse_percent_token): Replace equal_offset with
	arg_offset.
	arg is const.
	Be sure to strdup `arg' when used, since there is no reason for
	token_buffer not to change.

2001-11-14  Akim Demaille  <akim@epita.fr>

	* src/system.h (EXIT_SUCCESS, EXIT_FAILURE): Ensure a proper
	definition.
	* src/main.c (main): Use them.
	Suggested by Hans Aberg.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/system.h (ngettext): Now that we use ngettext, be sure to
	provide a default definition when NLS are not used.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Use `$' as shell prompt, not `%'.
	Use @kbd to denote user input.
	(Language and Grammar): ANSIfy the example.
	Adjust its layout for info/notinfo.
	(Location Tracking Calc): Output error messages to stderr.
	Output locations in a more GNUtically correct way.
	Fix a couple of Englishos.
	Adjust @group/@end group pairs.

2001-11-12  Akim Demaille  <akim@epita.fr>

	%expect was not functioning at all.

	* src/conflicts.c (expected_conflicts): Set to -1.
	(conflict_report): Use ngettext.
	(conflicts_print): Check %expect and make its violation an error.
	* doc/bison.texinfo (Expect Decl): Adjust.
	* configure.in (AM_GNU_GETTEXT): Ask for ngettext.
	* tests/regression.at (%expect not enough, %expect right)
	(%expect too much): New.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Conflicts): Rename as...
	(Unresolved SR Conflicts): this.
	(Solved SR Conflicts): New.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/reduce.c (print_results): Rename as...
	(reduce_output): This.
	Output to OUT, passed as argument, instead of output_obstack.
	(dump_grammar): Likewise.
	(reduce_free): New.
	Also free V1.
	(reduce_grammar): No longer call reduce_output, since...
	* src/print.c (print_results): do it.
	* src/main.c (main): Call reduce_free;

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (print_reductions): Accept OUT as argument.
	Output to it, not to output_obstack.
	* src/print.c (print_actions): Adjust.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (count_sr_conflicts, count_rr_conflicts): Return
	the result instead of using...
	(src_total, rrc_total, src_count, rrc_count): Remove.
	(any_conflicts): Remove.
	(print_conflicts): Split into...
	(conflicts_print, conflicts_output): New.
	* src/conflicts.h: Adjust.
	* src/main.c (main): Invoke both conflicts_output and conflicts_print.
	* src/print.c (print_grammar): Issue `\n' between two rules.
	* tests/regression.at (Conflicts): New.
	Reported by Tom Lane.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid input): Remove, duplicate with
	``Invalid input: 1''.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* tests/torture.at (AT_DATA_STACK_TORTURE)
	(Exploding the Stack Size with Alloca)
	(Exploding the Stack Size with Malloc): New.

2001-11-12  Akim Demaille  <akim@epita.fr>

	* src/bison.simple (YYSTACK_REALLOC): New.
	(yyparse) [!yyoverflow]: Use it and free the old stack.
	Reported by Per Allansson.

2001-11-12  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: Define type yystype instead of YYSTYPE, and
	define CPP macro, which substitute YYSTYPE by yystype.
	* src/reader.c (parse_union_decl): Output yystype/YYSTYPE as we do
	with yyltype/YYLTYPE.  This allows inclusion of the generated
	header within the parser if the compiler, such as GGC, accepts
	multiple equivalent #defines.
	From Akim.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* src/reader.c (symbols_output): New, extracted from...
	(packsymbols): here.
	(reader): Adjust.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* src/lex.c (parse_percent_token): s/quotearg/quote/.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (AT_TEST_CPP_GUARD_H): Adjust the clean up
	pattern.

2001-11-05  Akim Demaille  <akim@epita.fr>

	* src/options.h (struct option_table_struct): set_flags is void*.
	* src/options.c (longopts): Support `--output' and `%output'.
	(usage): Adjust.
	* src/lex.h (tok_setopt): Remove, replaced with...
	(tok_intopt, tok_stropt): these new guys.
	* src/lex.c (getopt.h): Not needed.
	(token_buffer, unlexed_token_buffer): Not const.
	(percent_table): Promote `-' over `_' in directive names.
	Active `%name-prefix', `file-prefix', and `output'.
	(parse_percent_token): Accept possible arguments to directives.
	Promote `-' over `_' in directive names.

2001-11-04  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Decl Summary): Split the list into
	`directives for grammars' and `directives for bison'.
	Sort'em.
	Add description of `%name-prefix', `file-prefix', and `output'.
	Promote `-' over `_' in directive names.
	(Bison Options): s/%locactions/%locations/.  Nice Freudian slip.
	Simplify the description of `--name-prefix'.
	Promote `-' over `_' in directive names.
	Promote `--output' over `--output-file'.
	Fix the description of `--defines'.
	* tests/output.at: Exercise %file-prefix and %output.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* doc/refcard.tex: Update.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* src/symtab.h (SUNDEF): New.
	* src/symtab.c (bucket_new): Init user_token_number to SUNDEF to
	stand for `uninitialized', instead of 0.
	* src/reader.c (packsymbols, parse_thong_decl): Adjust.
	* src/lex.c (lex): Adjust.

	* tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF.
	Number it 0.
	Let yylex return it instead of a plain 0.
	Reported by Dick Streefland.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Mixing %token styles): New test.

2001-11-02  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_thong_decl): Formatting changes.
	(token_translations_init): New, extracted from...
	(packsymbols): Here.
	Adjust.

2001-11-01  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (AT_TEST_CPP_GUARD_H): New.
	Check that `9foo.y' produces correct cpp guards.
	* src/files.c (compute_header_macro): Prepend `BISON_' to CPP
	guards.
	Reported by Wwp.

2001-11-01  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid input: 2): New.
	* src/lex.c (unlexed_token_buffer): New.
	(lex, unlex): Adjust: when unlexing, be sure to save token_buffer
	too.
	Reported by Wwp.

2001-11-01  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Catch up with 1.30.
	* configure.in: Bump to 1.49a.
	Adjust to newer Autotest.

2001-10-19  Pascal Bart  <pascal.bart@epita.fr>

	* src/conflicts.c: Move global variables rrc_total and src_total ...
	(print_conflicts): here.
	* src/output.c (output): Free global variable user_toknums.
	* src/lex.c (token_obstack): Become static.

2001-10-18  Akim Demaille  <akim@epita.fr>

	* tests/atlocal.in (GCC): Add.
	* tests/calc.at: s/m4_match/m4_bmatch/.
	s/m4_patsubst/m4_bpatsubst/.
	(AT_CHECK_CALC): Check the compiler's stderr only if it's GCC.
	* configure.in: AC_SUBST(GCC).

2001-10-14  Marc Autret  <autret_m@epita.fr>

	* src/options.c (create_long_option_table): Fix.

2001-10-10  Akim Demaille  <akim@epita.fr>

	* src/bison.simple: Be sure to set YYSTACK_USE_ALLOCA.

2001-10-04  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_union_decl): Push the caracters in
	union_obstack, not attrs_obstack.

2001-10-04  Akim Demaille  <akim@epita.fr>

	Merge in the branch 1.29.

	* src/reader.c (packsymbols): Use a temporary obstack for
	`%%tokendef', since output_stack is already used elsewhere.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	Bump 1.29d.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	Version 1.29c.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid CPP headers): New.
	From Alexander Belopolsky.
	* src/files.c (compute_header_macro): Map non alnum chars to `_'.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* tests/regression.at (Invalid input): New.
	* src/lex.c (lex): Be sure to set `token_buffer' in any case.
	Reported by Shura.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Now that --debug works, the tests must be adjusted.

	2001-10-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_parser): Assert `skeleton'.
	* src/files.c (skeleton_find): Look harder for skeletons on DOSish
	systems.
	From Shura.

	2001-10-01  Marc Autret  <autret_m@epita.fr>

	* src/lex.h: Echo modifications.
	* src/lex.c (unlex): Parameter is now token_t.
	From Hans Aberg.

	2001-10-01  Marc Autret  <autret_m@epita.fr>

	* src/main.c: Include lex.h.
	From Hans Aberg.

	2001-09-29  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (longopts): `--debug' is `-t', not `-d'.

	2001-09-28  Akim Demaille  <akim@epita.fr>

	* tests/testsuite.at: Update to newer Autotest.
	* tests/Makefile.am (EXTRA_DIST): bison is not to be shipped.

	2001-09-27  Akim Demaille  <akim@epita.fr>

	Position independent wrapper.

	* tests/bison: Remove.
	* tests/bison.in: New.
	* configure.in: Adjust.

	2001-09-27  Paul Eggert  <eggert@twinsun.com>

	Port quotearg fixes from tar 1.13.24.

	* lib/quotearg.c: BSD/OS 4.1 wchar.h requires FILE and struct
	tm to be declared.
	(HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
	(mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.

	* m4/Makefile.am (EXTRA_DIST): Add mbrtowc.m4.
	* m4/mbrtowc.m4: New file.
	* m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit and stddef.h.
	Use jm_FUNC_MBRTOWC instead of AC_CHECK_FUNCS(mbrtowc).

	2001-09-27  Akim Demaille  <akim@epita.fr>

	Bump to 1.29c.

	2001-09-27  Akim Demaille  <akim@epita.fr>

	Version 1.29b.

	2001-09-25  Akim Demaille  <akim@epita.fr>

	* src/system.h: Include `xalloc.h'.
	Remove it from the C files.
	* src/files.c (output_files): Free the obstacks.
	* src/lex.c (init_lex): Rename as...
	(lex_init): this.
	(lex_free): New.
	* src/main.c (main): Use it.

	2001-09-24  Marc Autret  <autret_m@epita.fr>

	* src/vcg.c (open_edge, close_edge, open_node, close_node): Change
	to output informations in fout (FILE*).
	(open_graph, close_graph): Likewise.
	(output_graph, output_edge, output_node): Likewise.
	* src/vcg.h: Update function prototypes.
	* src/print_graph.c (print_graph): Open output graph file.
	(print_actions): Adjust.
	* src/files.h: Remove extern declaration.
	* src/files.c: Remove graph_obstack declaration.
	(open_files): Remove graph_obstack initialization.
	(output_files): Remove graph_obstack saving.

	2001-09-24  Marc Autret  <autret_m@epita.fr>

	* src/files.c (compute_output_file_names): Fix.

	2001-09-24  Marc Autret  <autret_m@epita.fr>,
		    Akim Demaille  <akim@epita.fr>

	* src/reader.c (reader): Remove call to free_symtab ().
	* src/main.c (main): Call it here.
	Include symtab.h.
	* src/conflicts.c (initialize_conflicts): Rename as...
	(solve_conflicts): this.
	* src/print.c (print_core, print_actions, print_state)
	(print_grammar): Dump to a file instead a `output_obstack'.
	(print_results): Dump `output_obstack', and then proceed with the
	FILE *.
	* src/files.c (compute_output_file_names, close_files): New.
	(output_files): Adjust.
	* src/main.c (main): Adjust.

	2001-09-23  Marc Autret  <autret_m@epita.fr>

	* src/files.c (compute_header_macro): Computes header macro name
	from spec_defines_file when given.

	2001-09-23  Marc Autret  <autret_m@epita.fr>

	* src/files.c (output_files): Add default extensions.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (finalize_conflicts): Rename as...
	(free_conflicts): this.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* src/gram.c (gram_free): Rename back as...
	(dummy): this.
	(output_token_translations): Free `token_translations'.
	* src/symtab.c (free_symtab): Free the tag field.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	Remove `translations' as it is always set to true.

	* src/gram.h: Adjust.
	* src/reader.c (packsymbols, parse_token_decl): Adjust
	* src/print.c (print_grammar): Adjust.
	* src/output.c (output_token_translations): Adjust.
	* src/lex.c (lex): Adjust.
	* src/gram.c: Be sure the set pointers to NULL.
	(dummy): Rename as...
	(gram_free): this.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* configure.in: Invoke AM_LIB_DMALLOC.
	* src/system.h: Use dmalloc.
	* src/LR0.c: Be sure to have pointers initialized to NULL.
	(allocate_itemsets): Allocate kernel_items only if needed.

	2001-09-22  Akim Demaille  <akim@epita.fr>

	* configure.in: Bump to 1.29b.
	* tests/Makefile.am (DISTCLEANFILES): Add package.m4.
	* tests/calc.at (_AT_DATA_CALC_Y): #undef malloc so that we don't
	need xmalloc.c in calc.y.
	From Pascal Bart.

	2001-09-21  Akim Demaille  <akim@epita.fr>

	Version 1.29a.
	* Makefile.maint, config/config.guess, config/config.sub,
	* config/missing: Update from masters.
	* tests/Makefile.am ($(srcdir)/$(TESTSUITE)): No longer depend
	upon package.m4.
	* configure.in (ALL_LINGUAS): Add `tr'.

	2001-09-21  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (package.m4): Move to...
	($(srcdir)/$(TESTSUITE)): here.

	2001-09-20  Akim Demaille  <akim@epita.fr>

	* src/complain.c: No longer try to be standalone: use system.h.
	Don't assume __STDC__ is defined to 1. Just test if it is defined.
	* src/complain.h: Likewise.
	* src/reduce.c (useless_nonterminals, inaccessable_symbols):
	Remove the unused variable `n'.
	From Albert Chin-A-Young.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* doc/bison.1: Update.
	* doc/bison.texinfo (Bison Options): Update --defines and --graph
	descriptions.
	(Option Cross Key): Update.
	Add --graph.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* tests/regression.at: New test (comment in %union).

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_union_decl): Do not output '/'. Let copy_comment
	do that.
	Reported by Keith Browne.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* tests/output.at: Add tests for --defines and --graph.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* tests/output.at: Removes tests of %{header,src}_extension features.

	2001-09-18  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (package.m4): New.
	* tests/calc.at (_AT_CHECK_CALC): Just run `calc input'.
	(_AT_CHECK_CALC_ERROR): Likewise.
	Factor the `, ' part of verbose error messages.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	* src/getargs.c (longopts): Declare --defines and --graph as options
	with optional arguments.
	* src/files.h: Add extern declarations.
	* src/files.c (spec_graph_file, spec_defines_file): New.
	(output_files): Update.
	Remove CPP-outed code.

	2001-09-18  Marc Autret  <autret_m@epita.fr>

	Turn off %{source,header}_extension feature.

	* src/files.c (compute_exts_from_gf): Update.
	(compute_exts_from_src): Update.
	(output_files): CPP-out useless code.
	* src/files.h: Remove {header,source}_extension extern declarations.
	* src/reader.c (parse_dquoted_param): CPP-out.
	(parse_header_extension_decl): Remove.
	(parse_source_extension_decl): Remove.
	(read_declarations): Remove cases tok_{hdrext,srcext}.
	* src/lex.c (percent_table): Remove {header,source}_extension entries.
	* src/lex.h (token_t): Remove tok_hdrext and tok_srcext.

	2001-09-10  Akim Demaille  <akim@epita.fr>

	* tests/output.at (AT_CHECK_BISON_FLAGS, AT_CHECK_BISON_PERCENT):
	(AT_CHECK_BISON_PERCENT_FLAGS): Merge into...
	(AT_CHECK_OUTPUT): this.
	Merely check ls' exit status, its output is useless.

	2001-09-10  Akim Demaille  <akim@epita.fr>

	* tests/calc.at: Use m4_match.
	(_AT_DATA_CALC_Y): Check `yyin != NULL', not `stdin != NULL'.

	2001-09-10  Marc Autret  <autret_m@epita.fr>,
		    Akim Demaille  <akim@epita.fr>

	* src/vcg.h (graph_s): color, textcolor, bordercolor are now
	enum color_e.
	* src/print_graph.c (print_graph): Initalize graph.layoutalgorithm
	to `normal'.
	* src/reader.c (parse_token_decl): Initialize token with tok_eof.
	* src/lex.h: Adjust prototype.
	(token_t): Add `tok_undef'.
	* src/lex.c (struct percent_table_struct): Retval is now a token_t.
	(parse_percent_token): Now returns token_t.
	Add default statement in switch.
	(lex): Separate `c' as an input variable, from the token_t result
	part.
	(unlexed): Is a token_t.

	2001-09-10  Akim Demaille  <akim@epita.fr>

	* configure.in: Bump to 1.29a.

	2001-09-07  Akim Demaille  <akim@epita.fr>

	Version 1.29.

	2001-08-30  Akim Demaille  <akim@epita.fr>

	* tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove.
	* m4/atconfig.m4: Remove.
	* tests/testsuite.at, tests/atlocal.in, tests/output.at,
	* tests/bison: New.
	* tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER,
	m4_if, m4_patsubst, and m4_regexp.
	* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an
	`input' file instead of echo.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	Bump to 1.28e.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	Version 1.28d.

	2001-08-29  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (yyparse): Don't take the address of an
	item before the start of an array, as that doesn't conform to
	the C Standard.

	2001-08-29  Robert Anisko  <anisko_r@epita.fr>

	* doc/bison.texinfo (Location Tracking Calc): New node.

	2001-08-29  Paul Eggert  <eggert@twinsun.com>

	* src/output.c (output): Do not define const, as this now
	causes more problems than it cures.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Modernize `@node' and `@top' use: just name
	the nodes.
	Be sure to tag the `detailmenu'.

	2001-08-29  Akim Demaille  <akim@epita.fr>

	* Makefile.maint (do-po-update): Wget refuses to overwrite files:
	download in a tmp dir.

	2001-08-28  Marc Autret  <autret_m@epita.fr>

	* config/depcomp: New file.

	2001-08-28  Marc Autret  <autret_m@epita.fr>

	* doc/bison.1 (mandoc): Adjust.
	From Juan Manuel Guerrero.

	2001-08-28  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.c (print_state): Fix.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/vcg.h (classname_s, infoname_s, node_s): Constify the
	char * members.
	Echo modifications to the functions prototypes.
	* src/vcg.c (add_classname, add_infoname): Adjust arguments.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/vcg.c: Include `xalloc.h'.
	(add_colorentry): New.
	(add_classname): New.
	(add_infoname): New.
	* src/vcg.h: Add new prototypes.

	2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Sync. again with CVS Autoconf.

	2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Formatting changes.
	(po-update, cvs-update, update): New targets.
	(AMTAR): Remove.

	2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.am (AUTOMAKE_OPTIONS): 1.5.
	* Makefile.maint: Sync. with CVS Autoconf.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/vcg.h (struct infoname_s): New.
	(struct colorentry_s): New.
	(graph_s): New fields {vertical,horizontal}_order in structure.
	Add `infoname' field.
	Add `colorentry' field;
	* src/vcg_defaults.h (G_VERTICAL_ORDER): New.
	(G_HORIZONTAL_ORDER): New.
	(G_INFONAME): New.
	(G_COLORENTRY): New.
	* src/vcg.c (output_graph): Add output of {vertical,horizontal}_order.
	Add output of `infoname'.
	Add output of `colorentry'.

	2001-08-27  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_dquoted_param): Rename variable `index' to `i'.
	This one shadowed a global parameter.

	2001-08-24  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.c (node_output_size): Declared POSIX `size_t' type,
	instead of `unsigned'.
	(print_state): Do not call obstack_object_size () in obstack_grow ()
	to avoid macro variables shadowing.

	2001-08-23  Marc Autret  <autret_m@epita.fr>

	* src/lex.c (percent_table): Typo: s/naem/name/.
	Add graph option.
	Normalize new options declarations.

	2001-08-20  Pascal Bart  <pascal.bart@epita.fr>

	* tests/suite.at: Exercise %header_extension and %source_extension.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_dquoted_param): New.
	(parse_header_extension_decl): Use it.
	(parse_source_extension_decl): Likewise.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* src/vcg.c: Remove includes of `complain.h' and `xalloc.h'.
	(get_xxxx_str): Use assert () instead of complain ().
	Remove return invokations in default cases.
	(get_decision_str): Modify default behaviour. Remove second argument.
	Echo modifications on calls.
	(output_graph): Fix.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* src/getargs.c (usage): Update with ``-g, --graph''.

	2001-08-16  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo (Bison Options): Add items `-g', `--graph'.
	(Option Cross Key): Likewise.
	* doc/bison.1: Update.

2001-09-25  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output_master_parser): Don't finish action_obstack.
	(output_parser): Don't care about the muscle action, here.
	(prepare): Copy the action_obstack in the action muscle.
	(output): Free action_obstack.

2001-09-23  Pascal Bart  <pascal.bart@epita.fr>

	* src/reader.c (parse_union_decl): Add new obstack union_obstack.  Which
	will contain `%union' declaration.
	(parse_union_decl): Delete #line directive output.
	(parse_union_decl): Substitute /attrs_obstack/union_obstack for all
	informations about %union.
	(parse_union_decl): Copy the union_obstack in the muscle stype.
	* src/bison.simple: Add new #line directive.
	Add typdef %%stype YYSTYPE.

2001-09-23  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: Add new `#line' directive.

2001-09-22  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: New `#line' directive.
	* src/output.c (output_parser): Support new dynamic muscle input_line.

2001-09-22  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_master_parser): New.
	(output_parser): Be more re-entrant.

2001-09-21  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (copy_definition, parse_union_decl): Update and use
	`linef' muscle.
	(copy_action): Likewise.
	Use obstack_1grow ().
	* src/muscle_tab.c (muscle_init): Add muscle `linef'.

2001-09-21  Marc Autret  <autret_m@epita.fr>

	* src/options.c (option_table): Adjust.
	* src/lex.c (parse_percent_token): Fix.

2001-09-20  Pascal Bart  <pascal.bart@epita.fr>

	* src/options.c (symtab.h): Include it, need by lex.h.

2001-09-20  Pascal Bart  <pascal.bart@epita.fr>

	* src/lex.c (parse_percent_token): Change type of variable `tx', which
	is now an option_table_struct*.
	(option_strcmp): New function option_strcmp.
	(parse_percent_token): Call option_strcmp.
	* src/getargs.c (xalloc.h, options.h): Include it.
	(getargs): Call create_long_option_table.
	(getargs): Free longopts at the end of the function.
	(shortopts): Move in options.c.
	* src/options.c (create_long_option_table): New function.  Convert
	information from option_table to option structure.
	* src/reader.c (options.h): Include it.

	* src/Makefile.am: Adjust.
	* src/options.c (option_table): Create from longopts and percent_table.
	* src/getargs.c (longopts): Delete.
	* src/lex.c (struct percent_table_struct): Delete.
	(percent_table): Delete.
	(options.h): Include it.
	* src/options.c: Create.
	* src/options.h: Create.
	Declare enum opt_access_e.
	Define struct option_table_struct.

2001-09-20  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo: Adjust terminologies about prologue and epilogue
	sections of Bison.

2001-09-19  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple: s/%%filename/%%skeleton.
	* src/muscle_tab.c (getargs.h): Include it.
	(muscle_init): Insert new muscle skeleton.

2001-09-18  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output_parser): Delete unused variable actions_dumped.

2001-09-07  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output): Delete call to reader_output_yylsp.
	* src/reader.c (reader): Likewise.
	* src/reader.h: Delete declaration of reader_output_yylsp.

2001-09-02  Marc Autret  <autret_m@epita.fr>

	* src/reader.c: Include muscle_tab.h.
	(parse_union_decl): Update.
	(parse_macro_decl): Rename parse_muscle_decl.
	Update to use renamed functions and variable.
	(read_declarations, copy_action, read_additionnal_code, : Updated
	with correct variables and functions names.
	(packsymbols, reader): Likewise.

	* src/reader.h (muscle_obstack): Extern declaration update.

	* src/output.c: Include muscle_tab.h
	In all functions using macro_insert, change by using muscle_insert ().
	(macro_obstack): Rename muscle_obstack.
	Echo modifications in the whole file.
	(MACRO_INSERT_INT): Rename MUSCLE_INSERT_INT.
	(MACRO_INSERT_STRING): Rename MUSCLE_INSERT_STRING.
	(MACRO_INSERT_PREFIX): Rename MUSCLE_INSERT_PREFIX.

	* src/muscle_tab.h: Update double inclusion macros.
	(macro_entry_s): Rename muscle_entry_s.
	Update prototypes.

	* src/muscle_tab.c: Include muscle_tab.h.
	Rename macro_tabble to muscle_table.
	(mhash1, mhash2, mcmp): Use muscle_entry.
	(macro_init): Rename muscle_init. Update.
	(macro_insert): Rename muscle_insert. Update.
	(macro_find): Rename muscle_find. Update.

	* src/main.c: Include muscle_tab.h.
	(main): Call muscle_init ().
	* src/Makefile.am (bison_SOURCES): Echo modifications.

2001-09-02  Marc Autret  <autret_m@epita.fr>

	Now the files macro_tab.[ch] are named muscle_tab.[ch].

	* src/muscle_tab.c, src/muscle_tab.h: Add files.

2001-09-02  Marc Autret  <autret_m@epita.fr>

	* src/macrotab.c, src/macrotab.h: Remove.

2001-09-01  Pascal Bart  <pascal.bart@epita.fr>

	* src/reader.c (copy_guard): Use muscle to specify the `#line'
	filename.

2001-09-01  Marc Autret  <autret_m@epita.fr>

	* tests/calc.at (exp): Now, YYERROR_VERBOSE need to be set
	to an explicit value to activate the feature. We do it here.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (prepare): Delete the `filename' muscule insertion.
	* src/reader.c (copy_action): Use `filename' muscule with `#line'.
	(parse_union_decl): Likewise.
	* src/macrotab.c (macro_init): Initialize filename by infile.

2001-08-31  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple (YYLSP_NEEDED): New definition.
	* src/output.c (prepare): Add macro insertion of `locations_flag'

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (prepare): Delete insertion of previous muscles,
	and insert the `prefix' muscles.
	* src/macrotab.c (macro_init): Likewise.
	(macro_init): Initialization prefix directive by `yy'.
	* src/bison.simple: Substitute all %%yylex, %%yychar, %%yylval,
	%%yydebug, %%yyerror, %%yynerrs and %%yyparse by yylex, yychar,
	yylval, yydebug, yyerror, yynerrs and yyparse.
	New directive `#define' to substitute yydebug, ... with option
	name_prefix.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/main.c (main): Standardize.
	* src/output.c (output_table_data, output_parser): Likewise.
	* src/macrotab.h, src/macrotab.c, src/bison.simple: Likewise.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>, Marc Autret  <autret_m@epita.fr>

	* src/reader.c (read_additionnal_code): Rename %%user_code to
	%%epilogue.
	* src/output.c (output): Rename %%declarations to %%prologue.
	* src/bison.simple: Echo modifications.

2001-08-31  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (readgram): CleanUp.
	(output_token_defines): Likewise.
	(packsymbols): Likewise.
	(reader): Likewise.
	* src/output.c (output): CPP-out useless code.

2001-08-31  Pascal Bart  <pascal.bart@epita.fr>

	* src/reader.c (reader): Delete obsolete call to function
	output_trailers and output_headers.
	* src/output.h: Remove obsolete functions prototypes of output_headers
	and output_trailers.

2001-08-30  Pascal Bart  <pascal.bart@epita.fr>

	* src/main.c: Include macrotab.h.
	* src/macrotab.h (macro_entry_s): Constify fields.
	Adjust functions prototypes.
	* src/macrotab.c (macro_insert): Constify key and value.
	(macro_find): Constify key.
	(macro_insert): Include 'xalloc.h'
	(macro_insert): Use XMALLOC.
	(macro_find): Constify return value.
	* src/output.c (output_table_data): Rename table to table_data.
	(output_parser): Constify macro_key, macro_value.

2001-08-30  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (parse_skel_decl): New.
	(read_declarations): Add case `tok_skel', call parse_skel_decl ().
	* src/lex.h (token_t): New token `tok_skel'.
	* src/lex.c (percent_table): Add skeleton option entry.
	Standardize.

2001-08-29  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple: Add %%user_code directive at the end.
	* src/reader.c (read_additionnal_code): New.
	(reader): Use it.
	* src/output.c (output_program): Remove.
	(output): Update.

2001-08-28  Marc Autret  <autret_m@epita.fr>

	* src/output.c (output_actions): Clean up.
	(output_gram): CPP-out useless code.
	* src/reader.c (reader): Clean up, CPP-out useless code.

2001-08-28  Pascal Bart  <pascal.bart@epita.fr>

	* src/output.c (output): Copy attrs_obstack in the '%%definitions'
	directive.
	* src/bison.simple: Add `%%definitions'.

2001-08-28  Marc Autret  <autret_m@epita.fr>

	* config/depcomp: New file.

2001-08-27  Paul Eggert  <eggert@twinsun.com>

	* src/bison.simple (yyparse): Don't take the address of an
	item before the start of an array, as that doesn't conform to
	the C Standard.

2001-08-27  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output): Remove the initialization of the macro
	obstack.  It was done too late here.

	* src/reader.c (parse_macro_decl): Fix.  Use of the macro obstack was
	completely wrong.
	(reader): Initialize the macro obstack here, since we need it to grow
	'%define' directives.

	* src/reader.h: Declare the macro obstack as extern.

2001-08-27  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_parser): Fix.  Store single '%' characters in
	the output obstack instead of throwing them away.

2001-08-27  Akim Demaille  <akim@epita.fr>

	* Makefile.am (AUTOMAKE_OPTIONS): 1.5.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* lib/Makefile.am: Adjust.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/bison.simple: Update and add '%%' directives.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/reader.c (reader): Remove calls to 'output_headers' and
	'output_trailers'. Remove some C output.
	(readgram): Disable a piece of code that was writing a default
	definition for 'YYSTYPE'.
	(reader_output_yylsp): Remove.
	(packsymbols): Output token defintions to a macro.
	(copy_definition): Disable C output.

	* src/reader.c (parse_macro_decl): New function used to parse macro
	declarations.
	(copy_string2): Put the body of copy_string into this new function.
	Add a parameter to let the caller choose whether he wants to copy the
	string delimiters or not.
	(copy_string): Be a simple call to copy_string2 with the last argument
	bound to true.
	(read_declarations): Add case for macro definition.
	(copy_identifier): New.
	(parse_macro_decl): Read macro identifiers using copy_identifier
	rather than lex.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (prepare): Add prefixed names.
	(output_parser): Output semantic actions.
	(output_parser): Fix bug on '%%line' directives.

	* src/output.c (output_headers): Remove. The C code printed by this
	function should now be in the skeletons.
	(output_trailers): Remove.
	(output): Disable call to 'reader_output_yylsp'.
	(output_rule_data): Do not output tables to the table obstack.

	* src/output.c: Remove some C dedicated output.
	Improve the use of macro and output obstacks.
	(output_defines): Remove.

	* src/output.c (output_token_translations): Associate 'translate'
	table with a macro. No output to the table obstack.
	(output_gram): Same for 'rhs' and 'prhs'.
	(output_stos): Same for 'stos'.
	(output_rule_data): Same for 'r1' and 'r2'.
	(token_actions): Same for 'defact'.
	(goto_actions): Same for 'defgoto'.
	(output_base): Same for 'pact' and 'pgoto'.
	(output_table): Same for 'table'.
	(output_check): Same for 'check'.

	* src/output.c (output_table_data): New function.
	(output_short_table): Remove.
	(output_short_or_char_table): Remove.

	* src/output.c (output_parser): Replace most of the skeleton copy code
	with something new. Skeletons are now processed character by character
	rather than line by line, and Bison looks for '%%' macros. This is the
	first step in making Bison's output process (a lot) more flexible.
	(output_parser): Use the macro table.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/main.c (main): Initialize the macro table.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/lex.c (percent_table): Add tok_define.
	* src/lex.h: Add tok_define.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* src/macrotab.c: New file.
	* src/macrotab.h: New file.
	* src/Makefile.am: Update.

2001-08-25  Robert Anisko  <robert.anisko@epita.fr>

	* lib/hash.c: New file.
	* lib/hash.h: New file.
	* lib/Makefile.am: Update.

2001-08-15  Akim Demaille  <akim@epita.fr>

	Version 1.28c.

2001-08-15  Marc Autret  <autret_m@epita.fr>

	* src/reader.c (readgram): Indent output macro YYSTYPE.
	(packsymbols): Likewise.
	(output_token_defines): Likewise.
	* src/files.c: Standardize.
	(compute_header_macro): New.
	(defines_obstack_save): New. Use compute_header_macro.
	(output_files): Update. Use defines_obstack_save.

2001-08-15  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo (Table of Symbols): Document
	YYSTACK_USE_ALLOCA.

2001-08-15  Akim Demaille  <akim@epita.fr>

	* missing: Update from CVS Automake.
	* config/config.guess, config/config.sub, config/texinfo.tex:
	Update from gnu.org.

2001-08-15  Akim Demaille  <akim@epita.fr>

	* Makefile.maint: Sync with CVS Autoconf.

2001-08-14  Pascal Bart  <pascal.bart@epita.fr>

	* doc/bison.texinfo: Include GNU Free Documentation License from
	`fdl.texi'.
	* doc/fdl.texi: Add to package.

2001-08-14  Marc Autret  <autret_m@epita.fr>

	Turn on %{source,header}_extension features.

	* src/lex.c (percent_table): Un-CPP out header_extension and
	source_extension.
	* src/files.c (compute_exts_from_gf): Compare pointers with NULL.
	(compute_exts_from_src): Remove conditions. It restores priorities
	between options.

2001-08-14  Marc Autret  <autret_m@epita.fr>

	* src/files.c (compute_base_names): Add extensions computing when
	`--file-prefix' used.
	Standardize function calls.

2001-08-13  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple (YYSTACK_USE_ALLOCA): Changed to allow users
	defining it (defined but null disables alloca).

2001-08-13  Marc Autret  <autret_m@epita.fr>

	* src/bison.simple (_yy_memcpy): CPP reformat.

2001-08-13  Pascal Bart  <pascal.bart@epita.fr>

	* tests/atconfig.in (CPPFLAGS): Fix.

2001-08-10  Pascal Bart  <pascal.bart@epita.fr>

	* doc/bison.texinfo: Include GNU General Public License from
	`gpl.texi'.
	* doc/gpl.texi: Add to package.

2001-08-10  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.h: Fix.
	* src/reader.c (read_declarations): Use parse_header_extension_decl ().

2001-08-10  Akim Demaille  <akim@epita.fr>

	* src/system.h: Provide default declarations for stpcpy, strndup,
	and strnlen.

2001-08-10  Robert Anisko  <anisko_r@epita.fr>

	* doc/bison.texinfo (Locations): Update @$ stuff.

2001-08-09  Robert Anisko  <anisko_r@epita.fr>

	* src/bison.simple (YYLLOC_DEFAULT): Update.
	(yyparse): Adjust.

2001-08-08  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo: Change @samp{$<@dots{}>} to
	@samp{$<@dots{}>@var{n}} in Section Actions in Mid-Rule.
	Reported by Fabrice Bauzac.

2001-08-08  Marc Autret  <autret_m@epita.fr>

	* src/vcg_default.h: Use NULL instead of 0 to initialize pointers.
	* src/vcg.c (output_node): Fix.
	* src/vcg.h: Cleanup.
	* src/print_graph.c: Add comments.
	(node_output_size): New global variable. Simplify the formatting of
	the VCG graph output.
	(print_actions): Unused code is now used. It notifies the final state
	and no action states in the VCG graph. It also give the reduce actions.
	The `shift and goto' edges are red and the `go to state' edges are
	blue.
	Get the current node name and node_obstack by argument.
	(node_obstack): New variable.
	(print_state): Manage node_obstack.
	(print_core): Use node_obstack given by argument.
	A node is not only computed here but in print_actions also.
	(print_graph): CPP out useless code instead of commenting it.

2001-08-07  Pascal Bart  <pascal.bart@epita.fr>

	* tests/atconfig.in (CPPFLAGS): Fix.

2001-08-07  Akim Demaille  <akim@epita.fr>

	* src/print_graph.c (quote): New.
	(print_core): Use it.

2001-08-06  Akim Demaille  <akim@epita.fr>, Marc Autret  <autret_m@epita.fr>

	* src/vcg.c (complain.h): Include it.
	Unepitaize `return' invocations.
	[NDEBUG] (main): Remove.
	* src/vcg.h (node_t, edge_t, graph_t): Constify the char * members.
	* src/files.c (open_files): Initialize graph_obstack.
	* src/print_graph.c (print_actions): CPP out useless code.
	(print_core): Don't output the last `\n' in labels.
	Use `quote'.
	* src/files.c (output_files): Output the VCG file.
	* src/main.c (main): Invoke print_graph ();

2001-08-06  Marc Autret  <autret_m@epita.fr>

	Automaton VCG graph output.
	Using option ``-g'' or long option ``--graph'', you can generate
	a gram_filename.vcg file containing a VCG description of the LALR (1)
	automaton of your grammar.

	* src/main.c: Call to print_graph() function.
	* src/getargs.h: Update.
	* src/getargs.c (options): Update to catch `-g' and `--graph' options.
	(graph_flag): New flag.
	(longopts): Update.
	(getargs): Add case `g'.
	* src/files.c (graph_obstack): New obstack struct.
	(open_files): Initialize new obstack.
	(output_files): Saves graph_obstack if required.
	* src/files.h (graph_obstack): New extern declaration.
	* src/Makefile.am: Add new source files.

2001-08-06  Marc Autret  <autret_m@epita.fr>

	* src/print_graph.c, src/print_graph.h (graph): New.
	* src/vcg.h: New file.
	* src/vcg.c: New file, VCG graph handling.

2001-08-06  Marc Autret  <autret_m@epita.fr>

	Add of %source_extension and %header_extension which specify
	the source or/and the header output file extension.

	* src/files.c (compute_base_names): Remove initialisation of
	src_extension and header_extension.
	(compute_exts_from_gf): Update.
	(compute_exts_from_src): Update.
	(output_files): Update.
	* src/reader.c (parse_header_extension_decl): New.
	(parse_source_extension_decl): New.
	(read_declarations): New case statements for the new tokens.
	* src/lex.c (percent_table): Add entries for %source_extension
	and %header_extension.
	* src/lex.h (token_e): New tokens tok_hdrext and tok_srcext.

2001-08-06  Marc Autret  <autret_m@epita.fr>

	* configure.in: Bump to 1.28c.
	* doc/bison.texinfo: Texinfo thingies.

2001-08-04  Pascal Bart  <pascal.bart@epita.fr>

	* tests/atconfig.in (CPPFLAGS): Add.
	* tests/calc.at (AT_CHECK): Use CPPFLAGS.

2001-08-03  Akim Demaille  <akim@epita.fr>

	Version 1.28b.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (check-local): Ship testsuite.
	* tests/calc.at (_AT_DATA_CALC_Y): Prototype all the functions.
	Include `string.h'.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* configure.in: Try using -Wformat when compiling.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* configure.in: Bump to 1.28b.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* src/complain.c: Adjust strerror_r portability issues.

2001-08-03  Akim Demaille  <akim@epita.fr>

	Version 1.28a.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* src/getargs.c, src/getarg.h (skeleton)): Constify.
	* src/lex.c (literalchar): Avoid name clashes on `buf'.
	* src/getargs.c: Include complain.h.
	* src/files.c, src/files.h (skeleton_find): Avoid name clashes.
	* lib/quotearg.c, lib/quotearg.h: Update from fileutils 4.1.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* src/reader.c (readgram): Display hidden chars in error messages.

2001-08-03  Akim Demaille  <akim@epita.fr>

	Update to gettext 0.10.39.

2001-08-03  Akim Demaille  <akim@epita.fr>

	* lib/strspn.c: New.

2001-08-01  Marc Autret  <autret_m@epita.fr>

	* doc/bison.texinfo: Update.
	* doc/bison.1 (mandoc): Update.
	* src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove .c and .h.
	* src/files.c: Support output files extensions computing.
	(src_extension): New static variable.
	(header_extension): New static variable.
	(tr): New function.
	(get_extension_index): New function, gets the index of an extension
	filename in a string.
	(compute_exts_from_gf): New function, computes extensions from the
	grammar file extension.
	(compute_exts_from_src): New functions, computes extensions from the
	C source file extension, file given by ``-o'' option.
	(compute_base_names): Update.
	(output_files): Update.

2001-08-01  Robert Anisko  <anisko_r@epita.fr>

	* doc/bison.texi: Document @$.
	(Locations): New section.

2001-07-18  Akim Demaille  <akim@epita.fr>

	* Makefile.maint, GNUmakefile: New, from Autoconf 2.52.
	* config/prev-version.txt, config/move-if-change: New.
	* Makefile.am: Adjust.

2001-07-08  Pascal Bart  <pascal.bart@epita.fr>

	* src/bison.simple (yyparse): Suppress warning `comparaison
	between signed and unsigned'.

2001-07-05  Pascal Bart  <pascal.bart@epita.fr>

	* src/getargs.h (raw_flag): Remove.
	* src/getargs.c: Die on `-r'/`--raw'.
	* src/lex.c (parse_percent_token): Die on `%raw'.
	* src/reader.c (output_token_defines): Suppress call to `raw_flag'.
	* tests/calc.at: Suppress test with option `--raw'.

2001-07-14  Akim Demaille  <akim@epita.fr>

	* config/: New.
	* configure.in: Require Autoconf 2.50.
	Update to gettext 0.10.38.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: ANSIfy the examples.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* getargs.c (skeleton): New variable.
	(longopts): --skeleton is a new option.
	(shortopts, getargs): -S is a new option.
	* getargs.h: Declare skeleton.
	* output.c (output_parser): Use it.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* m4/strerror_r.m4: New.
	* m4/error.m4: Run AC_FUNC_STRERROR_R.
	* lib/error.h, lib/error.c: Update.

2001-03-16  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (longopts): Clean up.

2001-02-21  Akim Demaille  <akim@epita.fr>

	* src/reader.c (gensym): `gensym_count' is your own.
	Use a static buf to create the symbol name, as token_buffer is no
	longer a buffer.

2001-02-08  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflict_report): Be sure not to append to res
	between two calls, which could happen if both first sprintf were
	skipped, but not the first cp += strlen.

2001-02-08  Akim Demaille  <akim@epita.fr>

	* lib/memchr.c, lib/stpcpy.c, lib/strndup.c, lib/strnlen.c:
	New, from fileutils 4.0.37.
	* configure.in: Require Autoconf 2.49c.  I took some time before
	making this decision.  This is the only way out for portability
	issues in Bison, it would mean way too much duplicate effort to
	import in Bison features implemented in 2.49c since 2.13.
	AC_REPLACE_FUNCS and AC_CHECK_DECLS the functions above.

2001-02-02  Akim Demaille  <akim@epita.fr>

	* lib/malloc.c, lib/realloc.c: New, from the fileutils 4.0.37.
	* lib/xalloc.h, lib/xmalloc.c: Update.

2001-01-19  Akim Demaille  <akim@epita.fr>

	Get rid of the ad hoc handling of token_buffer in the scanner: use
	the obstacks.

	* src/lex.c (token_obstack): New.
	(init_lex): Initialize it.  No longer call...
	(grow_token_buffer): this.  Remove it.
	Adjust all the places which used it to use the obstack.

2001-01-19  Akim Demaille  <akim@epita.fr>

	* src/lex.h: Rename all the tokens:
	s/\bENDFILE\b/tok_eof/g;
	s/\bIDENTIFIER\b/tok_identifier/g;
	etc.
	Let them be enums, not #define, to ease debugging.
	Adjust all the code.

2001-01-18  Akim Demaille  <akim@epita.fr>

	* src/lex.h (MAXTOKEN, maxtoken, grow_token_buffer): Remove, private.
	* src/lex.c (maxtoken, grow_token_buffer): Static.

2001-01-18  Akim Demaille  <akim@epita.fr>

	Since we now use obstacks, more % directives can be enabled.

	* src/lex.c (percent_table): Also accept `%yacc',
	`%fixed_output_files', `%defines', `%no_parser', `%verbose', and
	`%debug'.
	Handle the actions for `%semantic_parser' and `%pure_parser' here,
	instead of returning a token.
	* src/lex.h (SEMANTIC_PARSER, PURE_PARSER): Remove, unused.
	* src/reader.c (read_declarations): Adjust.
	* src/files.c (open_files): Don't call `compute_base_names', don't
	compute `attrsfile' since they depend upon data which might be
	*in* the input file now.
	(output_files): Do it here.
	* src/output.c (output_headers): Document the fact that this patch
	introduces a guaranteed SEGV for semantic parsers.
	* doc/bison.texinfo: Document them.
	* tests/suite.at: Exercise these %options.

2000-12-20  Akim Demaille  <akim@epita.fr>

	Also handle the output file (--verbose) with obstacks.

	* files.c (foutput): Remove.
	(output_obstack): New.
	Adjust all dependencies.
	* src/conflicts.c: Return a string.
	* src/system.h (obstack_grow_string): Rename as...
	(obstack_sgrow): this.  Be ready to work with non literals.
	(obstack_fgrow4): New.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/files.c (open_files): Fix the computation of short_base_name
	in the case of `-o foo.tab.c'.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_string, copy_comment, copy_comment2, copy_at)
	(copy_dollar): Now that everything uses obstacks, get rid of the
	FILE * parameters.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/files.c (open_files): Actually the `.output' file is based
	on the short_base_name, not base_name.
	* tests/suite.at (Checking output file names): Adjust.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Remove, we now use directly...
	* src/bison.simple: this.
	* src/Makefile.am: Use pkgdata instead of data.

2000-12-20  Akim Demaille  <akim@epita.fr>

	* src/files.c (guard_obstack): New.
	(open_files): Initialize it.
	(output_files): Dump it...
	* src/files.h: Export it.
	* src/reader.c (copy_guard): Use it.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/files.c (outfile, defsfile, actfile): Removed as global
	vars.
	(open_files): Don't compute them.
	(output_files): Adjust.
	(base_name, short_base_name): Be global.
	Adjust dependencies.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/files.c (strsuffix): New.
	(stringappend): Be just like strcat but allocate.
	(base_names): Eve out from open_files.
	Try to simplify the rather hairy computation of base_name and
	short_base_name.
	(open_files): Use it.
	* tests/suite.at (Checking output file names): New test.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/system.h (obstack_grow_literal_string): Rename as...
	(obstack_grow_string): this.
	* src/output.c (output_parser): Recognize `%% actions' instead of
	`$'.
	* src/bison.s1: s/$/%% actions/.
	* src/bison.hairy: Likewise.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_parser): Compute the `#line' lines when
	there are.
	* src/Makefile.am (bison.simple): Be a simple copy of bison.s1.
	Suggested by Hans Aberg.

2000-12-19  Akim Demaille  <akim@epita.fr>

	Let the handling of the skeleton files be local to the procedures
	that use it.

	* src/files.c (xfopen, xfclose, skeleton_find, guardfile): No
	longer static.
	(fparser, open_extra_files): Remove.
	(open_files, output_files): Don't take care of fparser.
	* src/files.h: Adjust.
	* src/output.c (output_parser): Open and close the file to the
	skeleton.
	* src/reader.c (read_declarations): When %semantic_parser, open
	fguard.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/file.h (BISON_SIMPLE, BISON_HAIRY): Move from here...
	* src/system.h (BISON_SIMPLE, BISON_HAIRY): ... to here.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/files.c (open_files): Yipee!  We no longer need all the code
	looking for `/tmp' since we have no tmp file.

2000-12-19  Akim Demaille  <akim@epita.fr>

	* src/system.h (EXT_TAB, EXT_OUTPUT, EXT_STYPE_H, EXT_GUARD_C):
	New macros.
	* src/files.c (open_files): Less dependency on MSDOS etc.

2000-12-14  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (YYLLOC_DEFAULT): New macro.
	Provide a default definition.
	Use it when executing the default @ action.
	* src/reader.c (reader_output_yylsp): No longer include
	`timestamp' and `text' in the default YYLTYPE.

2000-12-12  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_definition, parse_union_decl, copy_action)
	(copy_guard): Quote the file names.
	Reported by Laurent Mascherpa.

2000-12-12  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_headers, output_program, output): Be sure
	to escape special characters when outputting filenames.
	(ACTSTR_PROLOGUE, ACTSTR_EPILOGUE): Remove.
	(output_headers): Don't depend on them, Use ACTSTR.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* lib/obstack.h: Formatting changes.
	(obstack_grow, obstack_grow0): Don't cast WHERE at all: it
	prevents type checking.
	(obstack_ptr_grow, obstack_ptr_grow_fast): When assigning, don't
	cast the value to (void *): assigning a `foo *' to a `void *'
	variable is valid.
	(obstack_int_grow, obstack_int_grow_fast): Don't cast AINT to int.
	* src/reader.c (parse_union_decl): Typo: use obstack_1grow to
	append characters.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* tests/Makefile.am (suite.m4, regression.m4, calc.m4): Rename
	as...
	(suite.m4, regression.m4, calc.m4): these.
	* tests/atgeneral.m4: Update from CVS Autoconf.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* tests/regression.m4 (%union and --defines): New test,
	demonstrating a current bug in the obstack implementation.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (_YY_DECL_VARIABLES, YY_DECL_VARIABLES): New
	macros.
	Use them to declare the variables which are global or local to
	`yyparse'.

2000-11-17  Akim Demaille  <akim@epita.fr>

	* acconfig.h: Remove, no longer used.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src: s/Copyright (C)/Copyright/g.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src/reader.c (reader): #define YYLSP_NEEDED to 1 instead of just
	defining.
	* src/bison.s1: s/#ifdef YYLSP_NEEDED/#if YYLSP_NEEDED/.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (YYLEX): Use #if instead of #ifdef.
	Merge in a single CPP if/else.

2000-11-07  Akim Demaille  <akim@epita.fr>

	* src/output.c (output): Remove useless variables.
	* lib/obstack.c (obstack_grow, obstack_grow0): Rename the second
	argument `data' for consistency with the prototypes.
	Qualify it `const'.
	(obstack_copy, obstack_copy0): Rename the second argument as
	`address' for consistency.  Qualify it `const'.
	* lib/obstack.h (obstack_copy, obstack_copy0, obstack_grow)
	(obstack_grow0, obstack_ptr_grow, obstack_ptr_grow_fast): Qualify
	`const' their input argument (`data' or `address').
	Adjust the corresponding macros to include `const' in casts.

2000-11-03  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (INCLUDES): s/PFILE/BISON_SIMPLE/.
	s/PFILE1/BISON_HAIRY/.
	Adjust dependencies.

2000-11-03  Akim Demaille  <akim@epita.fr>

	For some reason, this was not applied.

	* src/files.c [VMS]: No longer include `ssdef.h', no longer define
	`unlink': it's no longer used.

2000-11-03  Akim Demaille  <akim@epita.fr>

	* src/files.c (skeleton_find): New function, eved out of...
	(open_files, open_extra_files): here.

2000-11-03  Akim Demaille  <akim@epita.fr>

	Don't use `atexit'.

	* src/files.c (obstack_save): New function.
	(done): Rename as...
	(output_files): this.
	Use `obstack_save'.
	* src/main.c (main): Don't use `atexit' to register `done', since
	it no longer has to remove tmp files, just call `output_files'
	when there are no errors.

2000-11-02  Akim Demaille  <akim@epita.fr>

	* src/files.c [VMS]: No longer include `ssdef.h', no longer define
	`unlink': it's no longer used.
	* src/files.h: Formatting changes.

2000-11-02  Akim Demaille  <akim@epita.fr>

	Remove the last uses of mktemp and unlink/delete.

	* src/files.c (fdefines, ftable): Removed.
	(defines_ostack, table_obstack): New.
	Adjust dependencies of the former into uses of the latter.
	* src/output.c (output_short_or_char_table, output_short_table):
	Convert to using obstacks.
	* src/reader.c (copy_comment2): Accept one FILE * and two
	obstacks.
	(output_token_defines, reader_output_yylsp): Use obstacks.
	* src/system.h (obstack_fgrow3): New.
	* po/POTFILES.in: Adjust.

2000-11-01  Akim Demaille  <akim@epita.fr>

	Change each use of `fattrs' into a use of `attrs_obstack'.

	* src/reader.c (copy_at): Typo: s/yylloc/yyloc/.
	* src/files.c (fattrs): Remove.
	(attrs_obstack): New.
	Adjust all dependencies.
	(done): If SEMANTIC_PARSER, dump attrs_obstack into attrsfile.

2000-11-01  Akim Demaille  <akim@epita.fr>

	Introduce obstacks.
	Change each use of `faction' into a use of `action_obstack'.

	* lib/obstack.h, lib/obstack.c: New files.
	* src/files.c (faction): Remove.
	(action_obstack): New.
	Adjust all dependencies.

2000-10-20  Akim Demaille  <akim@epita.fr>

	* lib/quote.h (PARAMS): New macro.  Use it.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_short_or_char_table): New function.
	(output_short_table, output_token_translations): Use it.
	(goto_actions): Use output_short_table.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/symtab.c (bucket_new): New function.
	(getsym): Use it.

	* src/output.c (output_short_table): New argument to display the
	comment associated with the table.
	Adjust dependencies.
	(output_gram): Use it.
	(output_rule_data): Nicer output layout for YYTNAME.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/lex.c (read_typename): New function.
	(lex): Use it.
	* src/reader.c (copy_dollar): Likewise.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_comment2): Expect the input stream to be on
	the `/' which is suspected to open a comment, instead of being
	called after `//' or `/*' was read.
	(copy_comment, copy_definition, parse_union_decl, copy_action)
	(copy_guard): Adjust.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_expect_decl): Use `skip_white_space' and
	`read_signed_integer'.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_dollar): New function.
	(copy_guard, copy_action): Use it.

2000-10-16  Akim Demaille  <akim@epita.fr>

	* lib/quote.h, lib/quote.c, lib/quotearg.h, lib/quotearg.c:
	* m4/prereq.m4, m4/c-bs-a.m4, m4/mbstate.m4:
	New files, from Fileutils 4.0.27.
	* src/main.c (printable_version): Remove.
	* src/lex.c, src/reader.c: Use `quote'.

2000-10-04  Akim Demaille  <akim@epita.fr>

	* lib/error.c, lib/error.h: New files, needed by xmalloc.c.

2000-10-04  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Various typos spotted by Neil Booth.

2000-10-04  Akim Demaille  <akim@epita.fr>

	When a literal string is used to define two different tokens,
	`bison -v' segfaults.
	Reported by Piotr Gackiewicz, and fixed by Neil Booth.

	* tests/regression.m4: New file.
	Include the core of the sample provided by Piotr Gackiewicz.
	* src/reader.c (parse_token_decl): Diagnose bad cases, and proceed
	properly.

2000-10-04  Akim Demaille  <akim@epita.fr>

	* src/reader.c (parse_expect_decl): Keep `count' within the size
	of `buffer'.
	From Neil Booth.

2000-10-02  Paul Eggert  <eggert@twinsun.com>

	* bison.s1 (yyparse): Assign the default value
	unconditionally, to avoid a GCC warning and make the parser a
	tad smaller.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (getargs): Don't dump `--help' on unrecognized
	options.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/derives.c, src/print.c, src/reduce.c: To ease the
	translation, move some `\n' out of the translated strings.

2000-10-02  Akim Demaille  <akim@epita.fr>

	The location tracking mechanism is precious for parse error
	messages.  Nevertheless, it is enabled only when `@n' is used in
	the grammar, which is a different issue (you can use it in error
	message, but not in the grammar per se).  Therefore, there should
	be another means to enable it.

	* src/getargs.c (getargs): Support `--locations'.
	(usage): Report it.
	* src/getargs.h (locationsflag): Export it.
	* src/lex.c (percent_table): Support `%locations'.
	* src/reader.c (yylsp_needed): Remove this variable, now replaced
	with `locationsflag'.
	* doc/bison.texinfo: Document `--locations' and `%locations'.
	Sort the options.
	* tests/calc.m4: Test it.

	For regularity of the names, replace each
	(nolineflag, toknumflag, rawtokenumflag, noparserflag): with...
	(no_lineflag, token_tableflag, rawflag, no_parserflag): this.
	In addition replace each `flag' with `_flag'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Also test parse error messages, including with YYERROR_VERBOSE.

	* tests/calc.m4 (calc.y): Add support for `exp = exp' (non
	associative).
	Use it to check the computations.
	Use it to check `nonassoc' is honored.
	(AT_DATA_CALC_Y): Equip `calc.y' with YYERROR_VERBOSE when passed
	`--yyerror-verbose'.
	(_AT_CHECK_CALC): Adjust to this option.
	(_AT_CHECK_CALC_ERROR): New macro to check parse error messages.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Test also `--verbose', `--defines' and `--name-prefix'.  Testing
	the latter demonstrates a flaw in the handling of non debugging
	parsers introduced by myself on 2000-03-16: `#define yydebug 0'
	was used in order to simplify:

	#if YYDEBUG
	if (yydebug)
	{
	...
	}
	#endif

	into

	if (yydebug)
	{
	...
	}

	unfortunately this leads to a CPP conflict when
	`--name-prefix=foo' is used since it produces `#define yydebug
	foodebug'.

	* src/bison.s1 [!YYDEBUG]: Do not define yydebug.
	(YYDPRINTF): New macro.
	Spread its use.
	* tests/calc.m4 (AT_CHECK_CALC): Do require a title, build it from
	the bison options.
	Also test `--verbose', `--defines' and `--name-prefix'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Improve the readability of the produced parsers.

	* src/bison.s1: Formatting changes.
	Improve the comment related to the `$' mark.
	(yydefault): Don't fall through to `yyresume': `goto' there.
	* src/output.c (output_parser): When the `$' is met, skip the end
	of its line.
	New variable, `number_of_dollar_signs', to check there's exactly
	one `$' in the parser skeleton.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* lib/xstrdup.c: New file, from the fileutils.
	* src/reader.c (parse_token_decl, get_type_name, parse_type_decl)
	(parse_assoc_decl, parse_thong_decl, get_type): Use `xstrdup'
	instead of strlen + xmalloc + strcpy.
	* src/symtab.c (copys): Remove, use xstrdup instead.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/gram.h (associativity): New enum type which replaces the
	former CPP macros `RIGHT_ASSOC', `LEFT_ASSOC' and `NON_ASSOC' with
	`right_assoc', `left_assoc' and `non_assoc'.
	Adjust all dependencies.
	* src/reader.c: Formatting changes.
	(LTYPESTR): Don't define it, use it as a literal in
	`reader_output_yylsp'.
	* src/symtab.h (symbol_class): New enum type which replaces the
	former CPP macros `SUNKNOWN', `STOKEN and `SNTERM' with
	`sunknown', `stoken and `snterm'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (fixed_outfiles): Rename as...
	(yaccflag): for consistency and accuracy.
	Adjust dependencies.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Use the more standard files `xalloc.h' and `xmalloc.c' instead of
	Bison's `allocate.c' and `alloc.h'.  This patch was surprisingly
	difficult and introduced a lot of core dump.  It turns out that
	Bison used an implementation of `xmalloc' based on `calloc', and
	at various places it does depend upon the initialization to 0.  I
	have not tried to isolate the pertinent places, and all the former
	calls to Bison's `xmalloc' are now using `XCALLOC'.  Someday,
	someone should address this issue.

	* src/allocate.c, src/alloc.h, m4/bison-decl.m4: Remove.
	* lib/xmalloc.c, lib/xalloc.h, m4/malloc.m4, m4/realloc.m4: New
	files.
	Adjust dependencies.
	* src/warshall.h: New file.
	Propagate.

2000-10-02  Akim Demaille  <akim@epita.fr>

	Various anti-`extern in *.c' changes.

	* src/system.h: Include `assert.h'.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/state.h (nstates, final_state, first_state, first_shift)
	(first_reduction): Move their exportation from here...
	* src/LR0.h: to here.
	Adjust dependencies.
	* src/getargs.c (statisticsflag): New variable.
	Add support for `--statistics'.
	Adjust dependencies.

	Remove a lot of now useless `extern' statements in most files.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/LR0.h: New file.
	Propagate its use.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/print.h: New file.
	Propagate its use.
	* src/print.c: Formatting and ordering changes.
	(verbose, terse): Replace with...
	(print_results): this new function.
	Adjust dependencies.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/conflicts.c (conflict_report): New function.
	(conflict_log, verbose_conflict_log): Replace with...
	(print_conflicts): this function.
	Adjust dependencies.
	* src/conflicts.h: New file.
	Propagate its inclusion.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/nullable.h: New file.
	Propagate its inclusion.
	* src/nullable.c: Formatting changes.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/reduce.h: New file.
	Propagate its inclusion.
	* src/reduce.c: Topological sort and other formatting changes.
	(bool, TRUE, FALSE): Move their definition to...
	* src/system.h: here.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/files.c: Formatting changes.
	(tryopen, tryclose, openfiles): Rename as...
	(xfopen, xfclose, open_files): this.
	(stringappend): static.
	* src/files.h: Complete the list of exported symbols.
	Propagate its use.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/reader.h: New file.
	Propagate its use instead of tedious list of `extern' and
	prototypes.
	* src/reader.c: Formatting changes, topological sort,
	s/register//.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/lex.h: Prototype `lex.c' exported functions.
	* src/reader.c: Adjust.
	* src/lex.c: Formatting changes.
	(safegetc): Rename as...
	(xgetc): this.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/lalr.h: New file.
	Propagate its inclusion instead of prototypes and `extern'.
	* src/lalr.c: Formatting changes, topological sorting etc.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (token_actions): Introduce a temporary array,
	YYDEFACT, that makes it possible for this function to use
	output_short_table.

2000-10-02  Akim Demaille  <akim@epita.fr>

	`user_toknums' is output as a `short[]' in `output.c', while it is
	defined as a `int[]' in `reader.c'.  For consistency with the
	other output tables, `user_toknums' is now defined as a table of
	shorts.

	* src/reader.c (user_toknums): Be a short table instead of an int
	table.
	Adjust dependencies.

	Factor the short table outputs.

	* src/output.c (output_short_table): New function.
	* src/output.c (output_gram, output_stos, output_rule_data)
	(output_base, output_table, output_check):  Use it.

2000-10-02  Akim Demaille  <akim@epita.fr>

	* src/output.c (output): Topological sort of the functions, in
	order to get rid of the `static' prototypes.
	No longer use `register'.
	* src/output.h: New file.
	Propagate its inclusion in files explicitly prototyping functions
	from output.c.

2000-09-21  Akim Demaille  <akim@epita.fr>

	* src/atgeneral.m4: Update from Autoconf.

2000-09-21  Akim Demaille  <akim@epita.fr>

	* src/closure.h: New file.
	* src/closure.c: Formatting changes, topological sort over the
	functions, use of closure.h.
	(initialize_closure, finalize_closure):  Rename as...
	(new_closure, free_closure): these.  Adjust dependencies.
	* src/LR0.c: Formatting changes, topological sort, use of
	cloture.h.
	(initialize_states): Rename as...
	(new_states): this.
	* src/Makefile.am (noinst_HEADERS): Adjust.

2000-09-20  Akim Demaille  <akim@epita.fr>

	* src/acconfig.h: Don't protect config.h against multiple
	inclusion.
	Don't define PARAMS.
	* src/system.h: Define PARAMS.
	Remove some of the ad-hoc CPP magic for DOS, VMS etc.: this is the
	purpose of config.h.  system.h must not try to fix wrong
	definitions in config.h.

2000-09-20  Akim Demaille  <akim@epita.fr>

	* src/derives.h: New file.
	* src/main.c, src/derives.h: Use it.
	Formatting changes.
	* src/Makefile.am (noinst_HEADERS): Adjust.

2000-09-20  Akim Demaille  <akim@epita.fr>

	* tests/atgeneral.m4: Update from Autoconf.
	* tests/calc.m4 (_AT_DATA_CALC_Y, AT_DATA_CALC_Y, _AT_CHECK_CALC)
	(AT_CHECK_CALC): New macros.
	Use these macros to test bison with options `', `--raw',
	`--debug', `--yacc', `--yacc --debug'.

2000-09-19  Akim Demaille  <akim@epita.fr>

	* src/output.c: Formatting changes.
	* src/machine.h: Remove, leaving its contents in...
	* src/system.h: here.
	Include stdio.h.
	Adjust all dependencies on stdio.h and machine.h.
	* src/getargs.h: New file.
	Let all `extern' declarations about getargs.c be replaced with
	inclusion of `getargs.h'.
	* src/Makefile.am (noinst_HEADERS): Adjust.

	* tests/calc.m4 (yyin): Be initialized in main, not on the global
	scope.
	(yyerror): Returns void, not int.
	* doc/bison.texinfo: Formatting changes.

2000-09-19  Akim Demaille  <akim@epita.fr>

	* tests/calc.m4 (calc.y): Do not assign to stdin, as it's not
	portable.

2000-09-18  Akim Demaille  <akim@epita.fr>

	* configure.in: Append WARNING_CFLAGS to CFLAGS.
	* src/Makefile.am (INCLUDES): Don't.
	Be ready to fetch headers in lib/.

2000-09-18  Akim Demaille  <akim@epita.fr>

	* doc/bison.texinfo: Update the copyright.
	ANSIfy and GNUify the examples.
	Remove the old menu.

2000-09-18  Akim Demaille  <akim@epita.fr>

	First set of tests: use the `calc' example from the documentation.

	* src/bison.s1 (yyparse): Condition the code using `yytname' which
	is defined only when YYDEBUG is.
	* m4/atconfig.m4 (AT_CONFIG): Adjust to Autoconf 2.13.
	* src/files.c (tryopen, tryclose): Formatting changes.
	Move to the top and be static.
	* src/reader.c (read_signed_integer): Likewise.
	* tests/calc.m4: New file.
	* Makefile.am, suite.m4: Adjust.
	* m4/atconfig.m4: Set BISON_SIMPLE and BISON_HAIRY.

2000-09-18  Akim Demaille  <akim@epita.fr>

	Add support for an Autotest test suite for Bison.

	* m4/m4.m4, m4/atconfig.m4: New files.
	* m4/Makefile.am (EXTRA_DIST): Adjust.
	* tests/suite.m4, tests/Makefile.am, tests/atgeneral.m4: New
	files.
	* src/getargs.c: Display a more standard --version message.
	* src/reader.c (reader): Formatting changes.
	No longer depend upon VERSION_STRING.
	* configure.in: No longer use `dnl'.
	Set up the test suite and the new directory `tests/.
	(VERSION_STRING): Remove.

2000-04-14  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_comment2): New function, same as former
	`copy_comment', but outputs into two FILE *.
	(copy_comment): Use it.
	(parse_union_decl): Use it.
	(get_type, parse_start_decl): Use the same `invalid' message.
	(parse_start_decl, parse_union_decl): Use the same `multiple'
	message.
	(parse_union_decl, copy_guard, copy_action): Use the same
	`unmatched' message.
	* m4/Makefile.am (EXTRA_DIST): Add `warning.m4'.

2000-03-31  Akim Demaille  <akim@epita.fr>

	* src/files.c (tryopen, tryclose): Move to the top.
	Be static.

2000-03-31  Akim Demaille  <akim@epita.fr>

	* src/main.c (main): Don't call `done', exit does it.

2000-03-31  Akim Demaille  <akim@epita.fr>

	* allocate.c: s/return (foo)/return foo/.
	* lalr.c: Likewise.
	* LR0.c: Likewise.
	* output.c: Likewise.
	* reader.c: Likewise.
	* symtab.c: Likewise.
	* vmsgetargs.c: Likewise.

2000-03-31  Akim Demaille  <akim@epita.fr>

	Clean up the error reporting functions.

	* src/report.c: New file.
	* src/report.h: Likewise.
	* src/Makefile.am: Adjust.
	* m4/error.m4: New file.
	* m4/Makefile.am: Adjust.
	* configure.in (jm_PREREQ_ERROR): Call it.
	* src/main.c (int_to_string, banner, fatal_banner, warn_banner):
	Remove.
	(fatal, fatals): Remove.  All callers use complain.c::fatal.
	(warn, warni, warns, warnss, warnss): Remove.  All callers use
	complain.c::complain.
	(toomany): Remove, use fatal instead.
	* src/files.c (done): No argument, use complain_message_count.
	* src/main.c (main): Register `done' to `atexit'.

	* src/getargs.c (usage): More `fputs', less `fprintf'.

2000-03-28  Akim Demaille  <akim@epita.fr>

	* lib/: New directory.
	* Makefile.am (SUBDIRS): Adjust.
	* configure.in: Adjust.
	(LIBOBJS): Although not used yet, AC_SUBST it, otherwise it's
	useless.
	* src/alloca.c: Moved to lib/.
	* src/getopt.c: Likewise.
	* src/getopt1.c: Likewise.
	* src/getopt.h: Likewise.
	* src/ansi2knr.c: Likewise.
	* src/ansi2knr.1: Likewise.
	* src/Makefile.am: Adjust.
	* lib/Makefile.am: New file.

2000-03-28  Akim Demaille  <akim@epita.fr>

	* src/getargs.c (usage): Refresh the help message.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/getopt1.c: Updated from textutils 2.0e
	* src/getopt.c: Likewise.
	* src/getopt.h: Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/Makefile.am (bison.simple): Fix the awk program: quote only
	the file name, not the whole `#line LINE FILE'.

2000-03-17  Akim Demaille  <akim@epita.fr>

	On syntax errors, report the token on which we choked.

	* src/bison.s1 (yyparse): In the label yyerrlab, when
	YYERROR_VERBOSE, add yychar in msg.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_at): New function.
	(copy_guard): Use it.
	(copy_action): Use it.

2000-03-17  Akim Demaille  <akim@epita.fr>

	Be kind to translators, save some useless translations.

	* src/main.c (banner): New function.
	(fatal_banner): Use it.
	(warn_banner): Use it.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_definition): Use copy_string and
	copy_comment.  Removed now unused `match', `ended',
	`cplus_comment'.
	(copy_comment, copy_string): Moved, to be visible from
	copy_definition.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_string): Declare `static inline'.  No
	problems with inline, since it is checked by configure.
	(copy_comment): Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (packsymbols): Formatting changes.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_comment): New function, factored out from:
	(copy_action): Use it.  Removed now unused `match', `ended',
	`cplus_comment'.
	(copy_guard): Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/reader.c (copy_string): New function, factored out from:
	(copy_action): Use it.
	(copy_guard): Likewise.

2000-03-17  Akim Demaille  <akim@epita.fr>

	Change the handling of @s so that they behave exactly like $s.
	There is now a pseudo variable @$ (readble and writable), location
	of the lhs of the rule (by default ranging from the location of
	the first symbol of the rhs, to the location of the last symbol,
	or, if the rhs is empty, YYLLOC).

	* src/bison.s1 [YYLSP_NEEDED] (yyloc): New variable, twin of
	yyval.
	(yyparse): When providing a default semantic action, provide a
	default location action.
	(after the $): No longer change `*YYLSP', just stack YYLOC the
	same way you stack YYVAL.
	* src/reader.c (read_declarations): Use warns.
	(copy_guard, case '@'): Also recognize `@$', expanded as `YYLOC'.
	(copy_action, case '@'): Likewise.
	Use a standard error message, to save useless work from
	translators.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Formatting and cosmetics changes.
	* src/reader.c: Likewise.
	Update the Copyright notice.

2000-03-17  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (#line): All set to `#line' only, since the
	Makefile now handles them.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/output.c (output_rule_data): Output the documentation of
	some of the tables.
	(Copyright notice): Update.
	Formatting changes.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 [!YYDEBUG]: Define yydebug to 0.  This allows to
	remove most `#if YYDEBUG != 0', since `if (yydebug)' is enough.
	One `#if YYDEBUG' remains, since it uses variables which are
	defined only if `YYDEBUG != 0'.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1 (yyparse): Reorganize the definitions of the stacks
	and related variables so that the similarities are highlighted.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Properly indent CPP directives.

2000-03-16  Akim Demaille  <akim@epita.fr>

	* src/bison.s1: Properly indent the `alloca' CPP section.

2000-03-16  Akim Demaille  <akim@epita.fr>

	Do not hard code values of directories in `configure.in'.
	Update the `configure' tool chain.

	* configure.in (XPFILE, XPFILE1, LOCALEDIR): Remove, handled by
	src/makefile.am.
	(VERSION_STRING): Use the third arg of AC_DEFINE_UNQUOTED.
	(AC_OUTPUT): Add m4/Makefile.
	Bump to bison 1.28a, 1.29 has never been released.
	* acconfig.h (XPFILE, XPFILE1, LOCALEDIR): Remove, since they are
	handled via src/Makefile.am.
	(VERSION_STRING, PROTOTYPES, ENABLE_NLS, HAVE_CATGETS,
	HAVE_GETTEXT, HAVE_LC_MESSAGES, HAVE_STPCPY): Remove, handled by
	autoheader.
	* Makefile.am (SUBDIRS): Add m4.
	(ACLOCAL_AM_FLAGS): New variable.
	(AUTOMAKE_OPTIONS): Add check-news.
	* src/Makefile.am (bison.simple): Use awk to replace #line lines with
	the proper line number and file name.
	(DEFS): Propagate the location of bison library files and of the
	locale files.
	(INCLUDES): Added `-I ..' so that one can compile with srcdir !=
	builddir.
	* acinclude.m4: Remove, replaced by the directory m4.
	* m4/Makefile.am (EXTRA_DIST): New variable.
	* m4/gettext.m4: New file, from the fileutils.
	* m4/lcmessage.m4: Likewise
	* m4/progtest.m4: Likewise.
	* m4/bison-decl.m4: New file, extracted from former acinclude.m4.

2000-03-10  Akim Demaille  <akim@epita.fr>

	* src/closure.c:
	Formatting changes of various comments.
	Respect the GNU coding standards at various places.
	Don't use `_()' when no translation is needed.

1999-12-13  Jesse Thilo  <jthilo@gnu.org>

	* src/files.c:
	OS/2 honors TMPDIR environment variable.

1999-12-13  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Tweaked spelling and grammar.
	Updated ISBN.
	Removed reference to price of printed copy.
	Mention BISON_SIMPLE and BISON_HAIRY.

1999-12-13  Jesse Thilo  <jthilo@gnu.org>

	* configure.in, NEWS:
	Bison 1.29 released.

1999-10-27  Jesse Thilo  <jthilo@gnu.org>

	* doc/.cvsignore, doc/Makefile.am, doc/refcard.tex:
	Added reference card.

1999-07-26  Jesse Thilo  <jthilo@gnu.org>

	* po/ru.po: Added Russian translation.

1999-07-26  Jesse Thilo  <jthilo@gnu.org>

	* configure.in: Added Russian translation.

1999-07-06  Jesse Thilo  <jthilo@gnu.org>

	* configure.in, NEWS, README:
	Released version 1.28.

1999-06-14  Jesse Thilo  <jthilo@gnu.org>

	* src/system.h:
	Squashed redefinition warning on some systems.

	* src/getargs.c, src/Makefile.am, src/reader.c, src/version.c:
	Have configure build version string instead of relying on ANSI string
	concatentation.

1999-06-14  Jesse Thilo  <jthilo@gnu.org>

	* po/POTFILES.in: Got rid of version.c.

1999-06-14  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, configure.in:
	Have configure build version string instead of relying on ANSI string
	concatentation.

1999-06-08  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.1:
	Dropped mention of `+' for long-named options.

1999-05-30  Jesse Thilo  <jthilo@gnu.org>

	* src/files.c: Added <unistd.h> for unlink().

	* src/Makefile.am, src/system.h:
	I18n fixes.

1999-05-30  Jesse Thilo  <jthilo@gnu.org>

	* README: Added a FAQ list.

	* configure.in, acconfig.h:
	I18n fixes.

1999-05-30  Jesse Thilo  <jthilo@gnu.org>

	* doc/FAQ, doc/Makefile.am:
	Added a FAQ list.

1999-05-19  Jesse Thilo  <jthilo@gnu.org>

	* src/alloc.h, src/symtab.h, src/version.c:
	Protected inclusion of "config.h" with HAVE_CONFIG_H.

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* src/.cvsignore, src/Makefile.am:
	Reorganized: sources in `src', documentation in `doc'.

	* src/lex.c (literalchar):
	fixed the code for escaping double quotes (thanks
	Jonathan Czisny.)

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* po/de.po, po/es.po, po/fr.po, po/nl.po, po/POTFILES.in:
	Adjusted paths to reflect directory reorganization.

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* doc/.cvsignore, doc/Makefile.am:
	Reorganized: sources in `src', documentation in `doc'.

1999-04-18  Jesse Thilo  <jthilo@gnu.org>

	* configure.in:
	Updated AC_INIT file to reflect directory reorganization.

	* configure.in, .cvsignore, Makefile.am, POTFILES.in:
	Reorganized: sources in `src', documentation in `doc'.

1999-04-13  Jesse Thilo  <jthilo@gnu.org>

	* src/allocate.c:
	Don't declare calloc() and realloc() if not necessary.

1999-04-13  Jesse Thilo  <jthilo@gnu.org>

	* configure.in, acconfig.h, acinclude.m4:
	Don't declare calloc() and realloc() if not necessary.

1999-03-23  Jesse Thilo  <jthilo@gnu.org>

	* po/.cvsignore: Added i18n support.

1999-03-23  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, configure.in, Makefile.am:
	Added i18n support.

1999-03-22  Jesse Thilo  <jthilo@gnu.org>

	* src/bison.s1: Fixed #line numbers.

1999-03-15  Jesse Thilo  <jthilo@gnu.org>

	* po/es.po, po/fr.po, po/nl.po, po/de.po:
	Added PO files from Translation Project.

1999-03-03  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Added support for non-ANSI compilers (ansi2knr).

1999-02-16  Jesse Thilo  <jthilo@gnu.org>

	* configure.in: Bumped version number to 1.27.

	* Makefile.am:
	Added `bison.simple' to list of files removed by `make distclean'.

1999-02-12  Jesse Thilo  <jthilo@gnu.org>

	* src/files.c, src/files.h:
	Defined locations of parser files in config.h instead of Makefile.

1999-02-12  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, acinclude.m4, configure.in, Makefile.am:
	Defined locations of parser files in config.h instead of Makefile.

1999-02-09  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Removed inappropriate use of $< macro.

1999-02-05  Jesse Thilo  <jthilo@gnu.org>

	* po/Makefile.in.in, po/POTFILES.in:
	Add `po' directory skeleton.

1999-01-27  Jesse Thilo  <jthilo@gnu.org>

	* README: Document help-bison list.

	* configure.in: Add check for mkstemp().

1999-01-20  Jesse Thilo  <jthilo@gnu.org>

	* src/conflicts.c, src/LR0.c, src/output.c, src/reader.c:
	Hush a few compiler warnings.

	* src/files.c:
	Add tryclose(), which verifies that fclose was successful.
	Hush a couple of compiler warnings.

1999-01-20  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am, OChangeLog:
	ChangeLog is now automatically generated.  Include the old version as
	OChangeLog.

1999-01-14  Jesse Thilo  <jthilo@gnu.org>

	* src/gram.h, src/lalr.c, src/lex.c, src/lex.h, src/machine.h, src/main.c, src/nullable.c, src/output.c, src/print.c, src/reader.c, src/reduce.c, src/state.h, src/symtab.c, src/symtab.h, src/types.h, src/vmsgetargs.c, src/warshall.c, src/allocate.c, src/alloc.h, src/bison.s1, src/closure.c, src/conflicts.c, src/derives.c, src/files.c, src/files.h, src/getargs.c, src/gram.c, src/LR0.c:
	Update FSF address.

1999-01-14  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Fix formatting glitch.

	* doc/bison.texinfo: Update FSF address.

1999-01-14  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h: Update FSF address.

1999-01-08  Jesse Thilo  <jthilo@gnu.org>

	* src/system.h:
	Don't define PACKAGE here, since config.h defines it.

1998-12-30  Jesse Thilo  <jthilo@gnu.org>

	* src/reader.c: Update copyright date.

	* src/main.c:
	Ditch sprintf to statically-sized buffers in fatal/warn functions in
	favor of output directly to stderr (avoids buffer overruns).

	* src/reader.c: Some checks for premature EOF.

	* src/allocate.c, src/alloc.h, src/closure.c, src/conflicts.c, src/derives.c, src/getargs.c, src/gram.c, src/lalr.c, src/lex.c, src/LR0.c, src/main.c, src/nullable.c, src/output.c, src/print.c, src/reduce.c, src/symtab.c, src/symtab.h, src/warshall.c:
	Use prototypes if the compiler understands them.

	* src/files.c: Honor TMPDIR on Unix hosts.
	Use prototypes if the compiler understands them.

	* src/reader.c:
	Fix a couple of buffer overrun bugs.
	Use prototypes if the compiler understands them.

	* src/system.h: Include unistd.h and ctype.h.
	Use #ifdef instead of #if for NLS symbols.

1998-12-30  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo:
	Delete comment "consider using @set for edition number, etc..." since
	we now are doing so.

1998-12-30  Jesse Thilo  <jthilo@gnu.org>

	* configure.in:
	Use prototypes if the compiler understands them.

	* NEWS: Document 1.26 highlights.

	* Makefile.am: Require Automake 1.3 or later.

	* acconfig.h:
	Use prototypes if the compiler understands them.

1998-12-29  Jesse Thilo  <jthilo@gnu.org>

	* src/version.c:
	Use VERSION symbol from automake for version number.

1998-12-29  Jesse Thilo  <jthilo@gnu.org>

	* acconfig.h, configure.in, version.cin:
	Use VERSION symbol from automake for version number.

1998-11-28  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Distribute original version of simple parser (bison.s1), not built
	version (bison.simple).

1998-11-28  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Add info dir entry.

	* doc/bison.texinfo:
	Let automake put version number into documentation.

1998-11-26  Jesse Thilo  <jthilo@gnu.org>

	* src/bison.cld, src/build.com, src/vmshlp.mar:
	Add non-RCS files from /gd/gnu/bison.

1998-11-26  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.1:
	Document the BISON_HAIRY and BISON_SIMPLE variables.

1998-11-25  Jesse Thilo  <jthilo@gnu.org>

	* src/version.c: Build version.c automatically.

	* src/reader.c:
	Fix token numbering (used to start at 258, not 257).

	* src/system.h: Include config.h.

	* src/getargs.c: Update bug report address.

	* src/alloca.c, src/getopt1.c, src/getopt.c, src/getopt.h:
	Get latest copies of alloca.c, getopt.c, getopt.h, getopt1.c from gnu.org.

1998-11-25  Jesse Thilo  <jthilo@gnu.org>

	* Makefile.am:
	Rename bison.simple to bison.s1 (bison.simple is then built from bison.s1).

	* configure.in, version.cin:
	Build version.c automatically.

	* AUTHORS: Add AUTHORS file.

	* README: Update bug report address.

	* bison.simple:
	Rename bison.simple to bison.s1 (bison.simple is then built from bison.s1).

	* configure.in, Makefile.am, Makefile.in, stamp-h.in:
	Add automake stuff.

1998-11-25  Jesse Thilo  <jthilo@gnu.org>

	* doc/bison.texinfo: Clean up some formatting.

1998-05-05  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo:
	Explain better why to make a pure parser.

1998-01-05  Richard Stallman  <rms@gnu.org>

	* src/files.c (openfiles):
	[_WIN32 && !__CYGWIN32__] Use TEMP or Temp to
	find a temporary directory, if possible.  Do not unlink files while
	they are open.

1997-08-25  Richard Stallman  <rms@gnu.org>

	* src/reader.c (stack_offset;):
	Change some warni to warns.

	* src/lex.c (literalchar): Use warns, not warni.

1997-06-28  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Add a Bison version comment.

	* src/main.c (fatal, warn, berror):
	Use program_name.

1997-06-28  Richard Stallman  <rms@gnu.org>

	* Makefile.in (bison_version): New variable.
	(dist): Use that variable.
	(bison.s1): Substitute the Bison version into bison.simple.

	* bison.simple: Add a Bison version comment.

1997-06-18  Richard Stallman  <rms@gnu.org>

	* src/main.c (fatal, warn, berror):
	Make error messages standard.
	(toomany): Improve error message text.

	* src/LR0.c, src/closure.c, src/conflicts.c, src/derives.c, src/files.c, src/lalr.c, src/lex.c, src/nullable.c, src/output.c, src/print.c, src/reader.c, src/reduce.c, src/symtab.c:
	new.h renamed to alloc.h.

1997-06-18  Richard Stallman  <rms@gnu.org>

	* Makefile.in: new.h renamed to alloc.h.

1997-05-24  Richard Stallman  <rms@gnu.org>

	* src/lex.c (literalchar):
	Fix the code for escaping \, " and '.

	(lex): Avoid trouble when there are many chars
	to discard in a char literal with just several chars in it.

1997-05-17  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	Use malloc, if using alloca is troublesome.
	(YYSTACK_USE_ALLOCA): New flag macro.
	Define it for some systems and compilers.
	(YYSTACK_ALLOC): New macro.
	(yyparse): Use YYSTACK_ALLOC to allocate stack.
	If it was malloc'd, free it.

1997-05-17  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	Use malloc, if using alloca is troublesome.
	(YYSTACK_USE_ALLOCA): New flag macro.
	Define it for some systems and compilers.
	(YYSTACK_ALLOC): New macro.
	(yyparse): Use YYSTACK_ALLOC to allocate stack.
	If it was malloc'd, free it.

1997-04-23  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	(alloca) [__hpux]: Always define as __builtin_alloca.

1997-04-23  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	(alloca) [__hpux]: Always define as __builtin_alloca.

1997-04-22  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	[__hpux]: Include alloca.h (right for HPUX 10)
	instead of declaring alloca (right for HPUX 9).

	* src/bison.s1 (__yy_memcpy):
	Declare arg `count' as unsigned int.
	(yyparse): Cast third arg to __yy_memcpy to unsigned int.

1997-04-22  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	[__hpux]: Include alloca.h (right for HPUX 10)
	instead of declaring alloca (right for HPUX 9).

	* bison.simple (__yy_memcpy):
	Declare arg `count' as unsigned int.
	(yyparse): Cast third arg to __yy_memcpy to unsigned int.

1997-01-03  Richard Stallman  <rms@gnu.org>

	* src/allocate.c: [__STDC__ or _MSC_VER]:
	Declare calloc and realloc to return void *.

1997-01-02  Richard Stallman  <rms@gnu.org>

	* src/system.h:
	[_MSC_VER]: Include stdlib.h and process.h.
	[_MSC_VER] (getpid): Define as macro--translate it to _getpid.

	* src/main.c (main): Return FAILURE as a value.
	(printable_version): Declare arg as int, not char.

1997-01-02  Richard Stallman  <rms@gnu.org>

	* Makefile.in (dist):
	Explicitly check for symlinks, and copy them.

1996-12-19  Richard Stallman  <rms@gnu.org>

	* src/files.c:
	[_MSC_VER] (XPFILE, XPFILE1): Define, if not already defined.

1996-12-18  Paul Eggert  <eggert@gnu.org>

	* src/bison.s1 (yyparse):
	If __GNUC__ and YYPARSE_PARAM are both defined,
	declare yyparse to have a void * argument.

1996-12-18  Paul Eggert  <eggert@gnu.org>

	* bison.simple (yyparse):
	If __GNUC__ and YYPARSE_PARAM are both defined,
	declare yyparse to have a void * argument.

1996-12-17  Richard Stallman  <rms@gnu.org>

	* src/reduce.c (nbits): Add some casts.

1996-08-12  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Test _MSDOS as well as _MSDOS_.

1996-08-12  Richard Stallman  <rms@gnu.org>

	* bison.simple: Test _MSDOS as well as _MSDOS_.

1996-07-31  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	[__sun && __i386]: Include alloca.h.

1996-07-31  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	[__sun && __i386]: Include alloca.h.

1996-07-30  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Comment change.

	* src/bison.s1: Test _MSDOS_, not MSDOS.

1996-07-30  Richard Stallman  <rms@gnu.org>

	* bison.simple: Comment change.

	* bison.simple: Test _MSDOS_, not MSDOS.

1996-06-01  Richard Stallman  <rms@gnu.org>

	* src/reduce.c, src/reader.c, src/print.c, src/output.c, src/nullable.c, src/lex.c, src/lalr.c, src/getargs.c, src/derives.c, src/conflicts.c, src/closure.c, src/allocate.c:
	Insert `_' macro around many string constants.

	* src/main.c:
	Insert `_' macro around many string constants.

	(main): Call setlocale, bindtextdomain and textdomain.

	* src/system.h: [HAVE_LOCALE_H]: Include locale.h.
	[! HAVE_LOCALE_H] (setlocale): Define as no-op.
	[ENABLE_NLS]: Include libintl.h.
	[ENABLE_NLS] (gettext): Define.
	[! ENABLE_NLS] (bintextdomain, textdomain, _): Consolation definitions.
	(N_, PACKAGE, LOCALEDIR): New macros.

1996-06-01  Richard Stallman  <rms@gnu.org>

	* POTFILES.in: New file.

	* Makefile.in (allocate.o):
	Define target explicitly.

	* Makefile.in (CFLAGS): Set to @CFLAGS@.
	(LDFLAGS): Set to @LDFLAGS@.
	(configure): Run autoconf only if preceding `cd' succeeds.
	(bison.s1): Redirect output to temporary file then move the
	temporary to the target, rather than redirecting directly to bison.s1.
	(clean): Remove config.status and config.log.
	(distclean): Don't remove config.status here.

1996-05-12  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	(__yy_memcpy) [__cplusplus]: Reorder declarations of variables f and t.

1996-05-12  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	(__yy_memcpy) [__cplusplus]: Reorder declarations of variables f and t.

1996-05-11  Richard Stallman  <rms@gnu.org>

	* src/bison.s1 (__yy_memcpy):
	Really reorder the args, as was supposedly done on Feb 14 1995.
	(yyparse): Calls changed accordingly.

1996-05-11  Richard Stallman  <rms@gnu.org>

	* Makefile.in (dist): Don't use $(srcdir).

	* bison.simple (__yy_memcpy):
	Really reorder the args, as was supposedly done on Feb 14 1995.
	(yyparse): Calls changed accordingly.

1996-01-27  Richard Stallman  <rms@gnu.org>

	* src/output.c (output_rule_data):
	Test YYERROR_VERBOSE in the conditional
	around the definition of ttyname.

1995-12-29  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	Fix line numbers in #line commands.

1995-12-29  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	Fix line numbers in #line commands.

1995-12-27  Richard Stallman  <rms@gnu.org>

	* src/bison.s1 (YYPARSE_PARAM_DECL):
	In C++, make it always null.
	(YYPARSE_PARAM_ARG): New macro.
	(yyparse): Use YYPARSE_PARAM_ARG.

1995-12-27  Richard Stallman  <rms@gnu.org>

	* bison.simple (YYPARSE_PARAM_DECL):
	In C++, make it always null.
	(YYPARSE_PARAM_ARG): New macro.
	(yyparse): Use YYPARSE_PARAM_ARG.

1995-11-29  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo:
	Describe literal string tokens, %raw, %no_lines, %token_table.

1995-11-29  Daniel Hagerty  <hag@gnu.org>

	* doc/bison.texinfo: Fixed update date

1995-10-16  Richard Stallman  <rms@gnu.org>

	* src/version.c: Version 1.25.

1995-10-16  Richard Stallman  <rms@gnu.org>

	* NEWS: *** empty log message ***

1995-10-16  Richard Stallman  <rms@gnu.org>

	* doc/bison.1, doc/bison.rnh:
	Add new options.

1995-10-15  Richard Stallman  <rms@gnu.org>

	* src/vmsgetargs.c, src/getargs.c:
	Added -n, -k, and -raw switches.
	(noparserflag, toknumflag, rawtoknumflag): New variables.

	* src/symtab.h (SALIAS):
	New #define for adding aliases to %token.
	(struct bucket): Added `alias' field.

	* src/reduce.c (reduce_grammar):
	Revise error message.
	(print_notices): Remove final `.' from error message.

	* src/reader.c (reader_output_yylsp):
	New function.
	(readgram): Use `#if 0' around code that accepted %command
	inside grammar rules:  The documentation doesn't allow it,
	and it will fail since the %command processors scan for the next %.
	(parse_token_decl):  Extended the %token
	declaration to allow a multi-character symbol as an alias.
	(parse_thong_decl): New function.
	(read_declarations): Added %thong declarations.
	(read_declarations): Handle NOOP to deal with allowing
	% declarations as another means to specify the flags.
	(readgram): Allow %prec prior to semantics embedded in a rule.
	(skip_to_char, read_declarations, copy_definition)
	(parse_token_decl, parse_start_decl, parse_type_decl)
	(parse_assoc_decl, parse_union_decl, parse_expect_decl)
	(get_type_name, copy_guard, copy_action, readgram)
	(get_type, packsymbols):  Revised most error messages.
	Changed `fatal' to `warnxxx' to avoid aborting for error.
	Revised and use multiple warnxxx functions to avoid using VARARGS1.
	(read_declarations): Improve the error message for
	an invalid character.  Do not abort.
	(read_declarations, copy_guard, copy_action): Use
	printable_version to avoid unprintable characters in printed output.
	(parse_expect_decl): Error if argument to %expect exceeds 10 digits.
	(parse_token_decl, parse_assoc_decl, parse_type_decl, get_type):
	Allow the type of a non-terminal can be given
	more than once, as long as all specifications give the same type.

	* src/output.c:
	(output_headers, output_trailers, output, output_gram)
	(output_rule_data): Implement noparserflag variable.
	Implement toknumflag variable.
	(output): Call reader_output_yylsp to output LTYPESTR.

	* src/main.c (main):
	 If reader sees an error, don't process the grammar.
	(fatals): Updated to not use VARARGS1.
	(printable_version, int_to_string, warn, warni, warns, warnss)
	(warnsss): New error reporting functions.  Avoid abort for error.

	* src/lex.h:
	Added THONG and NOOP for alias processing.
	Added SETOPT for the new code that allows setting options with %flags.

	* src/lex.c:
	Include getopt.h.  Add some extern decls.
	(safegetc): New function to deal with EOF gracefully.
	(literalchar); new function to deal with reading \ escapes.
	(lex): Use literalchar.
	(lex): Implemented "..." tokens.
	(literalchar, lex, parse_percent_token): Made tokenbuffer
	always contain the token.  This includes growing the token
	buffer while reading an integer.
	(parse_percent_token): Replaced if-else statement with percent_table.
	(parse_percent_token): Added % declarations as another
	way to specify the flags -n, -l, and -r.  Also added hooks for
	-d, -k, -y, -v, -t, -p, -b, -o, but implementation requires
	major changes to files.c.
	(lex) Retain in the incoming stream a character following
	an incorrect '/'.
	(skip_white_space, lex):  Revised most error messages
	and changed fatal to warn to avoid aborting.
	(percent_table):  Added %thong declarations.

	* src/gram.h: Comment changes.

	* src/files.c (openfiles, open_extra_files, done):
	 Add faction flag
	and actfile file.  Handle noparserflag.  Both for -n switch.

	* src/conflicts.c (resolve_sr_conflict):
	Remove use of alloca.

1995-06-01  Jim Meyering  <meyering@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1995-05-06  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: Comment change.

1995-05-06  Richard Stallman  <rms@gnu.org>

	* bison.simple: Comment change.

1995-05-03  Richard Stallman  <rms@gnu.org>

	* src/version.c: Version now 1.24.

	* src/bison.s1: Change distribution terms.

	* src/version.c: Version now 1.23.

1995-05-03  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo:
	Rewrite "Conditions for Using Bison".
	Update version to 1.24.

1995-05-03  Richard Stallman  <rms@gnu.org>

	* bison.simple: Change distribution terms.

1995-02-23  Richard Stallman  <rms@gnu.org>

	* src/files.c: Test __VMS_POSIX as well as VMS.

1995-02-14  Jim Meyering  <meyering@gnu.org>

	* src/bison.s1 (__yy_memcpy):
	Renamed from __yy_bcopy to avoid
	confusion.  Reverse FROM and TO arguments to be consistent with
	those of memcpy.

1995-02-14  Jim Meyering  <meyering@gnu.org>

	* bison.simple (__yy_memcpy):
	Renamed from __yy_bcopy to avoid
	confusion.  Reverse FROM and TO arguments to be consistent with
	those of memcpy.

1994-11-10  David J. MacKenzie  <djm@gnu.org>

	* NEWS: reformat

	* NEWS: New file.

	* Makefile.in (DISTFILES): Include NEWS.

	* Makefile.in (DISTFILES):
	Include install-sh, not install.sh.

	* configure.in: Update to Autoconf v2 macro names.

1994-10-05  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: fix typo

	* Makefile.in (prefix, exec_prefix):
	Let configure set them.

1994-09-28  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: Set datadir to $(prefix)/share.

1994-09-15  Richard Stallman  <rms@gnu.org>

	* src/bison.s1:
	Update copyright notice and GPL version.

1994-09-15  Richard Stallman  <rms@gnu.org>

	* bison.simple:
	Update copyright notice and GPL version.

1994-07-12  Richard Stallman  <rms@gnu.org>

	* src/reduce.c, src/reader.c:
	entered into RCS

1994-05-05  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: entered into RCS

1994-03-26  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: entered into RCS

1994-03-26  Richard Stallman  <rms@gnu.org>

	* bison.simple: entered into RCS

1994-03-25  Richard Stallman  <rms@gnu.org>

	* src/main.c: entered into RCS

1994-03-24  Richard Stallman  <rms@gnu.org>

	* src/conflicts.c: entered into RCS

1994-01-02  Richard Stallman  <rms@gnu.org>

	* Makefile.in: *** empty log message ***

1993-11-21  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-11-21  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo: entered into RCS

	* doc/bison.texinfo: *** empty log message ***

1993-11-21  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-10-25  David J. MacKenzie  <djm@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1993-10-19  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-10-19  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-10-14  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-10-14  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-09-14  David J. MacKenzie  <djm@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1993-09-13  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-09-10  Richard Stallman  <rms@gnu.org>

	* src/conflicts.c: *** empty log message ***

	* src/system.h: entered into RCS

1993-09-10  Richard Stallman  <rms@gnu.org>

	* doc/bison.1: entered into RCS

1993-09-06  Noah Friedman  <friedman@gnu.org>

	* src/version.c: entered into RCS

1993-09-06  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-07-30  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: *** empty log message ***

1993-07-24  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-07-24  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-07-08  David J. MacKenzie  <djm@gnu.org>

	* Makefile.in: *** empty log message ***

1993-07-04  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-07-04  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-06-26  David J. MacKenzie  <djm@gnu.org>

	* src/getargs.c: entered into RCS

1993-06-26  David J. MacKenzie  <djm@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

	* doc/bison.1: New file.

1993-06-25  Richard Stallman  <rms@gnu.org>

	* src/getargs.c: New file.

1993-06-16  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: *** empty log message ***

1993-06-16  Richard Stallman  <rms@gnu.org>

	* bison.simple: *** empty log message ***

1993-06-03  Richard Stallman  <rms@gnu.org>

	* src/bison.s1: New file.

1993-06-03  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo: *** empty log message ***

1993-06-03  Richard Stallman  <rms@gnu.org>

	* bison.simple: New file.

1993-05-19  Richard Stallman  <rms@gnu.org>

	* doc/bison.texinfo: New file.

1993-05-07  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-04-28  Noah Friedman  <friedman@gnu.org>

	* src/reader.c: *** empty log message ***

1993-04-23  Noah Friedman  <friedman@gnu.org>

	* src/alloc.h: entered into RCS

1993-04-20  David J. MacKenzie  <djm@gnu.org>

	* src/version.c: *** empty log message ***

	* src/files.c, src/allocate.c:
	entered into RCS

	* src/reader.c: *** empty log message ***

	* src/lex.c: entered into RCS

	* src/conflicts.c: New file.

	* src/symtab.c: entered into RCS

	* src/alloc.h: New file.

	* src/LR0.c: entered into RCS

1993-04-18  Noah Friedman  <friedman@gnu.org>

	* src/reader.c: New file.

	* src/version.c: *** empty log message ***

1993-04-18  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-04-17  Noah Friedman  <friedman@gnu.org>

	* Makefile.in: *** empty log message ***

1993-04-15  Richard Stallman  <rms@gnu.org>

	* src/main.c, src/files.c:
	New file.

1993-04-15  Noah Friedman  <friedman@gnu.org>

	* configure.in: entered into RCS

	* configure.in: *** empty log message ***

	* configure.in: New file.

1993-04-14  Richard Stallman  <rms@gnu.org>

	* Makefile.in: New file.

1993-04-13  Richard Stallman  <rms@gnu.org>

	* src/version.c: New file.

1993-03-25  Richard Stallman  <rms@gnu.org>

	* src/output.c: entered into RCS

1992-09-25  Richard Stallman  <rms@gnu.org>

	* configure.bat: entered into RCS

1992-06-22  Richard Stallman  <rms@gnu.org>

	* src/vmsgetargs.c: entered into RCS

1992-06-22  Richard Stallman  <rms@gnu.org>

	* doc/bison.rnh: entered into RCS

1992-04-20  David J. MacKenzie  <djm@gnu.org>

	* README: entered into RCS

1992-01-22  Richard Stallman  <rms@gnu.org>

	* src/machine.h: entered into RCS

1991-12-21  Richard Stallman  <rms@gnu.org>

	* src/lalr.c, src/closure.c:
	entered into RCS

1991-12-20  Richard Stallman  <rms@gnu.org>

	* src/state.h: entered into RCS

1991-12-18  Richard Stallman  <rms@gnu.org>

	* src/print.c, src/nullable.c, src/derives.c:
	entered into RCS

1991-11-03  David J. MacKenzie  <djm@gnu.org>

	* src/warshall.c, src/types.h, src/symtab.h, src/lex.h, src/gram.c, src/gram.h, src/files.h:
	entered into RCS

1988-09-09  Richard Stallman  <rms@gnu.org>

	* src/bison.hairy: entered into RCS

1987-12-16  Richard Stallman  <rms@gnu.org>

	* REFERENCES: entered into RCS


	-----

	Copyright (C) 1987-1988, 1991-2012 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.
