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 `Bison 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.
	(Bison 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 occurence 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 occurence 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-10-28  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 thru 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 accidently 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, substract
	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, 1992, 1993, 1994, 1995, 1996,
	1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 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.
