X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/4af432ba25fdfc4555a423bad118bc4828947448..6130b75585cad5f4bb2ee78875a0bfe109b2a3e3:/ChangeLog?ds=sidebyside

diff --git a/ChangeLog b/ChangeLog
index 95477a25..ae87722f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1801 @@
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	Flag glr tests.
+	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): If glr, declare it
+	as an Autotest keyword.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	Prefer TESTSUITE_FLAGS.
+	TESTSUITEFLAGS is barely readable.
+	
+	* tests/local.mk (TESTSUITE_FLAGS): Default to $(TESTSUITEFLAGS)
+	for backward compatibility.
+	Use the former instead of the latter.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	Get rid of yyrhs and yyprhs in larl1.java.
+	* data/lalr1.java (yyrhs_, yyprhs_): Remove.
+	(yy_reduce_print): Rather, use yystos_ and the state stack.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	Get rid of yyrhs and yyprhs in yacc.c.
+	They were used to get the symbol types, given a rule number,  when
+	displaying the top of the stack before a reduction.  But the symbol type
+	is available from the state stack.  This has two be benefits: two tables
+	less in the parser (making it smaller), and a more consistent use of the
+	three stacks which will help to fuse them.
+	
+	* data/yacc.c (yyprhs, yyrhs): Remove.
+	(YY_REDUCE_PRINT): Pass yyssp to yy_reduce_print.
+	(yy_reduce_print): Take yyssp as argument.
+	Use it, together with yystos, to get the symbol type.
+	* tests/regression.at (Web2c Report): Remove these tables from the
+	expected output.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	b4_tables_map.
+	The point is to factor the generation of the tables across skeletons.
+	This is language dependant.
+	
+	* data/c.m4 (b4_comment_): New.
+	Should be usable to define how to generate tables independently of
+	the language.
+	(b4_c_comment): New.
+	(b4_comment): Bounce to b4_c_comment.
+	Now support $2 = [PREFIX] for indentation.
+	* data/lalr1.cc (b4_table_declare): Don't output a comment if
+	there is no comment.
+	Indent it properly when there is one.
+	Output the ending semicolon.
+	(b4_table_define): Space changes.
+	Output the ending semicolon.
+	(b4_tables_map): New.
+	Use it twice instead of declaring and defining the (integral)
+	tables by hand.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	b4_table_declare.
+	* data/lalr1.cc (b4_table_declare): New.
+	Use it to declare the tables defined with b4_table_define.
+	(b4_table_define): Declare a third arg to match b4_table_declare
+	signature.
+	Move all the comments around invocations of b4_table_define into
+	the invocations itselves.
+	Move things around to have the order for declarations and
+	definitions.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* data/lalr1.java: here.
+
+2008-11-25  Akim Demaille  <demaille@gostai.com>
+
+	b4_args is more general than only C++.
+	* data/lalr1.cc (b4_args, _b4_args): Move to...
+	* data/bison.m4: here.
+
+2008-11-21  Di-an Jan  <dianj@freeshell.org>
+
+	Implement no-XXX arguments for --warnings, --report, --trace.
+	* src/getargs.c (flags_argmatch): Handles no-XXX.
+	Fix typo in doxygen comment.
+
+2008-11-21  Akim Demaille  <demaille@gostai.com>
+
+	Display the changes in cross-options.texi.
+	* build-aux/cross-options.pl ($sep): New, to separate items.
+	* doc/local.mk ($(CROSS_OPTIONS_TEXI)): Use diff to display the
+	changes.
+
+2008-11-20  Di-an Jan  <dianj@freeshell.org>
+
+	Improves options in the manual.
+	* doc/bison.texinfo (-g, -x): Add space before argument.
+	(Option Cross Key): Implement FIXME: listing directives also.
+	* build-aux/cross-options.pl:  Read from <STDIN> rather than <>.
+	(Short Option): Special case -d.  Put arguments inside @option.
+	(Bison Directive): Add column, automatically extracted from 
+	src/scan-gram.l (actual name passed as the first argument)
+	with special case for %define.
+	* doc/local.mk (doc/cross-options.texi): Pass src/scan-gram.l
+	to build-aux/cross-options.pl.
+	* src/getargs.c (usage): Document limitations of cross-options.pl.
+	* src/scan-gram.l: Likewise.
+
+2008-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Fix unexpanded macros in GLR defines file.
+	Reported by Csaba Raduly at
+	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00048.html>.
+	* THANKS (Csaba Raduly): Add.
+	* data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc.
+	* tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate
+	lexer in a separate module that includes the defines file.
+	(AT_CHECK_CALC): From AT_FULL_COMPILE, request compilation of lexer
+	source.
+	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_DEFINES_IF.
+	Adjust AT_LOC and AT_VAL to use AT_NAME_PREFIX.
+	(AT_BISON_OPTION_POPDEFS): Pop AT_DEFINES_IF.
+	(AT_DATA_SOURCE_PROLOGUE): New.
+	(AT_DATA_GRAMMAR_PROLOGUE): Use AT_DATA_SOURCE_PROLOGUE.
+	(AT_DATA_SOURCE): New.
+	(AT_FULL_COMPILE): Extend to support an additional source file.
+
+2008-11-18  Akim Demaille  <demaille@gostai.com>
+
+	More TODO.
+	* TODO: More short term issues.
+
+2008-11-18  Akim Demaille  <demaille@gostai.com>
+
+	Regen.
+	* src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-18  Akim Demaille  <demaille@gostai.com>
+
+	Use b4_subtract where possible.
+	* data/lalr1.cc (b4_subtract): Move to...
+	* data/bison.m4: here.
+	* data/glr.c (b4_rhs_data): Use it.
+	* data/yacc.c (b4_rhs_value, b4_rhs_location): Use it.
+
+2008-11-18  Akim Demaille  <demaille@gostai.com>
+
+	Remove incorrect mode specification.
+	* data/glr.cc: Don't pretend it's C code.
+
+2008-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Simplify last patch slightly.
+	* src/getargs.c (getargs): Here.
+
+2008-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Fix last warning from --enable-gcc-warnings.
+	* src/getargs.c (getargs): Don't assign const address to non-const
+	pointer.
+
+2008-11-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Don't let maintainer-*-check targets force a version update.
+	* cfg.mk (_is-dist-target): Implement.  maintainer-check* was already
+	handled.
+
+2008-11-17  Di-an Jan  <dianj@freeshell.org>
+
+	* doc/bison.texinfo: Synchronize ``Detail Node Listing''.
+	Align menus.  Adjust word wrapping.  Use node names for menu names.
+	(Examples): Don't abbreviate node names.
+	(LocalWords): Remove abbreviations.
+	(Copying): Make description a sentence.
+	(Java Action Features): Remove period to match the rest of menu.
+
+2008-11-17  Di-an Jan  <dianj@freeshell.org>
+
+	Handles several --enable-gcc-warnings.
+	* src/getargs.c (command_line_location): Set parameters to void.
+	* src/output.c (symbol_type_name_cmp): Make static.
+	(symbols_by_type_name): Set parameters to void.
+	(symbol_definitions_output): Remove unused parameter.  Rename as...
+	(prepare_symbol_definitions): this.
+	(muscles_output): Move symbol_definitions_output to...
+	(output): here as prepare_symbol_definitions.
+	* tests/c++.at (AT_CHECK_VARIANTS): Remove unused parameters of main.
+	(AT_CHECK_NAMESPACE): Make unused parameter lloc unnamed.
+
+2008-11-17  Di-an Jan  <dianj@freeshell.org>
+
+	* tests/c++.at (AT_CHECK_VARIANTS): Fixes tests 198-202.
+	Use AT_DATA_GRAMMAR instead of AT_DATA for compiled tests.
+
+2008-11-16  Akim Demaille  <demaille@gostai.com>
+
+	Add missing $(EXEEXT).
+	* doc/local.mk ($(CROSS_OPTIONS_TEXI)): The target is
+	"src/bison$(EXEEXT)".
+	Reported by Di-an Jan.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	* TODO: Update.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* tests/input.at: here.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove duplicate header inclusion.
+	* src/LR0.c: here.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	* src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Support parametric types.
+
+	There are two issues to handle: first scanning nested angle
+	bracket pairs to support types such as std::pair< std::string,
+	std::list<std::string> > >.
+
+	Another issue is to address idiosyncracies of C++: do not glue two
+	closing angle brackets together (otherwise it's operator>>), and
+	avoid sticking blindly a TYPE to the opening <, as it can result
+	in '<:' which is a digraph for '['.
+
+	* src/scan-gram.l (brace_level): Rename as...
+	(nesting): this.
+	(SC_TAG): New.
+	Implement support for complex tags.
+	(tag): Accept
+	, but not <.
+	* data/lalr1.cc (b4_symbol_value, b4_symbol_value_template)
+	(b4_symbol_variant): Leave space around types as parameters.
+	* examples/variant.yy: Use nested template types and leading ::.
+	* src/parse-gram.y (TYPE, TYPE_TAG_ANY, TYPE_TAG_NONE, type.opt):
+	Rename as...
+	(TAG, TAG_ANY, TAG_NONE, tag.opt): these.
+	* tests/c++.at: Test parametric types.
+
+2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>
+
+	Test token.prefix.
+	This is not sufficient, but we test at least that the make_SYMBOL
+	interface is not affected by token.prefix.  A more general test
+	will be implemented when the support of token.prefix is generalized
+	to more skeletons.
+
+	* tests/c++.at: One more variant test, using token.prefix.
+
+2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>
+
+	Test the make_TOKEN interface.
+	* tests/c++.at (AT_CHECK_VARIANTS): Require and use locations.
+	Factor the common code in yylex.
+	Use it to test "%define lex_symbol".
+
+2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>
+
+	Formatting change.
+
+2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>
+
+	Simplify code for variants bench marks.
+	* etc/bench.pl.in (&generate_grammar_list): Define and use
+	location_type.
+	Factor the common code in yylex.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Better error message.
+	* bootstrap (find_tool): Fix the error message.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Update variant.yy to newest interface.
+	* examples/variant.yy: Define lex_symbol.
+	Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Don't use locations in variant.yy.
+	* examples/variant.yy: Adjust to not using locations.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Comment changes.
+	* data/local.mk, etc/local.mk, examples/local.mk: Use Automake
+	comments for the license.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove tests/Makefile.am.
+	* tests/Makefile.am: Rename as...
+	* tests/local.mk: this.
+	* Makefile.am, configure.ac: Adjust.
+	* Makefile.am (DISTCLEANFILES): Define.
+	(maintainer-check, maintainer-xml-check, maintainer-push-check):
+	Remove, we no longer need to bounce to the real targets.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Comment changes.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	djgpp/local.mk.
+	* Makefile.am (EXTRA_DIST): Move djgpp related part to...
+	* djgpp/local.mk: this new file.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove doc/Makefile.am.
+	* doc/Makefile.am: Rename as...
+	* doc/local.mk: this.
+	Adjust paths
+	* Makefile.am, configure.ac: Adjust.
+	* Makefile.am (MOSTLYCLEANFILES): New.
+	* src/local.mk: Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Move sc_tight_scope into maint.mk.
+	It does not work, and I don't know how it was supposed to work: it
+	seems to be looking for sources in the build tree.  I just moved
+	it at a better place, fixing it is still required.
+
+	* src/local.mk (echo): Remove.
+	(sc_tight_scope): Move to...
+	* maint.mk: here.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Regen.
+	* src/parse-gram.h, src/parse-gram.h: Regen.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove src/Makefile.am.
+	* src/Makefile.am: Rename as...
+	* src/local.mk: this.
+	Prefix all the paths with src/.
+	(AUTOMAKE_OPTIONS): Build object files in the sub dirs.
+	(AM_CPPFLAGS): Find find in builddir/src.
+	(YACC): Move the flags into...
+	(AM_YFLAGS): here.
+	* maint.mk (sc_tight_scope): Disable.
+	It used to bounce to the version in src/Makefile.am which is now
+	part of this very Makefile.
+	* Makefile.am, configure.ac: Adjust.
+	* src/scan-code-c.c, src/scan-code.l: We can no longer rely on
+	include "..." to find files "here": we are no longer in src/, so
+	qualify the includes with src/.
+	* doc/Makefile.am (PREPATH): No longer include the top_builddir
+	prefix.
+	(.x.1): Adjust to be able to create src/foo from the top level
+	Makefile, instead of going bounce to src/Makefile the creation of
+	foo.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove useless variable.
+	* doc/Makefile.am (srcsrcdir): Remove.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove data/Makefile.am.
+	* data/Makefile.am: Rename as...
+	* data/local.mk: this.
+	Adjust paths.
+	* Makefile.am, configure.ac: Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove etc/Makefile.am.
+	* etc/Makefile.am: Rename as...
+	* etc/local.mk: this.
+	Adjust.
+	* Makefile.am, configure.ac: Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove examples/local.mk.
+	examples/calc++/Makefile.am might be interesting to keep as is, since
+	it is an example in itself.
+
+	* examples/Makefile.am: Rename as...
+	* examples/local.mk: this.
+	Adjust.
+	* Makefile.am, configure.ac: Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Remove build-aux/Makefile.am.
+	Recursive Makefiles are really way too slow, let's get rid of some of
+	them.
+
+	* build-aux/Makefile.am: Rename as...
+	* build-aux/local.mk: this.
+	Adjust paths.
+	* Makefile.am, configure.ac: Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Provide convenience constructors for locations and positions.
+	* data/location.cc (position::position): Accept file, line and
+	column as arguments with default values.
+	Always qualify initial line and column literals as unsigned.
+	(location::location): Provide convenience constructors.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+	Instead of using make_symbol<TOK_FOO>, generate make_FOO for each
+	token type.
+	Using template buys us nothing, and makes it uselessly complex to
+	construct a symbol.  Besides, it could not be generalized to other
+	languages, while make_FOO would work in C/Java etc.
+
+	* data/lalr1.cc (b4_symbol_): New.
+	(b4_symbol): Use it.
+	(b4_symbol_constructor_declaration_)
+	(b4_symbol_constructor_definition_): Instead of generating
+	specializations of an overloaded template function, just generate
+	several functions whose names are forged from the token names
+	without the token.prefix.
+	(b4_symbol_constructor_declarations): Generate them for all the
+	symbols, not just by class of symbol type, now that instead of
+	specializing a function template by the token, we generate a
+	function named after the token.
+	(b4_symbol_constructor_specialization_)
+	(b4_symbol_constructor_specializations): Remove.
+	* etc/bench.pl.in: Adjust to this new API.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	%define token.prefix.
+	Provide a means to add a prefix to the name of the tokens as
+	output in the generated files.  Because of name clashes, it is
+	good to have such a prefix such as TOK_ that protects from names
+	such as EOF, FILE etc.  But it clutters the grammar itself.
+
+	* data/bison.m4 (token.prefix): Empty by default.
+	* data/c.m4 (b4_token_enum, b4_token_define): Use it.
+	* data/lalr1.cc (b4_symbol): Ditto.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Compute at M4 time some of the subtractions.
+	* data/lalr1.cc (b4_subtract): New.
+	(b4_rhs_data): Use it.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	symbol::token.
+	This allows the user to get the type of a token returned by yylex.
+
+	* data/lalr1.cc (symbol::token): New.
+	(yytoknum_): Define when %define lex_symbol, independently of
+	%debug.
+	(yytoken_number_): Move into...
+	(symbol::token): here, since that's the only use.
+	The other one is YYPRINT which was not officially supported
+	by lalr1.cc, and anyway it did not work since YYPRINT uses this
+	array under a different name (yytoknum).
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	YYERRCODE.
+	* TODO (YYERRCODE): Mention the case of $undef.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	TODO: YYPRINT.
+	* TODO (YYPRINT): New.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Comment changes.
+	* data/lalr1.cc, data/yacc.c: Fix the description of the
+	yytranslate and yytoknum tables.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Define make_symbol in the header.
+	To reach good performances these functions should be inlined (yet
+	this is to measure precisely).  To this end they must be available
+	to the caller.
+
+	* data/lalr1.cc (b4_symbol_constructor_definition_): Qualify
+	location_type with the class name.
+	Since will now be output in the header, declare "inline".
+	No longer use b4_symbol_constructor_specializations, but
+	b4_symbol_constructor_definitions in the header.
+	Don't call it in the *.cc file.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Define yytranslate in the header for lex_symbol.
+	* data/lalr1.cc: Move the invocation of b4_yytranslate_definition
+	into the header file when using %define lex_symbol.
+	(yytranslate_): Declare inline.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Define the constructors of symbol_type in
+	b4_symbol_constructor_definitions.
+	The constructors are called by the make_symbol functions, which a
+	forthcoming patch will move elsewhere.  Hence the interest of
+	putting them together.
+
+	The stack_symbol_type does not need to be moved, it is used only
+	by the parser.
+
+	* data/lalr1.cc: Move symbol_type and symbol_base_type
+	constructors into...
+	(b4_symbol_constructor_definitions): here.
+	Adjust.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Make it easier to move the definition of yytranslate_.
+	Forthcoming changes will make it possible to use yytranslate_
+	from outside the parser implementation file.
+
+	* data/lalr1.cc (b4_yytranslate_definition): New.
+	Use it.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Remove useless class specification.
+	* data/lalr1.cc (b4_symbol_constructor_specialization_): No need
+	to refer to the class name to use a type defined by the class for
+	arguments of member functions.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Finer input type for yytranslate.
+	This patch is debatable: the tradition expects yylex to return an int
+	which happens to correspond to token_number (which is an enum).  This
+	allows for instance to return characters (such as '*' etc.).  But this
+	goes against the stronger typing I am trying to have with the new
+	lex interface which return a symbol_type.  So in this case, feed
+	yytranslate_ with a token_type.
+
+	* data/lalr1.cc (yytranslate_): When in %define lex-symbol,
+	expect a token_type.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Honor lex-params in %define lex_symbol mode.
+	* data/lalr1.cc: Use b4_lex_param.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Simplify names.
+	* src/output.c (symbol_definitions_output): Rename symbol
+	attributes type_name and has_type_name as type and has_type.
+	* data/lalr1.cc: Adjust uses.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Use b4_type_names for the union type.
+	The union used to compute the size of the variant used to iterate
+	over the type of all the symbols, with a lot of redundancy.  Now
+	iterate over the lists of symbols having the same type-name.
+
+	* data/lalr1.cc (b4_char_sizeof_): New.
+	(b4_char_sizeof): Use it.
+	Adjust to be called with a list of numbers instead of a single
+	number.
+	Adjust its caller for new-line issues.
+
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+	Define the "identifier" of a symbol.
+	Symbols may have several string representations, for instance if
+	they have an alias.  What I call its "id" is a string that can be
+	used as an identifier.  May not exist.
+
+	Currently the symbols which have the "tag_is_id" flag set are
+	those that don't have an alias.  Look harder for the id.
+
+	* src/output.c (is_identifier): Move to...
+	* src/symtab.c (is_identifier): here.
+	* src/symtab.h, src/symtab.c (symbol_id_get): New.
+	* src/output.c (symbol_definitions_output): Use it to define "id"
+	and "has_id".
+	Remove the definition of "tag_is_id".
+	* data/lalr1.cc: Use the "id" and "has_id" whereever "tag" and
+	"tag_is_id" were used to produce code.
+	We still use "tag" for documentation.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Locations are no longer required by lalr1.cc.
+	* data/lalr1.cc (_b4_args, b4_args): New.
+	Adjust all uses of locations to make them optional.
+	* tests/c++.at (AT_CHECK_VARIANTS): No longer use the locations.
+	(AT_CHECK_NAMESPACE): Check the use of locations.
+	* tests/calc.at (_AT_DATA_CALC_Y): Adjust to be usable with or
+	without locations with lalr1.cc.
+	Test these cases.
+	* tests/output.at: Check lalr1.cc with and without location
+	support.
+	* tests/regression.at (_AT_DATA_EXPECT2_Y, _AT_DATA_DANCER_Y):
+	Don't use locations.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	AT_FULL_COMPILE.
+	* tests/local.at (AT_FULL_COMPILE): New.
+	* tests/actions.at, tests/calc.at, tests/regression.at: Use it.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Support parens in calc++.
+	* doc/bison.texinfo (Calc++ Scanner, Calc++ Parser): Support parens.
+	* examples/calc++/test (run): Check the expected output.
+	Adjust callers.
+	Check parens too.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Simplify lalr1.cc since %defines is mandatory.
+	* data/lalr1.cc: Remove useless calls to b4_defines_if.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	TODO: yyfmt.
+	* TODO (yysyntax_error): New item.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Prefer M4 to CPP.
+	* data/lalr1.cc: Use b4_error_verbose_if instead of #if
+	YYERROR_VERBOSE.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Support i18n of the parse error messages.
+	* TODO (lalr1.cc/I18n): Remove.
+	* data/lalr1.cc (yysyntax_error_): Support the translation of the
+	error messages, as done in yacc.c.
+	Stay within the yy* pseudo namespace.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	More TODO.
+	* TODO (single stack, yysyntax_error): New.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Make it possible to return a symbol_type from yylex.
+	* data/lalr1.cc (b4_lex_symbol_if): New.
+	(parse): When lex_symbol is defined, expected yylex to return the
+	complete lookahead.
+	* etc/bench.pl.in (generate_grammar_list): Extend to support this
+	yylex interface.
+	(bench_variant_parser): Exercise it.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Remove useless bench case.
+	* etc/bench.pl.in (bench_variant_parser): VARIANT_DESTROY is
+	no longer used.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Improve display of directives.
+	* etc/bench.pl.in (parse_term): Don't add useless eol.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Use string_cast in the bench.
+	* etc/bench.pl.in (generate_grammar_list): Define and use
+	string_cast.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Replace yychar with a Boolean.
+	* data/lalr1.cc (parse::yychar): Replace by...
+	(parse::yyempty): this.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Factor the tables.
+	* TODO: New item.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Let yytranslate handle the eof case.
+	* data/lalr1.cc (yytranslate_): Handle the EOF case.
+	Adjust callers.
+	No longer expect yychar to be equal to yyeof_, rather, test the
+	lookahead's (translated) kind.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	yychar cannot be empty in yyerrlab.
+	* TODO (yychar == yyempty_): New.
+	* data/lalr1.cc: Remove the handling of this case.
+	This eases forthcoming changes related to yychar and yytranslate.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Bench: syntactic sugar for %define/#define.
+	* etc/bench.pl.in (parse_dirs): Support %d and #d with arguments.
+	(&bench_push_parser, bench_variant_parser): Use this feature.
+	(&eat): New.
+	Use it.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Less memory pressure on the "list" bench.
+	* etc/bench.pl.in (generate_grammar_list): Do not accumulate all
+	the values, to limit memory pressure.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Introduce make_symbol.
+	make_symbol provides a means to construct a full symbol (kind,
+	value, location) in a single shot.  It is meant to be a Symbol
+	constructor, parameterized by the symbol kind so that overloading
+	would prevent incorrect kind/value pairs.  Unfortunately
+	parameterized constructors do not work well in C++ (unless the
+	parameter also appears as an argument, which is not acceptable),
+	hence the use of a function instead of a constructor.
+
+	* data/lalr1.cc (b4_symbol_constructor_declaration_)
+	(b4_symbol_constructor_declarations)
+	(b4_symbol_constructor_specialization_)
+	(b4_symbol_constructor_specializations)
+	(b4_symbol_constructor_definition_)
+	(b4_symbol_constructor_definitions): New.
+	Use them where appropriate to generate declaration, declaration of
+	the specializations, and implementations of the templated
+	overloaded function "make_symbol".
+	(variant::variant): Always define a default ctor.
+	Also provide a copy ctor.
+	(symbol_base_type, symbol_type): New ctor overloads for value-less
+	symbols.
+	(symbol_type): Now public, so that functions such as yylex can use
+	it.
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Inform m4 whether a tag is a valid id.
+	* src/output.c (is_identifier): New.
+	(symbol_definitions_output): Use it to define tag_is_id.
+	But maybe this should be done at m4 level?
+
+2008-11-11  Akim Demaille  <demaille@gostai.com>
+
+	Test 214 was failing: it greps with a pattern containing [     ]*
+	which obviously meant to catch spaces and tabs, but contained only
+	spaces. Tabulations in sources are a nuisance, so to simplify the
+	matter, get rid of all the tabulations in the Java sources.  The
+	other skeletons will be treated equally later.
+
+	* data/java.m4, data/lalr1.java: Untabify.
+	* tests/java.at: Simplify AT_CHECK_JAVA_GREP invocations:
+	tabulations are no longer generated.
+
+2008-11-11  Paolo Bonzini  <bonzini@gnu.org>
+
+	* bootstrap.conf: Replace m4/warning.m4 with warnings module.
+	* configure.ac: Adjust usage.
+	* lib/Makefile.am: Replace $(WARNING_CFLAGS) with $(WARN_CFLAGS).
+	* src/Makefile.am: Replace $(WARNING_CFLAGS) with $(WARN_CFLAGS).
+	* tests/atlocal.in: Replace $(WARNING_*FLAGS) with $(WARN_*FLAGS).
+
+2008-11-10  Di-an Jan  <dianj@freeshell.org>
+
+	Workaround Java's ``code too large'' problem for parser tables
+	in most cases, by using one function per initialization.
+	* data/java.m4 (b4_typed_parser_table, b4_integral_parser_table): New.
+	* data/lalr1.java (yypact_, yydefact_, yypgoto_, yydefgoto_,
+	yytable_, yycheck_, yystos_, yytoken_number_, yyr1_, yyr2_, yyrhs_
+	yyprhs_, yyrline_, yytranslate_table_): Use b4_integral_parser_table.
+	(yytname_): Use b4_typed_parser_table.
+	* doc/bison.texinfo (Java Bison Interface): Add note on Java's
+	``code too large'' error.
+
+2008-11-10  Di-an Jan  <dianj@freeshell.org>
+
+	* NEWS: Document them.
+
+	General Java skeleton improvements.
+	* configure.ac (gt_JAVACOMP): Request target of 1.4, which allows
+	using gcj < 4.3 in the testsuite, according to comments in
+	gnulib/m4/javacomp.m4.
+	* data/java.m4 (stype, parser_class_name, lex_throws, throws,
+	location_type, position_type): Remove extraneous brackets from
+	b4_percent_define_default.
+	(b4_lex_param, b4_parse_param): Remove extraneous brackets from
+	m4_define and m4_define_default.
+	* data/lalr1.java (b4_pre_prologue): Change to b4_user_post_prologue,
+	which marks the end of user code with appropriate syncline, like all
+	the other skeletons.
+	(b4_user_post_prologue): Add.  Don't silently drop.
+	(yylex): Remove.
+	(parse): Inline yylex.
+	* doc/bison.texinfo (bisonVersion, bisonSkeleton): Document.
+	(%{...%}): Fix typo of %code imports.
+	* tests/java.at (AT_JAVA_COMPILE): Add "java" keyword.
+
+	Support annotations on parser class with %define annotations.
+	* data/lalr1.java (annotations): Add to parser class modifier.
+	* doc/bison.texinfo (Java Parser Interface): Document
+	%define annotations.
+	(Java Declarations Summary): Document %define annotations.
+	* tests/java.at (Java parser class modifiers): Test annotations.
+
+	Do not generate code for %error-verbose unless requested.
+	* data/lalr1.java (errorVerbose): Rename to yyErrorVerbose.
+	Make private.  Make conditional on %error-verbose.
+	(getErrorVerbose, setErrorVerbose): New.
+	(yytnamerr_): Make conditional on %error-verbose.
+	(yysyntax_error): Make some code conditional on %error-verbose.
+	* doc/bison.texinfo (Java Bison Interface): Remove the parts
+	about %error-verbose having no effect.
+	(getErrorVerbose, setErrorVerbose): Document.
+
+	Move constants for token names to Lexer interface.
+	* data/lalr1.java (Lexer): Move EOF, b4_token_enums(b4_tokens) here.
+	* data/java.m4 (b4_token_enum): Indent for move to Lexer interface.
+	(parse): Qualify EOF to Lexer.EOF.
+	* doc/bison.texinfo (Java Parser Interface): Move documentation of
+	EOF and token names to Java Lexer Interface.
+	* tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove Calc qualifier.
+
+	Make yyerror public.
+	* data/lalr1.java (Lexer.yyerror): Use longer parameter name.
+	(yyerror): Change to public.  Add Javadoc comments.  Use longer
+	parameter names.  Make the body rather than the declarator
+	conditional on %locations.
+	* doc/bison.texinfo (yyerror): Document.  Don't mark as protected.
+
+	Allow user to add code to the constructor with %code init.
+	* data/java.m4 (b4_init_throws): New, for %define init_throws.
+	* data/lalr1.java (YYParser.YYParser): Add b4_init_throws.
+	Add %code init to the front of the constructor body.
+	* doc/bison.texinfo (YYParser.YYParser): Document %code init
+	and %define init_throws.
+	(Java Declarations Summary): Document %code init and
+	%define init_throws.
+	* tests/java.at (Java %parse-param and %lex-param): Adjust grep.
+	(Java constructor init and init_throws): Add tests.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Update TODO.
+	* TODO (-D): is implemented.
+	(associativity): Same precedence must have the same associativity.
+	For instance, how can a * b / c be parsed if * is %left and / is
+	%right?
+	(YYERRORCODE, YYFAIL, YYBACKUP): New.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	More information about the symbols.
+	* src/output.c (type_names_output): Document all the symbols,
+	including those that don't have a type-name.
+	(symbol_definitions_output): Define "is_token" and
+	"has_type_name".
+	* data/lalr1.cc (b4_type_action_): Skip symbols that have an empty
+	type-name, now that they are defined too in b4_type_names.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Regen.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Make parser::yytranslate static.
+	Small speedup (1%) on the list grammar.  And makes yytranslate_
+	available in non member functions.
+
+	* data/lalr1.cc (yytranslate_): Does not need to be a instance
+	function.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Avoid trailing spaces.
+	* data/c.m4: b4_comment(TEXT): Don't indent empty lines.
+	* data/lalr1.cc: Don't indent before rule and symbol actions, as
+	they can be empty, and anyway this incorrectly indents the first
+	action.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Comment changes.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Use "enum" for integral constants.
+	This is just nicer to read, I observed no speedup.
+
+	* data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
+	(yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
+	(yyuser_token_number_max_, yyundef_token_): Move into...
+	(yytranslate_): here.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Shortcuts in bench directives.
+	* etc/bench.pl.in (parse_dirs): New.
+	Use it.
+	(bench_variant_parser, bench_fusion_parser): Use %s and %d.
+	Create the benches in "benches/".
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* data/lalr1.cc: here.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Adjust verbose message to using emacs.
+	* etc/bench.pl.in: Inform compilation-mode when we change the
+	directory.
+	(generate_grammar_list): Recognize %define "variant" in addition
+	to %define variant.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Classify symbols by type-name.
+	* src/uniqstr.h (UNIQSTR_CMP): New.
+	* src/output.c (symbol_type_name_cmp, symbols_by_type_name)
+	(type_names_output): New.
+	(muscles_output): Use it.
+	* data/lalr1.cc (b4_symbol_action_): Remove.
+	(b4_symbol_case_, b4_type_action_): New.
+	Adjust uses of b4_symbol_action_ to use b4_type_action_.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Change the handling of the symbols in the skeletons.
+	Before we were using tables which lines were the symbols and which
+	columns were things like number, tag, type-name etc.  It is was
+	difficult to extend: each time a column was added, all the numbers had
+	to be updated (you asked for colon $2, not for "tag").  Also, it was
+	hard to filter these tables when only a subset of the symbols (say the
+	tokens, or the nterms, or the tokens that have and external number
+	*and* a type-name) was of interest.
+
+	Now instead of monolithic tables, we define one macro per cell.  For
+	instance "b4_symbol(0, tag)" is a macro name which contents is
+	self-decriptive.  The macro "b4_symbol" provides easier access to
+	these cells.
+
+	* src/output.c (type_names_output): Remove.
+	(symbol_numbers_output, symbol_definitions_output): New.
+	(muscles_output): Call them.
+	(prepare_symbols): Define b4_symbols_number.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	--trace=muscles
+	* src/getargs.h, src/getargs.c (trace_muscle): New.
+	(trace_types, trace_args): Support it.
+	* src/output.c (output_skeleton): Use it.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	muscles_output.
+	* src/output.c (muscles_output): New, extracted from...
+	(output_skeleton): here.
+	Adjust.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Update the variant example.
+	* examples/variant.yy: Formatting changes.
+	One stage build.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Support constructor with an argument.
+	This improves the "list" bench by 2%.
+
+	* data/lalr1.cc (variant::build): Add an overloaded version with
+	an argument.
+	* tests/c++.at (AT_CHECK_VARIANT): Check it.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Test variants.
+	* tests/c++.at (AT_CHECK_VARIANTS): New.
+	Use it with and without %define assert.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Add %precedence support.
+	Unfortunately it is not possible to reuse the %prec directive.  This
+	is because to please POSIX, we do not require to end the rules with a
+	semicolon.  As a result,
+
+	foo: bar %prec baz
+
+	is ambiguous: either a rule which precedence is that of baz, or a rule,
+	and then a declaration of the precedence of the token baz.
+
+	* doc/bison.texinfo: Document %precedence.
+	(Precedence Only): New.
+	* src/assoc.h, src/assoc.c (precedence_assoc): New.
+	* src/conflicts.c (resolve_sr_conflict): Support it.
+	* src/scan-gram.l, src/parse-gram.y (%precedence): New token.
+	Parse it.
+	* tests/calc.at: Use %precedence for NEG.
+	* tests/conflicts.at (%precedence does not suffice)
+	(%precedence suffices): New tests.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Make benches in a sub dirs.
+	* etc/bench.pl.in ($dir): New.
+	Use it.
+	Check the use of constructors with an argument.
+	(bench_variant_parser): Fix.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	fix eof condition
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Fix --help.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Require the generation of parse-gram.output.
+	* src/Makefile.am (YACC): Pass --report=all.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Update TODO.
+	* TODO: Remove obsolete items.
+	Update others.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Enhance bench.pl.
+	* etc/bench.pl.in (parse, parse_expr, parse_term, parse_fact)
+	(@token, $grammar, $bench): New.
+	(generate_grammar_variant): Rename as...
+	(generate_grammar_list): this.
+	(generate_grammar): Adjust.
+	(bench_grammar): Rename as...
+	(bench): this.
+	Use it in the various bench-marking routines.
+	(-b, -g): New options.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Use a static hierarchy for symbols in the C++ parser.
+	* data/lalr1.cc (symbol_base_type, symbol_type)
+	(stack_symbol_type): Make it a static hierarchy.
+	Adjust dependencies.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	bench.pl -d, --directive.
+	* etc/bench.pl.in (@directive): New.
+	(&bench_grammar): Use it.
+	(&bench_list_grammar): New, to provide access to the "variant"
+	grammar.
+	Use it.
+	(getopts): Support -d, --directive.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Use inline for small operations.
+	* data/lalr1.cc (symbol_base_type, symbol_type)
+	(stack_symbol_type): Declare constructor and other operations as
+	inline.
+	(yy_destroy_): Inline.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Introduce a hierarchy for symbols.
+	* data/lalr1.cc (symbol_base_type, symbol_type): New.
+	(data_type): Rename as...
+	(stack_symbol_type): this.
+	Derive from symbol_base_type.
+	(yy_symbol_value_print_): Merge into...
+	(yy_symbol_print_): this.
+	Rename as...
+	(yy_print_): this.
+	(yydestruct_): Rename as...
+	(yy_destroy_): this.
+	(b4_symbols_actions, YY_SYMBOL_PRINT): Adjust.
+	(parser::parse): yyla is now of symbol_type.
+	Use its type member instead of yytoken.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Rename data_type and stack_symbol_type.
+	* data/lalr1.cc (data_type): Rename as...
+	(stack_symbol_type): this.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Handle semantic value and location together.
+	* data/lalr1.cc (b4_symbol_actions): Bounce $$ and @$ to
+	yydata.value and yydata.location.
+	(yy_symbol_value_print_, yy_symbol_print_, yydestruct_)
+	(YY_SYMBOL_PRINT): Now take semantic value and location as a
+	single arg.
+	Adjust all callers.
+	(yydestruct_): New overload for a stack symbol.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Push a complete symbol, not connected parts.
+	* data/lalr1.cc (yypush_): Take a data_type&, not disconnected
+	state, value and location.
+	Adjust callers.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Agregate yylval and yylloc.
+	* data/lalr1.cc (parser::yylval, parser::yylloc): Replace by...
+	(parser::yyla): this.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Rely on the state stack to display reduction traces.
+	To display rhs symbols before a reduction, we used information
+	about the rule reduced, which required the tables yyrhs and
+	yyprhs.  Now use rely only on the state stack to get the same
+	information.
+
+	* data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
+	Use them.
+	(parser::yyrhs_, parser::yyprhs_): Remove.
+	(parser::yy_reduce_print_): Use the state stack.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Fuse yyval and yyloc into yylhs.
+	* data/lalr1.cc (b4_lhs_value, b4_lhs_location): Adjust to using
+	yylhs.
+	(parse): Replace yyval and yyloc with yylhs.value and
+	yylhs.location.
+	After a user action, compute yylhs.state earlier.
+	(yyerrlab1): Do not play tricks with yylhs.location, rather, use a
+	fresh error_token.
+
+2008-11-09  Di-an Jan  <dianj@freeshell.org>
+
+	Remove unused variable.
+	* src/output.c (type_names_output): Remove unused variable sep.
+
+2008-11-09  Paolo Bonzini  <bonzini@gnu.org>
+
+	Change tests/output.at quoting.
+	* tests/output.at (AT_CHECK_OUTPUT): Use conventional m4 quoting when
+	expanding arguments.
+
+2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Don't add a semicolon to actions for %skeleton or %language.
+	It breaks Java test cases as reported by Akim Demaille.
+	* src/scan-code.l: Implement.
+
+2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Clean up %skeleton and %language priority implementation.
+	* src/getargs.c (skeleton_prio): Use default_prio rather than 2, and
+	remove static qualifier because others will soon need to see it.
+	(language_prio): Likewise.
+	(getargs): Use command_line_prio rather than 0.
+	* src/getargs.h (command_line_prio, grammar_prio, default_prio): New
+	enum fields.
+	(skeleton_prio): Extern it.
+	(language_prio): Extern it.
+	* src/parse-gram.y: Use grammar_prio rather than 1.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Moving push traces into yypush_.
+	* data/lalr1.cc (yypush_): Now takes a optional trace message.
+	Adjust all uses.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	The single-stack C++ parser is now the standard one.
+	* data/lalr1.cc: Rename as...
+	* data/lalr1-split.cc: this.
+	* data/lalr1-fusion.cc: Rename as...
+	* data/lalr1.cc: this.
+	* etc/bench.pl.in: Adjust.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Avoid empty-if warnings.
+	Reported by Quentin Hocquet.
+
+	* data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
+	(YY_STACK_PRINT): Provide some contents even when !YYDEBUG.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Pass command line location to skeleton_arg and language_argmatch.
+	* src/getargs.h, src/getargs.c (skeleton_arg, language_argmatch):
+	The location argument is now mandatory.
+	Adjust all dependencies.
+	(getargs): Use command_line_location.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	-D, --define.
+	* src/getargs.c (usage): Document -D.
+	Fix help string for --locations.
+	(command_line_location): New.
+	(short_options, long_options, getargs): Support -D, --define.
+	(getargs): Move -d support at the right place.
+	* doc/bison.texinfo (Bison Options): Update.
+	* tests/input.at (%define, --define): New.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Initialize the muscle table before parsing the command line.
+	* src/getargs.c (quotearg.h, muscle_tab.h): Include.
+	(getargs): Define file_name.
+	* src/main.c (main): Initialize muscle_tab before calling
+	getargs.
+	* src/muscle_tab.c (muscle_init): No longer define file_name, as
+	its value is not available yet.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Locations without columns for command line arguments.
+	* src/location.c (location_print): Don't display negative columns.
+	* src/location.h: Document this.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Fix --help.
+	* src/getargs.c (usage): Fix help string for -W.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Handle more general types of option arguments.
+	* build-aux/cross-options.pl: The argument ends at the first
+	space, not the first non-symbol character.
+	Use @var for each word appearing the argument description.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Destroy the variants that remain on the stack in case of error.
+	* data/lalr1-fusion.cc (yydestruct_): Invoke the variant's
+	destructor.
+	Display the value only if yymsg is nonnull.
+	(yyreduce): Invoke yydestruct_ when popping lhs symbols.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Add "%define assert" to variants.
+	This is used to help the user catch cases where some value gets
+	ovewritten by a new one.  This should not happen, as this will
+	probably leak.
+
+	Unfortunately this uncovered a bug in the C++ parser itself: the
+	lookahead value was not destroyed between two calls to yylex.  For
+	instance if the previous lookahead was a std::string, and then an int,
+	then the value of the std::string was correctly taken (i.e., the
+	lookahead was now an empty string), but std::string structure itself
+	was not reclaimed.
+
+	This is now done in variant::build(other&) (which is used to take the
+	value of the lookahead): other is not only stolen from its value, it
+	is also destroyed.  This incurs a new performance penalty of a few
+	percent, and union becomes faster again.
+
+	* data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
+	(b4_variant_if): New.
+	(variant::built): New.
+	Use it whereever the status of the variant changes.
+	* etc/bench.pl.in: Check the penalty of %define assert.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Use "%define variant" in bench.pl.
+	* etc/bench.pl.in: No longer use the pseudo directive %variants,
+	just use %define variants.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Regen.
+	* src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Fix user actions without a trailing semicolon.
+	Reported by Sergei Steshenko at
+	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00001.html>.
+	* THANKS (Sergei Steshenko): Add.
+	* src/scan-code.l (SC_RULE_ACTION): Fix it.
+	* tests/regression.at (Fix user actions without a trailing semicolon):
+	New test case.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Use b4_copyright_years.
+	* data/yacc.c (b4_copyright_years): New.
+	Fix its value according to the comments in the file.
+	Use it and undefine it.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* data/lalr1-fusion.cc, src/parse-gram.y: here.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* data/lalr1-fusion.cc: here.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Use strict on bench.pl.
+	* etc/bench.pl.in (&run, &generate_grammar): New.
+	Rename the grammar generating functions for consistency.
+	Change the interface so that the list of benches to run is passed
+	as (optionless) arguments.
+	(&compile): Use &run.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Remove spurious initial empty lines.
+	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
+	* data/yacc.c: End the @output lines with an @.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Improve the display of sizes.
+	* etc/bench.p.in: Higher precision.
+	Sort by decreasing size.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Don't memcpy C++ structures.
+	* data/lalr1-fusion.cc (b4_symbol_variant): Adjust additional
+	arguments.
+	(variant::build): New overload for
+	copy-construction-that-destroys.
+	(variant::swap): New.
+	(parser::yypush_): Use it in variant mode.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Better defaults for bench.pl.
+	* etc/bench.pl.in ($verbose, $cflags, $iterations): Change the
+	default values.
+	Adjust &verbose uses.
+	(-q, --quiet): New.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Make variant.yy more complex.
+	std::list cannot be copied via memcpy, they are more demanding than
+	std::string.  Use one std::list to strengthen the test.
+
+	* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
+	Adjust.
+	Create a list of strings, instead of a single large string.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	bench.pl --bench.
+	* etc/bench.pl.in (--bench, $bench): New.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Sort methods.
+	* data/lalr1-fusion.cc (destroy): Use as() in its definition.
+	Define it after as().
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Useless parens.
+	* data/lalr1-fusion.cc (b4_rhs_location): Remove useless parens.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Issue missing synclines after user actions.
+	* data/c.m4 (b4_case): Issue synclines on the output file.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Remove trailing empty line.
+	* data/lalr1-fusion.cc: Don't add an empty line after the user's
+	epilogue.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Fix output of copyright years.
+	* data/bison.m4 (b4_copyright): Fix the indentation of the
+	copyright year paragraph.
+	Use b4_copyright_years when no years are given.
+	* data/lalr1.cc, data/lalr1-fusion.cc, data/location.cc
+	(b4_copyright_years): New.
+	Use it.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Avoid the spurious initial empty line.
+	* data/lalr1-fusion.cc, data/location.cc: Put a trailing "@" at
+	the end of @output request to suppress the empty line that
+	results.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Remove parser::rhs_number_type.
+	* data/lalr1-fusion.cc (rhs_number_type): No longer define it.
+	(yyrhs_): Use b4_table_define.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Fix iteration type.
+	* data/lalr1-fusion.cc: Use an int to iterate up to an int.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Factor the declaration of the integer tables.
+	* data/lalr1-fusion.cc (b4_table_define): New.
+	Use it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Fix indentation of tables in lalr1.cc
+	* data/lalr1-fusion.cc: Fix the indentation.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Destroy the lhs symbols after reduction.
+	* data/lalr1-fusion.cc (parse): After the user action, when in
+	variant mode, destroy the lhs symbols.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Simplify yysyntax_error_ use.
+	* data/lalr1-fusion.cc (yysyntax_error_): Always pass it the token
+	type, but make it unnamed in the declaration when it is not used.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Let yy::variant::build return an lvalue.
+	* data/lalr1-fusion.cc (variant::build): Return a reference to the
+	object.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Define yy::variant only when needed.
+	* data/lalr1-fusion.cc (yy::variant): Define only if variants are
+	used.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Bench the three-stack lalr1.cc.
+	* etc/bench.pl.in: Bench the three-stack lalr1.cc vs. the
+	one-stack one.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Fail on parse error in calc++.
+	* doc/bison.texinfo (calc++.cc): Propagate failures to the exit
+	status.
+	* examples/calc++/test ($me, $number, $exit, run): New.
+	Use them to propagate errors to the exit status.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Don't specify the skeleton twice in the example.
+	* examples/calc++/Makefile.am: Don't pass -S to Bison, the grammar
+	file does what is needed.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	bench: Improve output.
+	* etc/bench.pl.in (bench_grammar): Tune the printf format.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	bench: check impact of %debug on variants.
+	* etc/bench.pl.in (variant_grammar): Fix the computation of
+	$variant.
+	Generate a grammar file that can work with or without %debug.
+	Do use the @directive.
+	(bench_variant_parser): Check impact of %debug.
+	(@directives): Rename all the occurrences to...
+	(@directive): this, for consistency.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	bench: report the size too.
+	* etc/bench.pl.in ($iterations): Defaults to -3.
+	(&bench_grammar): Require hireswallclock.
+	Compute and display the size of the result.
+	More comments.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	bench: More use of the verbosity level.
+	* etc/bench.pl.in ($verbose, &verbose): New.
+	Use them.
+	More POD documentation.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	bench.pl: a command line interface
+	* etc/bench.pl.in: More doc.
+	Some fixes in the documentation.
+	($cflags, $iterations, &help, &getopt): New.
+	Use them.
+	(&variant_grammar): Let the number of stages be 10 times what is
+	specified.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Bench the use of Boost.Variants.
+	* etc/bench.pl.in ($cxx, &variant_grammar, &bench_variant_parser):
+	New.
+	(&compile): Be ready to compile C++ parsers.
+	(&bench_push_parser): Move debug information to the outermost
+	level.
+	* THANKS: Add Michiel De Wilde.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	bench.pl: Pass directives as a list instead of as a string.
+	* etc/bench.pl.in (&directives): New.
+	(&triangular_grammar, &calc_grammar): Use it to format the Bison
+	directives.
+	(&triangular_grammar): Do use the directives (were ignored).
+	(&bench_grammar, &bench_push_parser): Adjust to pass lists of
+	directives.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Improve genericity of bench.pl.
+	* etc/bench.pl.in (&bench_grammar): Take the set of benches as
+	argument.
+	(&bench_push_parser): New.
+	Call it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Add documentation to bench.pl.
+	* etc/bench.pl.in: Comment changes.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Fuse the three stacks into a single one.
+
+	In order to make it easy to perform benchmarks to ensure that
+	there are no performance loss, lalr1.cc is forked into
+	lalr1-fusion.cc.  Eventually, lalr1-fusion.cc will replace
+	lalr1.cc.
+
+	Meanwhile, to make sure that lalr1-fusion.cc is correctly
+	exercized by the test suite, the user must install a symbolic link
+	from lalr1.cc to it.
+
+	Instead of having three stacks (state, value, location), use a
+	stack of triples.  This considerably simplifies the code (and it
+	will be easier not to require locations as currently does the C++
+	parser), and also gives a 10% speedup according to
+	etc/bench (probably mainly since memory allocation is done once
+	instead of three times).
+
+	Another motivation is to make it easier to destruct properly
+	semantic values: now that they are bound to their state (hence
+	symbol type) it will be easier to call the appropriate destructor.
+
+	These changes should probably benefit the C parser too.
+
+	* data/lalr1.cc: Copy as...
+	* data/lalr1-fusion.cc: this new file.
+	(b4_rhs_value, b4_rhs_location): New definitions overriding those
+	from c++.m4.
+	(state_stack_type, semantic_stack_type, location_stack_type)
+	(yystate_stack_, yysemantic_stack_, yylocation_stack_): Remove.
+	(data_type, stack_type, yystack_): New.
+	(YYLLOC_DEFAULT, yypush_): Adjust.
+	(yyerror_range): Now based on data_type, not location_type.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Push the state, value, and location at the same time.
+	This is needed to prepare a forthcoming patch that fuses the three
+	stacks into one.
+
+	* data/lalr1.cc (parser::yypush_): New.
+	(parser::yynewstate): Change the semantics: instead of arriving to
+	this label when value and location have been pushed, but yystate
+	is to be pushed on the state stack, now the three of them must
+	have been pushed before.  yystate still must be the new state.
+	This allows to use yypush_ everywhere instead of individual
+	handling of the stacks.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Prefer references to pointers.
+	* data/lalr1.cc (b4_symbol_actions): New, overrides the default C
+	definition to use references instead of pointers.
+	(yy_symbol_value_print_, yy_symbol_print_, yydestruct_):
+	Take the value and location as references.
+	Adjust callers.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	stack::size instead of stack::height.
+	* data/lalr1.cc (stack::height): Rename as...
+	(stack::size): this.
+	Fix the output type.
+	Comment changes.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Use variants to support objects as semantic values.
+	This patch was inspired by work by Michiel De Wilde.  But he used
+	Boost variants which (i) requires Boost on the user side, (ii) is
+	slow, and (iii) has useless overhead (the parser knows the type of
+	the semantic value there is no reason to duplicate this
+	information as Boost.Variants do).
+
+	This implementation reserves a buffer large enough to store the
+	largest objects.  yy::variant implements this buffer.  It was
+	implemented with Quentin Hocquet.
+
+	* src/output.c (type_names_output): New.
+	(output_skeleton): Invoke it.
+	* data/c++.m4 (b4_variant_if): New.
+	(b4_symbol_value): If needed, provide a definition for variants.
+	* data/lalr1.cc (b4_symbol_value, b4_symbol_action_)
+	(b4_symbol_variant, _b4_char_sizeof_counter, _b4_char_sizeof_dummy)
+	(b4_char_sizeof, yy::variant): New.
+	(parser::parse): If variants are requested, define
+	parser::union_type, parser::variant, change the definition of
+	semantic_type, construct $$ before running the user action instead
+	of performing a default $$ = $1.
+	* examples/variant.yy: New.
+	Based on an example by Michiel De Wilde.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Parameterize the extraction of semantic values.
+	To make future changes easier, no longer rely on ".TYPE" being the
+	way to get a semantic value.
+
+	* data/c.m4 (b4_symbol_value): New.
+	Use it.
+	* data/c++.m4, data/yacc.c: Use it.
+	* data/glr.c: Use b4_symbol_value.
+	(b4_rhs_data): New.
+	Use it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Prepare easier M4 changes.
+	* data/lalr1.cc: Use escaped [] instead of literals to prepare
+	future changes.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Initiate further development.
+	* NEWS: Create an empty section for new entries.
+	* gnulib: Update submodule to HEAD.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* NEWS: Version 2.4.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Prepare for next release.
+	* NEWS: Briefly mention changes since 2.3b.
+	* README: Say GNU m4 1.4.6, which we've been requiring in release
+	announcements already, not 1.4.3, which breaks the build.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Say %language is experimental.
+	We're thinking of extending it's effect on output file naming.  See the
+	thread at
+	<http://lists.gnu.org/archive/html/bison-patches/2008-10/msg00003.html>.
+	* NEWS: Say it's experimental.
+	* doc/bison.texinfo (Decl Summary): Say it's experimental, and so don't
+	recommend it over %skeleton for now.
+	(Bison Options): Likewise.
+	(C++ Bison Interface): Use %skeleton not %language.
+	(Calc++ Parser): Use %skeleton not %language.
+	* src/getargs.c (usage): Say it's experimental.
+
+2008-11-01  Di-an Jan  <dianj@freeshell.org>
+	    Paolo Bonzini  <bonzini@gnu.org>
+
+	Support all Java parser class modifiers.
+	* data/java.m4 (b4_percent_define_get3): New.
+	(b4_final_if, b4_strictfp_if): New.
+	* data/lalr1.java (final, strictfp, extends, implements): Support.
+	* doc/bison.texinfo (final, strictfp, extends, implements): Add
+	documentation.
+	* tests/java.at (AT_CHECK_JAVA_MINIMAL): New.
+	(AT_CHECK_JAVA_MINIMAL_W_LEXER): New.
+	(AT_CHECK_JAVA_GREP): New.
+	(Java parser class modifiers): New test.
+	(Java parser class extends and implements): New test.
+
+	Model exception propagation better with throws and lex_throws.
+	* data/java.m4 (b4_list2): New.
+	(throws): Change default.
+	* data/lalr1.java (yyaction): Add throws.
+	(parse): Add lex_throws in addition to throws.
+	* doc/bison.texinfo (throws, lex_throws): Add documentation.
+	* tests/java.at (Java throws specifications): New test.
+
+	Improve documentation for Java parsers.
+	* doc/bison.texinfo (Java Parsers): Add subsections.
+	Don't quote first argument of %define.
+	(Java Bison Interface): Document output files.  Move documentation
+	of parser class and merge into Java Parser Interface.  Document
+	features that error out.  Document directives with no effect.
+	Move note about Javadoc higher.
+	(Java Semantic Values): Explicitly mention stype.
+	Document that generic types cannot be used.
+	(Java Location Values): Use @deftypeivar.  Document constructors.
+	Correct return value for toString.
+	(Java Parser Interface): List undocumented constants/fields.
+	Move documentation of fields added by %parse-param closer to list
+	of members.  Document that token names are added as fields.
+	Document constructors accurately.  Remove error method.
+	(Java Scanner Interface): Move note on %pure-parser to Java Bison
+	Interface.  Describe %code lexer and yylex accutately.
+	Remove documentation that does not match the code.
+	(Java Action Features): New.
+	(Java Differences): Add reference.  Add item on semantic values.
+	Add note about @{ ... @}.  Clarify %% epilogue placement.
+	(Java Declarations Summary): New.
+
+	Fix Java skeleton.
+	* data/java.m4 (b4_prefix): Correct quoting for m4_define_default.
+	(b4_remove_comma): Quote test argument.
+	(b4_identification): Remove "bison" field.
+	* tests/java.at (Java parser class and package names): New test.
+	(Java %parse-param and %lex-param): New test.
+	(Java stype, position_class and location_class): New test.
+
+2008-10-31  Di-an Jan  <dianj@freeshell.org>
+
+	* data/lalr1.jave: Update copyright years.
+	(YYParser): Correct name of "generated from" file in Javadoc:
+	use b4_file_name instead of @ofile@.
+	(Location constructor): Correct Javadoc parameter name.
+	(yylloc): Add missing opening m4 quote after b4_location_if.
+	This removes a stray [ in the Javadoc of Lexer.getStartPos.
+	(Lexer.yyerror): Fix incorrect m4 and Javadoc.
+	(YYParser constructor): Correct Javadoc parameter name.
+
+2008-10-30  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Always put auxiliary code files in the same dir as other output files.
+	* src/files.c (compute_file_name_parts): When the user specifies
+	--output but not --file-prefix, extract the directory prefix from the
+	file prefix not from the grammar file name.  This affects the location
+	of files like location.hh generated by the C++ skeleton.  The includes
+	in the other output files require this fix.
+	* tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
+	for expected output files.
+	(Output files): Add a test for the above.
+
 2008-10-29  Joel E. Denny  <jdenny@ces.clemson.edu>
 
 	* gnulib: Update submodule to HEAD.