2019-12-11  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5
	* NEWS: Record release date.

2019-12-10  Akim Demaille  <akim.demaille@gmail.com>

	news: prepare for 3.5

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: disable warnings from Clang on macOS
	    $ cat test.cc
	    #include <stddef.h>
	    #include <stdint.h>

	    ptrdiff_t half_max_capacity = PTRDIFF_MAX;
	    $ clang++-mp-9.0 -pedantic -std=c++98 /tmp/test.cc -c
	    /tmp/test.cc:4:31: warning: 'long long' is a C++11 extension [-Wc++11-long-long]
	    ptrdiff_t half_max_capacity = PTRDIFF_MAX;
	                                  ^
	    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:149:23:
	            note: expanded from macro 'PTRDIFF_MAX'
	    #define PTRDIFF_MAX       INT64_MAX
	                              ^
	    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:75:26:
	            note: expanded from macro 'INT64_MAX'
	    #define INT64_MAX        9223372036854775807LL
	                             ^
	    1 warning generated.

	* data/skeletons/glr.cc: here.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: fix it in C++
	Another breakage revealed by vcsn.

	* data/skeletons/c++.m4 (yytranslate_): Do not hard code "yy" and
	"parser", both can be changed by the user.
	Actually, since we are in the parser itself, there's really no need to
	qualify the type.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix comments for %code blocks
	In a project of mine, vcsn, this commit fixes the following comments.

	    --- /tmp/parse.hh	2019-12-08 15:51:24.792934703 +0100
	    +++ lib/vcsn/rat/parse.hh	2019-12-08 16:00:59.137107503 +0100
	    @@ -43,7 +43,7 @@

	     #ifndef YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
	     # define YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
	    -// //                    "%code requires" blocks.
	    +// "%code requires" blocks.
	     #line 20 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy"

	       #include <iostream>
	    @@ -1851,7 +1851,7 @@

	    -// //                    "%code provides" blocks.
	    +// "%code provides" blocks.
	     #line 60 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy"

	       #define YY_DECL_(Class) \

	* data/skeletons/bison.m4 (b4_percent_code_get): Pass an expanded
	string to b4_comment.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	parser: pretend we are Bison 3.5
	* src/parse-gram.y: Accept we're Bison 3.5.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix spello
	* data/skeletons/lalr1.cc: here.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	todo: update
	* TODO: Schedule some features for 3.6.
	Remove obsolete stuff.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.92
	* NEWS: Record release date.

2019-12-08  Akim Demaille  <akim.demaille@gmail.com>

	news: fixes
	Reported by Paul Eggert.
	https://lists.gnu.org/archive/html/bison-patches/2019-12/msg00014.html

	* NEWS: here.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: minor changes
	* README-hacking.md: here.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: clearly deprecate YYPRINT
	* doc/bison.texi (Prologue): Stop using YYPRINT as an example.
	(The YYPRINT Macro): Clearly show this macro is deprecated.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: here.
	No change in content.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	d: obey parse.error
	* data/skeletons/lalr1.d (yysyntax_error): Let the dispatch be
	bison-time, not runtime.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	c++: also prefer YY_ASSERT to YYASSERT
	Like the other skeletons.

	* data/skeletons/variant.hh: here.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: obey the parse.assert %define variable
	* data/skeletons/glr.c (YYASSERT): Rename as...
	(YY_ASSERT): this, for consistency with yacc.c, and also to emphasize
	the fact that this is not for the end user (YY_ prefix).
	* tests/glr-regression.at: Define parse.assert.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	c++: beware of short ranges for state numbers
	Now that we use small integral types, possibly unsigned (e.g.,
	unsigned char), to store state numbers, using -1 to denote an empty
	state (i.e., a state that stores no semantical value) is very
	dangerous: it will be confused with state 255, which might be
	non-empty.

	Rather than allocating a larger range of state numbers to keep the
	empty-state apart, let's use the number of a state known to store no
	value.  The initial state, numbered 0, seems to fit perfectly the job.

	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html

	* data/skeletons/lalr1.cc (empty_state): Be 0.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: check it against api.token.constructor
	* tests/scanner.at: here.

2019-12-06  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-12-06  Akim Demaille  <akim.demaille@gmail.com>

	warnings: enable -Wuseless-cast, and eliminate warnings
	Prompted by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html.

	* configure.ac (warn_cxx): Add -Wuseless-cast.
	* data/skeletons/c.m4 (b4_attribute_define): Define
	YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END.
	* data/skeletons/glr.c (YY_FPRINTF): New, replaces YYFPRINTF, wrapped
	with YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END.
	(YY_DPRINTF): Likewise.
	* tests/actions.at: Remove useless cast.
	* tests/headers.at: Adjust.

2019-12-02  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style changes
	* src/complain.h, src/complain.c: Comment changes.
	* src/scan-skel.l: Reduce scopes.
	* data/skeletons/bison.m4: Factor diagnostic functions.

2019-12-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: style changes
	* data/skeletons/glr.c (yysplitStack): Reduce scopes.
	* tests/atlocal.in: Formatting changes.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: get rid of symbol_type::token ()
	It is not used.  And its implementation was wrong when api.token.raw
	was defined, as it was still mapping to the external token numbers,
	instead of the internal ones.  Besides it was provided only when
	api.token.constructor is defined, yet always declared.

	* data/skeletons/c++.m4 (by_type::token): Remove, useless.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: remove useless cast about user_token_number_max_
	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html

	The cast is needed when yytranslate_'s argument type is token_type,
	i.e., when api.token.constructor is defined.

	    373. types.at:138: testing lalr1.cc api.value.type=variant api.token.constructor ...
	    ======== Testing with C++ standard flags: ''
	    ../../tests/types.at:138: bison --color=no -fno-caret  -o test.cc test.y
	    ../../tests/types.at:138: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
	    stderr:
	    test.cc:966:16: error: result of comparison of constant 257 with
	                    expression of type 'yy::parser::token_type'
	                   (aka 'yy::parser::token::yytokentype') is always true
	                   [-Werror,-Wtautological-constant-out-of-range-compare]
	        else if (t <= user_token_number_max_)
	                 ~ ^  ~~~~~~~~~~~~~~~~~~~~~~
	    1 error generated.

	It is because it is expected that when api.token.constructor is
	defined, only symbol constructors will be used, that yytranslate_ then
	takes a token_type.  But it is wrong: we still allow literal
	characters in this case, as demonstrated by test 373 for instance.

	    %define api.value.type variant
	    %define api.token.constructor
	    %token <std::pair<int, int>> '1' '2';
	    [...]
	    static yy::parser::symbol_type yylex ()
	    {
	      static char const input[] = "12";
	      int res = input[toknum++];
	      typedef yy::parser::symbol_type symbol;
	      if (res)
	        return symbol (res, std::make_pair (res - '0', res - '0' + 1));
	      else
	        return symbol (res);
	    }

	So let yytranslate_ always take an int, which makes the cast truly
	useless.

	* data/skeletons/c++.m4, data/skeletons/lalr1.cc (yytranslate_): here.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: clean a few issues wrt special tokens
	The C++ implementation of LAC did not skip the $undefined token,
	probably because it was not exposed.  Expose it, and use clearer
	names.

	* data/skeletons/c++.m4: Don't define undef_token_ in yytranslate_,
	but...
	* data/skeletons/lalr1.cc (yy_undef_token_): here.
	Use a more precise type to define yy_undef_token_ and yy_error_token_.
	Unfortunately we move from a compile-time value defined via an enum to
	a static const member.  Eventually we should make it constexpr.
	Make LAC implementation more alike yacc.c's one.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	d, java: improve yytranslate and neighbors
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: Don't expose
	yyuser_token_number_max_ and yyundef_token_.  Do as in C++: scope them
	into yytranslate_, and only when api.token.raw is not defined.
	(yyterror_): Rename as...
	(yy_error_token_): this.
	* data/skeletons/lalr1.d (token_number_type): New.
	Use it.
	Can't be done in the Java backend, as Java does not have type aliases.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	d, java: get rid of a useless table
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java (yytoken_number_):
	Remove, useless.
	Was used in ancient C skeletons to support YYPRINT, long obsoleted by
	%printer.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	c++, d, java: remove yyerrcode
	It is not used at all.  We will remove it also from yacc.c, but
	later (see TODO).

	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/lalr1.java (yyerrcode_):
	Remove.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: improve typing
	* data/skeletons/lalr1.cc (yysyntax_error_): symbol_type::type_get
	returns a symbol_number_type (which is indeed an int).

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: remove useless cast about yyeof_
	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html

	* data/skeletons/c++.m4 (b4_yytranslate_define): Don't use yyeof_ as
	if it had two different types.
	It is used once against the input argument, which is the value
	returned by yylex, which is an "external token number", typically an
	int.  It is also used as output type, an "internal symbol number".
	It turns out that in both cases we mean "0", but let's keep yyeof_
	only for the case "internal symbol number", i.e., _after_ conversion
	by yytranslate.
	This frees us from one cast.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	glr: style change
	* data/skeletons/glr.c (YYDPRINTF): Expand into an empty statement,
	instead of nothing.
	Simplify callers.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	glr: remove useless casts
	Reported by GCC's -Wuseless-cast.

	* data/skeletons/glr.c: Don't cast to yybool, it's useless.

2019-11-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c, glr.c: fix crash when reporting errors in consistent states
	The current code for yysyntax_error for %define parse.error verbose is
	fishy (given that YYEMPTY is -2, invalid argument for yytname[]):

	    static int
	    yysyntax_error ([...])
	    {
	      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
	    [...]
	      if (yytoken != YYEMPTY)

	A nearby comment reports

	    The only way there can be no lookahead present (in yychar) is if
	    this state is a consistent state with a default action.  Thus,
	    detecting the absence of a lookahead is sufficient to determine
	    that there is no unexpected or expected token to report.  In that
	    case, just report a simple "syntax error".

	So it _is_ possible to call yysyntax_error with yytoken == YYEMPTY,
	albeit quite difficult when meaning to, so virtually impossible by
	accident (after all, there was never a bug report about this).

	I failed to produce a test case, but Joel E. Denny provided me with
	one (added to the test suite below).  The yacc.c skeleton fails on
	this, and once fixed dies on a second problem.  The glr.c skeleton was
	also dying, but immediately of this second problem.

	Indeed we were not allocating space for the error message's final \0.
	This was hidden by the fact that we only had error messages with at
	least an unexpected token displayed, so with at least one "%s" in the
	format string, whose size (2) was included (incorrectly) in the final
	size of the message (where the %s have been replaced by the actual
	content).

	* data/skeletons/glr.c, data/skeletons/yacc.c (yysyntax_error):
	Do not invoke yytnamerr on YYEMPTY.
	Clarify the computation of the length of the _final_ error message,
	with the NUL terminator but without the '%s's.
	* tests/conflicts.at (Syntax error in consistent error state):
	New, contributed by Joel E. Denny.

2019-11-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: avoid creating files whose name collide with standard headers
	Having a file named "exception" is risky: the compiler might use that
	file in #include.
	Reported by 马俊 <majun123@whu.edu.cn>.

	* tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): Generate
	'exceptions', not 'exception'.

2019-11-22  Akim Demaille  <akim.demaille@gmail.com>

	doc: more details about the test suite
	* README-hacking.md: here.

2019-11-20  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-11-20  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.91
	* NEWS: Record release date.

2019-11-20  Akim Demaille  <akim.demaille@gmail.com>

	style: pacify syntax-check
	* cfg.mk: No need to translate *.md files.
	* data/skeletons/glr.c, data/skeletons/yacc.c: Fix space issues.

2019-11-19  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-11-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: don't promote dangling aliases
	String literals as tokens serve two distinct purposes: freeing from
	having to implement the keyword matching in the scanner, and improving
	error messages.  Most of the time both can be achieved at the same
	time, but on occasions, it does not work so well.

	We promote their use for error messages.  We will also still support
	the former case, but it is _not_ the recommended approach.

	* doc/bison.texi (Tokens from Literals): Clearly state that we don't
	recommend looking up the token types in the list of token names.

2019-11-17  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: complain about undeclared string tokens
	String literals, which allow for better error messages, are (too)
	liberally accepted by Bison, which might result in silent errors.  For
	instance

	    %type <exVal> cond "condition"

	does not define “condition” as a string alias to 'cond' (nonterminal
	symbols do not have string aliases).  It is rather equivalent to

	    %nterm <exVal> cond
	    %token <exVal> "condition"

	i.e., it gives the type 'exVal' to the "condition" token, which was
	clearly not the intention.

	Introduce -Wdangling-alias to catch this.

	* src/complain.h, src/complain.c: Add support for -Wdangling-alias.
	(argmatch_warning_args): Sort.
	* src/symtab.c (symbol_check_defined): Complain about dangling
	aliases.
	* doc/bison.texi: Document it.
	* tests/input.at (Dangling aliases): New test.

2019-11-17  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: yacc reserves %type to nonterminals
	On

	    %token TOKEN1
	    %type  <ival> TOKEN1 TOKEN2 't'
	    %token TOKEN2
	    %%
	    expr:

	bison -Wyacc gives

	    input.y:2.15-20: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
	        2 | %type  <ival> TOKEN1 TOKEN2 't'
	          |               ^~~~~~
	    input.y:2.29-31: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
	        2 | %type  <ival> TOKEN1 TOKEN2 't'
	          |                             ^~~
	    input.y:2.22-27: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
	        2 | %type  <ival> TOKEN1 TOKEN2 't'
	          |                      ^~~~~~

	The messages appear to be out of order, but they are emitted when the
	error is found.

	* src/symtab.h (symbol_class): Add pct_type_sym, used to denote
	symbols appearing in %type.
	* src/symtab.c (complain_pct_type_on_token): New.
	(symbol_class_set): Check that %type is not applied to tokens.
	(symbol_check_defined): pct_type_sym also means undefined.
	* src/parse-gram.y (symbol_decl.1): Set the class to pct_type_sym.
	* src/reader.c (grammar_current_rule_begin): pct_type_sym also means
	undefined.
	* tests/input.at (Yacc's %type): New.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: promote %nterm over %type
	As an extension to POSIX Yacc, Bison's %type accepts tokens.
	Unfortunately with string literals as implicit tokens, this is
	misleading, and led some users to write

	    %type <exVal> cond "condition"

	believing that "condition" would be associated to the 'cond'
	nonterminal (see https://github.com/apache/httpd/pull/72).

	* doc/bison.texi: Promote %nterm rather than %type to declare the type
	of nonterminals.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: No visible changes.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: work around warnings when Flex C output is compiled in C++
	* doc/bison.texi (calc++/scanner.ll): here.
	While at it, clarify clang vs. warnings.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	tests: be robust to old Perl versions on Cygwin
	Reported by Denis Excoffier.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00008.html.

	* tests/output.at: Be sure to remove back up files.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-11-12  kaneko y  <spiketeika@gmail.com>

	gram.c: Fix condition of aver
	* src/gram.c (grammar_dump): Fix condition of aver.
	What we want to check is that rhs is followed by its rule.

2019-11-11  Akim Demaille  <akim.demaille@gmail.com>

	doc: clarify build instructions
	* README: A few fixes.
	Explain how to install color support.
	* README-hacking: Rename as...
	* README-hacking.md: this, and convert to Markdown.
	Improve typography.
	Improve explanations about update-test.

2019-11-11  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-11-11  Yuichiro Kaneko  <spiketeika@gmail.com>

	gram.c: also print terminals in grammar_dump
	* src/gram.c (grammar_dump): Print terminals likewise non terminals.
	* tests/sets.at (Reduced Grammar): Update test case to catch up the
	change and add a test case where prec and assoc are used.

2019-11-10  Akim Demaille  <akim.demaille@gmail.com>

	doc: work around Texinfo 6.7 bug
	When @code is used in a @deftype... definition, it issues quotes.
	Remove them.
	See https://lists.gnu.org/archive/html/help-texinfo/2019-11/msg00004.html.

	* doc/local.mk: here.

2019-11-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: Wrap lines.
	No semantical difference.

2019-11-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: use upper case for tokens
	* doc/bison.texi: here.

2019-11-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: type-face fixes
	* doc/bison.texi: Use @code for types in function definitions.

2019-11-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: expose the type used to store line and column numbers
	* data/skeletons/location.cc (position::counter_type)
	(location::counter_type): New.
	Use them.
	* doc/bison.texi (C++ position, C++ location): Adjust.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix comment and adjust to locale names on GNU/Linux
	Reported by Denis Excoffier.

	* tests/diagnostics.at: here.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: really check complaints from m4
	* tests/diagnostics.at (Locations from M4, Tabulations and multibyte
	characters from M4): These tests are actually checking a message
	coming from C, not from M4.  Replace with...
	(Complaints from M4): This.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: simplify prologue
	* tests/testsuite.h: We no longer load gnulib in the tests.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: add missing translation
	* src/muscle-tab.c (muscle_percent_define_check_kind): Here.

2019-11-02  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix old cast warnings
	We still have a few old C casts in lalr1.cc, let's get rid of them.
	Reported by Frank Heckenbach.

	Actually, let's monitor all our casts using easy to grep macros.
	Let's use these macros to use the C++ standard casts when we are in
	C++.

	* data/skeletons/c.m4 (b4_cast_define): New.
	* data/skeletons/glr.c, data/skeletons/glr.cc,
	* data/skeletons/lalr1.cc, data/skeletons/stack.hh,
	* data/skeletons/yacc.c:
	Use it and/or its casts.

	* tests/actions.at, tests/cxx-type.at,
	* tests/glr-regression.at, tests/headers.at, tests/torture.at,
	* tests/types.at:
	Use YY_CAST instead of C casts.

	* configure.ac (warn_cxx): Add -Wold-style-cast.
	* doc/bison.texi: Disable it.

2019-11-01  Akim Demaille  <akim.demaille@gmail.com>

	tests: be robust to tput errors
	Reported by Denis Excoffier.

	* tests/bison.in: here.

2019-11-01  Akim Demaille  <akim.demaille@gmail.com>

	git: update ignores
	I don't understand what happened in
	10acc148bb90fac8a52a5d35f2bd18bd824c1639.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.90
	* NEWS: Record release date.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	C++: finish propagating the unsigned->signed conversion in locations
	* data/skeletons/location.cc: Remove the u (for unsigned) suffix from
	the initial line and column.
	* NEWS: AFAICT, only C++ backends have their location types changed.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	style: fix cpp indentation
	Reported by syntax-check.

	* src/system.h: here.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	style: glr.c: comment changes
	* data/skeletons/glr.c: here.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	CI: pass -O1 to GCC8 with sanitizers
	This build never finishes in the 50min credit given by Travis.  See if
	with optimizations it works better.

	* .travis.yml: here.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	reader: reduce the "scope" of global variables
	We have too many global variables, adding structure would help.  For a
	start, let's hide some of the variables closer to their usage.

	* src/getargs.c, src/files.h (current_file): Move to...
	* src/scan-gram.c: here.
	* src/scan-gram.h (gram_in, gram__flex_debug): Remove, make them
	private to the scanner.
	* src/reader.h, src/reader.c (reader): Take a grammar file as argument.
	Move the handling of scanner variables to...
	* src/scan-gram.l (gram_scanner_open, gram_scanner_close): here.
	(gram_scanner_initialize): Remove, replaced by gram_scanner_open.
	* src/main.c: Adjust.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	parser: use grammar_file instead of current_file
	* src/parse-gram (%initial-action): here.
	(handle_skeleton): Don't depend on the current file name to look for
	"local" skeletons (subject to changes coming from "#lines"): depend
	only on the initial file name, the one given on the command line.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: use grammar_file instead of current_file
	Currently there are two globals denoting the input file: grammar_file
	is the one from the command line, and current_file which might change
	because of #line.  Use only the former.

	* src/complain.c (error_message): here.
	* tests/diagnostics.at: Adjust.

2019-10-25  Akim Demaille  <akim.demaille@gmail.com>

	reader: let symtab deal with the symbols
	* src/reader.c (reader): Move the setting up of the builtin symbols to...
	* src/symtab.c (symbols_new): here.

2019-10-25  Akim Demaille  <akim.demaille@gmail.com>

	style: remove incorrect comment
	Reported by Paul Eggert.

	* src/system.h: here.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: fix previous commit: printing of state numbers
	* data/skeletons/lalr1.cc: Printing a char prints... a char.
	Print ints instead.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: use computed state types
	This skeleton uses a single stack of state structures, so it is less
	likely to benefit from a stack size reduction than yacc.c (which uses
	several stacks: state number, value and location).  But it will reduce
	the size of the LAC stack.

	This skeleton was already using int for state numbers, so, contrary to
	yacc.c, this brings nothing for large automata.

	Overall, it is still nicer to make the skeletons alike.

	* data/skeletons/lalr1.cc (state_type): Here.

2019-10-24  kaneko y  <spiketeika@gmail.com>

	README: Fix a typo
	* README: Fix a typo. Git command name is submodule.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix missing dependencies
	Reported by Thomas Petazzoni.
	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00000.html

	* examples/c/reccalc/local.mk: Complete dependencies, including for
	earlier versions of Automake (for sake of our CI, on top of Ubuntu
	Xenial/Bionic, which feature only Automake 1.15).
	(%D%/scan.c %D%/scan.h): Upgrade to the full version provided in
	Automake's documentation.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: simplify location handling
	Locations start at line 1.  Don't accept line 0.

	* src/location.c (location_print): Don't print locations with line 0.
	(location_caret): Simplify.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	build: reenable -Wtype-limits
	See https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html
	to https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00073.html.

	Paul Eggert's changes in gnulib do fix the issue for modern GCCs (7,
	8, 9) on macOS.  Unfortunately these warnings are back on the
	CI (GNU/Linux) with GCC 4.6, 4.7, (not 4.8) and 4.9.

	Disable the warning locally.

	* configure.ac (warn_common, warn_tests): Remove -Wtype-limits.
	* src/system.h (IGNORE_TYPE_LIMITS_BEGIN, IGNORE_TYPE_LIMITS_END): New.
	* src/InadequacyList.c, src/parse-gram.c, src/parse-gram.y,
	* src/symtab.c: Use it.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	build: remove dmalloc support
	Today sanitizers are a better alternative.

	* m4/dmalloc.m4: Remove.
	* configure.ac, src/system.h: Adjust.

2019-10-23  Akim Demaille  <akim.demaille@gmail.com>

	gitignore: update

2019-10-23  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2019-10-23  Yuichiro Kaneko  <spiketeika@gmail.com>

	style: update comment in reader.c
	rrhs and rlhs were removed by b2ed6e5826e772162719db595446b2c58e4ac5d6.

	* src/reader.c (packgram): Update comment.

2019-10-22  kaneko y  <spiketeika@gmail.com>

	yacc.c: fix a typo
	* data/skeletons/yacc.c (yysetstate): fix comment.

2019-10-22  Akim Demaille  <akim.demaille@gmail.com>

	style: pacify syntax-check
	* doc/.gitignore, src/complain.c, src/getargs.c,
	* src/output.c: here.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	main: also free memory on errors
	* src/derives.c (derives_free): Beware of NULL.
	* src/main.c (main): Let the 'finish' label include memory release.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	To get bitset_free accept NULL.  See
	https://lists.gnu.org/archive/html/bug-gnulib/2019-10/msg00054.html

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scope in derives
	* src/derives.c: here.
	And prefer prefix to postfix increment.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	build: disable -Wtautological-constant-out-of-range-compare
	Also see e31f92495ce14a5d924b148c8ea1470003cc47c1 and
	https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html

	* configure.ac (warn_common): Disable
	-Wtautological-constant-out-of-range-compare.
	(warn_tests): Restore it.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	CI: formatting changes
	* .travis.yml: Use the single line form of lists, when reduced to a
	singletons.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	CI: rename jobs
	* .travis.yml (compile, test): Rename as...
	(dist, check): these, which are more traditional for GNU projects.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	doc: update README
	* README: Be clearer that README-hacking _must_ be read.
	Convert to Markdown.

2019-10-21  Akim Demaille  <akim.demaille@gmail.com>

	bootstrap: relieve developpers from Gettext version mismatch issues
	* .travis.yml (compile): Move the workaround from here...
	* bootstrap.conf (bootstrap_epilogue): to there.

2019-10-20  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of GCC9 warnings in push mode
	This is really weird: GCC points to the LHS of the assignment...

	    260. headers.at:184: testing Sane headers: api.pure api.push-pull=both ...
	    tests/headers.at:184: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -d -o input.c input.y
	    tests/headers.at:184: $CC $CFLAGS $CPPFLAGS  -c -o input.o input.c
	    stderr:
	    input.c: In function 'yyparse':
	    input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     1276 |         yylval = *yypushed_val;
	          |         ~~~~~~~^~~~~~~~~~~~~~~
	    input.c: In function 'yypull_parse':
	    input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     1276 |         yylval = *yypushed_val;
	          |         ~~~~~~~^~~~~~~~~~~~~~~
	    cc1: all warnings being treated as errors
	    stdout:
	    tests/headers.at:184: exit code was 1, expected 0

	See also d87c8ac79ab844d6a7a4f5103dcf7a842d18b611
	and 9645a2b20ee7cbfa8bb4ac2237f87d598afe349c.

	* tests/headers.at (Several parsers, Several parsers): Disable these
	warnings when in push parser.

2019-10-20  Akim Demaille  <akim.demaille@gmail.com>

	CI: try GCC9 and Clang9
	The logs show:

	    Disallowing sources: llvm-toolchain-bionic-8, ubuntu-toolchain-r-test
	    To add unlisted APT sources, follow instructions in
	    https://docs.travis-ci.com/user/installing-dependencies#Installing-Packages-with-the-APT-Addon

	* .travis.yml: Remove a few apt sources which are ignored in
	Bionic (e.g., see
	https://github.com/travis-ci/apt-source-safelist/issues/410).
	Where needed, use sources/sourceline instead.
	Also, don't use -DNDEBUG with older builds.

2019-10-20  Akim Demaille  <akim.demaille@gmail.com>

	parser: clarify version checking
	* src/parse-gram.y: Use the same conventions for gnulib as elsewhere:
	<header.h>.
	(str_to_version): New.
	(handle_require): Use it.
	Prefer < to >.

2019-10-20  Akim Demaille  <akim.demaille@gmail.com>

	build: disable -Wtype-limits, except in the test suite
	The current implementation of lib/intprops.h results in "unsigned < 0"
	comparisons, which triggers warnings.  See

	https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html

	* configure.ac (warn_common): Disable -Wtype-limits.
	(warn_tests): Restore it.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	c++: port to Sun C++ 5.12
	The documentation for Oracle Solaris Studio 12.3 (Sun C++ 5.12
	2011/11/16) says it supports C++03.  This compiler rejects the
	location.cc use of std::max for some reason; I don’t know why
	since I don’t use C++ as a rule.  The simplest workaround is to
	open-code ‘max’.
	* data/skeletons/location.cc (add_):
	Do max by hand rather than relying on std::max.
	Don’t include <algorithm.h>; no longer needed.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	regen

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to Solaris 10 grep
	* tests/scanner.at (Token numbers: $1): Use $EGREP, not grep -E.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to Solaris 10 sed
	As documented in the Autoconf manual, Solaris 10 sed rejects
	script labels contianing more than 7 characters.  POSIX requires
	support for at least 8 characters, but we might as well be portable
	to Solaris 10 which is still supported.
	* tests/local.at (AT_SETS_CHECK): Use only the first 7 characters
	in sed labels.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	bison: check for int overflow in token numbers
	* src/symtab.c: Include intprops.h
	(symbol_user_token_number_set): Don’t allow user_token_number ==
	INT_MAX because too much other code adds 1 to the user token number.
	(symbols_token_translations_init): Complain on integer overflow
	instead of indulging in undefined behavior.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	bison: check for int overflow when scanning
	* src/scan-gram.l: Include errno.h, for errno.
	(scan_integer, handle_syncline): Check for integer overflow.
	* tests/input.at (too-large.y): Adjust to match new diagnostics.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	bison: check version numbers more carefully
	* src/parse-gram.y: Include intprops.h.
	(handle_require): Don’t indulge in undefined behavior if the major
	or minor number is out of range.  Instead, check that the
	resulting value is nonnegative, fits in int, and that the minor
	number is less than 100.  Also, check that a number was parsed.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	c: port YY_ATTRIBUTE_UNUSED to Sun C 5.12
	Sun C 5.12 defines __SUNPRO_C to 0x5120 but diagnoses
	‘__attribute__ ((__unused__))’.  Change the ifdefs to use
	the same method as Gnulib in this area.
	* data/skeletons/c.m4 (YY_ATTRIBUTE): Remove, since
	not all attributes were added in the same compiler version.
	(YY_ATTRIBUTE_PURE, YY_ATTRIBUTE_UNUSED):
	Use specific GCC version for each attribute.
	Pay no attention to __SUNPRO_C.
	* tests/headers.at (Several parsers): Tighten tests accordingly.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	c: improve port of stdint.h usage to pre-C99
	Oracle Solaris Studio 12.3 (Sun C 5.12 2011/11/16) by default does
	not conform to C99; it defines __STDC_VERSION__ to be 199409L, so
	the Bison code does not include <stdint.h> (not required by C89
	amendment 1) even though this compiler does have <stdint.h>.  On
	this platform <limits.h> defines INT_LEAST8_MAX (POSIX allows
	this) so the skeleton got confused and thought that <stdint.h> had
	been included even though it wasn’t.
	* data/skeletons/c.m4 (b4_c99_int_type_define) [!__PTRDIFF_MAX__]:
	Always include <limits.h>.
	(YY_STDINT_H): Define when <stdint.h> was included.
	All uses of expressions like ‘defined INT_LEAST8_MAX’ changed to
	‘defined YY_STDINT_H’, since Sun C 5.12 <limits.h> defines macros
	like INT_LEAST8_MAX but does not declare types like int_least8_t.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	gnulib:update

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	autoconf:update

2019-10-15  Akim Demaille  <akim.demaille@gmail.com>

	TODO: more updates

2019-10-15  Akim Demaille  <akim.demaille@gmail.com>

	TODO: update

2019-10-15  Akim Demaille  <akim.demaille@gmail.com>

	yacc: rename types for states
	* data/skeletons/yacc.c (yy_state_num): Rename as...
	(yy_state_t): this.
	(yy_state_fast_t): New.
	Use it.

2019-10-15  Akim Demaille  <akim.demaille@gmail.com>

	glr: style changes
	* data/skeletons/glr.c (yytnamerr): here.
	(yyprocessOneStack): Initialize variables.

2019-10-15  Akim Demaille  <akim.demaille@gmail.com>

	yacc: style changes
	* data/skeletons/yacc.c: Move call to lac discard to clarify the
	shifting of the token.
	Like in lalr1.cc.

2019-10-15  Akim Demaille  <akim.demaille@gmail.com>

	tests: avoid $(...)
	Reported by Paul Eggert.

	* tests/local.at (AT_DATA_NO_FINAL_EOL): here.

2019-10-14  Akim Demaille  <akim.demaille@gmail.com>

	tests: use a portable 'truncate' implementation
	Suggested by Paul Eggert.
	https://lists.gnu.org/archive/html/bison-patches/2019-10/msg00044.html

	* tests/local.at (AT_DATA_NO_FINAL_EOL): Use dd instead of perl.

2019-10-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: factor the generation of files without the final eol
	AFAICT Autotest 2.69 still does not support AT_DATA without the final
	eol.

	* tests/local.at (AT_DATA_NO_FINAL_EOL): New.
	* tests/input.at: Use it.

2019-10-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: refactor the handling of Perl
	Let's make a difference between places where Perl is required for the
	test (AT_PERL_REQUIRE), and the places where it's used to run the
	test, but it's not not to run the test (AT_PERL_CHECK).

	* tests/local.at (AT_REQUIRE): New.
	(AT_PERL_CHECK, AT_PERL_REQUIRE): New.
	Use them where appropriate.

	* tests/local.mk ($(TESTSUITE)): Beware not to start the line with
	'-pi' if Perl is empty, as Make understands this as "it's ok to fail".
	Which it is not.

2019-10-12  Akim Demaille  <akim.demaille@gmail.com>

	d: comment changes
	* data/skeletons/lalr1.d: Here.

2019-10-12  Akim Demaille  <akim.demaille@gmail.com>

	i18n: don't push too hard for '…'
	Suggested by Paul Eggert.

	* src/location.c (ellipsis): Clarify comment for translators.

2019-10-11  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-10-11  Akim Demaille  <akim.demaille@gmail.com>

	glr: display line numbers in traces
	Suggested by Lars Maier.

	* data/skeletons/glr.c: Also display rule locations when rules are
	deferred, and rejected.

2019-10-11  Akim Demaille  <akim.demaille@gmail.com>

	tests: be really robust to Perl missing
	My previous tests (with ./configure PERL=false) have been fooled by
	configure, that managed to find perl anyway.  This time, I ran this on
	a Fedora in Docker, without Perl.

	* tests/calc.at, tests/diagnostics.at, tests/headers.at,
	* tests/input.at, tests/local.at, tests/named-refs.at,
	* tests/output.at, tests/regression.at, tests/skeletons.at,
	* tests/synclines.at, tests/torture.at: Don't require Perl.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	configure: perl is not required
	But it's used in various places, including in some tests.

	* configure.ac: here.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: prefer "…" to "..." if the locale supports it
	* src/location.c (ellipsis, ellipsize): New.
	Use them.

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

	c: improve patch for UCHAR_MAX etc. problem
	* data/skeletons/c.m4 (b4_c99_int_type_define): Reorder to put the
	signed types first, since they’re simpler and this keeps similar
	code closer.  For signed types, don’t bother checking whether the
	type promotes to int since the type must be signed anyway.  For
	unsigned types, protect a test like ‘UCHAR_MAX <= INT_MAX’ with
	‘!defined __UINT_LEAST8_MAX__’, as otherwise the logic is wrong
	for oddball platforms; and once we do that, there should no need
	for ‘defined INT_MAX’ so remove that.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	tests: do not depend on config.h
	Currently we face test suite failures in different environments,
	because of a conflict between the definitions of isnan by gnulib, and
	by the C++ library:

	    262. headers.at:186: testing Sane headers: %locations %debug c++ ...
	    ./headers.at:186: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -d -o input.cc input.y
	    ./headers.at:186: $CXX $CXXFLAGS $CPPFLAGS  -c -o input.o input.cc
	    stderr:
	    In file included from /usr/include/c++/4.8.2/cmath:44:0,
	                     from /usr/include/c++/4.8.2/random:38,
	                     from /usr/include/c++/4.8.2/bits/stl_algo.h:65,
	                     from /usr/include/c++/4.8.2/algorithm:62,
	                     from location.hh:41,
	                     from input.hh:90,
	                     from input.cc:50:
	    /u/cs/fac/eggert/src/gnu/bison/lib/math.h: In function 'bool isnan(double)':
	    /u/cs/fac/eggert/src/gnu/bison/lib/math.h:2849:1: error: new declaration 'bool isnan(double)'
	     _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool)
	     ^
	    In file included from /usr/include/features.h:375:0,
	                     from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/os_defines.h:39,
	                     from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h:2097,
	                     from /usr/include/c++/4.8.2/cstdlib:41,
	                     from input.hh:48,
	                     from input.cc:50:
	    /usr/include/bits/mathcalls.h:235:1: error: ambiguates old declaration 'int isnan(double)'
	     __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
	     ^

	There might be something to do in gnulib about this, but I believe
	that gnulib should not be used in the test suite in the first place.

	The test suite should work with other compilers than the one used to
	compile the package.  For a start, Bison sources are more
	demanding (C99) than the generated parsers.  Last time I tried, tcc
	for example, was not able to compile Bison, yet our generated parsers
	should compile cleanly with it.

	Besides the problem at hand is with the C++ compiler, with is not the
	one used to set up gnulib at configuration-time (config.h is mainly
	built from probing the C compiler).

	We should really not depend on gnulib in tests.

	This was introduced in 2001 to check whether including
	stdlib.h/string.h is safe thanks to STDC_HEADERS
	(2ce1014469742b5c6618daf8506b69e38787c7d5).  Today, we assume at least
	a C90 compiler, it should be safe enough.

	* tests/local.at, tests/testsuite.h: Do not include config.h.
	* tests/atlocal.in (conftest.cc): Likewise.
	(CPPFLAGS): Do not expose lib/, as because of this we might picked up
	gnulib replacement headers for system headers.

	* tests/input.at: Use int instead of ptrdiff_t, for easier portability
	(some machine on the CI did not find ptrdiff_t).
	* tests/c++.at: Add missing include for getchar.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	doc: spell check
	* doc/bison.texi: Remove the index about yyoutput, it is no longer
	documented.
	Spell check.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	tests: style changes
	* tests/actions.at: Prefer printf to fprintf.
	Prefer yyo to yyoutput in %printer.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	tests: formatting changes
	* tests/actions.at, tests/local.at: here.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	tests: add missing includes
	* tests/actions.at, tests/c++.at, tests/headers.at,
	* tests/regression.at: here.

2019-10-10  Akim Demaille  <akim.demaille@gmail.com>

	c: don't assume that UCHAR_MAX, etc. are defined
	A number of portability issues with GCC 4.6 .. 4.9 (inclusive):

	    input.c:184:7: error: "UCHAR_MAX" is not defined [-Werror=undef]
	     #elif UCHAR_MAX <= INT_MAX
	           ^
	    input.c:184:20: error: "INT_MAX" is not defined [-Werror=undef]
	     #elif UCHAR_MAX <= INT_MAX
	                        ^
	    input.c:202:7: error: "USHRT_MAX" is not defined [-Werror=undef]
	     #elif USHRT_MAX <= INT_MAX
	           ^
	    input.c:202:20: error: "INT_MAX" is not defined [-Werror=undef]
	     #elif USHRT_MAX <= INT_MAX
	                        ^

	* data/skeletons/c.m4 (b4_c99_int_type_define): Don't assume they are
	defined.

2019-10-09  Akim Demaille  <akim.demaille@gmail.com>

	configure: don't require Flex
	Flex should not be required to build Bison or run the test suite (of
	course it is needed for maintaining Bison).  Yet the Automake
	conditional FLEX_WORKS does not work.

	* m4/flex.m4 (_AC_PROG_LEX_YYTEXT_DECL): Since this is called
	conditionally, don't define LEX_IS_FLEX here, but rather...
	(AC_PROG_LEX): here.
	* configure.ac: Be more cautious about possibly undefined variables.

2019-10-07  Paul Eggert  <eggert@cs.ucla.edu>

	Move the integer-type selection into c.m4
	That way, glr.c can use it too.
	* data/skeletons/c.m4 (b4_int_type):
	Do not special-case ‘char’; it’s not worth the trouble,
	as clang complains about char subscripts.
	(b4_c99_int_type, b4_c99_int_type_define): New macros,
	taken from yacc.c.
	* data/skeletons/glr.c: Use b4_int_type_define.
	* data/skeletons/yacc.c (b4_int_type): Remove, since there’s
	no longer any need to redefine it.
	Use b4_c99_int_type_define rather than its body.

2019-10-07  Paul Eggert  <eggert@cs.ucla.edu>

	Use “least” types for integers in Yacc tables
	This changes the Yacc skeleton to use “least” integer types to
	keep tables smaller on some platforms, which should lessen cache
	pressure.  Since Bison uses the Yacc skeleton, it follows suit.
	* data/skeletons/yacc.c: Include limits.h and stdint.h if this
	seems to be needed.
	(yytype_uint8, yytype_int8, yytype_uint16, yytype_int16):
	If available, use GCC predefined macros __INT_MAX__ etc. to select
	a “least” type, as this avoids namespace hassles.  Otherwise, if
	available fall back on selecting a “least” type via the C99 macros
	INT_MAX, INT_LEAST8_MAX, etc.  Otherwise, fall further back on one of
	the builtin C99 types signed char, short, and int.  Make sure that
	any selected type promotes to int.  Ignore any macros YYTYPE_INT16,
	YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8 defined by the user.
	(ptrdiff_t, PTRDIFF_MAX): Simplify in the light of the above.
	(yytype_uint8, yytype_uint16): Do not assume that unsigned char
	and unsigned short promote to int, as this isn’t true on some
	platforms (e.g., TI TMS320C55x).
	* src/parse-gram.y (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16)
	(YYTYPE_UINT8): Remove, as these are no longer effective.

2019-10-06  Paul Eggert  <eggert@cs.ucla.edu>

	Port better to C++ platforms
	* data/skeletons/yacc.c (YYPTRDIFF_T, YYPTRDIFF_MAXIMUM):
	Default to long, not int.
	(yy_lac_stack_realloc, yy_lac, yytnamerr, yyparse):
	Avoid casts to YYPTRDIFF_T that were masking the problem.

2019-10-06  Paul Eggert  <eggert@cs.ucla.edu>

	Work around GCC 4.8 false alarms without casts
	* data/skeletons/yacc.c (yyparse):
	Initialize yyes_capacity with a signed expression.
	* tests/local.at (AT_YYLEX_DEFINE(c)):
	Use enum to avoid cast.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: make recheck
	* tests/local.mk (recheck): New.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: also show suggested %empty
	* src/reader.c (grammar_rule_check_and_complete): Suggest to add %empty.
	* tests/actions.at, tests/diagnostics.at: Adjust expectations.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: sort symbols per location
	Because the checking of the grammar is made by phases after the whole
	grammar was read, we sometimes have diagnostics that look weird.  In
	some case, within one type of checking, the entities are not checked
	in the order in which they appear in the file.  For instance, checking
	symbols is done on the list of symbols sorted by tag:

	    foo.y:1.20-22: warning: symbol BAR is used, but is not defined as a token and has no rules [-Wother]
	        1 | %destructor {} QUX BAR
	          |                    ^~~
	    foo.y:1.16-18: warning: symbol QUX is used, but is not defined as a token and has no rules [-Wother]
	        1 | %destructor {} QUX BAR
	          |                ^~~

	Let's sort them by location instead:

	    foo.y:1.16-18: warning: symbol 'QUX' is used, but is not defined as a token and has no rules [-Wother]
	        1 | %destructor {} QUX BAR
	          |                ^~~
	    foo.y:1.20-22: warning: symbol 'BAR' is used, but is not defined as a token and has no rules [-Wother]
	        1 | %destructor {} QUX BAR
	          |                    ^~~

	* src/location.h (location_cmp): Be robust to empty file names.
	* src/symtab.c (symbol_cmp): Sort by location.
	* tests/input.at: Adjust expectations.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: suggest fixes for undeclared symbols
	From

	    input.y:1.17-19: warning: symbol baz is used, but is not defined as a token and has no rules [-Wother]
	         1 | %printer {} foo baz
	           |                 ^~~

	to

	    input.y:1.17-19: warning: symbol 'baz' is used, but is not defined as a token and has no rules; did you mean 'bar'? [-Wother]
	        1 | %printer {} foo baz
	          |                 ^~~
	          |                 bar

	* bootstrap.conf: We need fstrcmp.
	* src/symtab.c (symbol_from_uniqstr_fuzzy): New.
	(complain_symbol_undeclared): Use it.
	* tests/diagnostics.at (Suggestions): New.
	* data/bison-default.css (insertion): Rename as...
	(fixit-insert): this, as this is what GCC uses.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	style: isolate complain_symbol_undeclared
	* src/symtab.c (complain_symbol_undeclared): New.
	Use it.
	Use quote on the guilty symbol (like GCC does, and we also do
	elsewhere).
	* tests/input.at: Adjust.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	style: simplify the handling of symbol and semantic_type tables
	Both are stored in a hash, and back in the days, we used to iterate
	over these tables using hash_do_for_each.  However, the order of
	traversal was not deterministic, which was a nuisance for
	deterministic output (and therefore also a problem for tests).  So at
	some point (83b60c97ee1f98bb1f15ffa38acdc4cc765515f5) we generated a
	sorted list of these symbols, and symbols_do actually iterated on that
	list.  But we kept the constraints of using hash_do_for_each, which
	requires a lot of ceremonial code, and makes it hard/unnatural to
	preserve data between iterations (see the next commit).

	Alas, this is C, not C++.

	Let's remove this abstraction, and directly iterate on the sorted
	tables.

	* src/symtab.c (symbols_do): Remove.
	Adjust callers to use a simple for-loop instead.
	(table_sort): New.
	(symbols_check_defined): Use it.
	(symbol_check_defined_processor, symbol_pack_processor)
	(semantic_type_check_defined_processor, symbol_translation_processor):
	Remove.
	Simplify the corresponding functions (that no longer need to return a
	bool).

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: display suggested update after the caret-info
	This commit adds the suggestion in green, on the line below the
	caret-and-tildes.

	    foo.y:1.1-14: warning: deprecated directive: '%error-verbose', use '%define parse.error verbose' [-Wdeprecated]
	        1 | %error-verbose
	          | ^~~~~~~~~~~~~~
	          | %define parse.error verbose

	The current approach, with location_caret_suggestion, is fragile:
	there's a protocol of calls to the complain functions which is strict.
	We should rather have a richer structure describing the diagnostics,
	including with submessages such as the suggestions, passed in the end
	to the routines in charge of formatting and printing them.

	* src/location.h, src/location.c (location_caret_suggestion): New.
	* src/complain.c (deprecated_directive): Use it.
	* tests/diagnostics.at, tests/input.at: Adjust expectations.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: isolate caret_set_column
	* src/location.c (caret_info): Add width and skip members.
	(caret_set_column): New.
	Use it.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: isolate caret_set_file
	* src/location.c (caret_set_file): New.
	Store the current line's length in caret_info.line_len.
	Pay attention to fseek's return value.
	Extracted from...
	(location_caret): here.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: use tput to get the number of columns
	* tests/bison.in: here.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	TODO: update
	I no longer agree with that item, there are indeed two things to
	report: lack of definition, and being useless.  We could have either
	one without the other, they are not directly related.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: work around warnings from G++ 4.8
	input.c: In function 'int yyparse()':
	input.c: error: conversion to 'long int' from 'long unsigned int'
	                may change the sign of the result [-Werror=sign-conversion]
	   yyes_capacity = sizeof yyesa / sizeof *yyes;
	                                ^
	cc1plus: all warnings being treated as errors

	* data/skeletons/yacc.c: here.

2019-10-06  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: work around warnings from Clang++ 3.3 and 3.4
	When we run the test suite with these C++ compilers to compile C code,
	we get:

	    239. synclines.at:440: testing syncline escapes: yacc.c ...
	    ../../tests/synclines.at:440: $CC $CFLAGS $CPPFLAGS \"\\\"\".c -o \"\\\"\" ||
	              exit 77
	    stderr:
	    stdout:
	    ../../tests/synclines.at:440: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret  -o \"\\\"\".c \"\\\"\".y
	    ../../tests/synclines.at:440: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o \"\\\"\" \"\\\"\".c $LIBS
	    stderr:
	    "\"".c:1102:41: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
	          YYPTRDIFF_T yysize = yyssp - yyss + 1;
	                      ~~~~~~   ~~~~~~~~~~~~~^~~
	    1 error generated.

	    193. conflicts.at:545: testing parse.error=verbose and consistent errors: lr.type=canonical-lr parse.lac=full ...
	    input.c:737:75: error: implicit conversion loses integer precision: 'long' to 'int'
	                           [-Werror,-Wshorten-64-to-32]
	      YYPTRDIFF_T yysize_old = *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1;
	                  ~~~~~~~~~~                               ~~~~~~~~~~~~~~~~~~~^~~
	    input.c:901:48: error: implicit conversion loses integer precision: 'long' to 'int'
	                           [-Werror,-Wshorten-64-to-32]
	                YYPTRDIFF_T yysize = yyesp - *yyes + 1;
	                            ~~~~~~   ~~~~~~~~~~~~~~^~~

	* data/skeletons/yacc.c: Add more casts.

2019-10-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: avoid a GCC 4.8 warning
	GCC 4.8 reports:

	    input.y:57:33: error: conversion to 'int' from 'long unsigned int'
	                          may alter its value [-Werror=conversion]
	       int input_elts = sizeof input / sizeof input[0];
	                                     ^

	* tests/local.at (AT_YYLEX_DEFINE(c)): Add a cast (sorry, Paul!).

2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	* data/skeletons/glr.c (yysplitStack): Pacify Clang 8.

2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid quiet conversion of pointer to bool
	* src/location.c (caret_set_file):
	* src/scan-code.l (contains_dot_or_dash):
	Do not quietly convert pointer to bool, as Oracle Developer Studio
	12.6 complains and it is arguably confusing style anyway.

2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	Port ARGMATCH_DEFINE_GROUP calls to C99
	* src/complain.c, src/getargs.c: Omit ‘;’ after call
	to ARGMATCH_DEFINE_GROUP, as C99 does not allow ‘;’ there.

2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>

	Port lexcalc scan.l to Solaris 10
	* examples/c/lexcalc/scan.l: Include errno.h.

2019-10-05  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: use casts instead of pragmas when losing integer width
	For instance with Clang 4, 8, etc.:

	    input.c:1166:12: error: implicit conversion loses integer precision: 'int' to 'yy_state_num' (aka 'signed char') [-Werror,-Wconversion]
	      *yyssp = yystate;
	             ~ ^~~~~~~

	And GCC 8:

	    input.c:1166:12: error: implicit conversion loses integer precision: 'int' to 'yy_state_num' (aka 'signed char') [-Werror,-Wimplicit-int-conversion]
	      *yyssp = yystate;
	             ~ ^~~~~~~

	* data/skeletons/yacc.c (YY_CONVERT_INT_BEGIN): Remove.
	Adjust callers.

2019-10-04  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: fix warnings about undefined macros
	For instance with GCC 4.9 and --enable-gcc-warnings:

	    25. input.at:1201: testing Torturing the Scanner ...
	    ../../tests/input.at:1344: $CC $CFLAGS $CPPFLAGS  -c -o input.o input.c
	    stderr:
	    input.c:239:18: error: "__STDC_VERSION__" is not defined [-Werror=undef]
	     # elif 199901 <= __STDC_VERSION__
	                      ^
	    input.c:256:18: error: "__STDC_VERSION__" is not defined [-Werror=undef]
	     # elif 199901 <= __STDC_VERSION__
	                      ^

	* data/skeletons/yacc.c: Check that __STDC_VERSION__ is defined before
	using it.

2019-10-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: check more state numbers
	* tests/torture.at (State number type): Also check 128, 129 and
	32768.

2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/bison.texi (Table of Symbols): Mention memory exhaustion.

2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify mfcalc error handling
	* doc/bison.texi (Mfcalc Symbol Table, Mfcalc Lexer):
	Don’t abort on memory allocation failure or integer overflow.
	Instead, comment that these things aren’t checked for.

2019-10-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix comments suggesting to use %require
	* data/skeletons/location.cc, data/skeletons/stack.hh: Here.

2019-10-03  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: simplify uses of size_t
	* data/skeletons/stack.hh (stack::index_type): New type.
	(stack::size, stack::operator[]): Be about an index_type rather than a
	size_type and an int.

2019-10-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: fixes for old compilers
	On the CI with GCC 6:

	    examples/c++/calc++/parser.cc:845:5: error: 'ptrdiff_t' was not declared in this scope
	         ptrdiff_t yycount = 0;
	         ^~~~~~~~~
	    examples/c++/calc++/parser.cc:845:5: note: suggested alternatives:
	    /usr/include/x86_64-linux-gnu/c++/6/bits/c++config.h:202:28: note:   'std::ptrdiff_t'
	       typedef __PTRDIFF_TYPE__ ptrdiff_t;
	                                ^~~~~~~~~

	* data/skeletons/lalr1.cc: Qualify ptrdiff_t and size_t with std::.

2019-10-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: be robust to -DNDEBUG
	input.y: In function 'yylex':
	input.y:67:7: error: unused variable 'input_elts' [-Werror=unused-variable]
	   int input_elts = sizeof input / sizeof input[0];
	       ^~~~~~~~~~
	cc1: all warnings being treated as errors

	* tests/input.at, tests/local.at: Avoid that.

2019-10-03  Akim Demaille  <akim.demaille@gmail.com>

	CI: remove the symlink before creating it
	Currently we fail if we rerun a job that succeeded to push the
	tarball.

2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust ‘Big horizontal’ test case
	* tests/torture.at (Big horizontal): Adjust to recent changes with
	integers.  If there are states 0..256, Bison now uses a signed
	rather than an unsigned 16-bit integer.

2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>

	regen

2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer signed to unsigned integers
	This patch contains more fixes to prefer signed to unsigned
	integer types, as modern tools like 'gcc -fsanitize=undefined'
	can check for signed integer overflow but not unsigned overflow.
	* NEWS: Document the API change.
	* boostrap.conf (gnulib_modules): Add intprops.
	* data/skeletons/glr.c: Include stddef.h and stdint.h,
	since this skeleton can assume C99 or later.
	(YYSIZEMAX): Now signed, and the minimum of SIZE_MAX and PTRDIFF_MAX.
	(yybool) [!__cplusplus]: Now signed (which is how bool behaves).
	(YYTRANSLATE): Avoid use of unsigned, and make the macro
	safe even for values greater than UINT_MAX.
	(yytnamerr, struct yyGLRState, struct yyGLRStateSet, struct yyGLRStack)
	(yyaddDeferredAction, yyinitStateSet, yyinitGLRStack)
	(yyexpandGLRStack, yymarkStackDeleted, yyremoveDeletes)
	(yyglrShift, yyglrShiftDefer, yy_reduce_print, yydoAction)
	(yyglrReduce, yysplitStack, yyreportTree, yycompressStack)
	(yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError)
	(yyparse, yy_yypstack, yypstack, yypdumpstack):
	* tests/input.at (Torturing the Scanner):
	Prefer ptrdiff_t to size_t.
	* data/skeletons/c++.m4 (b4_yytranslate_define):
	* src/AnnotationList.c (AnnotationList__computePredecessorAnnotations):
	* src/AnnotationList.h (AnnotationIndex):
	* src/InadequacyList.h (InadequacyListNodeCount):
	* src/closure.c (closure_new):
	* src/complain.c (error_message, complains, complain_indent)
	(complain_args, duplicate_directive, duplicate_rule_directive):
	* src/gram.c (nritems, ritem_print, grammar_dump):
	* src/ielr.c (ielr_compute_ritem_sees_lookahead_set)
	(ielr_item_has_lookahead, ielr_compute_annotation_lists)
	(ielr_compute_lookaheads):
	* src/location.c (columns, boundary_print, location_print):
	* src/muscle-tab.c (muscle_percent_define_insert)
	(muscle_percent_define_check_values):
	* src/output.c (prepare_rules, prepare_actions):
	* src/parse-gram.y (id, handle_require):
	* src/reader.c (record_merge_function_type, packgram):
	* src/reduce.c (nuseless_productions, nuseless_nonterminals)
	(inaccessable_symbols):
	* src/relation.c (relation_print):
	* src/scan-code.l (variant, variant_table_size, variant_count)
	(variant_add, get_at_spec, show_sub_message, show_sub_messages)
	(parse_ref):
	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>)
	(scan_integer, convert_ucn_to_byte, handle_syncline):
	* src/scan-skel.l (at_complain):
	* src/symtab.c (complain_symbol_redeclared)
	(complain_semantic_type_redeclared, complain_class_redeclared)
	(symbol_class_set, complain_user_token_number_redeclared):
	* src/tables.c (conflict_tos, conflrow, conflict_table)
	(conflict_list, save_row, pack_vector):
	* tests/local.at (AT_YYLEX_DEFINE(c)):
	Prefer signed to unsigned integer.
	* data/skeletons/lalr1.cc (yy_lac_check_):
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
	* tests/local.at (AT_YYLEX_DEFINE(c)):
	Omit now-unnecessary casts.
	* data/skeletons/location.cc (b4_location_define):
	* doc/bison.texi (Mfcalc Lexer, C++ position, C++ location):
	Prefer int to unsigned for line and column numbers.
	Change example to abort explicitly on memory exhaustion,
	and fix an off-by-one bug that led to undefined behavior.
	* data/skeletons/stack.hh (stack::operator[]):
	Also allow ptrdiff_t indexes.
	(stack::pop, slice::slice, slice::operator[]):
	Index arg is now ptrdiff_t, not int.
	(stack::ssize): New method.
	(slice::range_): Now ptrdiff_t, not int.
	* data/skeletons/yacc.c (b4_state_num_type): Remove.
	All uses replaced by b4_int_type.
	(YY_CONVERT_INT_BEGIN, YY_CONVERT_INT_END): New macros.
	(yylac, yyparse): Use them around conversions that -Wconversion
	would give false alarms about. 	Omit unnecessary casts.
	(yy_stack_print): Use int rather than unsigned, and omit
	a cast that doesn’t seem to be needed here any more.
	* examples/c++/variant.yy (yylex):
	* examples/c++/variant-11.yy (yylex):
	Omit no-longer-needed conversions to unsigned.
	* src/InadequacyList.c (InadequacyList__new_conflict):
	Don’t assume *node_count is unsigned.
	* src/output.c (muscle_insert_unsigned_table):
	Remove; no longer used.

2019-10-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer signed types for indexes in skeletons
	* NEWS: Mention this.
	* data/skeletons/c.m4 (b4_int_type):
	Prefer char if it will do, and prefer signed types to unsigned if
	either will do.
	* data/skeletons/glr.c (yy_reduce_print): No need to
	convert rule line to unsigned long.
	(yyrecoverSyntaxError): Put action into an int to
	avoid GCC warning of using a char subscript.
	* data/skeletons/lalr1.cc (yy_lac_check_, yysyntax_error_):
	Prefer ptrdiff_t to size_t.
	* data/skeletons/yacc.c (b4_int_type):
	Prefer signed types to unsigned if either will do.
	* data/skeletons/yacc.c (b4_declare_parser_state_variables):
	(YYSTACK_RELOCATE, YYCOPY, yy_lac_stack_realloc, yy_lac)
	(yytnamerr, yysyntax_error, yyparse): Prefer ptrdiff_t to size_t.
	(YYPTRDIFF_T, YYPTRDIFF_MAXIMUM): New macros.
	(YYSIZE_T): Fix "! defined YYSIZE_T" typo.
	(YYSIZE_MAXIMUM): Take the minimum of PTRDIFF_MAX and SIZE_MAX.
	(YYSIZEOF): New macro.
	(YYSTACK_GAP_MAXIMUM, YYSTACK_BYTES, YYSTACK_RELOCATE)
	(yy_lac_stack_realloc, yyparse): Use it.
	(YYCOPY, yy_lac_stack_realloc): Cast to YYSIZE_T to pacify GCC.
	(yy_reduce_print): Use int instead of unsigned long when int
	will do.
	(yy_lac_stack_realloc): Prefer long to unsigned long when
	either will do.
	* tests/regression.at: Adjust to these changes.

2019-09-30  Akim Demaille  <akim.demaille@gmail.com>

	yacc: use the most appropriate integral type for state numbers
	Currently we properly use the "best" integral type for tables,
	including those storing state numbers.  However the variables for
	state numbers used in yyparse (and its dependencies such as
	yy_stack_print) still use int16_t invariably.  As a consequence, very
	large models overflow these variables.

	Let's use the "best" type for these variables too.  It turns out that
	we can still use 16 bits for twice larger automata: stick to unsigned
	types.

	However using 'unsigned' when 16 bits are not enough is troublesome
	and generates tons of warnings about signedness issues.  Instead,
	let's use 'int'.

	Reported by Tom Kramer.
	https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00018.html

	* data/skeletons/yacc.c (b4_state_num_type): New.
	(yy_state_num): Be computed from YYNSTATES.
	* tests/linear: New.
	* tests/torture.at (State number type): New.
	Use it.

2019-09-30  Akim Demaille  <akim.demaille@gmail.com>

	yacc: introduce a type for states
	* data/skeletons/yacc.c (yy_state_num): New.
	Use it for arrays of states.

2019-09-30  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer symbolic values rather than litterals
	Instead of

	    #define YYPACT_NINF -130
	    #define yypact_value_is_default(Yystate) \
	      (!!((Yystate) == (-130)))

	generate

	    #define YYPACT_NINF (-130)
	    #define yypact_value_is_default(Yyn) \
	      ((Yyn) == YYPACT_NINF)

	* data/skeletons/c.m4 (b4_table_value_equals): Add support for $4.
	* data/skeletons/glr.c, data/skeletons/yacc.c: Use it.
	Also, use shorter macro argument names, the name of the macro is clear
	enough.

2019-09-30  Akim Demaille  <akim.demaille@gmail.com>

	style: change misleading macro argument name
	* data/skeletons/glr.c, data/skeletons/yacc.c
	(yypact_value_is_default): It does not take a rule number as argument.

2019-09-28  Akim Demaille  <akim.demaille@gmail.com>

	Merge remote-tracking branch 'upstream/maint'
	* upstream/maint:
	  c++: add copy ctors for compatibility with the IAR compiler
	  CI: show git status
	  CI: disable ICC
	  tests: pass -jN from Make to the test suite
	  quotearg: avoid leaks
	  maint: post-release administrivia

2019-09-27  Akim Demaille  <akim.demaille@gmail.com>

	c++: add copy ctors for compatibility with the IAR compiler
	Reported by Andreas Damm.
	https://savannah.gnu.org/support/?110032

	* data/skeletons/lalr1.cc (stack_symbol_type::operator=): New
	overload, const, to please the IAR C++ compiler (version ca 2013).

2019-09-23  Akim Demaille  <akim.demaille@gmail.com>

	CI: show git status

2019-09-23  Akim Demaille  <akim.demaille@gmail.com>

	CI: disable ICC
	It seems that Intel changed something in their license management.
	https://github.com/nemequ/icc-travis/issues/15

2019-09-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: pass -jN from Make to the test suite
	I am sooooo tired of typing "make -j5 TESTSUITEFLAGS=-j5"...
	Should have done this years ago.

	* cfg.mk (TESTSUITEFLAGS): here.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	quotearg: avoid leaks
	Reported by Tomasz Kłoczko.
	https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00008.html

	* src/main.c (main): Free quotearg's memory later.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: get the screen width from the terminal
	* bootstrap.conf: We need winsz-ioctl and winsz-termios.
	* src/location.c (columns): Use winsize to get the number of
	columns.
	Code taken from the GNU Coreutils.
	* src/location.h, src/location.c (caret_init): New.
	* src/complain.c (complain_init): Call it.
	* tests/bison.in: Export COLUMNS so that users of tests/bison can
	enjoy proper line truncation.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: don't print ellipsis on the caret line
	From

	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHIJKL
	      | ...         ^~~~~~~~~~~~~~~~~~~~~~~~~~

	to

	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHI...
	      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~

	* src/location.c (location_caret): here.
	* tests/diagnostics.at: Adjust expectations.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: also show truncation at the end of line with "..."
	From

	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHIJKL
	      | ...         ^~~~~~~~~~~~~~~~~~~~~~~~~~

	to

	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHI...
	      | ...         ^~~~~~~~~~~~~~~~~~~~~~~~~~

	* src/location.c (location_caret): here.
	* tests/diagnostics.at: Adjust expectations.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: check that quoted lines are truncated
	* tests/diagnostics.at (Screen width: 60 columns, Screen width: 80
	columns, Screen width: 200 columns): New tests.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: truncate quoted sources to fit the screen
	* src/location.c (min_int, columns): New.
	(location_caret): Compute the line width.  Based on it, compute how
	many columns must be skipped before the quoted location and truncated
	after, to fit the sceen width.
	* tests/local.at (AT_QUELL_VALGRIND): Transform into...
	(AT_SET_ENV_IF, AT_SET_ENV): these.
	Define COLUMNS to protect the test suite from the user's environment.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: learn how to count column number with multibyte chars
	So far diagnostics were cheating: in addition to the 'column' field of
	locations (based on actual screen width per multibyte characters and
	on tabulation expansion), the scanner sets the 'byte' field.
	Diagnostics used this byte count to decide where to insert (color)
	style.

	We want to be able to truncate the quoted lines when there are too
	wide to fit the screen.  This requires that the diagnostics learn how
	to count columns, the byte-in-boundary trick no longer works.

	Bytes are still used for fix-its.

	* bootstrap.conf: We need mbfile for mbf_getc.
	* src/location.c (caret_info): We need an mbfile.
	(caret_set_file): Initialize it.
	(caret_getc): Convert to mbfile.
	(location_caret): Instead of relying on the byte position to decide
	where to insert the color style, count the current column using
	boundary_compute.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style: rename member for clariy
	* src/location.c (caret_info): Now that we no longer have a 'file'
	member (see previous commit), rename 'source' as 'file'.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style: use a boundary to track the caret_info
	* src/location.c (caret_info): Replace file and line with pos, a
	boundary.  This will allow us to use features of the boundary type,
	such as boundary_compute.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: extract boundary_compute from location_compute
	The handling of the contributions of the tabulations in the columns is
	burried inside location_compute.  We will soon be willing to use the
	boundary part of the computation (to compute the current column number
	each time we read a multibyte char).

	* src/location.c (boundary_compute): New, extracted from...
	(location_compute): here.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style: add caret_set_file
	To make the following commits easier to read.

	* src/location.c (caret_set_file): New.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style: minor changes
	* src/location.c (location_caret): Factor two branches of an if.

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	CI: show git status

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	git: update ignores

2019-09-22  Akim Demaille  <akim.demaille@gmail.com>

	git: update ignores

2019-09-21  Akim Demaille  <akim.demaille@gmail.com>

	quotearg: avoid leaks
	Reported by Tomasz Kłoczko.
	https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00008.html

	* src/main.c (main): Free quotearg's memory later.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	tests: pass -jN from Make to the test suite
	I am sooooo tired of typing "make -j5 TESTSUITEFLAGS=-j5"...
	Should have done this years ago.

	* cfg.mk (TESTSUITEFLAGS): here.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	java: handle eof in yytranslate
	* data/skeletons/lalr1.java (yytranslate_): Handle eof here, as is done
	in lalr1.cc.
	* tests/javapush.at: Adjust.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	d: handle eof in yytranslate
	This changes the traces from

	    Reading a token:
	    Now at end of input.

	to

	    Reading a token:
	    Next token is token $end (7FFEE56E6474)

	which is ok.  Actually it is even better, as it gives the location
	when locations are enabled, and is clearer when rules explicitly use
	the EOF token.

	* data/skeletons/lalr1.d (yytranslate_): Handle eof here, as is done
	in lalr1.cc.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	parser: use api.token.raw
	* src/parse-gram.y: Here.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: document it
	* doc/bison.texi: here.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: cannot be used with character literals
	* src/parse-gram.y (CHAR): api.token.raw and character literals are
	mutually exclusive.
	* tests/input.at (Character literals and api.token.raw): New.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: apply to the other skeletons
	* data/skeletons/c++.m4, data/skeletons/glr.c,
	* data/skeletons/lalr1.c, data/skeletons/lalr1.java:
	Add support for api.token.raw.

	* tests/scanner.at: Check them.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: check it
	* tests/local.at (AT_TOKEN_RAW_IF): New.
	* tests/local.mk: New.
	Use it.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: implement
	Bison used to feature %raw, documented as follows:

	    @item %raw
	    The output file @file{@var{name}.h} normally defines the tokens with
	    Yacc-compatible token numbers.  If this option is specified, the
	    internal Bison numbers are used instead.  (Yacc-compatible numbers start
	    at 257 except for single character tokens; Bison assigns token numbers
	    sequentially for all tokens starting at 3.)

	Unfortunately, as far as I can tell, it never worked: token numbers
	are indeed changed in the generated tables (from external token number
	to internal), yet the code was still applying the mapping from
	external token numbers to internal token numbers.

	This commit reintroduces the feature as it was expected to be.

	* data/skeletons/bison.m4 (b4_token_format): When api.token.raw is
	enabled, use the internal token number.
	* data/skeletons/yacc.c (yytranslate): Don't emit if api.token.raw is
	enabled.
	(YYTRANSLATE): Adjust.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	style: tidy yacc.c
	* data/skeletons/yacc.c: Include 'c.m4' first.
	Then sort the handling of %define variables.
	* tests/input.at: Adjust.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	CI: disable ICC
	It seems that Intel changed something in their license management.
	https://github.com/nemequ/icc-travis/issues/15

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix use of complain_indent
	* src/symtab.c (symbol_class_set): Here.
	* tests/diagnostics.at, tests/input.at, tests/regression.at: Adjust
	expectations.

2019-09-14  Akim Demaille  <akim.demaille@gmail.com>

	input: stop treating lone CRs as end-of-lines
	We used to treat lone CRs (\r, aka ^M) as regular NLs (\n), probably
	to please Classic MacOS.  As of today, it makes more sense to treat \r
	like a plain white space character.

	https://lists.gnu.org/archive/html/bison-patches/2019-09/msg00027.html

	* src/scan-gram.l (no_cr_read): Remove.  Instead, use...
	(eol): this new abbreviation denoting end-of-line.
	* src/location.c (caret_getc): New.
	(location_caret): Use it.
	* tests/diagnostics.at (Carriage return): Adjust expectations.
	(CR NL): New.

2019-09-12  Akim Demaille  <akim.demaille@gmail.com>

	Merge tag 'v3.4.2' into HEAD
	bison 3.4.2

	* tag 'v3.4.2': (24 commits)
	  version 3.4.2
	  CI: always uninstall icc
	  news: more bug fixes thanks to Marc Schönefeld
	  diagnostics: beware of unexpected EOF when quoting the source file
	  gnulib: update
	  build: fix distcheck
	  tests: add noexcept to please GCC 9
	  news: update
	  fix: don't die when EOF token is defined twice
	  tests: check token redeclaration
	  yacc.c: beware of GCC's -Wmaybe-uninitialized
	  glr.c: initialize vector of bools
	  gnulib: update
	  check for memory exhaustion
	  diagnostics: avoid global variables
	  diagnostics: fix invalid error message indentation
	  git: ignore files generated in gnulib-po
	  c++: avoid duplicate definition of YYUSE
	  gnulib: update
	  CI: more compilers
	  ...

2019-09-12  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-09-12  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.2
	* NEWS: Record release date.

2019-09-12  Akim Demaille  <akim.demaille@gmail.com>

	CI: always uninstall icc

2019-09-12  Akim Demaille  <akim.demaille@gmail.com>

	news: more bug fixes thanks to Marc Schönefeld

2019-09-12  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: beware of unexpected EOF when quoting the source file
	When the input file contains lone CRs (aka, ^M, \r), the locations see
	a new line.  Diagnostics look only at \n as end-of-line, so sometimes
	there is an offset in diagnostics.  Worse yet: sometimes we loop
	endlessly waiting for \n to come from a continuous stream of EOF.

	Fix that:
	- check for EOF
	- beware not to call end_use_class if begin_use_class was not
	  called (which would abort).  This could happen if the actual
	  line is shorter that the expected one.

	Prompted by a (private) report from Marc Schönefeld.

	* src/location.c (location_caret): here.
	* tests/diagnostics.at (Carriage return): New.

2019-09-11  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	Contains the creation of the xhash module.
	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00046.html

	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
	Use hash_xinitialize.

2019-09-11  Akim Demaille  <akim.demaille@gmail.com>

	build: fix distcheck
	* configure.ac (gl_LIBOBJS): Adjust so that the generated files are
	indeed the expected ones.

2019-09-10  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: beware of unexpected EOF when quoting the source file
	When the input file contains lone CRs (aka, ^M, \r), the locations see
	a new line.  Diagnostics look only at \n as end-of-line, so sometimes
	there is an offset in diagnostics.  Worse yet: sometimes we loop
	endlessly waiting for \n to come from a continuous stream of EOF.

	Fix that:
	- check for EOF
	- beware not to call end_use_class if begin_use_class was not
	  called (which would abort).  This could happen if the actual
	  line is shorter that the expected one.

	Prompted by a (private) report from Marc Schönefeld.

	* src/location.c (location_caret): here.
	* tests/diagnostics.at (Carriage return): New.

2019-09-10  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	Contains the creation of the xhash module.
	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00046.html

	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
	Use hash_xinitialize.

2019-09-10  Akim Demaille  <akim.demaille@gmail.com>

	build: fix distcheck
	* configure.ac (gl_LIBOBJS): Adjust so that the generated files are
	indeed the expected ones.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	tests: add noexcept to please GCC 9
	    bison/tests/c++.at:552: bison --color=no -fno-caret  -o list.cc list.y
	    bison/tests/c++.at:552: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o list list.cc $LIBS
	    stderr:
	    gcc9/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string]':
	    gcc9/c++/bits/alloc_traits.h:482:2:   required from 'static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<string>]'
	    gcc9/c++/bits/stl_uninitialized.h:888:67:   required from 'void std::__relocate_object_a(_Tp*, _Up*, _Allocator&) [with _Tp = string; _Up = string; _Allocator = std::allocator<string>]'
	    gcc9/c++/bits/stl_uninitialized.h:920:47:   required from '_ForwardIterator std::__relocate_a_1(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
	    gcc9/c++/bits/stl_uninitialized.h:942:37:   required from '_ForwardIterator std::__relocate_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
	    gcc9/c++/bits/stl_vector.h:430:35:   required from 'static constexpr bool std::vector<_Tp, _Alloc>::_S_nothrow_relocate(std::true_type) [with _Tp = string; _Alloc = std::allocator<string>; std::true_type = std::integral_constant<bool, true>]'
	    gcc9/c++/bits/stl_vector.h:446:28:   required from 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const string&}; _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<string*, std::vector<string> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = string*]'
	    gcc9/c++/bits/stl_vector.h:1195:4:   required from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::value_type = string]'
	    list.y:126:110:   required from here
	    gcc9/c++/bits/vector.tcc:459:44:   in 'constexpr' expansion of 'std::vector<string>::_S_use_relocate()'
	    list.y:41:7: error: but 'string::string(string&&)' does not throw; perhaps it should be declared 'noexcept' [-Werror=noexcept]
	       41 |       string (string&& s)
	          |       ^~~~~~

	* tests/c++.at (Variants): Add noexcept where appropriate.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	tests: add noexcept to please GCC 9
	    bison/tests/c++.at:552: bison --color=no -fno-caret  -o list.cc list.y
	    bison/tests/c++.at:552: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o list list.cc $LIBS
	    stderr:
	    gcc9/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string]':
	    gcc9/c++/bits/alloc_traits.h:482:2:   required from 'static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<string>]'
	    gcc9/c++/bits/stl_uninitialized.h:888:67:   required from 'void std::__relocate_object_a(_Tp*, _Up*, _Allocator&) [with _Tp = string; _Up = string; _Allocator = std::allocator<string>]'
	    gcc9/c++/bits/stl_uninitialized.h:920:47:   required from '_ForwardIterator std::__relocate_a_1(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
	    gcc9/c++/bits/stl_uninitialized.h:942:37:   required from '_ForwardIterator std::__relocate_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
	    gcc9/c++/bits/stl_vector.h:430:35:   required from 'static constexpr bool std::vector<_Tp, _Alloc>::_S_nothrow_relocate(std::true_type) [with _Tp = string; _Alloc = std::allocator<string>; std::true_type = std::integral_constant<bool, true>]'
	    gcc9/c++/bits/stl_vector.h:446:28:   required from 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const string&}; _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<string*, std::vector<string> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = string*]'
	    gcc9/c++/bits/stl_vector.h:1195:4:   required from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::value_type = string]'
	    list.y:126:110:   required from here
	    gcc9/c++/bits/vector.tcc:459:44:   in 'constexpr' expansion of 'std::vector<string>::_S_use_relocate()'
	    list.y:41:7: error: but 'string::string(string&&)' does not throw; perhaps it should be declared 'noexcept' [-Werror=noexcept]
	       41 |       string (string&& s)
	          |       ^~~~~~

	* tests/c++.at (Variants): Add noexcept where appropriate.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	fix: don't die when EOF token is defined twice
	With

	    %token EOF 0 EOF 0

	we get

	    input.y:3.14-16: warning: symbol EOF redeclared [-Wother]
	        3 | %token EOF 0 EOF 0
	          |              ^~~
	    input.y:3.8-10: previous declaration
	        3 | %token EOF 0 EOF 0
	          |        ^~~
	    Assertion failed: (nsyms == ntokens + nvars), function check_and_convert_grammar,
	        file /Users/akim/src/gnu/bison/src/reader.c, line 839.

	Reported by Marc Schönefeld.

	* src/symtab.c (symbol_user_token_number_set): Register only the
	first definition of the end of input token.
	* tests/input.at (Symbol redeclared): Check that case.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	tests: check token redeclaration
	* src/symtab.c (symbol_class_set): Report previous definitions when
	redeclared.
	* tests/input.at (Symbol redeclared): New.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: beware of GCC's -Wmaybe-uninitialized
	Test 400 (calc.at:773: testing Calculator api.push-pull=both
	api.pure=full parse.error=verbose %debug %locations %defines
	api.prefix={calc} %verbose %yacc) fails on the CI with GCC 8 on
	Bionic:

	    400. calc.at:773: testing Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  ...
	    ../../tests/calc.at:773: bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y
	    ../../tests/calc.at:773: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
	    stderr:
	    calc.y: In function 'int calcpush_parse(calcpstate*, int, const CALCSTYPE*, CALCLTYPE*)':
	    calc.y:26:20: error: 'yylval.CALCSTYPE::ival' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     %printer { fprintf (yyo, "%d", $$); } <ival>;
	                        ^
	    calc.c:1272:9: note: 'yylval.CALCSTYPE::ival' was declared here
	     YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
	             ^~~~~~
	    cc1plus: all warnings being treated as errors
	    stdout:
	    ../../tests/calc.at:773: exit code was 1, expected 0
	    400. calc.at:773: 400. Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  (calc.at:773): FAILED (calc.at:773)

	* data/skeletons/c.m4 (yy_symbol_value_print): Disable the warning
	locally.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: initialize vector of bools
	The CI, with CC='gcc-7 -fsanitize=undefined,address
	-fno-omit-frame-pointer', reports:

	    calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
	    ../../tests/calc.at:867: cat stderr
	    --- expout	2019-09-05 20:30:37.887257545 +0000
	    +++ /home/travis/build/bison-3.4.1.72-79a1-dirty/_build/tests/testsuite.dir/at-groups/438/stdout	2019-09-05 20:30:37.887257545 +0000
	    @@ -1 +1,2 @@
	     syntax error
	    +calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
	    438. calc.at:867: 438. Calculator glr.cc  (calc.at:867): FAILED (calc.at:867)

	The problem is that yylookaheadNeeds is not initialized in
	yyinitStateSet, and when it is copied, the value is not 0 or 1.

	* data/skeletons/glr.c (yylookaheadNeeds): Initialize yylookaheadNeeds.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	Contains a fix for
	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html.
	See
	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00005.html.
	Reported by 江 祖铭 (Zu-Ming Jiang).

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	check for memory exhaustion
	hash_initialize returns NULL when out of memory.  Check for it, and
	die cleanly instead of crashing.

	Reported by 江 祖铭 (Zu-Ming Jiang).
	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00015.html

	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
	Check the value returned by hash_initialize.

2019-09-08  László Várady  <laszlo.varady93@gmail.com>

	diagnostics: avoid global variables
	* src/complain.c (indent_ptr): Remove.
	(error_message, complains): Take indent as an argument.
	Adjust callers.

2019-09-08  László Várady  <laszlo.varady93@gmail.com>

	diagnostics: fix invalid error message indentation
	https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html

	When Bison is started with a flag that suppresses warning messages, the
	error_message() function can produce a few gigabytes of indentation
	because of a dangling pointer.

	* src/complain.c (error_message): Don't reset indent_ptr here, but...
	(complain_indent): here.
	* tests/diagnostics.at (Indentation with message suppression): Check
	this case.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	git: ignore files generated in gnulib-po
	Because of them, the CI generates "-dirty" tarballs.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	c++: avoid duplicate definition of YYUSE
	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-06/msg00009.html

	* data/skeletons/lalr1.cc (b4_shared_declarations): Remove the
	duplicate definition of YYUSE, the other one coming from
	b4_attribute_define.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	This update brings file from Gettext 0.20, which is not available on
	the CI yet.

	.travis.yml: Adjust.
	Use Bionic now that it's available.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: more compilers
	* .travis.yml: Bionic is now available, with GCC8.
	GCC7 sanitizers work, but they are too longer: cover only part 1.
	Redefine part 1 and part 2 so that part 1 is really the core of the
	tests: not playing with POSIX and C++ compiler for C code.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: fail fast

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: propagate sftp failures
	* .travis.yml (stage: "compile"): here.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: avoid useless git costs
	Travis answered favorably to my suggestion to provide a means to
	disable git clone on some jobs (issue 7542).  See
	https://docs.travis-ci.com/user/customizing-the-build/#disabling-git-clone.

	* .travis.yml: Disable git globally, enable it for i. the compile job,
	and ii. the test job on ICC which needs the install-icc.sh script.

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: factor
	* .travis.yml (Clang 7 libc++ and ASAN part 2): Reuse bits from "Clang
	7 libc++ and ASAN part 1".

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-09-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	Contains a fix for
	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html.
	See
	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00005.html.
	Reported by 江 祖铭 (Zu-Ming Jiang).

2019-09-07  Akim Demaille  <akim.demaille@gmail.com>

	fix: don't die when EOF token is defined twice
	With

	    %token EOF 0 EOF 0

	we get

	    input.y:3.14-16: warning: symbol EOF redeclared [-Wother]
	        3 | %token EOF 0 EOF 0
	          |              ^~~
	    input.y:3.8-10: previous declaration
	        3 | %token EOF 0 EOF 0
	          |        ^~~
	    Assertion failed: (nsyms == ntokens + nvars), function check_and_convert_grammar,
	        file /Users/akim/src/gnu/bison/src/reader.c, line 839.

	Reported by Marc Schönefeld.

	* src/symtab.c (symbol_user_token_number_set): Register only the
	first definition of the end of input token.
	* tests/input.at (Symbol redeclared): Check that case.

2019-09-07  Akim Demaille  <akim.demaille@gmail.com>

	tests: check token redeclaration
	* src/symtab.c (symbol_class_set): Report previous definitions when
	redeclared.
	* tests/input.at (Symbol redeclared): New.

2019-09-06  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: initialize vector of bools
	The CI, with CC='gcc-7 -fsanitize=undefined,address
	-fno-omit-frame-pointer', reports:

	    calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
	    ../../tests/calc.at:867: cat stderr
	    --- expout	2019-09-05 20:30:37.887257545 +0000
	    +++ /home/travis/build/bison-3.4.1.72-79a1-dirty/_build/tests/testsuite.dir/at-groups/438/stdout	2019-09-05 20:30:37.887257545 +0000
	    @@ -1 +1,2 @@
	     syntax error
	    +calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
	    438. calc.at:867: 438. Calculator glr.cc  (calc.at:867): FAILED (calc.at:867)

	The problem is that yylookaheadNeeds is not initialized in
	yyinitStateSet, and when it is copied, the value is not 0 or 1.

	* data/skeletons/glr.c (yylookaheadNeeds): Initialize yylookaheadNeeds.

2019-09-06  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: beware of GCC's -Wmaybe-uninitialized
	Test 400 (calc.at:773: testing Calculator api.push-pull=both
	api.pure=full parse.error=verbose %debug %locations %defines
	api.prefix={calc} %verbose %yacc) fails on the CI with GCC 8 on
	Bionic:

	    400. calc.at:773: testing Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  ...
	    ../../tests/calc.at:773: bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y
	    ../../tests/calc.at:773: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
	    stderr:
	    calc.y: In function 'int calcpush_parse(calcpstate*, int, const CALCSTYPE*, CALCLTYPE*)':
	    calc.y:26:20: error: 'yylval.CALCSTYPE::ival' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     %printer { fprintf (yyo, "%d", $$); } <ival>;
	                        ^
	    calc.c:1272:9: note: 'yylval.CALCSTYPE::ival' was declared here
	     YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
	             ^~~~~~
	    cc1plus: all warnings being treated as errors
	    stdout:
	    ../../tests/calc.at:773: exit code was 1, expected 0
	    400. calc.at:773: 400. Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  (calc.at:773): FAILED (calc.at:773)

	* data/skeletons/c.m4 (yy_symbol_value_print): Disable the warning
	locally.

2019-09-06  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: fix LAC support
	* data/skeletons/lalr1.cc (ctor): Initialize yy_lac_established_.
	This is quite painful to write, and ugly to read.

2019-09-06  Akim Demaille  <akim.demaille@gmail.com>

	style: fix comment
	* tests/atlocal.in: here.

2019-09-06  Akim Demaille  <akim.demaille@gmail.com>

	CI: more compilers
	* .travis.yml: Bionic is now available, with GCC8.
	GCC7 sanitizers work, but they are too longer: cover only part 1.
	Redefine part 1 and part 2 so that part 1 is really the core of the
	tests: not playing with POSIX and C++ compiler for C code.

2019-09-06  Akim Demaille  <akim.demaille@gmail.com>

	CI: fail fast

2019-09-04  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	This update brings file from Gettext 0.20, which is not available on
	the CI yet.

	.travis.yml: Adjust.
	Use Bionic now that it's available.

2019-09-01  Akim Demaille  <akim.demaille@gmail.com>

	check for memory exhaustion
	hash_initialize returns NULL when out of memory.  Check for it, and
	die cleanly instead of crashing.

	Reported by 江 祖铭 (Zu-Ming Jiang).
	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00015.html

	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
	Check the value returned by hash_initialize.

2019-08-30  Akim Demaille  <akim.demaille@gmail.com>

	news: LAC for C++

2019-08-29  Akim Demaille  <akim.demaille@gmail.com>

	d: remove useless imports
	* examples/d/calc.y, tests/calc.at: here.

2019-08-18  László Várady  <laszlo.varady93@gmail.com>

	diagnostics: avoid global variables
	* src/complain.c (indent_ptr): Remove.
	(error_message, complains): Take indent as an argument.
	Adjust callers.

2019-08-18  László Várady  <laszlo.varady93@gmail.com>

	diagnostics: fix invalid error message indentation
	https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html

	When Bison is started with a flag that suppresses warning messages, the
	error_message() function can produce a few gigabytes of indentation
	because of a dangling pointer.

	* src/complain.c (error_message): Don't reset indent_ptr here, but...
	(complain_indent): here.
	* tests/diagnostics.at (Indentation with message suppression): Check
	this case.

2019-08-18  Akim Demaille  <akim.demaille@gmail.com>

	c++: use resize to shrink a vector
	Suggested by Adrian Vogelsgesang.
	https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00009.html

	* data/skeletons/lalr1.cc (yy_lac_check_): here.

2019-08-09  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: check LAC support
	* tests/conflicts.at, tests/input.at, tests/regression.at: here.

2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	lalr1.cc: add LAC support
	Implement lookahead correction (LAC) for the C++ skeleton.  LAC is a
	mechanism to make sure that we report the correct list of expected
	tokens if a syntax error occurs.  So far, LAC was only supported for
	the C skeleton "yacc.c".

	* data/skeletons/lalr1.cc: Add LAC support.
	* doc/bison.texi: Update.

2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	style: readability improvements to yacc.c
	* data/skeletons/yacc.c (yysyntax_error): Change the nesting of `m4`
	conditions slightly to make it more readable.
	The generated C code stays unchanged.

2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	lalr1.cc: reduce "scope"
	* data/skeletons/lalr1.cc (yy_lr_goto_state_): Make it static.

2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	lalr1.cc: fix indentation of table declarations in the header
	* data/skeletons/lalr1.cc: Fix indentation of table declarations in
	the generated header.

2019-08-09  Akim Demaille  <akim.demaille@gmail.com>

	tests: prepare LAC tests for more languages
	* tests/regression.at: Use %expect to avoid warnings.
	Set the keywords to facilitate running specific tests.
	Use macros such as AT_YYLEX_DECLARE to facilitate tests for other
	languages.
	Likewise for AT_FULL_COMPILE.

2019-08-09  Akim Demaille  <akim.demaille@gmail.com>

	git: ignore files generated in gnulib-po
	Because of them, the CI generates "-dirty" tarballs.

2019-07-26  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: use the modern argmatch interface
	* src/complain.h (warnings): Remove Werror.
	Adjust dependencies.
	Sort.
	Remove useless comments (see the doc in argmatch group).
	* src/complain.c (warnings_args, warnings_types): Remove.
	(warning_argmatch): Use argmatch_warning_value.
	(warnings_print_categories): Use argmatch_warning_argument.

2019-07-19  Akim Demaille  <akim.demaille@gmail.com>

	doc: avoid spurious empty lines in the option table
	In Texinfo. empty lines in multitable rows generate empty lines in the
	output.  Avoid them altogether.

	With help from Gavin Smith.
	https://lists.gnu.org/archive/html/bug-texinfo/2019-07/msg00000.html

	* build-aux/cross-options.pl: Separate rows with empty lines.
	So, to be more readable, generate a single line for each row.
	Use Perl format to this end.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	--fixed-output-files: detach from --yacc
	See the previous commit.  This option should be removed, -o suffices.

	* src/getargs.c (FIXED_OUTPUT_FILES): New.
	Add support for it.
	(getargs): Define loc, and use it.
	This is safer when we need to pass a pointer to a location.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	%fixed-output-files: detach from %yacc
	The name fixed-output-files is pretty clear: generate y.tab.c, as Yacc
	does.  So let's detach this from %yacc which does more: it requires
	POSIX Yacc behavior.

	This directive is obsolete since December 29th 2001
	8c9a50bee13474c1491df8f79f075f5214dda0d1.  It does not show in the
	doc.  I don't want to spend more time on improving its diagnostics, it
	could be removed just as well as far as I'm concerned.

	* src/scan-gram.l, src/parse-gram.y (%fixed-output-files): Detach from
	%yacc.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	style: clarify control flow
	* src/getargs.c (language_argmatch): Initialize msg.
	Check it instead of relying on a return.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	remove MS-DOS support
	DJGPP support was dropped in Bison 3.3
	(c239e53bab8e87b30889ac446d3b513da9951a35).

	AS_FILE_NAME was introduced in
	ae4048011562c250d2f3c96687422d99a38745ce.

	* src/getargs.c (AS_FILE_NAME): Remove.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	style: declare options in the same order as in --help
	* src/getargs.c (long_options): here.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	Contains a fix for argmatch to get proper man pages.
	See https://lists.gnu.org/archive/html/bug-gnulib/2019-07/msg00038.html

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	style: comment change
	* src/getargs.c: here.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: remove the --report=look-aheads alias
	Years ago we moved from 'look-ahead' to 'lookahead', and that alias
	was kept for backward compatibility.  But now that we use argmatch to
	generate the documentation, that value clutters the doc.

	* src/getargs.c (argmatch_report_args): Remove the
	--report=look-aheads alias.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix inaccuracies wrt --define and --force-define
	The doc says that -Dfoo=bar is the same as %define foo "bar".  It is
	not: the quotes are not added (and it makes a difference).

	* doc/bison.texi (Tuning the Parser): Fix the definition of -D/-F
	* src/getargs.c (usage): Likewise.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: put diagnostics related options together
	* doc/bison.texi (Diagnostics): New section.
	Move --warning, --color and --style there.
	* src/getargs.c (usage): Likewise.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: move -y's documentation into "Tuning the Parser"
	Let's clarify --help: use clearer "section" names, as in the doc.
	Move --yacc to where it belongs.

	* src/getargs.c (usage): Rename "Parser" as "Tuning the Parser", as in
	the doc.
	Rename "Output" as "Output Files"
	Move --yacc to "Tuning the Parser".
	* doc/bison.texi: Likewise.

2019-07-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: document colorized diagnostics
	* src/getargs.c (argmatch_color_group): New.
	(usage): Document --color and --style.
	* doc/bison.texi (Bison Options): Split into three subsections.
	Document --color and --style.

2019-07-03  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: use new features of the argmatch module
	It can now generate the usage message.

	* src/complain.h (feature_fixit_parsable): Rename as...
	(feature_fixit): this, for column economy.
	Adjust dependencies.
	(warning_usage): New.
	Use it.
	* src/complain.h, src/complain.c, src/getargs.h, src/getargs.c:
	Use ARGMATCH_DEFINE_GROUP instead of the older interface.

2019-07-02  Akim Demaille  <akim.demaille@gmail.com>

	preserve the indentation in the ouput
	Preserve the actions' initial indentation.  For instance, on

	    | %define api.value.type {int}
	    | %%
	    | exp: exp '/' exp { if ($3)
	    |                     $$ = $1 + $3;
	    |                   else
	    |                     $$ = 0; }

	we used to generate

	    |     { if (yyvsp[0])
	    |                     yyval = yyvsp[-2] + yyvsp[0];
	    |                   else
	    |                    yyval = 0; }

	now we produce

	    |                  { if (yyvsp[0])
	    |                     yyval = yyvsp[-2] + yyvsp[0];
	    |                   else
	    |                     yyval = 0; }

	See https://lists.gnu.org/archive/html/bison-patches/2019-06/msg00012.html.

	* data/skeletons/bison.m4 (b4_symbol_action): Output the code in
	column 0, leave indentation matters to the C code.
	* src/output.c (user_actions_output): Preserve the incoming
	indentation in the output.
	(prepare_symbol_definitions): Likewise for %printer/%destructor.
	* tests/synclines.at (Output columns): New.

2019-07-01  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer passing locations by pointer
	The code is inconsistent: sometimes we pass by value, sometimes by
	reference.  Let's stick to the last, more conventional for large
	values in C.

	* src/scan-code.l: Pass locations by reference.

2019-06-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: avoid duplicate definition of YYUSE
	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-06/msg00009.html

	* data/skeletons/lalr1.cc (b4_shared_declarations): Remove the
	duplicate definition of YYUSE, the other one coming from
	b4_attribute_define.

2019-06-27  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* examples/c/lexcalc/local.mk, examples/c/reccalc/local.mk:
	Here.

2019-06-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: restructure for clarity
	* tests/calc.at (AT_CALC_MAIN, AT_CALC_LEX): Rewrite on top of
	AT_LANG_DISPATCH.

2019-06-23  Akim Demaille  <akim.demaille@gmail.com>

	d: track locations
	* configure.ac (DCFLAGS): Pass -g.
	* data/skeletons/d.m4 (b4_locations_if): Remove, let bison.m4's one do
	its job.
	* data/skeletons/lalr1.d (position): Leave filename empty by default.
	(position::toString): Don't print empty file names.
	(location::this): New ctor.
	(location::toString): Match the implementations of C/C++.
	(yy_semantic_null): Leave undefined, the previous implementation does
	not compile.
	* tests/calc.at: Improve the implementation for D.
	Enable more checks, in particular using locations.
	* tests/local.at (AT_YYERROR_DEFINE(d)): Fix its implementation.

2019-06-23  Akim Demaille  <akim.demaille@gmail.com>

	d: style changes
	* data/skeletons/lalr1.d: Use a more traditional quotation scheme.
	Formatting changes.

2019-06-23  Akim Demaille  <akim.demaille@gmail.com>

	d: put internal details inside the parser
	Avoid name clashes, etc.

	* data/skeletons/lalr1.d (YYStackElement, YYStack): Move inside the
	parser.

2019-06-22  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-06-22  Akim Demaille  <akim.demaille@gmail.com>

	remove "experimental" warnings
	Sadly enough, AFAIK, there were never answers to the "More user
	feedback will help to stabilize it" sentences.  Remove them.

	* src/getargs.c: IELR, canonical LR and XML output are here to stay,
	and they are no more experimental than some other features.
	* doc/bison.texi: Likewise.
	Also remove "experimental" warning for Java, LAC, LR tuning options,
	and named references.

2019-06-22  Akim Demaille  <akim.demaille@gmail.com>

	CI: propagate sftp failures
	* .travis.yml (stage: "compile"): here.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	d: honor %define parse.trace
	* data/skeletons/lalr1.d: Don't generate debug code if parse.trace is
	not enabled.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	d: style changes
	* data/skeletons/lalr1.d: here.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	d: prefer delegation to duplication
	* data/skeletons/lalr1.d: Delegate the construction of the scanner.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	d: enable #line output
	* data/skeletons/d.m4 (b4_sync_start): New.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	d: style changes
	* data/skeletons/lalr1.d: here.
	* examples/d/calc.y: Remove incorrect support for decimal numbers.
	Formatting changes.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in glr.c
	* data/skeletons/glr.c: here.

2019-06-20  Akim Demaille  <akim.demaille@gmail.com>

	java: honor %define parse.trace
	* data/skeletons/lalr1.java: Don't generate debug code if parse.trace
	is not enabled.

2019-06-19  Akim Demaille  <akim.demaille@gmail.com>

	java: fix support for api.prefix
	* data/skeletons/java.m4: here.
	* tests/java.at: Check it.

2019-06-19  Akim Demaille  <akim.demaille@gmail.com>

	java: style changes
	* data/skeletons/lalr1.java: Use more conventional function names for
	Java.
	Prefer < and <= to => and >.
	Use the same approach for m4 quotation as in the other skeletons.
	Fix indentation issues.

	* tests/calc.at, tests/java.at, tests/javapush.at: Fix quotation style.
	(main): Use 'args', not 'argv', the former seems more conventional and
	is used elsewhere in Bison.
	Prefer character literals to integers to denote characters.
	* examples/java/Calc.y: Likewise.

2019-06-15  Akim Demaille  <akim.demaille@gmail.com>

	CI: avoid useless git costs
	Travis answered favorably to my suggestion to provide a means to
	disable git clone on some jobs (issue 7542).  See
	https://docs.travis-ci.com/user/customizing-the-build/#disabling-git-clone.

	* .travis.yml: Disable git globally, enable it for i. the compile job,
	and ii. the test job on ICC which needs the install-icc.sh script.

2019-06-12  Akim Demaille  <akim.demaille@gmail.com>

	style: simplify strings to translate
	* src/conflicts.c (log_resolution): Don't translate indentation.

2019-06-12  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes, propagate const
	* src/conflicts.c (conflicts_output): here.

2019-06-12  Akim Demaille  <akim.demaille@gmail.com>

	style: use clearer types
	* src/conflicts.c (conflicts): Array of Booleans.

2019-06-11  Akim Demaille  <akim.demaille@gmail.com>

	tests: prefer %empty
	* tests/regression.at: here.

2019-06-09  Akim Demaille  <akim.demaille@gmail.com>

	CI: factor
	* .travis.yml (Clang 7 libc++ and ASAN part 2): Reuse bits from "Clang
	7 libc++ and ASAN part 1".

2019-06-09  Akim Demaille  <akim.demaille@gmail.com>

	lr0: more debug traces
	* src/lr0.c (kernel_check): New.
	(new_itemsets, save_reductions): Add traces.

2019-06-09  Akim Demaille  <akim.demaille@gmail.com>

	traces: add some colors
	This is an experiment.  Maybe more styles will be used (in which case
	a short-hand function will be useful), maybe it will be just reverted.
	* data/bison-default.css (.traces0): New.
	* src/lalr.c (lalr): Use it.

2019-06-09  Akim Demaille  <akim.demaille@gmail.com>

	tests: make sure the default action properly works in C++
	See e3fdc370495ffdedadd6ac621e32e34a0e1a9de0: in C++ we generate
	explicitly the code for the default action instead of simply copying
	blindly the semantic value buffer.  This is important when copying
	raw memory is not enough, as exemplified by move-only types.

	This is currently tested by examples/c++/variant.yy and variant-11.yy.
	But it is safer to also have a test in the main test suite.

	* tests/local.at (AT_REQUIRE_CXX_STD): Fix.
	(AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): Define/undefine
	AT_BISON_OPTIONS.
	* tests/c++.at (Default action): New.

2019-06-09  Akim Demaille  <akim.demaille@gmail.com>

	tests: main: support -s and -p
	* tests/local.at (AT_MAIN_DEFINE(c), AT_MAIN_DEFINE(c++)): here.

2019-06-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: remove useless support of '.' in integers
	* tests/calc.at: here.
	* doc/bison.texi: Avoid uninitialized variables.

2019-05-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: refactor checks on sets
	It will be convenient to check sets elsewhere.

	* tests/sets.at (AT_EXTRACT_SETS): Transform into...
	* tests/local.at (AT_SETS_CHECK): this.
	* tests/sets.at: Adjust.

2019-05-29  Akim Demaille  <akim.demaille@gmail.com>

	update-test: some file names have dashes in them
	* build-aux/update-test (log): Rename as...
	(trace): this, to avoid clashes with the log variable.
	(getargs): Clarify the type of the arguments.

2019-05-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: take SHELL into account
	Reported by Dennis Clarke.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00053.html

	* examples/local.mk, tests/local.mk: here.

2019-05-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update to get gnulib translations
	This update contains a fix needed for gnulib-po to work properly.
	https://lists.gnu.org/archive/html/bug-gnulib/2019-05/msg00146.html

2019-05-25  Akim Demaille  <akim.demaille@gmail.com>

	doc: clarify the purpose of symbol_type constructors
	Reported by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2019-02/msg00006.html

	* doc/bison.texi (Complete Symbols): Here.

2019-05-22  Akim Demaille  <akim.demaille@gmail.com>

	thanks: fix an address

2019-05-22  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-05-22  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.1
	* NEWS: Record release date.

2019-05-22  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2019-05-20  Akim Demaille  <akim.demaille@gmail.com>

	CI: remove useless apt-get update
	The apt addons already ran it for us, it is not needed.

	* .travis.yml: here.

2019-05-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: beware of to_string portability issues
	Reported by Bruno Haible.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00033.html

	* m4/bison-cxx-std.m4 (_BISON_CXXSTD_11_snippet): Check it.

2019-05-20  Akim Demaille  <akim.demaille@gmail.com>

	doc: avoid Texinfo portability issues
	Reported by Bruno Haible.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00024.html
	Fixed by Karl Berry.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00034.html

	* doc/bison.texi: Don't specify the langage, rely on the default.
	Avoid blank pages.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: don't run those that require f?lex when it's not available
	Reported by Bruno Haible.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00026.html

	* configure.ac (FLEX_WORKS): New.
	* examples/c/lexcalc/local.mk, examples/c/reccalc/local.mk: Use it.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: don't crash when libtextstyle is installed
	Reported by neok m4700.
	https://lists.gnu.org/archive/html/bison-patches/2019-05/msg00025.html
	https://github.com/akimd/bison/pull/11

	* src/complain.c (complain_init_color): style_file_prepare _needs_ a
	string as second argument.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	CI: avoid useless git costs
	The final gain is small: 2h2min instead 2h9min.  But that is still an
	improvement.

	* .travis.yml (git.depth): Make the clone very shallow.
	(git.submodules): Don't clone gnulib in test jobs.
	(jobs.include.compile.script): Do it here.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	fix: copyable instead of copiable
	Reported by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00020.html

	* data/skeletons/lalr1.cc, doc/bison.texi: here.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4
	* NEWS: Record release date.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	fix: use copiable, not copyable
	Reported by Hans Åberg.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00017.html

	* data/skeletons/lalr1.cc, doc/bison.texi: here.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update for 3.4

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	tests: adjust to GCC9 diagnostics with a margin
	* tests/synclines.at (_AT_SYNCLINES_COMPILE): Remove the margin.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: %pure-parser is obsolete
	Reported by Uxio Prego.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00029.html

	* src/scan-gram.l, src/parse-gram.y (PERCENT_PURE_PARSER)
	(handle_pure_parser): New.
	Issue a deprecation/update notice for %pure-parser.
	* doc/bison.texi (Java Bison Interface): Don't mention %pure-parser.
	* tests/actions.at, tests/input.at: Adjust.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: clean up convention for colored diagnostics
	* data/diagnostics.css: Rename as...
	* data/bison-default.css: this.
	Add the GPL header.
	This is the convention followed by Bruno Haible in gettext.
	Adjust dependencies.
	* src/complain.c (complain_init_color): Use BISON_STYLE instead of
	BISON_DIAGNOSTICS_STYLE.

2019-05-19  Akim Demaille  <akim.demaille@gmail.com>

	CI: use a pipeline: first build the tarball, then check it
	Build the tarball in one job, check it in many.
	Unfortunately no real gain in overall duration.
	With help from Clément Démoulins.

	* .travis.yml: here.
	Remove all the tricks that were used to be able to boostrap on old
	distros.
	(before_install): Merge into 'script', because before_install applies
	to all the jobs, and we don't want to run it for the 'compile' job.

2019-05-18  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix srcdir/builddir issues
	* examples/d/local.mk, examples/java/local.mk: here.

2019-05-18  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	In preparation for Bison 3.4, revert to the version before this
	commit:

	    commit 03752516b21091cf3c4beea7e8b9bcad462d50ed
	    Author: John Darrington <john@darrington.wattle.id.au>
	    Date:   Sun May 12 00:42:36 2019 +0200

	    version-etc: Ease translation.

	    * lib/version-etc.c (version_etc_arn, emit_bug_reporting_address):
	    Move URLs and formatting newlines out of translatable string.

	because it changes the messages for --version, translated in
	gnulib.po.  These changes are not yet available on the translation
	project, so we would have a regression in the set of translated
	strings.

2019-05-13  Akim Demaille  <akim.demaille@gmail.com>

	build: do not use $< in plain rules
	It works only in implicit rules (or with GNU Make, but not with
	Solaris Make).

	Reported by Bruno Haible.
	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00009.html
	Diagnosed thanks to Kiyoshi Kanazawa.

	* examples/c/reccalc/local.mk, examples/d/local.mk,
	* examples/java/local.mk: Don't use $< in non implicit rules.

2019-05-12  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-05-12  Akim Demaille  <akim.demaille@gmail.com>

	version 3.3.91
	* NEWS: Record release date.

2019-05-12  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2019-05-12  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-05-11  Akim Demaille  <akim.demaille@gmail.com>

	style: remove incorrect comment
	* src/getargs.c: here.
	It's documented in getargs.h anyway.

2019-05-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: use colors for diagnostics in TeX too
	Thanks to Gavin Smith and Patrice Dumas.
	http://lists.gnu.org/archive/html/help-texinfo/2019-04/msg00015.html

	* doc/bison.texi (@colorWarning, @colorError, @colorNotice)
	(@colorOff): Define for TeX and HTML.
	(@dwarning, @derror, @dnotice): Use them.

2019-05-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update to fix location tracking in UTF-8 on Solaris
	This update contains Bruno Haible's fix for the location tracking
	issue reported by Kiyoshi Kanazawa.

	https://lists.gnu.org/archive/html/bug-gnulib/2019-05/msg00020.html
	https://lists.gnu.org/archive/html/bug-bison/2019-04/msg00020.html

2019-05-08  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: rename --style=debug as --color=debug
	It is more consistent with --color=html, --color=test, etc.

	* src/getargs.h, src/getargs.c (style_debug): Rename as...
	(color_debug): this.
	(getargs_colors): Rename --style=debug as --color=debug.
	Adjust dependencies.

2019-05-08  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: support --color=html
	Based on a message from Bruno Haible.
	https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=fe18e92743b7226791a5f28d7c786941a1bf8cc9

	This does not generate proper HTML: special characters are not escaped
	for instance.  This is a hidden feature meant for Bison developers,
	not end users.

	* src/complain.c (complain_init_color): Support --color=html.

2019-05-08  Akim Demaille  <akim.demaille@gmail.com>

	tests: use %empty instead of comments
	* tests/c++.at, tests/glr-regression.at: here.

2019-05-08  Akim Demaille  <akim.demaille@gmail.com>

	fixits: sort them before applying them
	An experimental commit introduced a fix-it hint that changes comments
	such as "/* empty */" into %empty.  But in some case, because
	diagnostics are not necessarily emitted in order, the fixits also come
	in disorder, which must never happen, as the fixes are installed in
	one pass.

	* src/fixits.c (fixits_register): Insert them in order.

2019-05-04  Akim Demaille  <akim.demaille@gmail.com>

	style: use warning_is_enabled instead of duplicating it
	* src/complain.c (deprecated_directive): Here.

2019-05-03  Akim Demaille  <akim.demaille@gmail.com>

	fixits: be sure to preserve the action when adding %empty
	Currently we remove the rhs to install %empty instead.

	* src/reader.c (grammar_rule_check_and_complete): Insert the missing
	%empty in front of the rhs, not in replacement thereof.
	* tests/actions.at (Add missing %empty): Check that.

2019-05-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't duplicate the portability prologue
	* tests/actions.at, tests/input.at: Don't repeat the prologue, skip it.
	* tests/diagnostics.at, tests/local.at: Comment changes.

2019-05-03  Akim Demaille  <akim.demaille@gmail.com>

	style: use consistently *_loc for locations
	Some members are called foo_location, others are foo_loc.  Stick to
	the latter.

	* src/gram.h, src/location.h, src/location.c, src/output.c,
	* src/parse-gram.y, src/reader.h, src/reader.c, src/reduce.c,
	* src/scan-gram.l, src/symlist.h, src/symlist.c, src/symtab.h,
	* src/symtab.c:
	Use _loc consistently, not _location.

2019-05-03  Akim Demaille  <akim.demaille@gmail.com>

	style: clarify the use of symbol_lists' locations
	symbol_list features a 'location' and a 'sym_loc' member.  The former
	is expected to be set only for symbol_lists that denote a symbol (not
	a type name), and the latter should only denote the location of the
	symbol/type name.  Yet both are set, and the name "location" is too
	unprecise.

	* src/symlist.h, src/symlist.c (symbol_list::location): Rename as
	rhs_loc for clarity.  Move it to the "section" of data valid only
	for rules.
	* src/reader.c, src/scan-code.l: Adjust.

2019-05-03  Akim Demaille  <akim.demaille@gmail.com>

	maint: update gnulib-po/.gitignore

2019-04-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't require a D compiler
	Reported by Kiyoshi Kanazawa.
	http://lists.gnu.org/archive/html/bug-bison/2019-04/msg00018.html

	* tests/atlocal.in (BISON_DC_WORKS): New.
	* tests/local.at (AT_COMPILE_D): Use it.

2019-04-29  Akim Demaille  <akim.demaille@gmail.com>

	doc: use svg instead of png
	* doc/bison.texi, doc/local.mk: here.

2019-04-29  Akim Demaille  <akim.demaille@gmail.com>

	doc: use colors
	* doc/bison.texi (dwarning, derror, dnotice): New.
	Use them in the diagnostics.
	* doc/local.mk (AM_MAKEINFOFLAGS): Pass customization variables.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	version 3.3.90
	* NEWS: Record release date.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	package: add missing CLEANFILES
	* examples: here.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	build: don't generate the graph reports
	Revert "build: also generate the graph
	reports" (4ec413da32760defe1bf382c048d1d2f67e0b58a).  The problem is
	Automake's ylwrap which does not rename y.dot with the appropriate
	name.  We should completely stop using Automake's support for Yacc,
	which is not something I will do right now.  So step back.

	* Makefile.am (AM_YFLAGS_WITH_LINES): Don't pass --graph.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	package: don't regen the parser during dist if unneeded
	* Makefile.am (gen-synclines): New.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	package: don't ship the sources generated from the parser
	Because some of our examples use

	    %C%_reccalc_SOURCES = %D%/parse.y

	Automake ships parse.y and parse.c, and possibly parse.h when it
	"understands" that there is one.  This is not what we want: ship only
	parser.y.  Yet we still want to use Automake to compile the sources
	from parser.y.  The easiest seems to use

	    nodist_%C%_reccalc_SOURCES = %D%/parse.y

	together with

	    dist_reccalc_DATA = %D%/parse.y %D%/scan.l %D%/Makefile %D%/README.md

	which guarantees that parse.y is indeed shipped.

	* examples/c/calc/local.mk, examples/c/lexcalc/local.mk,
	* examples/c/reccalc/local.mk: Always use nodist_*SOURCES for parsers,
	let the dist_*_DATA rules do their job.

2019-04-28  Akim Demaille  <akim.demaille@gmail.com>

	package: various fixes for syntax-check
	* cfg.mk: Disable checks where needed (e.g., we do want to check the
	behavior with tabs).
	(sc_at_parser_check): Remove.  Unfortunately since
	a11c144609255bc6e42c2aff83548e91cbd05425 we no longer use the './'
	prefix to run programs in the current directory.  That was so that we
	could run Java programs like the other, although they are no run with
	the `./` prefix (see 967a59d2c08a33f24708450561e2f8010b604523).
	As a consequence this sc check no longer makes sense.
	However, since now AT_PARSER_CHECK passes the `./` prefix itself, this
	sc-check was superfluous.
	* examples/c/reccalc/scan.l: Use memcpy, not strncpy.
	* src/ielr.c, src/reader.c: Obfuscate "lr(0)" so that the sc-check for
	"space before paren" does not fire.
	* tests/diagnostics.at: Avoid space-tab, use tab-tab.

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	doc: clarify -fsyntax-error
	* NEWS, doc/bison.texi: here.

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	traces: use colors for the semantic values
	This makes reading the trace slightly easier.  It would be very nice
	to highlight the "big steps", especially reductions.  But this is a
	private experiment: do not use it.

	* data/diagnostics.css (value): New.
	* src/parse-gram.y: Use no delimiters and no c quotation for strings
	to facilitate debugging.
	(tron, troff, TRACE): New.
	Not very elegant, but until there is support for printf-formats in
	libtextstyle, it shall be enough.

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: give m4 precise locations
	Currently we pass only the columns based on the screen-width, which is
	important for the carets.  But we don't pass the bytes-based columns,
	which is important for the colors.  Pass both.

	* src/muscle-tab.c (muscle_boundary_grow): Also pass the byte-based column.
	* src/location.c (location_caret): Clarify.
	(boundary_set_from_string): Adjust to the new format.
	* tests/diagnostics.at (Tabulations and multibyte characters from M4): New.

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix locations coming from M4
	Locations issued from M4 need the byte-based column for the
	diagnostics to work properly.  Currently they were unassigned, which
	typically resulted in partially non-colored diagnostics.

	* src/location.c (boundary_set_from_string): Fix the parsed location.
	* src/muscle-tab.c (muscle_percent_define_default): Set the byte values.
	* tests/diagnostics.at (Locations from M4): New.

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: show locations in full when debugging
	This is meant for developers, not end users, that's why I attached it
	to --trace.

	* src/getargs.h, src/getargs.c (trace_locations): New.
	* src/location.c (location_print): Use it.

2019-04-27  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: use flush, not fflush
	* src/complain.c: here.

2019-04-25  Akim Demaille  <akim.demaille@gmail.com>

	build: use gettext-h
	We were using the gnulib's gettext module with tricks in
	bootstrap.conf to avoid useless files.  Instead, use gnulib's
	gettext-h module.

	* .travis.yml: Force Gettext 0.18.3 on Trusty.
	* bootstrap.conf: Use gettext-h instead of gettext.
	(excluded_files): Remove.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.

2019-04-25  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2019-04-25  Akim Demaille  <akim.demaille@gmail.com>

	api.location.type: support it in C
	Reported by Balázs Scheidler.

	* data/skeletons/c.m4 (b4_location_type_define): Use api.location.type
	if defined.
	* doc/bison.texi: Document it.
	* tests/local.at (AT_C_IF, AT_LANG_CASE): New.
	Support Span in C.
	* tests/calc.at (Span): Convert it to be usable in C and C++.
	Check api.location.type with yacc.c and glr.c.

2019-04-24  Akim Demaille  <akim.demaille@gmail.com>

	updates: insert/remove %empty
	* src/reader.c (grammar_rule_check_and_complete): Generate fixits for
	adding/removing %empty.
	* tests/actions.at, tests/diagnostics.at, tests/existing.at: Adjust.

2019-04-24  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-04-24  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: better rule locations
	The "identifier and colon" of a rule is implemented as a single token,
	but whose location is only that of the identifier (so that messages
	about the lhs of a rule are accurate).  When reducing empty rules, the
	default location is the single point location on the end of the
	previous symbol.  As a consequence, when Bison parses a grammar, the
	location of the right-hand side of an empty rule is based on the
	lhs, *independently of the position of the colon*.  And the colon can
	be way farther, separated by comments, white spaces, including empty
	lines.

	As a result, some messages look really bad.  For instance:

	    $ cat foo.y
	    %%
	    foo     : /* empty */
	    bar
	    : /* empty */

	gives

	    $ bison -Wall foo.y
	    foo.y:2.4: warning: empty rule without %empty [-Wempty-rule]
	        2 | foo     : /* empty */
	          |    ^
	    foo.y:3.4: warning: empty rule without %empty [-Wempty-rule]
	        3 | bar
	          |    ^

	The carets are not at the right column, not even the right line.

	This commit passes the colon "again" after the "id colon" token, which
	gives more accurate locations for these messages:

	    $ bison -Wall foo.y
	    foo.y:2.10: warning: empty rule without %empty [-Wempty-rule]
	        2 | foo     : /* empty */
	          |          ^
	    foo.y:4.2: warning: empty rule without %empty [-Wempty-rule]
	        4 | : /* empty */
	          |  ^

	* src/scan-gram.l (SC_AFTER_IDENTIFIER): Rollback the colon, so that
	we scan it again afterwards.
	(INITIAL): Scan colons.
	* src/parse-gram.y (COLON): New.
	(rules): Parse the colon after the rule's id_colon (and possible
	named reference).
	* tests/actions.at, tests/conflicts.at, tests/diagnostics.at,
	* tests/existing.at: Adjust.

2019-04-24  Akim Demaille  <akim.demaille@gmail.com>

	fixits: track byte-columns, not character-columns
	Because the fix-its were ready the character-based columns, but were
	applied on byte-based columns, the result with multibyte characters or
	tabs could be "interesting".  For instance

	    %fixed-output_files
	            %fixed_output-files
	    %fixed-output-files
	    %define api.prefix {foo}
	    %no-default-prec

	would give

	         %fixed-%fixed-output-files  %fixed_output-files
	    %fixed-orefix= "foo"
	    o_default-prec

	* src/fixits.c (fixit_print, fixits_run): Work on byte-base columns.
	* tests/input.at: Check it.

2019-04-24  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: expose a means to know whether a warning is enabled
	* src/complain.h, src/complain.c (warning_is_enabled): New.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: let it use its own PO domain
	See
	https://www.gnu.org/software/gnulib/manual/html_node/Localization.html.

	* bootstrap.conf: Create gnulib-po.
	* Makefile.am, configure.ac: Use it.
	* po/POTFILES.in: Remove files now in gnulib.
	* src/main.c: Open the bison-gnulib domain.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: don't try to quote special files
	Based on a report by Todd Freed.
	http://lists.gnu.org/archive/html/bug-bison/2019-04/msg00000.html
	See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90034

	* src/location.c (caret_info): Also track the file name.
	(location_caret): Don't quote special files.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: document the change of format
	* doc/bison.texiL Adjust output.
	Also, Graphviz has no uppercsae V.
	* NEWS: Explain the format change.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: copy GCC9's format
	Currently, when we quote the source file, we indent it with one space,
	and preserve tabulations, so there is a discrepancy and the visual
	rendering is bad.  One way out is to indent with a tab instead of a
	space, but then this space can be used for more information.  This is
	what GCC9 does.  Let's play copy cats.

	See
	https://lists.gnu.org/archive/html/bison-patches/2019-04/msg00025.html
	https://developers.redhat.com/blog/2019/03/08/usability-improvements-in-gcc-9/
	https://gcc.gnu.org/onlinedocs/gccint/Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics

	* src/location.c (location_caret): Prefix quoted lines with the line
	number and a pipe, fitting 8 columns.

	* tests/actions.at, tests/c++.at, tests/conflicts.at,
	* tests/diagnostics.at, tests/input.at, tests/java.at,
	* tests/named-refs.at, tests/reduce.at, tests/regression.at,
	* tests/sets.at: Adjust expectations.
	Partly by "./build-aux/update-test tests/testsuite.dir/*/testsuite.log"
	repeatedly, and partly by hand.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix the handling of multibyte characters
	This is a pity: efforts were invested in computing correctly the
	number of screen columns consumed by multibyte characters, but the
	routines that do that were fed by single-byte inputs...

	As a consequence Bison never displayed correctly locations when there
	are multibyte characters.

	* src/scan-gram.l (mbchar): New.
	Use it instead of . in the catch-all clause.
	* tests/diagnostics.at (Tabulations): Enhance into...
	(Tabulations and multibyte characters): this.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: check the handling of tabulations
	* tests/diagnostics.at (Tabulations): here.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix styling issues
	Single point locations (equal boundaries) are troublesome, and we were
	incorrectly ending the style in their case.  Which results in an abort
	in libtextstyle.

	There is also a confusion between columns as displayed on the
	screen (which take into account multibyte characters and tabulations),
	and the number of bytes.  Counting the screen-column
	incrementally (character by character) is uneasy (because of multibyte
	characters), and I don't want to maintain a buffer of the current line
	when displaying the diagnostic.  So I believe the simplest solution is
	to track the byte number in addition to the screen column.

	* src/location.h, src/location.c (boundary): Add the byte-column.
	Adjust dependencies.
	* src/getargs.c, src/scan-gram.l: Adjust.
	* tests/diagnostics.at: Check zero-width locations.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: check the styling
	Enable checking of styles even when libtextstyle is not installed.

	* src/getargs.h, src/getargs.c (style_debug): New.
	(getargs_colors): Set it when --style=debug.
	* src/complain.c (begin_use_class, end_use_class): Use it.
	* tests/diagnostics.at: New.

2019-04-23  Akim Demaille  <akim.demaille@gmail.com>

	TODO: update
	Let's prepare 3.4 with more or less what we have.  Schedule some
	features for 3.5 and 3.6.  Remove obsolete stuff.

2019-04-19  Akim Demaille  <akim.demaille@gmail.com>

	doc: sort the warning categories
	* doc/bison.texi, src/getargs.c: here.

2019-04-19  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* tests/actions.at, tests/calc.at, tests/input.at: here.

2019-04-19  Akim Demaille  <akim.demaille@gmail.com>

	graphviz: move constant computation out of a loop
	* src/graphviz.c (output_red): here.

2019-04-18  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix memory leak in libtextstyle
	* src/complain.h, src/complain.c (complain_free): New.
	* src/main.c: Use it.

2019-04-17  Akim Demaille  <akim.demaille@gmail.com>

	tests: remove useless feature
	* tests/calc.at (read_signed_integer): Rename as...
	(read_integer): this.
	We never read signs here.

2019-04-14  Akim Demaille  <akim.demaille@gmail.com>

	traces: make closure() less verbose
	* src/getargs.h, src/getargs.c (trace_closure): New.
	* src/closure.c (closure): Use it.

2019-04-14  Akim Demaille  <akim.demaille@gmail.com>

	build: also generate the graph reports
	* Makefile.am (AM_YFLAGS_WITH_LINES): here.

2019-04-12  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: minor style change
	* data/skeletons/yacc.c: To improve consistency with other similar
	pieces of code.

2019-04-12  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in lalr.c
	* src/lalr.c (initialize_goto_follows): here.

2019-04-12  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* src/closure.h, src/closure.c, src/lalr.c: here.

2019-04-12  Akim Demaille  <akim.demaille@gmail.com>

	traces: improve logs
	* src/lalr.c: Move logs to a better place to understand the chronology
	of events.
	* src/symlist.c (symbol_list_syms_print): Don't dump core on type
	elements.

2019-04-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: minor fixes
	* doc/bison.texi: Use consistently $ and @kbd in shell examples.
	Prefer sticking to English words: output and file instead of outfile
	and infile.

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	bison: use no-lines
	The 'regen' commit in Bison's history are a nuisance.  They are
	especially big because of the #lines.  Let's generate our parse
	without these lines in the repository, but generate them in the
	tarball.

	* Makefile.am (AM_YFLAGS_WITH_LINES): New.
	(AM_YFLAGS): Use it.
	(dist-hook): Regenerate the parser with #lines.

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	no-lines: avoid leaving an empty line instead of the syncline
	Currently, with --no-lines, instead of "#line file line\n", we emit
	"\n".  Let's emit nothing.

	* data/skeletons/bison.m4 (b4_syncline): Emit at end-of-line when enabled.
	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc,
	* data/skeletons/lalr1.cc, src/output.c: Use dnl after b4_syncline to
	avoid spurious empty lines.

	* tests/synclines.at (Sync Lines): Make sure that --no-lines is like
	grep -v #line.
	* tests/calc.at: Make sure that a rich grammar file behaves properly
	with %no-lines.

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	java: use full locations for diagnostics about destructors
	Currently we use the syncline to report errors about a symbol's
	destructor/printer.  This is not accurate (only file and line), and
	this is incorrect: the file name is double quotes (a recent change,
	needed to make sure we escape properly double quotes in it).  And
	worst of all: with --no-line, b4_syncline expands to nothing.

	Rather, push the locations into the backend, and use them.

	* src/muscle-tab.h, src/muscle-tab.c (muscle_location_grow): Make it
	public.
	* src/output.c (prepare_symbol_definitions): Use it to pubish the
	location of the printer and destructor.
	* data/skeletons/lalr1.java: Use complain_at instead of complain.
	* tests/java.at (Java invalid directives): Adjust expectations.
	* data/skeletons/bison.m4 (b4_symbol_action_location): Remove.
	We should not use b4_syncline this way.

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	java: prefer errors to fatal errors
	Fatal errors are inconvenient, and should be reserved to cases where
	we cannot continue.  Here, it could even be warnings actually: these
	directives will simply be ignored.

	* data/skeletons/lalr1.java: Prefer error (b4_complain) to fatal
	errors (b4_fatal).
	* tests/java.at (Java invalid directives): New.

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: formatting changes
	* tests/javapush.at: here.

2019-04-03  Akim Demaille  <akim.demaille@gmail.com>

	lalr: offer more flexibility in debugging routines
	* src/state.h, src/state.c (state_transitions_print): New, extracted
	from...
	(state_transitions_set): here.

2019-03-31  Akim Demaille  <akim.demaille@gmail.com>

	lalr: don't overbook memory
	I never understood why we book ngotos+1 slots for relations between
	gotos: there are at most ngotos images, not ngotos+1 (and "includes"
	does have cases where a goto is in relation with itself, so it's not
	ngotos-1).

	Maybe bbf37f2534a8e5a6b4e28047f0a10903e6dc73f9 explains the +1: a bug
	left us register a goto several times on occasion, and the +1 might
	have been a means to avoid this problem in most cases.  Now that this
	bug is addressed, we should no longer overbook memory, if only for the
	clarity of the code ("why ngotos+1 instead of ngotos?").

	* src/lalr.c: A goto has at most ngotos images, not ngotos+1.
	While at it, avoid useless repeated call to map_goto introduced in
	bbf37f2534a8e5a6b4e28047f0a10903e6dc73f9.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	lalr: show lookback for debug
	* src/lalr.c (lookback_print): New.
	(build_relations): Use it.
	Also show edges.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: don't crash when declaring the error token as an nterm
	Reported by wcventure.
	http://lists.gnu.org/archive/html/bug-bison/2019-03/msg00008.html

	* src/symtab.c (complain_class_redeclared): Don't print empty
	locations.
	There can only be empty locations for predefined symbols.  And the
	only symbol that is lexically available is the error token.  So this
	appears to be the only possible way to have an error involving an
	empty location.
	* tests/input.at (Symbol class redefinition): Check it.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	lalr: fix segmentation violation
	The "includes" relation [DeRemer 1982] is between gotos, so of course,
	for a given goto, there cannot be more that ngotos (number of gotos)
	images.  But we manipulate the set of images of a goto as a list,
	without checking that an image was not already introduced.  So we can
	"register" way more images than ngotos, leading to a crash (heap
	buffer overflow).

	Reported by wcventure.
	http://lists.gnu.org/archive/html/bug-bison/2019-03/msg00007.html

	For the records, this bug is present in the first committed version of
	Bison.

	* src/lalr.c (build_relations): Don't insert the same goto several
	times.
	* tests/sets.at (Build Relations): New.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	state: more debug traces
	* src/state.c (state_transitions_set): Show the transitions.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	style: rename variables for consistency
	* src/lalr.c: Use trans for transitions, and reds for reductions, as
	elsewhere in the code.
	* src/state.h: Comment changes.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	gram: fix and improve log message
	It seems that not many people read these logs: the error was
	introduced in 2001 (3067fbef531832df1e43bbd28787655808361eed),

	* src/gram.c (grammar_dump): Fix the headers of the table: remove
	duplicate display of "Ritem Range".
	While at it, remove duplicate display of the rule number (and remove
	an incorrect comment about it: these numbers _are_ equal).
	* tests/sets.at (Reduced Grammar): Use useless rule, nterm and token
	in the example.

2019-03-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: add a tool for mass updates
	When we update some output format, too many adjustements must be made
	by hand.  This script updates most tests based on the actual output
	made during the tests.

	* build-aux/update-test: New.

2019-03-25  Akim Demaille  <akim.demaille@gmail.com>

	style: remove now useless _GL_UNUSED
	* src/getargs.c (getargs_colors): Here.
	Useless since 4d34b06fb3a38eb050439084476a6b3e292c5680.

2019-03-24  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tables: use bitsets for a performance boost
	Suggested by Yuri at
	<http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00000.html>.

	The improvement is marginal for most grammars, but notable for large
	grammars (e.g., PosgreSQL's postgre.y), and very large for the
	sample.y grammar submitted by Yuri in
	http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00012.html.
	Measured with --trace=time -fsyntax-only.

	parser action tables    postgre.y     sample.y
	Before                 0,129 (44%)  37,095 (99%)
	After                  0,117 (42%)   5,046 (93%)

	* src/tables.c (pos): Replace this set of integer coded as an unsorted
	array or integers with...
	(pos_set): this bitset.

2019-03-24  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: don't suggest api.header.include when --defines is not used
	See 4e19ab9fcd28c9361ff08f46e5e353effb0a0520: the suggestion to
	include the header file should not be emitted when the header is not
	generated.

	* data/skeletons/yacc.c: Here.

2019-03-24  Akim Demaille  <akim.demaille@gmail.com>

	reader: clarify variable names
	* src/reader.c (grammar_rule_check_and_complete): When 'p' and 'lhs'
	are aliases, prefer the latter, for clarity and consistency.
	(grammar_current_rule_begin): Avoid 'p', current_rule suffices.
	* src/gram.h, src/gram.c: Comment changes.

	ptdr#	calc.tab.c

2019-03-24  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style changes
	* src/location.c (location_caret): Clarify a bit.

2019-03-24  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: use gnulib's libtextstyle-optional
	Bruno Haible just added a default implementation of libtextstyle's
	interface when the library is not available.
	https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00025.html

	* gnulib: Update.
	* bootstrap.conf: Replace libtextstyle with libtextstyle-optional.
	* src/complain.c, src/getargs.c: Remove now useless cpp guards.

2019-03-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix handling of style in limit cases
	* src/location.c (location_caret): Beware of the cases where the start
	and end columns are the same, or when the location is multilines.

2019-03-23  Akim Demaille  <akim.demaille@gmail.com>

	warnings: don't use _Noreturn with G++ 4.7 in C++98 mode
	The timevar and bitset modules now use the c99 module which causes
	$CXX to now include -std=gnu++11 when possible.  Unfortunately, G++
	4.7 does not implement [[noreturn]] in C++11 mode, so our tests of
	glr.cc (which uses _Noreturn) fail with

	    input.cc:954:1: error: expected unqualified-id before '[' token

	right before [[noreturn]].  4.8 works fine.

	* data/skeletons/c.m4 (b4_attribute_define): Do not use [[noreturn]]
	with GCC 4.7.

2019-03-17  Akim Demaille  <akim.demaille@gmail.com>

	d: tests: use more a natural approach for the scanner
	See f8408562f8439654261418406296e4108d2a995f.

	* tests/calc.at: Stop imitating the C API.
	Prepare more tests to run in the future.
	%verbose works as expected (what a surprise, it's unrelated to the
	skeleton...).

2019-03-17  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-03-17  Akim Demaille  <akim.demaille@gmail.com>

	style: rename spec_defines_file as spec_header_file
	The variable spec_defines_file denotes the name of the generated
	header.  Its name is derived from --defines/%defines, whose name in
	turn is derived from the fact that the header, in Yacc, contained the

	Not only does the header now contain a lot more than just the token
	definitions, but we no longer even generate macros, but an enum...

	Let's modernize our vocabulary.

	* src/files.h, src/files.c (spec_defines_file): Rename as...
	(spec_header_file): this.

2019-03-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: provide a means to include the header in the implementation
	Currently when --defines is used, we generate a header, and paste an
	exact copy of it into the generated parser implementation file.  Let's
	provide a means to #include it instead.

	We don't do it by default because of the Autotools' ylwrap.  This
	program wraps invocations of yacc (that uses a fixed output name:
	y.tab.c, y.tab.h, y.output) to support a more modern naming
	scheme (dir/foo.y -> dir/foo.tab.c, dir/foo.tab.h, etc.).  It does
	that by renaming the generated files, and then by running sed to
	propagate these renamings inside the files themselves.

	Unfortunately Automake's Makefiles uses Bison as if it were Yacc (with
	--yacc or with -o y.tab.c) and invoke bison via ylwrap.  As a
	consequence, as far as Bison is concerned, the output files are
	y.tab.c and y.tab.h, so it emits '#include "y.tab.h"'.  So far, so
	good.  But now ylwrap processes this '#include "y.tab.h"' into
	'#include "dir/foo.tab.h"', which is not guaranteed to always work.

	So, let's do the Right Thing when the output file is not y.tab.c, in
	which case the user should %define api.header.include.  Binding this
	behavior to --yacc is tempting, but we recently told people to stop
	using --yacc (as it also enables the Yacc warnings), but rather to use
	-o y.tab.c.

	Yacc.c is the only skeleton concerned: all the others do include their
	header.

	* data/skeletons/yacc.c (b4_header_include_if): New.
	(api.header.include): Provide a default value when the output is not
	y.tab.c.
	* src/parse-gram.y (api.header.include): Define.

2019-03-17  Akim Demaille  <akim.demaille@gmail.com>

	d: don't link against LIBS
	* tests/local.at (AT_COMPILE_D): Don't pass LIBS, dmd does not like
	being given -lintl.

2019-03-17  Akim Demaille  <akim.demaille@gmail.com>

	address warnings from GCC's UB sanitizer
	Running with CC='gcc-mp-8 -fsanitize=undefined' revealed Undefined
	Behaviors.
	https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00008.html

	* src/state.c (errs_new): Don't call memcpy with NULL as source.
	* src/location.c (add_column_width): Don't assume that the column
	argument is nonnegative: the scanner sometimes "backtracks" (e.g., see
	ROLLBACK_CURRENT_TOKEN and DEPRECATED) in which case we can have
	negative column numbers (temporarily).
	Found in test 3 (Invalid inputs).

2019-03-16  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: use libtextstyle for colored output
	Bruno Haible released libtextstyle, a library for colored output based
	on CSS.  Let's use it to generate colored diagnostics, provided
	libtextstyle is available.

	See
	https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00176.html
	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00073.html
	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00084.html
	https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00007.html

	* bootstrap.conf (gnulib_modules): Use libtextstyle when possible.
	* data/diagnostics.css: New.
	* src/complain.c (begin_use_class, end_use_class, flush)
	(severity_style, complain_init_color): New.
	Use them.
	* src/getargs.c (getargs_colors): New.
	(getargs): Use it.
	Skip --color and --style.
	* src/location.h, src/location.c (location_print): Use a style.

	* tests/bison.in: Force --color=yes when stderr is a tty.
	* tests/local.at: Disable colors during the test suite.
	* tests/input.at: Adjust expectations to the extra options passed on
	the command line.

2019-03-16  Akim Demaille  <akim.demaille@gmail.com>

	style: clean up complain.c
	* src/complain.c (severity_prefix): New.
	(error_message): Take the severity as argument, instead of the prefix.

2019-03-16  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: emit the header before the implementation file
	* data/skeletons/yacc.c: here.
	This is more logical for the time stamps, but it's also required by
	following patches: the shared declarations are also in charge of
	handling api.value.type=union.  So far, they are run in the
	implementation file in both cases (with or without header).  But if we
	run them only in the header, then the implementation file is emited
	with incorrect support for api.value.type=union.
	Arguably we should not have such dependencies.  This is because we
	have side-effects in our backend (redefining the symbols' type and
	type_tag).  In the future we should find a better solution for this,
	without sacrificing the independence of the backend from bison
	itself (i.e., I don't think we should handle api.value.type=union in
	bison, leave it to m4).

2019-03-16  Akim Demaille  <akim.demaille@gmail.com>

	simplify the generated #line
	Currently we generate things like:

	    #line 683 "src/parse-gram.y" /* yacc.c:316  */

	The first part is of course very important: compilers point the users
	to their grammar file rather than into the generated parser.  The
	second part points to the place in the skeletons that generated this
	piece of code.

	This dependency on the Bison skeletons generates lots of useless 'git
	diff'.  This location is useless for the regular user (who does not
	care about the skeletons) and is actually not useful for Bison
	developpers too (I never used this to locate the code in skeletons
	that generated output).  So disable it completely.  If someone thinks
	this was actually useful, a %define variable should be provided to
	control the level of verbosity of '#line', in replacement of
	--no-lines.

	So now, generate:

	    #line 683 "src/parse-gram.y"

	* data/skeletons/bison.m4 (b4_sync_end): Emit nothing.

2019-03-13  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-03-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: remove duplicates
	* tests/regression.at (Invalid inputs, Invalid inputs with {}):
	Remove, there are exact copies of them in input.at.

2019-03-02  Akim Demaille  <akim.demaille@gmail.com>

	d: simplify the API to build the scanner of the example
	* examples/d/calc.y (calcLexer): Add an overload for File.
	Use it.

2019-03-01  H. S. Teoh  <hsteoh@quickfur.ath.cx>

	d: modernize the scanner of the example
	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00121.html

	* examples/d/calc.y (CalcLexer): Stop shoehorning C's API into D: use
	a range based approach in the scanner, rather than some imitation of
	getc/ungetc.
	(main): Adjust.

2019-03-01  Akim Demaille  <akim.demaille@gmail.com>

	d: tests: use fewer global variables
	* tests/calc.at: Move 'input' into the scanner.

2019-02-28  Akim Demaille  <akim.demaille@gmail.com>

	lalr: clarify the count of lookaheads
	* src/lalr.c (state_lookahead_tokens_count): Remove wierd `+=` that is
	actually an `=`.

2019-02-28  Akim Demaille  <akim.demaille@gmail.com>

	lalr: clarify the API
	* src/state.h, src/state.c (state_reduction_find): Clarify.
	Die on errors.
	* src/lalr.c (goto_list_new): New.
	Use it.

2019-02-28  Akim Demaille  <akim.demaille@gmail.com>

	lalr: improve traces
	* src/lalr.c (follows_print): Just print the symbol tag.
	Take and print a title.
	Indent the output.
	Use it to print the various steps of the computation.
	(lookahead_tokens_print): Fix a lie: the number displayed is not the
	number of tokens.
	Don't display states that don't even have reductions.

2019-02-27  Akim Demaille  <akim.demaille@gmail.com>

	lalr: print the 'reads' relation
	* src/relation.h, src/relation.c (relation_print): Accept and use a
	title.
	Don't print empty rows.
	Indent the output.
	Adjust dependencies.
	* src/lalr.c (initialize_goto_follows): Print 'reads' in traces.

2019-02-27  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* src/lr0.c: here.

2019-02-26  Akim Demaille  <akim.demaille@gmail.com>

	dlang: initial changes to run the calc tests on it
	* configure.ac (DCFLAGS): Define.
	* tests/atlocal.in: Receive it.
	* data/skeletons/d.m4 (api.parser.class): Remove spurious YY.
	* data/skeletons/lalr1.d (yylex): Return an int instead of a
	YYTokenType, so that we can use characters as tokens.
	* examples/d/calc.y: Adjust.
	* tests/local.at: Initial support for D.
	(AT_D_IF, AT_DATA_GRAMMAR(D), AT_YYERROR_DECLARE(d))
	(AT_YYERROR_DECLARE_EXTERN(d), AT_YYERROR_DEFINE(d))
	(AT_MAIN_DEFINE(d), AT_COMPILE_D, AT_LANG_COMPILE(d), AT_LANG_EXT(d)):
	New.
	* tests/calc.at: Initial support for D.
	* tests/headers.at

2019-02-26  Akim Demaille  <akim.demaille@gmail.com>

	d: improve the example
	* examples/d/calc.y: Exit with failure on errors.
	Remove useless operators (=, !) meant for the test suite.
	Add unary + for symmetry.
	* examples/d/calc.test: Adjust expectations.

2019-02-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: style changes
	* tests/local.at AT_YYERROR_DEFINE(java): Use more consistent names.

2019-02-25  Akim Demaille  <akim.demaille@gmail.com>

	style: eliminate useless indirection
	* src/relation.h, src/relation.c (relation_digraph): Don't take the
	biteetv as a pointer, it is already a pointer (as it's an array).

2019-02-25  Akim Demaille  <akim.demaille@gmail.com>

	style: rename function for clarity
	Commit db34f7988941444bdc5f2b6adcf7fb83648f9a18 renames the variable F
	as goto_follows, but forgot to rename this function.

	* src/lalr.c (initialize_F): Rename as...
	(initialize_goto_follows): this.

2019-02-25  Akim Demaille  <akim.demaille@gmail.com>

	lalr: more debug traces
	I need to be able to read includes and goto_follows.

	* src/relation.h, src/relation.c (relation_print): Provide a means to
	pretty-print the nodes of the relation.
	* src/lalr.c (goto_print, follows_print): New.
	(set_goto_map): Use goto_print.
	(build_relations): Show INCLUDES.
	(compute_FOLLOWS): Rename as...
	(compute_follows): this.
	Show FOLLOWS.

2019-02-24  Akim Demaille  <akim.demaille@gmail.com>

	style: minor changes
	* examples/c/calc/calc.y, src/lalr.c: Reduce scope.
	* src/gram.c: Prefer < to >.

2019-02-24  Akim Demaille  <akim.demaille@gmail.com>

	style: clarify the computation of the lookback edges
	* src/lalr.c (build_relations): Reduce the scopes.
	Instead of keeping rp alive in two different loops, clarify the second
	one by having an index on the path we traverse (i.e., use that index
	to compute the source state _and_ the symbol that labels the
	transition).
	This allows to turn an obscure 'while'-loop in a clearer (IMHO)
	'for'-loop.  We also consume more variables (by introducing p instead
	of making more side effects on length), but we're in 2019, I don't
	think this matters.  What does matter is that (IMHO again), this is
	now clearer.
	Also, use clearer names.

2019-02-24  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in tables.c
	* src/tables.c: here.
	* src/lalr.c: Prefer < to >.

2019-02-24  Akim Demaille  <akim.demaille@gmail.com>

	d: formatting changes
	* data/skeletons/d.m4, data/skeletons/lalr1.d: Avoid trailing spaces.

2019-02-23  Akim Demaille  <akim.demaille@gmail.com>

	examples: remove stray examples
	* examples/c/reentrant-calc: Remove.
	I did not mean to include this example, it was replaced by
	examples/c/reccalc.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: factor the execution of Java parsers
	* tests/local.at (AT_MAIN_DEFINE(java)): Exit failure on failure.
	(AT_PARSER_CHECK): If in Java, run AT_JAVA_PARSER_CHECK.
	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Simplify.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix a Java tests
	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Fix quotation error.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: simplify AT_PARSER_CHECK usage
	Currently the caller must specify the ./ prefix to its command.  Let's
	avoid that: it will be nicer to read, make it easier to have a version
	that works for Java and C/C++.

	* tests/local.at (AT_PARSER_CHECK): Prefix the command with ./.
	Adjust callers.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: java: factor the definition of Position
	* tests/local.at (AT_JAVA_POSITION_DEFINE): New.
	* tests/java.at, tests/javapush.at: Use it.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: dispatch per lang on AT_DATA_GRAMMAR
	* tests/java.at: Do that.
	* tests/conflicts.at: Simplify.

	* tests/actions.at, tests/c++.at, tests/input.at, tests/local.at,
	* tests/named-refs.at:
	Use AT_BISON_OPTION_PUSHDEFS/AT_BISON_OPTION_POPDEFS.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: dispatch per lang on the definition of yylex
	* tests/local.at (AT_YYLEX_DEFINE): Dispatch on the language.
	(AT_YYLEX_DEFINE(java)): New.
	* tests/conflicts.at, tests/java.at: Use it.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: de-duplicate
	* tests/conflicts.at (AT_YYLEX_PROTOTYPE): Don't define it, leave that
	task to AT_DATA_GRAMMAR.
	But be honest: tell AT_BISON_OPTION_PUSHDEFS all the options we use.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: formatting changes
	* tests/local.at: here.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	graph: prefer *.gv to *.dot
	Reported by Hans Åberg.
	https://lists.gnu.org/archive/html/help-bison/2019-02/msg00064.html

	* src/files.c (spec_graph_file): Use `*.gv` when 3.4 or better,
	otherwise `*.dot`.
	* src/parse-gram.y (handle_require): Pretend we are already 3.4.
	* doc/bison.texi: Adjust.
	* tests/local.at, tests/output.at: Exercise this.

2019-02-21  Akim Demaille  <akim.demaille@gmail.com>

	doc: fixes to please older versions of Texinfo
	Currently, we have errors:

	    ./doc/bison.texi:13005: node `History' lacks menu item for `Yacc' despite being its Up target

	* doc/bison.texi (History): Add the local menu.
	While at it, add a few index entries.

2019-02-17  Akim Demaille  <akim.demaille@gmail.com>

	doc: style changes
	* doc/bison.texi (Bibliography): Add [Corbett 1984] and [Johnson
	1978].
	(History): Use them.
	And other minor changes.

2019-02-17  Eric S. Raymond  <esr@thyrsus.com>

	doc: a history section
	* bison.texi (A Brief History of the Greater Ungulates): New section.

2019-02-17  Akim Demaille  <akim.demaille@gmail.com>

	examples: add an example with a reentrant parser in Flex+Bison
	Suggested by Eric S. Raymond.
	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00066.html

	* examples/c/reentrant-calc/Makefile, examples/c/reentrant-calc/README.md,
	* examples/c/reentrant-calc/parse.y, examples/c/reentrant-calc/scan.l
	* examples/c/reentrant-calc/lexcalc.test,
	* examples/c/reentrant-calc/local.mk:
	New.

2019-02-16  Akim Demaille  <akim.demaille@gmail.com>

	examples: fixes in lexcalc
	* examples/c/lexcalc/parse.y: Formatting/comment changes.
	(line): Don't return a value.
	Print the result here, which avoids printing a value for lines with an
	error.
	(yyerror): Be sure to increment the pointed, not the pointer...
	* examples/c/lexcalc/lexcalc.test: Check errors.
	* examples/c/lexcalc/local.mk: Fix a dependency.

2019-02-16  Akim Demaille  <akim.demaille@gmail.com>

	build: fix distcheck
	Regression introduced in 05a80977798abf472bfc11c477751303ad604733.

	* doc/local.mk (bison.help): Don't depend on the path of the bison
	executable.

2019-02-16  Akim Demaille  <akim.demaille@gmail.com>

	style: move pkgdatadir to files.*
	Let's move it to a more logical place.

	* src/output.h, src/output.c (pkgdatadir): Move to...
	* src/files.h, src/files.c: here.

2019-02-14  Akim Demaille  <akim.demaille@gmail.com>

	style: rename cleanup_caret as caret_free
	* src/location.c, src/location.h, src/main.c: here.

2019-02-14  Akim Demaille  <akim.demaille@gmail.com>

	style: avoid default in switch on enums
	* src/assoc.c (assoc_to_string): here.

2019-02-14  Akim Demaille  <akim.demaille@gmail.com>

	doc: run tests/bison, not src/bison
	* doc/local.mk: Don't run src/bison, as it expects to find all its
	files installed.  Instead, run tests/bison which is ready to run in
	builddir.

2019-02-13  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-02-12  Akim Demaille  <akim.demaille@gmail.com>

	style: comment and names changes in map_goto
	* src/lalr.h, src/lalr.c: Use clearer names.

2019-02-12  Akim Demaille  <akim.demaille@gmail.com>

	yacc: support parse.assert
	While hacking on the computation of the automaton, I had yystate being
	equal to -1, and the parser loops.  Let's catch this when
	parser.assert is enabled.

	* data/skeletons/yacc.c (YY_ASSERT): New.
	Use it.
	Not using the name YYASSERT, to make it clear that this is private.
	glr.c should probably move to YY_ASSERT too.
	Also, while at it, report 'Entering state...' even before growing the
	stacks.

2019-02-12  Akim Demaille  <akim.demaille@gmail.com>

	examples: depend on Bison's sources
	* examples/c/calc/local.mk, examples/c/lexcalc/local.mk,
	* examples/c/mfcalc/local.mk, examples/c/rpcalc/local.mk:
	Regenerate the files if dependencies have changed.

2019-02-12  Eric S. Raymond  <esr@thyrsus.com>

	README: point to README-hacking
	* README (Build from git): New.
	* README-hacking: Describe easier submodule update.

2019-02-10  Akim Demaille  <akim.demaille@gmail.com>

	doc: a single space before closing comments
	I don't think this style:

	    /* If buffer is full, make it bigger.        */
	    if (i == length)
	      {
	        length *= 2;
	        symbuf = (char *) realloc (symbuf, length + 1);
	      }
	    /* Add this character to the buffer.         */
	    symbuf[i++] = c;
	    /* Get another character.                    */
	    c = getchar ();

	or more readable than

	    /* If buffer is full, make it bigger. */
	    if (i == length)
	      {
	        length *= 2;
	        symbuf = (char *) realloc (symbuf, length + 1);
	      }
	    /* Add this character to the buffer. */
	    symbuf[i++] = c;
	    /* Get another character. */
	    c = getchar ();

	Actually, I think the latter is more readable, and helps with width
	issues in the PDF.  As a matter of fact, I would happily move to //
	only for single line comments.

	* doc/bison.texi: A single space before closing comments.

2019-02-10  Akim Demaille  <akim.demaille@gmail.com>

	doc: modernize the examples
	* doc/bison.texi: Prefer 'fun' to 'fnct'.
	Reduce local variable scopes.
	Prefer strdup to malloc + strcpy.
	Avoid gratuitous casts.
	Use simpler names (e.g., 'name' instead of 'fname').
	Avoid uses of 0 for NULL.
	Avoid using NULL when possible (e.g., 'p' instead of 'p != NULL').
	Prefer union names to casts (e.g. 'yylval.VAR = s' instead of
	'*((symrec**) &yylval) = s').
	Give arguments a name in fun declarations.
	Use our typedefs instead of duplicating them (func_t).
	Stop promoting an explicit $$ = $1;, it should be implicit (Bison
	might be able to eliminate useless chain rules).
	Help a bit Texinfo by making smaller groups.
	Rely on the C compiler to call function pointers (prefer
	'$1->value.fun ($3)' to (*($1->value.fnctptr))($3)').

2019-02-10  Akim Demaille  <akim.demaille@gmail.com>

	examples: add a simple infix calculator in C
	Currently we have no simple example: rpcalc in reverse Polish, mfcalc
	has functions, and lexcalc is using lex.

	* examples/c/calc/Makefile, examples/c/calc/calc.y,
	* examples/c/calc/calc.test, examples/c/calc/local.mk: New.

2019-02-10  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix annoying off-by-one errors
	* examples/extexi: Since we issue #lines only at the beginning of
	@example, leave empty line when removing content (such as @comment
	lines), otherwise the lines that follow have incorrect source line
	location.  This leaves ugly empty lines, but they are removed when you
	tidy the output for the end user: sequences of \n are mapped to at
	most two sucessive \n.

2019-02-09  Akim Demaille  <akim.demaille@gmail.com>

	style: factor printing of rules
	* src/gram.h, src/gram.c (rule_print): New.
	Use it.

2019-02-09  Akim Demaille  <akim.demaille@gmail.com>

	style: use lower case for variable names
	* src/relation.c (INDEX, VERTICES): Rename as...
	(indexes, vertices): these.

2019-02-09  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in relation.c

2019-02-09  Akim Demaille  <akim.demaille@gmail.com>

	report: stop counting uselessly
	* src/print.c (print_nonterminal_symbols): Replace left_count and
	right_count with on_left and on_right.

2019-02-09  Akim Demaille  <akim.demaille@gmail.com>

	report: clean up its format
	The format is inconsistent.  For instance most sections are
	indented (including "Terminals unused in grammar" for instance), but
	the sections "Terminals, with rules where they appear" and
	"Nonterminals, with rules where they appear" are not.  Let's indent
	them.  Also, these two sections try to wrap the output to avoid lines
	too long.  Yet we don't do that in the rest of the file, for instance
	when listing the lookaheads of an item.

	For instance in the case of Bison's parse-gram.output we go from:

	    Terminals, with rules where they appear

	    "end of file" (0) 0
	    error (256) 28 88
	    "string" <char*> (258) 9 13 16 17 20 23 24 109 116
	    [...]

	    Nonterminals, with rules where they appear

	    $accept (58)
	        on left: 0
	    input (59)
	        on left: 1, on right: 0
	    prologue_declarations (60)
	        on left: 2 3, on right: 1 3
	    prologue_declaration (61)
	        on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24
	        25 26 27 28 29, on right: 3
	    [...]

	to

	    Terminals, with rules where they appear

	    "end of file" (0) 0
	    error (256) 28 88
	    "string" <char*> (258) 9 13 16 17 20 23 24 109 116
	    [...]

	    Nonterminals, with rules where they appear

	        $accept (58)
	            on left: 0
	        input (59)
	            on left: 1
	            on right: 0
	        prologue_declarations (60)
	            on left: 2 3
	            on right: 1 3
	        prologue_declaration (61)
	            on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29
	            on right: 3
	    [...]

	* src/print.c (END_TEST): Remove.
	(print_terminal_symbols): Don't try to wrap the output.
	(print_nonterminal_symbols): Likewise.
	Make two different lines for occurrences on the left, and occurrence
	on the rhs of the rules.
	Indent by 4 and 8, not 3.
	* src/reduce.c (reduce_output): Indent by 4, not 3.

	* tests/conflicts.at, tests/existing.at, tests/reduce.at,
	* tests/regression.at, tests/report.at:
	Adjust.

2019-02-05  Akim Demaille  <akim.demaille@gmail.com>

	add LR(0) output
	This should not be used to generate parsers.  My point is actually to
	facilitate debugging (when tweaking the generation of the LR(0)
	automaton for instance, not carying -yet- about lookaheads).

	* src/reader.c (prepare_percent_define_front_end_variables): Add lr(0).
	* src/conflicts.c (set_conflicts): Be robust to reds not having
	lookaheads at all.
	* src/ielr.c (LrType, lr_type_get): Adjust.
	(ielr): Implement support for LR(0).
	* src/lalr.c (lalr_free): Don't free LA when it's not computed.

2019-02-05  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in derives.c
	* src/derives.c: here.

2019-02-05  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes and refactoring in state.c
	* src/state.h, src/state.c: Comment changes.
	(transitions_to): Take a state* as argument.
	* src/lalr.h, src/lalr.c: Comment changes.
	(initialize_F): Use clear variable names.

2019-02-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix typos
	* tests/reduce.at: here.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	Merge branch maint
	* maint:
	  maint: post-release administrivia
	  version 3.3.2
	  style: minor fixes
	  NEWS: named constructors are preferable to symbol_type ctors
	  gram: fix handling of nterms in actions when some are unused
	  style: rename local variable
	  CI: update the ICC serial number for travis-ci.org

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	version 3.3.2
	* NEWS: Record release date.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	style: minor fixes
	* NEWS, src/reduce.c, src/reduce.h: Use 'nonterminal'.
	Fix comments.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: named constructors are preferable to symbol_type ctors
	Reported by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00043.html

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	gram: fix handling of nterms in actions when some are unused
	Since Bison 3.3, semantic values in rule actions (i.e., '$...') are
	passed to the m4 backend as the symbol number.  Unfortunately, when
	there are unused symbols, the symbols are renumbered _after_ the
	numbers were used in the rule actions.  As a result, the evaluation of
	the skeleton failed because it used non existing symbol numbers.
	Which is the happy scenario: we could use numbers of other existing
	symbols...

	Reported by Balázs Scheidler.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00044.html

	Translating the rule actions after the symbol renumbering moves too
	many parts in bison.  Relying on the symbol identifiers is more
	troublesome than it might first seem: some don't have an
	identifier (tokens with only a literal string), some might have a
	complex one (tokens with a literal string with characters special for
	M4).  Well, these are tokens, but nterms also have issues: "dummy"
	nterms (for midrule actions) are named $@32 etc. which is risky for
	M4.

	Instead, let's simply give M4 the mapping between the old numbers and
	the new ones.  To avoid confusion between old and new numbers, always
	emit pre-renumbering numbers as "orig NUM".

	* data/README: Give details about "orig NUM".
	* data/skeletons/bison.m4 (__b4_symbol, _b4_symbol): Resolve the
	"orig NUM".
	* src/output.c (prepare_symbol_definitions): Pass nterm_map to m4.
	* src/reduce.h, src/reduce.c (nterm_map): Extract it from
	nonterminals_reduce, to make it public.
	(reduce_free): Free it.
	* src/scan-code.l (handle_action_dollar): When referring to a nterm,
	use "orig NUM".
	* tests/reduce.at (Useless Parts): New, based Balázs Scheidler's
	report.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: strengthen some of them
	* tests/reduce.at: Check that the generated parsers are proper C.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	package: rename data/README as data/README.md
	So that it is properly rendered by online git services.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/symlist.c (symbol_list_free): New.

2019-02-03  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer snprintf to sprintf
	* src/symtab.c (dummy_symbol_get): There's no need for the buffer to
	be so big and static.
	Use snprintf for safety.

2019-02-02  Akim Demaille  <akim.demaille@gmail.com>

	style: comment and name changes
	* src/output.c (prepare_symbol_names): here.
	* src/reader.c: Remove obsolete comment.
	* src/scan-code.l: Use || for Boolean or.

2019-02-02  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* src/reader.c, src/scan-code.l: here.

2019-02-02  Akim Demaille  <akim.demaille@gmail.com>

	make: regenerate the example parsers when bison changes
	* Makefile.am (dependencies): Also depend on Bison's sources.

2019-02-02  Akim Demaille  <akim.demaille@gmail.com>

	style: rename local variable
	* src/reduce.c (nonterminals_reduce): Rename nontermmap as nterm_map.
	We will expose it.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	gram: detect and report (in debug traces) useless chain rules
	A rule is a useless chain iff it's a chain (aka unit, or injection)
	rule (i.e., the RHS has length 1), and it's useless (it has no used
	defined semantic action).

	* src/gram.h, src/gram.c (rule_useless_chain_p): New.
	(grammar_dump): Report useless chain rules.
	* tests/sets.at: Check the traces.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	lr(0): more debug traces
	* src/lr0.c (core_print, kernel_print): New.
	Use them.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	lr(0): remove useless conditional
	* src/lr0.c (new_itemsets): There's no harm in setting a Boolean
	several times.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	style: sort includes and avoid assignments
	* src/symtab.c: Sort includes.
	* src/gram.c (grammar_rules_print_xml): Avoid assignments to define
	'usefulness'.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	style: use item_rule
	* src/print-graph.c, src/print-xml.c: here.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	gram: factor the printing of items and the computation of their rule
	There are several places where we need to recover the rule from an
	item, let's factor that into item_rule.  We also want to print items
	in a nice way: we do it when generating the *output file, but it is
	also useful in debug messages.

	* src/gram.h, src/gram.c (item_rule, item_print): New.
	* src/print.c (print_core): Use them.
	* src/state.h, src/state.c: Propagate constness.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in print-xml
	* src/print-xml.c: here.

2019-01-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: check XML and dot reports
	* tests/report.at: Here.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	CI: update the ICC serial number for travis-ci.org
	On travis-ci.org, there are five concurrent slaves, instead of three
	on travis-ci.com.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	CI: update the ICC serial number for travis-ci.org
	On travis-ci.org, there are five concurrent slaves, instead of three
	on travis-ci.com.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* src/lr0.c, src/state.c, src/state.h: here.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	closure: initialize it once for all
	The memory allocated by 'closure' (and some data such as 'fderives')
	is used to computed a state's full itemset from its core.  This is
	needed during the construction of the LR(0) automaton, and the memory
	is reclaimed immediately afterwards.

	Unfortunately the reports (graph, text, xml) also need this
	information when describing the states with their full itemsets.  As a
	consequence the memory was allocated again, fderives computed again
	too, and more --trace reports are generated which only duplicate what
	was already reported.

	Stop that.  It does mean that we release the memory later (hence the
	peak memory usage is higher now), but I don't think that's a problem
	today.

	* src/lr0.c (generate_states): Don't call closure_free.
	* src/state.c (states_free): Do it here.
	(for symmetry with closure_new which is called in generate_states).
	* src/print-graph.c, src/print-xml.c, src/print.c: You can now expect
	the closure module to be functional.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	style: rename closure_* functions as closure_*
	This is more consistent with the other files.

	* closure.h, closure.c (new_closure, free_closure): Rename as...
	(closure_new, closure_free): this.
	Adjust dependencies.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	lr0: use a bitset for the set of "shiftable symbols"
	This will make it easier to add new elements (that might already be
	part of shift_symbol) without having to worry about the size of
	shift_symbol (which is currently a fixed size vector).

	I could not measure any significant differences in performances in the
	generation of LR(0) automaton (benched on gramamrs of Ruby, C, and C++).

	* src/lr0.c (shift_symbol): Make it a bitset.

2019-01-28  Akim Demaille  <akim.demaille@gmail.com>

	add -fsyntax-only
	When debugging Bison itself, this is very handy, especially when
	tweaking the frontend badly enough to break the backends. It can also
	be used to check a grammar.

	* src/getargs.h, src/getargs.c (feature_syntax_only): New.
	(feature_args, feature_types): Adjust.
	* src/main.c (main): Use it.

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	style: beware of collisions on status
	* src/symtab.h (status): Rename as...
	(declaration_status): this, to avoid colliding with status, the
	argument of 'usage'.
	'status' seems a tad too general to be used only here.

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	usage: document -ffixit
	* src/getargs.c (usage): Document -ffixit.
	Document the aliases of -f.

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in state.c and ielr.c

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	Merge branch 'maint'
	* maint:
	  maint: post-release administrivia
	  version 3.3.1
	  yacc: issue warnings, not errors, for Bison extensions
	  style: formatting changes in NEWS and complain.c
	  tests: don't depend on the user's definition of SHELL

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	version 3.3.1
	* NEWS: Record release date.

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	yacc: issue warnings, not errors, for Bison extensions
	Reported by Kiyoshi Kanazawa.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00029.html

	* src/getargs.c (getargs): Let --yacc imply -Wyacc, not -Werror=yacc.
	* tests/input.at: Adjust.
	* doc/bison.tex (Bison Options): Document.

2019-01-27  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes in NEWS and complain.c

2019-01-27  Kiyoshi Kanazawa  <yoi_no_myoujou@yahoo.co.jp>

	tests: don't depend on the user's definition of SHELL
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00031.html

	* examples/test (SHELL): Set it to /bin/sh.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	traces: always print the reduced grammar and fix it
	* src/gram.c (grammar_dump): Print the effective number first instead
	of last.  And fix it (remove the incorrect "+1").
	Use t/f for Booleans.
	* src/reduce.c: When asked, always print the reduced grammar, even if
	there was nothing useless.
	* tests/sets.at (Reduced Grammar): Check that.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	style: rename LR0.* as lr0.*
	Let's stick to lower case for file names.

	* src/LR0.h, src/LR0.c: Rename as...
	* src/lr0.h, src/lr0.c: these.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	style: rename print_graph.* as print-graph.*
	These are the only files with _.

	* src/print_graph.h, src/print_graph.c: Rename as...
	* src/print-graph.h, src/print-graph.c: these.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	style: various fixes
	* src/gram.c: Use consistent variable names.
	Prefix prefix unary operators.
	(grammar_dump): Use rule_rhs_length instead of duplicating it.
	* src/reduce.c: Avoid useless variables.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes in gram.h
	* src/gram.h: Shorten comments.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	version 3.3
	* NEWS: Record release date.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix comment
	* data/skeletons/c++.m4: here.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* data/skeletons/lalr1.cc: Add dnl.
	* data/skeletons/bison.m4: Comment the use of dnl.

2019-01-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: run the printer/destructor test on glr.cc
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust for
	glr.cc, and use it.

2019-01-24  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-01-22  Akim Demaille  <akim.demaille@gmail.com>

	--update: when used, do not generate the output files
	It is inconvenient that we also generate the output files when we
	update the grammar file, and it's somewhat unexpected.  Let's not do
	that.

	* src/main.c (main): Skip generation when --update is passed.
	* src/getargs.c (usage): Update the help message.
	* doc/bison.texi (Bison Options): Likewise.
	* tests/input.at: Check that we don't generate the output.

2019-01-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: let redundant definitions be only warnings
	After all, this is clearly harmless.

	* src/muscle-tab.c (muscle_percent_define_insert): Let equal
	definitions of a %define variable be only a warning.
	Adjust test cases.

2019-01-22  Akim Demaille  <akim.demaille@gmail.com>

	tests: improve check for updated variable names
	* tests/input.at ("%define" backward compatibility): Don't define
	twice "api.namespace", so that we don't get an error, which stops the
	process too soon to see an error about the value given to
	'lr.keep-unreachable-state'.

2019-01-21  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: remove redundancy
	Don't repeat the name of the warning in the sub messages.  E.g.,
	remove the second "[-Wother]" in the following message

	    foo.y:2.1-27: warning: %define variable 'parse.error' redefined [-Wother]
	     %define parse.error verbose
	     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
	    foo.y:1.1-27:     previous definition [-Wother]
	     %define parse.error verbose
	     ^~~~~~~~~~~~~~~~~~~~~~~~~~~

	* src/complain.c (error_message): Don't print the warning type when
	it's indented.
	Adjust test cases.

2019-01-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: better "scope" a workaround for GCC
	* data/skeletons/lalr1.cc: Enable it only for GCC 4.8 and before.

2019-01-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: address -Wweak-vtables warnings
	Reported by Derek Clegg
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00021.html

	    aux/parser-internal.h:429:12: error: 'syntax_error' has no out-of-line virtual
	         method definitions; its vtable will be emitted in every translation unit
	         [-Werror,-Wweak-vtables]
	       struct syntax_error : std::runtime_error

	To avoid this warning, we need syntax_error to have a virtual function
	defined in a compilation unit.  Let it be the destructor.  To comply
	with C++98, this dtor should be 'throw()'.  Merely making YY_NOEXCEPT
	be 'throw()' in C++98 triggers
	errors (http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00022.html),
	so let's introduce YY_NOTHROW and flag only ~syntax_error with it.

	Also, since we now have an explicit dtor, we need to provide an copy
	ctor.

	* configure.ac (warn_cxx): Add -Wweak-vtables.
	* data/skeletons/c++.m4 (YY_NOTHROW): New.
	(syntax_error): Declare the dtor, and define the copy ctor.
	* data/skeletons/glr.cc, data/skeletons/lalr1.cc (~syntax_error):
	Define.

2019-01-20  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer bool to char
	* src/state.h, src/state.c (state::consistent): Make it a bool.
	Adjust dependencies.

2019-01-20  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: be more alike lalr1.cc

2019-01-20  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* data/skeletons/c++.m4: Un-remove an end-of-line.

2019-01-20  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: fixes

2019-01-19  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-01-19  Akim Demaille  <akim.demaille@gmail.com>

	version 3.2.91
	* NEWS: Record release date.

2019-01-18  Akim Demaille  <akim.demaille@gmail.com>

	style: various fixes
	Some reported by syntax-check.

	* po/POTFILES.in: Add fixits.cc.
	* src/muscle-tab.c: Don't cast for free.
	* src/files.c: Reduce scopes.
	* cfg.mk: We need the cast for free in muscle_percent_define_insert.

2019-01-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: document -ffixit and --update
	* doc/bison.texi (Bison Options): here.

2019-01-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: style fixes
	* doc/bison.texi: Use @kbd where appropriate.
	Update ^~~~ marks for caret-errors.
	* build-aux/cross-options.pl: Do not add quotes to %define's argument.

2019-01-18  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update for fixits and --update

2019-01-17  Akim Demaille  <akim.demaille@gmail.com>

	fixits: handle duplicates of %name-prefix
	The test case "Deprecated directives" (currently 56) no longer emits
	warnings after 'bison -u'!

	* src/files.h, src/files.c (spec_name_prefix_loc): New.
	* src/parse-gram.y (handle_name_prefix): Emit fixits for duplicate
	%name-prefix.
	* tests/input.at (Deprecated directives): Adjust.

2019-01-17  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-01-17  Akim Demaille  <akim.demaille@gmail.com>

	fixits: handle %file-prefix
	* src/files.h, src/files.c (spec_file_prefix_loc): New.
	* src/scan-gram.l (%file-prefix): Delegate diagnostics to...
	* src/parse-gram.y (handle_file_prefix): here.
	* src/complain.c (duplicate_directive): Quote the directive.
	* tests/input.at: Adjust.

2019-01-17  Akim Demaille  <akim.demaille@gmail.com>

	fixits: handle per-rule duplicates
	* src/complain.c (duplicate_rule_directive): Here.
	* tests/actions.at (Invalid uses of %empty): Check it.

2019-01-17  Akim Demaille  <akim.demaille@gmail.com>

	fixits: fix warnings about duplicates
	* src/complain.c (duplicate_directive): Fix the complaint level.
	* tests/input.at: Adjust.

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: properly indent the "previous declaration" message
	* src/complain.c (duplicate_directive, duplicate_rule_directive):
	Here.

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	style: rename some functions for consistency
	"handle_" is the prefix used in scan-code.l for instance.

	* src/parse-gram.y (do_error_verbose, do_name_prefix, do_require)
	(do_skeleton, do_yacc):
	Rename as...
	(handle_error_verbose, handle_name_prefix, handle_require)
	(handle_skeleton, handle_yacc):
	these.

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	fixits: report duplicate %yacc directives
	We should use -ffixit and --update to clean files with duplicate
	directives.  And we should complain only once about duplicate obsolete
	directives: keep only the "duplicate" warning.  Let's start with %yacc.

	For instance on:

	    %fixed-output_files
	    %fixed-output-files
	    %yacc
	    %%
	    exp:

	This run of bison:

	    $ bison /tmp/foo.y -u
	    foo.y:1.1-19: warning: deprecated directive, use '%fixed-output-files' [-Wdeprecated]
	     %fixed-output_files
	     ^~~~~~~~~~~~~~~~~~~
	    foo.y:2.1-19: warning: duplicate directive [-Wother]
	     %fixed-output-files
	     ^~~~~~~~~~~~~~~~~~~
	    foo.y:1.1-19: previous declaration
	     %fixed-output_files
	     ^~~~~~~~~~~~~~~~~~~
	    foo.y:3.1-5: warning: duplicate directive [-Wother]
	     %yacc
	     ^~~~~
	    foo.y:1.1-19: previous declaration
	     %fixed-output_files
	     ^~~~~~~~~~~~~~~~~~~
	    bison: file 'foo.y' was updated (backup: 'foo.y~')

	gives:

	    %fixed-output-files
	    %%
	    exp:

	* src/location.h, src/location.c (location_empty): New.
	* src/complain.h, src/complain.c (duplicate_directive): New.

	* src/getargs.h, src/getargs.c (yacc_flag): Instead of a Boolean, be
	the location of the definition.
	Update dependencies.

	* src/scan-gram.l (%yacc, %fixed-output-files): Move the handling of
	its warnings to...
	* src/parse-gram.y (do_yacc): This new function.

	* tests/input.at (Deprecated Directives): Adjust expectations.

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	style: rename duplicate_directive as duplicate_rule_directive
	* src/complain.h, src/complain.c: here.
	Adjust callers.

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	fixits: suggest running --update if there are fixits
	* src/fixits.h, src/fixits.c (fixits_empty): New.
	* src/complain.c (deprecated_directive): Register the Wdeprecated
	fixits only if -Wdeprecated was enabled, so that we don't apply
	updates if the user didn't ask for them.
	* src/main.c (main): If there were fixits, issue a warning suggesting
	running with --update.
	Free uniqstrs after the fixits, since the latter use the former.
	* tests/headers.at, tests/input.at: Update expectations.

2019-01-16  Akim Demaille  <akim.demaille@gmail.com>

	fixits: avoid generating empty lines
	* src/fixits.c (fixits_run): If erase the content of a line, also
	erase the following \n.
	* tests/input.at (Deprecated directives): Update expectations.

2019-01-15  Akim Demaille  <akim.demaille@gmail.com>

	configure: don't try to run C++ warnings on C
	Reported by Derek Clegg.
	https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00066.html

	* configure.ac: here.

2019-01-15  Akim Demaille  <akim.demaille@gmail.com>

	c, c++: avoid implicit fall-throw
	Reported by Derek Clegg.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00004.html

	* configure.ac (warn_common): Add -Wimplicit-fallthrough.
	This does trigger failures in the test suite.
	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
	* data/skeletons/yacc.c, tests/c++.at:
	Make fall-throws explicit.

2019-01-15  Akim Demaille  <akim.demaille@gmail.com>

	c++: avoid -Wundefined-func-template warnings from clang
	Reported by Derek Clegg.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00006.html

	Clang does not like this:

	    template <typename D>
	    struct basic_symbol : D
	    {
	      basic_symbol();
	    };

	    struct by_type {};

	    struct symbol_type : basic_symbol<by_type>
	    {
	      symbol_type(){}
	    };

	It gives:

	    $ clang++-mp-7.0 -Wundefined-func-template foo.cc -c
	    foo.cc:11:3: warning: instantiation of function 'basic_symbol<by_type>::basic_symbol'
	                 required here, but no definition is available [-Wundefined-func-template]
	      symbol_type(){}
	      ^
	    foo.cc:4:3: note: forward declaration of template entity is here
	      basic_symbol();
	      ^
	    foo.cc:11:3: note: add an explicit instantiation declaration to suppress this warning
	                 if 'basic_symbol<by_type>::basic_symbol' is explicitly instantiated in
	                 another translation unit
	      symbol_type(){}
	      ^
	    1 warning generated.

	The same applies for the basic_symbol's destructor and `clear()`.

	* configure.ac (warn_cxx): Add -Wundefined-func-template.
	This triggered one failure in the test suite:
	* tests/headers.at (Sane headers): here, where we check that we can
	compile the generated headers in other compilation units than the
	parser's.
	Add a variant type to make sure that basic_symbol and symbol_type are
	properly generated in this case.
	* data/skeletons/c++.m4 (basic_symbol): Inline the definitions of the
	destructor and of `clear` in the class definition.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	Revert the last two commits
	They should not have been pushed, sorry about that.

	This reverts
	- commit 8575bd06ae6e65f3a30b21a3e022a968e4c7ae7a.
	- commit 55bf52860eac5c1394dc344a691220272df32b09.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	c++: avoid warnings about extraneous semi-colons
	Reported by Derek Clegg.

	* configure.ac (warn_common): Add -Wextra-semi.
	* data/skeletons/c++.m4: Remove extraneous semi-colon.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	WIP

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: add fixit support for duplicate removal
	* src/muscle-tab.c (muscle_percent_define_insert): Register a fixit
	for duplicate removal.
	* tests/input.at: Adjust expectations.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: improve the accuracy for %error-verbose
	Avoid duplicate warnings about %error-verbose, once for deprecation,
	another for duplicate.  Keep only the duplicate warning for the second
	occurrence of %error-verbose.

	This will help removal fixits.

	* src/scan-gram.l (%error-verbose): Return as a PERCENT_ERROR_VERBOSE
	token.
	* src/parse-gram.y (do_error_verbose): New.
	Use it.
	* src/muscle-tab.c (muscle_percent_variable_update): Handle pseudo
	variables such as %error-verbose.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: avoid duplicate warnings for deprecated directives
	Currently, on

	    %define parser_class_name "Parser"
	    %define parser_class_name "Parser"
	    %%
	    exp:;

	we issue:

	    foo.y:1.9-25: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated]
	     %define parser_class_name "Parser"
	             ^~~~~~~~~~~~~~~~~
	    foo.y:2.9-25: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated]
	     %define parser_class_name "Parser"
	             ^~~~~~~~~~~~~~~~~
	    foo.y:2.9-25: error: %define variable 'api.parser.class' redefined
	     %define parser_class_name "Parser"
	             ^~~~~~~~~~~~~~~~~
	    foo.y:1.9-25:     previous definition
	     %define parser_class_name "Parser"
	             ^~~~~~~~~~~~~~~~~

	Let's get rid of the second warning about the deprecated variable
	parser_class_name.  This is noise, but it will also be a problem with
	fixits for removing duplicates, as we will first generate the update,
	and then it's too late to remove it: fixits do not edit the result of
	previous fixits.

	So generate this instead:

	    foo.y:1.1-34: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated]
	     %define parser_class_name "Parser"
	     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    foo.y:2.1-34: error: %define variable 'api.parser.class' redefined
	     %define parser_class_name "Parser"
	     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    foo.y:1.1-34:     previous definition
	     %define parser_class_name "Parser"
	     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

	* src/muscle-tab.c (muscle_percent_variable_update): Pass the warning
	to the caller, instead of issuing it.
	(muscle_percent_define_insert): Issue this warning only if we don't
	have to complain about a duplicate definition.
	* tests/input.at: Adjust expectations.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: update the grammar file
	Let's use the fixits to actually update the grammar files.

	* src/getargs.h, src/getargs.c (update_flag): New.
	* src/fixits.h, src/fixits.c (fixits_run): New.
	* src/main.c (main): Invoke fixits_run when --update is passed.
	* tests/input.at (Deprecated directives): Check --update.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: improve accuracy for deprecated %define variables
	* src/parse-gram.y: Use the location of the whole definition to record
	the location of a %define variable, instead of just the name of the
	variable.
	Adjust tests.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: keep the fixits
	Introduce proper support for fixits, instead of just printing them on
	demand.

	* bootstrap.conf: We need gnulib's xlists.
	* src/fixits.h, src/fixits.c: New.
	* src/complain.c (deprecated_directive): Use fixits_register.
	* src/main.c (main): Use fixits_free.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: add -ffixit support for deprecated features
	Issue directives for IDE/editors to fix the source file.
	http://clang.llvm.org/docs/UsersManual.html#cmdoption-fdiagnostics-parseable-fixits

	Do it for deprecated features.  For instance:

	    $ cat foo.y
	    %error-verbose

	    %name-prefix = "foo"
	    %name-prefix="bar"
	    %define parser_class_name "Parser"

	    %%
	    exp:;

	    $ LC_ALL=C ./_build/8d/tests/bison -ffixit /tmp/foo.yy
	    /tmp/foo.yy:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
	     %error-verbose
	     ^^^^^^^^^^^^^^
	    fix-it:"/tmp/foo.yy":{1:1-1:15}:"%define parse.error verbose"
	    /tmp/foo.yy:3.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated]
	     %name-prefix = "foo"
	     ^^^^^^^^^^^^^^^^^^^^
	    fix-it:"/tmp/foo.yy":{3:1-3:21}:"%define api.prefix {foo}"
	    /tmp/foo.yy:4.1-18: warning: deprecated directive, use '%define api.prefix {bar}' [-Wdeprecated]
	     %name-prefix="bar"
	     ^^^^^^^^^^^^^^^^^^
	    fix-it:"/tmp/foo.yy":{4:1-4:19}:"%define api.prefix {bar}"
	    /tmp/foo.yy:5.9-25: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated]
	     %define parser_class_name "Parser"
	             ^^^^^^^^^^^^^^^^^
	    fix-it:"/tmp/foo.yy":{5:9-5:26}:"%define api.parser.class {Parser}"
	    /tmp/foo.yy:5.9-25: error: %define variable 'api.parser.class' is not used
	     %define parser_class_name "Parser"
	             ^^^^^^^^^^^^^^^^^

	* src/getargs.h, src/getargs.c (feature_fixit_parsable): New.
	(feature_types, feature_args): Use it.
	* src/complain.c (deprecated_directive): Use it.

	* tests/input.at: Check it.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: prefer ^~~~ to ^^^^ to underline code
	That's what both GCC and Clang do, and it is indeed much nicer to
	read.  From:

	    foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
	     %error-verbose
	     ^^^^^^^^^^^^^^
	    foo.y:4.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated]
	     %name-prefix = "foo"
	     ^^^^^^^^^^^^^^^^^^^^

	to:

	    foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
	     %error-verbose
	     ^~~~~~~~~~~~~~
	    foo.y:4.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated]
	     %name-prefix = "foo"
	     ^~~~~~~~~~~~~~~~~~~~

	* src/location.c (location_caret): Use ^~~~.
	Adjust tests expectations.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: improve them for %name-prefix
	Currently the diagnostics for %name-prefix are not precise enough.  In
	particular, they does not show that braces must be used instead of
	quotes.

	Before:

	    foo.y:3.1-14: warning: deprecated directive, use '%define api.prefix' [-Wdeprecated]
	     %name-prefix = "foo"
	     ^^^^^^^^^^^^^^

	After:

	    foo.y:3.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated]
	     %name-prefix = "foo"
	     ^^^^^^^^^^^^^^^^^^^^

	To do this we need the value passed to %name-prefix, so move the
	warning from the scanner to the parser.

	Accuracy will be very important for the forthcoming changes.

	* src/parse-gram.y (do_name_prefix): New.
	(PERCENT_NAME_PREFIX): Have a semantic value: the raw source, with
	possibly underscores, equal sign, and spaces.  This is used to provide
	a more accurate message.  It does not take comments into account,
	but...
	* src/scan-gram.l (%name-prefix): Delegate the warnings to the parser.

	* tests/headers.at, tests/input.at: Adjust expectations.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: style: avoid allocating memory when not needed
	* src/muscle-tab.c (muscle_percent_variable_update): Avoid allocating
	memory when it is not needed, which should be most of the time (when
	there's no update to perform).
	Adjust callers.

2019-01-14  Akim Demaille  <akim.demaille@gmail.com>

	c++: avoid warnings about extraneous semi-colons
	Reported by Derek Clegg.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00005.html

	* configure.ac (warn_cxx): Add -Wextra-semi.
	* data/skeletons/c++.m4: Remove extraneous semi-colon.

2019-01-13  Akim Demaille  <akim.demaille@gmail.com>

	style: minor changes
	* src/muscle-tab.c: Sort alphabetically.
	* src/scan-gram.l: Reduce scopes.
	Initialize variables.

2019-01-13  Akim Demaille  <akim.demaille@gmail.com>

	c++: beware of -Wshadow
	This line:

	    slice<stack_symbol_type, stack_type> slice (yystack_, yylen);

	triggers warnings:

	    parse.h:1790:11: note: shadowed declaration is here

	Reported by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00002.html

	* configure.ac (warn_c): Move -Wshadow to...
	(warn_common): here.
	* data/skeletons/stack.hh (slice): Define as an inner class of stack.
	* data/skeletons/lalr1.cc: Adjust.
	Rename the variable as 'range' instead of 'slice'.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	version 3.2.90
	* NEWS: Record release date.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	yacc: fix relocatability
	* src/yacc.in (prefix): Define it, as it's typically needed for
	exec_prefix.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	syntax-check: adjust paths
	* cfg.mk: here.
	(require_config_h): New.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting clean up
	* data/skeletons/d.m4, examples/d/calc.y, src/output.c,
	* src/parse-gram.y:
	No tab, no trailing spaces.
	Reported by syntax-check.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	po: remove bitset/stats.c
	* po/POTFILES.in: here.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix usage of AT_PARSER_CHECK
	The parser must be the first command.  Caught by syntax-check.

	* tests/c++.at: here.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	style: isolate the creation of tname in a function
	* src/output.c (prepare_symbol_names): New.
	Use it.

2019-01-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: formatting changes
	* tests/input.at, tests/regression.at: here.

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	doc: use @option consistently
	* doc/bison.texi: Use @option, not @code, for options.

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: avoid negated if
	* data/skeletons/yacc.c: Prefer a "direct" conditional.

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	package: bump copyrights to 2019

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	java/d: rename some %define variables for consistency
	See 890ee8a1fd288b3cc1c21c49ea0ece696ef40565 and
	https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00024.html.

	* data/skeletons/d.m4, data/skeletons/java.m4
	(abstract, annotations, extends, final, implements, public, strictfp):
	Rename as...
	(api.parser.abstract, api.parser.annotations, api.parser.extends)
	(api.parser.final, api.parser.implements, api.parser.public)
	(api.parser.strictfp):
	these.

	* src/muscle-tab.c (muscle_percent_variable_update): Ensure backward
	compatibility.

	* doc/bison.texi, examples/d/calc.y, examples/java/Calc.y,
	tests/input.at: Adjust.

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	java/d: remove useless macros
	There are many macros that are defined and used just
	once (b4_public_if, b4_abstract_if, etc.).  That's overkill.  Rather,
	let's define a macro to build the "public class YYParser" line.

	It appears that the same syntax with "extends", "abstract", etc. is
	implemented in the D parser, which looks very fishy...

	* data/skeletons/d.m4, data/skeletons/java.m4 (b4_public_if)
	(b4_abstract_if, b4_final_if, b4_strictfp_if): Replace with
	(b4_parser_class_declaration): this.
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: Adjust.

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	style: clean tests
	* tests/named-refs.at: here.

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	In particular, report uninitialized submodules instead of breaking
	symlinks.

	For reports, see
	https://lists.gnu.org/archive/html/bug-bison/2011-05/msg00012.html
	https://lists.gnu.org/archive/html/help-bison/2018-12/msg00034.html

	For a fix, see
	https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00024.html

2019-01-05  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: fix the handling of syntax_error from the scanner
	Commit 90a8537e6287f92fb3d5be0258a69247a742f12e was right, but issued
	two error messages.  Commit 80ef7e7639f99618bee490b2dea02b5fd9ab28e5
	tried to address that by mapping yychar and yytoken to empty, but that
	completely breaks the invariants of glr.c.  In particular, yygetToken
	can be called repeatedly and is expected to return the latest result,
	unless yytoken is YYEMPTY.  Since the previous attempt was "recording"
	that the token was coming from an exception by setting it to YYEMPTY,
	instead of getting again the faulty token, we fetched another one.

	Rather, revert to the first approach: map yytoken to "invalid token",
	but record in yychar the fact that we come from an exception thrown in
	the scanner.

	* data/skeletons/glr.c (YYFAULTYTOK): New.
	(yygetToken): Use it to record syntax errors from the scanner.
	* tests/c++.at (Syntax error as exception): In addition to checking
	syntax_error with error recovery, make sure it also behaves as
	expected without.

2019-01-03  Akim Demaille  <akim.demaille@gmail.com>

	clearly deprecate %name-prefix
	* src/scan-gram.l (%name-prefix): Issue a deprecation warning.

	* tests/calc.at, tests/headers.at, tests/input.at, tests/java.at,
	* tests/javapush.at, tests/local.at: Adjust expectations.
	Or disable -Wdeprecated.

	* doc/bison.texi: Document that %name-prefix is replaced by %define
	api.prefix.

2019-01-03  Akim Demaille  <akim.demaille@gmail.com>

	examples: clean up the Java/D examples
	* examples/java/Calc.y: Fix indentation.
	Sort.
	Don't use %name-prefix, since api.parser.class is already defined.
	* examples/d/calc.y: Likewise.

2019-01-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: here.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	rename parser_class_name as api.parser.class
	The previous name was historical and inconsistent.

	* src/muscle-tab.c (define_directive): Use the proper value passing
	syntax, based on the muscle kind.
	(muscle_percent_variable_update): Use the right value passing syntax.
	Migrate from parser_class_name to api.parser.class.

	* data/skeletons: Migrate from parser_class_name to api.parser.class.

	* doc/bison.texi (%define Summary): Document both parser_class_name
	and api.parser.class.
	Promote the latter over the former.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* src/scan-gram.l: Here.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	style: glr.c: prefer returning a value rather than passing pointers
	This is very debatable.  This function is not pure at all, so it could
	stick to returning void: that's a common coding style to tell the
	difference between "real" (pure) functions and side-effecting
	subroutines.  However, we already have this style elsewhere (e.g.,
	yylex), and I feel the callers are somewhat nice to read this way.

	* data/skeletons/glr.c (yygetLRActions): Return the action rather than
	passing by pointer.
	While at it, fix type of yytoken.
	Adjust callers.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: don't issue two error messages when syntax_error is thrown
	Reported by Askar Safin.
	https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00000.html

	* data/skeletons/glr.c (yygetToken): Return YYEMPTY when an exception
	is thrown.
	* data/skeletons/lalr1.cc: Log when an exception is caught.
	* tests/c++.at (Syntax error as exception): Be sure to recover from
	error before triggering another error.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: shorten b4_parser_class_name to b4_parser_class
	* skeletons/c++.m4, skeletons/d.m4, skeletons/glr.c, skeletons/glr.cc,
	* skeletons/java.m4, skeletons/lalr1.cc, skeletons/lalr1.d,
	* skeletons/lalr1.java: Here.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: remove duplicate definition of YYLLOC_DEFAULT
	It's already provided by glr.c.

	* data/skeletons/glr.cc (b4_post_prologue): Here.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	style: sort includes in scanners
	* src/scan-code.l, src/scan-gram.l, src/scan-skel.l: Reorder includes.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes in the doc
	* doc/bison.texi: here.

2019-01-02  Akim Demaille  <akim.demaille@gmail.com>

	style: remove stray empty lines
	* data/skeletons/glr.c, data/skeletons/glr.cc: here.
	* data/skeletons/bison.m4 (b4_glr_cc_if): Move it here.

2018-12-31  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: support syntax_error exceptions
	Kindly requested by Аскар Сафин (Askar Safin).
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00033.html

	* data/skeletons/glr.c (b4_glr_cc_if): New.
	Use it.
	(yygetToken): Catch syntax_errors.
	* data/skeletons/glr.cc (YY_EXCEPTIONS): New.
	* tests/c++.at: Check it.

2018-12-31  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: factor the calls to yylex
	The call protocol of yylex is quite complex, and repeated three
	times.  Let's factor it.

	* data/skeletons/glr.c (yygetToken): New.
	Use it.

2018-12-31  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in glr.c
	* data/skeletons/glr.c (yyrecoverSyntaxError): here.

2018-12-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: refactor

2018-12-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: inline the implementation of syntax_error in its definition
	This way, it is easier to make sure its implementation is available in
	glr.cc too, which is not the case currently.

	* data/skeletons/c++.m4 (b4_public_types_define): Move the
	implementation of syntax_error...
	(b4_public_types_declare): here.

2018-12-29  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* tests/input.at: here.

2018-12-29  Akim Demaille  <akim.demaille@gmail.com>

	symbol: don't crash on symbol without content
	When running with --trace=parse, we may crash.

	* src/symtab.c (symbol_print): Avoid that.

2018-12-28  Akim Demaille  <akim.demaille@gmail.com>

	README-hacking: update

2018-12-28  Akim Demaille  <akim.demaille@gmail.com>

	reader: get rid of a useless function
	Useless since 58d7a1a1c7497ba51a35fcf991c5b047f692fe18 (2006).

	* src/parse-gram.y, src/reader.h (token_name): Remove, unused.

2018-12-27  Akim Demaille  <akim.demaille@gmail.com>

	parsers: fix minor stylistic issues
	* data/skeletons/variant.hh (b4_token_constructor_declare): Remove,
	unused since the previous commit.
	Fix indentation issues.
	* data/skeletons/c++.m4: Fix indentation issues.

2018-12-27  Akim Demaille  <akim.demaille@gmail.com>

	c++: check several parsers in the same program
	* tests/local.at (AT_LOCATION_TYPE_IF): Turn into...
	(AT_LOCATION_TYPE_SPAN_IF): this.
	Adjust dependencies.
	* tests/headers.at (Several parsers): Add another C++ parser,
	which uses the first C++ parser's locations.

2018-12-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: variants: fuse declarations and definitions
	We used to create a short definition of yy::parser with all the
	implementations of its member functions outside.  But yy::parser is no
	longer short and simple to read.  Maintaining each function twice is
	painful: a lot of redundancy but different indentation levels, output
	which depends on whether we are in a header or not (see
	d132c2d5455135f63a7497c38358eadd6e3a6af8), etc.

	Let's simplify this and put the implementations into the class
	definition itself.

	Discussed in this monologue:
	https://lists.gnu.org/archive/html/bison-patches/2018-12/msg00058.html.

	* data/skeletons/c++.m4, data/skeletons/lalr1.cc,
	* data/skeletons/variant.hh (b4_basic_symbol_constructor_define)
	(_b4_token_constructor_declare, b4_token_constructor_declare)
	Merge into...
	(b4_basic_symbol_constructor_define, _b4_token_constructor_define)
	(b4_token_constructor_define): these.

2018-12-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix dependencies
	Commit 112ccb5ed73ba5c64b0b5300d8b9b686f02f094c moved the skeletons
	from dist_pkgdata_DATA to dist_skeletons_DATA, hence broke the dependencies.

	* Makefile.am (dependencies): New.
	Use it where appropriate.

2018-12-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: move stack<T> inside yy::parser
	We used to define such auxiliary structures outside the class, mainly
	as a matter of style to keep the definition of yy::parser short and
	simple.  However, now there's a lot more code generated inside the
	class definition (e.g., all the token constructors), so the
	readability no longer applies.

	However, if we move stack (and slice) inside yy::parser, then it
	should no longer be needed to change the namespace to have multiple
	parsers: changing the class name should suffice.

	One common argument against inner classes is that they code bloat.  It
	hardly applies here, since typically different parsers will have
	different semantic value types, hence different actual stack types.

	* data/skeletons/lalr1.cc: Invoke b4_stack_define inside yy::parser.

2018-12-25  Akim Demaille  <akim.demaille@gmail.com>

	package: make bison a relocatable package
	Suggested by David Barto
	https://lists.gnu.org/archive/html/help-bison/2015-02/msg00004.html
	and Victor Zverovich.
	https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00121.html

	This is very easy to do, thanks to work by Bruno Haible in gnulib.
	See "Supporting Relocation" in gnulib's documentation.

	* bootstrap.conf: We need relocatable-prog and relocatable-script (for yacc).

	* src/yacc.in: New.
	* configure.ac, src/local.mk: Instantiate it.
	* src/main.c, src/output.c (main, pkgdatadir): Use relocatable2.

	* doc/bison.texi (FAQ): Document it.

2018-12-25  Akim Demaille  <akim.demaille@gmail.com>

	README: wrap paragraphs

2018-12-25  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-12-25  Akim Demaille  <akim.demaille@gmail.com>

	package: move skeletons into data/skeletons
	* data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-like.m4,
	* data/c-skel.m4, data/c.m4, data/d-skel.m4, data/d.m4, data/glr.c,
	* data/glr.cc, data/java-skel.m4, data/java.m4, data/lalr1.cc,
	* data/lalr1.d, data/lalr1.java, data/location.cc, data/stack.hh,
	* data/variant.hh, data/yacc.c:
	Move to...
	* data/skeletons: here.
	Use b4_skeletonsdir instead of b4_pkgdatadir.

	* data/local.mk, src/output.c: Adjust.

2018-12-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: style: use consistently this/that instead of this/other
	* data/lalr1.cc, data/variant.hh: here.

2018-12-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: also provide a copy constructor for symbol_type
	Suggested by Wolfgang Thaller.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00081.html

	* data/c++.m4 (basic_symbol, by_type): Instead of provide either move
	or copy constructor, always provide the copy one.
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Check it.

2018-12-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix double free when a symbol_type was moved
	Currently the following piece of code crashes (with parse.assert),
	because we don't record that s was moved-from, and we invoke its dtor.

	    {
	      auto s = parser::make_INT (42);
	      auto s2 = std::move (s);
	    }

	Reported by Wolfgang Thaller.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00077.html

	* data/c++.m4 (by_type): Provide a move-ctor.
	(basic_symbol): Be sure not to read a moved-from value.
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Check this case.

2018-12-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: style: improve tests
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Provide better
	assertions.
	Use them.
	Avoid useless Bison invocations.

2018-12-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: style: use consistently this/that instead of this/other
	* data/c++.m4: here.

2018-12-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: fixes
	* tests/c++.at: Use AT_YYLEX_PROTOTYPE etc.
	Which requires that we use the same argument names (lvalp, etc.).
	* tests/local.at (AT_NAME_PREFIX): Fix regex.

2018-12-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: style: rename a few macros for clarity
	* data/c++.m4, data/lalr1.cc, data/variant.hh:
	s/b4_symbol_constructor/b4_token_constructor/g, as this is really what
	is being defined.

2018-12-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: exhibit a safe symbol_type
	Instead of introducing make_symbol (whose name, btw, somewhat
	infringes on the user's "name space", if she defines a token named
	"symbol"), let's make the construction of symbol_type safer, using
	assertions.

	For instance with:

	    %token ':' <std::string> ID <int> INT;

	generate:

	    symbol_type (int token, const std::string&);
	    symbol_type (int token, const int&);
	    symbol_type (int token);

	It does mean that now named token constructors (make_ID, make_INT,
	etc.) go through a useless assert, but I think we can ignore this: I
	assume any decent compiler will inline the symbol_type ctor inside the
	make_TOKEN functions, which will show that the assert is trivially
	verified, hence I expect no code will be emitted for it.  And anyway,
	that's an assert, NDEBUG controls it.

	* data/c++.m4 (symbol_type): Turn into a subclass of
	basic_symbol<by_type>.
	Declare symbol constructors when variants are enabled.
	* data/variant.hh (_b4_type_constructor_declare)
	(_b4_type_constructor_define): Replace with...
	(_b4_symbol_constructor_declare, _b4_symbol_constructor_def): these.
	Generate symbol_type constructors.
	* doc/bison.texi (Complete Symbols): Document.
	* tests/types.at: Check.

2018-12-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: provide symbol constructors per type
	On

	    %token <int> FOO BAR

	we currently generate make_FOO(int) and make_BAR(int).  However, in
	order to factor their scanners, some users would also like to have
	make_symbol(tok, int), where tok is FOO or BAR.  To ensure type
	safety, add assertions that do check that value type and token type
	match.  Bind this assertion to the parse.assert %define variable.

	Suggested by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00034.html
	Should also match expectations from Аскар Сафин.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00023.html

	* data/variant.hh: Use b4_token_visible_if where applicable.
	(_b4_type_constructor_declare, _b4_type_constructor_define): New.
	Use them.

2018-12-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: style changes
	* data/c++.m4, data/variant.hh: Improve layout of the generated code.
	Avoid casts.
	(_b4_symbol_constructor_declare, _b4_symbol_constructor_define): Rename
	as...
	(_b4_token_maker_declare, _b4_token_maker_define): these.
	* tests/types.at: Improve pair printing.

2018-12-22  Akim Demaille  <akim.demaille@gmail.com>

	style: simplify tests
	* tests/types.at: Simplify C++ instantiations.

2018-12-19  Akim Demaille  <akim.demaille@gmail.com>

	style: use b4_token_visible_if
	And other formatting/comment changes.

	* data/variant.hh: Here.

2018-12-19  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-12-19  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix token constructors for types with commas
	Bitten by macros, again.
	See 680b715518795c8648360fcf05f3772c04d2eed2.

	* data/variant.hh (_b4_symbol_constructor_declare)
	(_b4_symbol_constructor_define): Do not use user types, which can
	include commas as in `std::pair<int, int>`, to macros.

	* tests/local.at: Adjust the lex related macros to support the
	case of token constructors.
	* tests/types.at: Also check token constructors on types with commas.

2018-12-19  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-12-17  Akim Demaille  <akim.demaille@gmail.com>

	symbols: document the overhaul of symbol declarations
	* doc/bison.texi (Symbol Decls): New.

2018-12-16  Akim Demaille  <akim.demaille@gmail.com>

	symbols: check more invalid declarations
	* tests/input.at (Invalid %nterm uses): Rename as...
	(Invalid symbol declarations): this.
	Extend.

2018-12-16  Akim Demaille  <akim.demaille@gmail.com>

	symbols: check the previous commit
	* tests/input.at (Symbol declarations): New.

2018-12-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-12-16  Akim Demaille  <akim.demaille@gmail.com>

	symbols: clean up their parsing
	Prompted by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html

	We have four classes of directives that declare symbols: %nterm,
	%type, %token, and the family of %left etc.  Currently not all of them
	support the possibility to have several type tags (`<type>`), and not
	all of them support the fact of not having any type tag at all
	(%type).  Let's unify this.

	- %type
	  POSIX Yacc specifies that %type is for nonterminals only.  However,
	  some Bison users want to use it for both tokens and nterms
	  (actually, Bison's own grammar does this in several places, e.g.,
	  CHAR).  So it should accept char/string literals.

	  As a consequence cannot be used to declare tokens with their alias:
	  `%type foo "foo"` would be ambiguous (are we defining foo = "foo",
	  or are these two different symbols?)

	  POSIX specifies that it is OK to use %type without a type tag.  I'm
	  not sure what it means, but we support it.

	- %token
	  Accept token declarations with number and string literal:
	  (ID|CHAR) NUM? STRING?.

	- %left, etc.
	  They cannot be the same as %token, because we accept to declare the
	  symbol with %token, and to then qualify its precedence with %left.
	  Then `%left foo "foo"` would also be ambiguous: foo="foo", or two
	  symbols.

	  They cannot be simply a list of identifiers, but POSIX Yacc says we
	  can declare token numbers here.  I personally think this is a bad
	  idea, precedence management is tricky in itself and should not be
	  cluttered with token declaration issues.

	  We used to accept declaring a token number on a string literal here
	  (e.g., `%left "token" 1`).  This is abnormal.  Either the feature is
	  useful, and then it should be supported in %token, or it's useless
	  and we should not support it in corner cases.

	- %nterm
	  Obviously cannot accept tokens, nor char/string literals.  Does not
	  exist in POSIX Yacc, but since %type also works for terminals, it is
	  a nice option to have.

	* src/parse-gram.y: Avoid relying on side effects.  For instance, get
	rid of current_type, rather, build the list of symbols and iterate
	over it to assign the type.
	It's not always possible/convenient.  For instance, we still use
	current_class.
	Prefer "decl" to "def", since in the rest of the implementation we
	actually "declare" symbols, we don't "define" them.
	(token_decls, token_decls_for_prec, symbol_decls, nterm_decls): New.
	Use them for %token, %left, %type and %nterm.
	* src/symlist.h, src/symlist.c (symbol_list_type_set): New.
	* tests/regression.at b/tests/regression.at
	(Token number in precedence declaration): We no longer accept
	to give a number to string literals.

2018-12-15  Akim Demaille  <akim.demaille@gmail.com>

	symbols: set tag_seen when assigning a type to symbols
	* src/reader.h, src/reader.c (tag_seen): Move to...
	* src/symtab.h, src/symtab.c: here.
	(symbol_type_set): Set it to true.
	* src/parse-gram.y: Don't.

2018-12-14  Akim Demaille  <akim.demaille@gmail.com>

	tests: isolate test about Yacc warnings
	* tests/input.at (Yacc warnings): New.
	(AT_CHECK_UNUSED_VALUES): Remove checks about yacc.

2018-12-14  Akim Demaille  <akim.demaille@gmail.com>

	parser: warn about string literals in Yacc mode
	* src/scan-gram.l (scan_integer): Warn.
	* tests/input.at (Yacc warnings on symbols): Check.

2018-12-14  Akim Demaille  <akim.demaille@gmail.com>

	parser: warn about hexadecimal token numbers in Yacc mode
	* src/scan-gram.l (scan_integer): Warn.
	* tests/input.at (Yacc warnings on symbols): Check.

2018-12-14  Akim Demaille  <akim.demaille@gmail.com>

	parser: reprecate %nterm back
	After having spent quite some time on cleaning the handling of symbol
	declarations in the grammar files, I believe we should keep it.

	It looks like it's a duplicate of %type, but it is not.  While POSIX
	Yacc requires %type to apply only to nonterminal symbols, it appears
	that both byacc and bison accept it for tokens too.  And some
	experienced users do actually expect this feature to group
	symbols (terminal or not) by type ("On the other hand, it is generally
	more useful IMHO to group terminals and non-terminals with the same
	type tag together",
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html).
	Even Bison's own parser does this today (see CHAR).

	Basically reverts 7928c3e6fbdf47ff81184966cee937e6aa694b94.

	* src/scan-gram.l (%nterm): Dedeprecate, but issue a Wyacc warning.
	* tests/input.at: Adjust expectations.
	(Yacc warnings  on symbols): New.
	* src/symtab.c (symbol_class_set): Fix error introduced in
	20b07467938cf880a1d30eb30d6e191843a21fec.

2018-12-11  Eduard Staniloiu  <edi33416@gmail.com>

	CI: add dmd support
	* .travis.yml: here.

2018-12-11  Akim Demaille  <akim.demaille@gmail.com>

	style: s/non-terminal/nonterminal/
	I personally prefer 'non terminal', or 'non-terminal', but
	'nonterminal' is the common spelling.

	* data/glr.c, src/parse-gram.y, src/symtab.c, src/symtab.h,
	* tests/input.at, doc/refcard.tex: here.

2018-12-11  Akim Demaille  <akim.demaille@gmail.com>

	style: rename error functions for clarity
	* src/symtab.c (symbol_redeclaration, semantic_type_redeclaration)
	(user_token_number_redeclaration):
	Rename as...
	(complain_symbol_redeclared, complain_semantic_type_redeclared)
	(complain_user_token_number_redeclared):
	this.

2018-12-11  Akim Demaille  <akim.demaille@gmail.com>

	parser: improve the error message for symbol class redefinition
	Currently our error messages include both "symbol redeclared" and
	"symbol redefined", and they mean something different.  This is
	obscure, let's make this clearer.

	I think the idea between 'definition' vs. 'declaration' is that in the
	case of the nonterminals, the actual definition is its set of rules,
	so %nterm would be about declaration.  The case of %token is less
	clear.

	* src/symtab.c (complain_class_redefined): New.
	(symbol_class_set): Use it.
	Simplify the logic of this function to clearly skip its body when the
	preconditions are not met.
	* tests/input.at (Symbol class redefinition): New.

2018-12-11  Akim Demaille  <akim.demaille@gmail.com>

	examples: simplify computation of yydebug
	* examples/c/lexcalc/parse.y: here.

2018-12-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: support variadic emplace
	Suggested by Askar Safin.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00006.html

	* data/variant.hh: Implement.
	* tests/types.at: Check.
	* doc/bison.texi: Document.

2018-12-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: add a simple Flex+Bison example in C
	Suggested by Askar Safin.
	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00003.html

	* examples/c/lexcalc/Makefile, examples/c/lexcalc/README.md,
	* examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/local.mk,
	* examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l:
	New.

2018-12-09  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-12-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: sort them per language and complete them
	Convert some of the READMEs to Markdown, which is now more common, and
	nicely displayed in some git hosting services.

	Add missing READMEs and Makefiles.  Generate XML, HTML and Dot files.  Be
	sure to ship the test files.  Complete CLEANFILES to remove all generated
	files.

	* examples/calc++: Move into...
	* examples/c++: here.
	* examples/mfcalc, examples/rpcalc: Move into...
	* examples/c: here.

	* examples/README.md, examples/c++/calc++/Makefile, examples/c/local.mk,
	* examples/c/mfcalc/Makefile, examples/c/rpcalc/Makefile,
	* examples/d/README.md, examples/java/README.md:
	New files.

	* examples/test (medir): Be robust to deeper directory nesting.

2018-12-09  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-12-09  Akim Demaille  <akim.demaille@gmail.com>

	parser: minor refactoring
	* src/parse-gram.y (symbol.prec): Reuse int.opt.

2018-12-09  Akim Demaille  <akim.demaille@gmail.com>

	parser: move checks inside the called functions
	Revamping the handling of the symbols is the grammar is much more
	delicate than I anticipated.  Let's first move things around for
	clarity.

	* src/symtab.c (symbol_make_alias): Don't accept to alias
	non-terminals.
	(symbol_user_token_number_set): Don't accept user token numbers
	for non-terminals.
	Don't do anything in case of redefinition, instead of trying to
	update.  The flow is eaier to follow this way.

2018-12-08  Akim Demaille  <akim.demaille@gmail.com>

	d: fix double definition of YYSemanticType
	* data/lalr1.d: When moving to b4_user_union_members, it also defines
	b4_tag_seen_flag, so we had two definitions.

2018-12-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-12-06  Akim Demaille  <akim.demaille@gmail.com>

	parser: fix incorrect condition to raise a syntax error
	* src/parse-gram.y (symbol_def): Fix test.

2018-12-06  Akim Demaille  <akim.demaille@gmail.com>

	d: fix use of b4_union_members
	* data/lalr1.d: Use b4_user_union_members instead.

2018-12-06  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* data/variant.hh: here.

2018-12-06  Akim Demaille  <akim.demaille@gmail.com>

	java, d: add a Makefile for the example
	* examples/java/Makefile, examples/d/Makefile: New.

2018-12-05  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in ielr.c
	* src/ielr.c: here.

2018-12-05  Akim Demaille  <akim.demaille@gmail.com>

	style: scope reduction in lalr.c
	* src/lalr.c: here.

2018-12-05  Akim Demaille  <akim.demaille@gmail.com>

	d, java: compute static subtractions
	* data/d.m4, data/java.m4: Use b4_subtract where appropriate.

2018-12-04  Akim Demaille  <akim.demaille@gmail.com>

	d: add an example
	* examples/d/calc.test, examples/d/calc.y, examples/d/local.mk:

2018-12-04  Akim Demaille  <akim.demaille@gmail.com>

	d: update the skeleton
	* data/d.m4, data/lalr1.d: Catch up with Bison.
	And actually, also catch up with D.

2018-12-04  Akim Demaille  <akim.demaille@gmail.com>

	d: add experimental support for the D language
	* configure.ac (ENABLE_D): New.
	* src/getargs.c (valid_languages): Add d.

2018-12-04  Akim Demaille  <akim.demaille@gmail.com>

	d: add skeleton for the D language
	Contributed by Oliver Mangold.
	https://lists.gnu.org/archive/html/help-bison/2012-01/msg00000.html

	* README-D.txt, d-skel.m4, d.m4, lalr1.d: New.

2018-12-04  Akim Demaille  <akim.demaille@gmail.com>

	examples: regenerate them when version.texi changes
	When we extract the examples from the documentation, %require
	"@value{VERSION}" is replaced with the current version.  If we change
	the git branch, without changing the documentation, the generated
	examples will %require a version of Bison that differs from the actual
	version.

	* examples/local.mk (extracted.stamp): Depend on doc/version.texi.

2018-12-04  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: start some technical documentation
	* data/README: Convert to Markdown.
	Start documenting some of the macros used in all our skeletons.
	Simplify and fix the documentation of the macros in the skeletons.

2018-12-03  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-12-03  Akim Demaille  <akim.demaille@gmail.com>

	backend: revamp the handling of symbol types
	Currently it is the front end that passes the symbol types to the
	backend.  For instance:

	  %token <ival> NUM
	  %type <ival> exp1 exp2
	  exp1: NUM { $$ = $1; }
	  exp2: NUM { $<ival>$ = $<ival>1; }

	In both cases, $$ and $1 are passed to the backend as having type
	'ival' resulting in code like `val.ival`.  This is troublesome in the
	case of api.value.type=union, since in that the case the code this:

	  %define api.value.type union
	  %token <int> NUM
	  %type <int> exp1 exp2
	  exp1: NUM { $$ = $1; }
	  exp2: NUM { $<int>$ = $<int>1; }

	because in this case, since the backend does not know the symbol being
	processed, it is forced to generate casts in both cases: *(int*)(&val)`.
	This is unfortunate in the first case (exp1) where there is no reason
	at all to use a cast instead of `val.NUM` and `val.exp1`.

	So instead delegate the computation of the actual value type to the
	backend: pass $<ival>$ as `symbol-number, ival` and $$ as
	`symbol-number, MULL`, instead of passing `ival` before.

	* src/scan-code.l (handle_action_dollar): Find the symbol the action
	is about, not just its tyye.  Pass both symbol-number, and explicit
	type tag ($<tag>n when there is one) to b4_lhs_value and b4_rhs_value.

	* data/bison.m4 (b4_symbol_action): adjust to the new signature to
	b4_dollar_pushdef.

	* data/c-like.m4 (_b4_dollar_dollar, b4_dollar_pushdef): Accept the
	symbol-number as new argument.

	* data/c.m4 (b4_symbol_value): Accept the symbol-number as new
	argument, and use it.
	(b4_symbol_value_union): Accept the symbol-number as new
	argument, and use it to prefer ready a union member rather than
	casting the union.
	* data/yacc.c (b4_lhs_value, b4_rhs_value): Accept the new
	symbol-number argument.
	Adjust uses of b4_dollar_pushdef.
	* data/glr.c (b4_lhs_value, b4_rhs_value): Adjust.

	* data/lalr1.cc (b4_symbol_value_template, b4_lhs_value): Adjust
	to the new symbol-number argument.
	* data/variant.hh (b4_symbol_value, b4_symbol_value_template): Accept
	the new symbol-number argument.

	* data/java.m4 (b4_symbol_value, b4_rhs_data): New.
	(b4_rhs_value): Use them.
	* data/lalr1.java: Adjust to b4_dollar_pushdef, and use b4_rhs_data.

2018-12-03  Akim Demaille  <akim.demaille@gmail.com>

	style: comment and formatting changes
	* data/bison.m4, data/c++.m4, data/glr.c, data/java.m4, data/lalr1.cc,
	* data/yacc.c, src/scan-code.l:
	Fix comments.
	Prefer POS to denote the position of a symbol in a rule, since NUM
	is also used to denote symbol numbers.

2018-12-03  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-12-03  Akim Demaille  <akim.demaille@gmail.com>

	java: make sure the build dir exists
	* examples/java/local.mk (%D%/Calc.java): here.

2018-12-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: don't define variant<S>, directly define semantic_type
	Instead of defining yy::variant<S> and then alias
	yy::parser::semantic_type to variant<sizeof (union_type)>, directly
	define yy::parser::semantic_type.

	This model is more appropriate if we want to sit the storage on top of
	unions in C++11.

	* data/variant.hh (b4_variant_define): Specialize and inline the
	definition into...
	(b4_value_type_declare): Here.
	Define union_type here.
	* data/lalr1.cc: Adjust.

2018-12-01  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-12-01  Akim Demaille  <akim.demaille@gmail.com>

	C++: use noexcept and constexpr
	There are probably more opportunities for them.
	So far, I observed no performance improvements.

	* data/c++.m4, data/lalr1.cc, data/stack.hh: here.

2018-12-01  Akim Demaille  <akim.demaille@gmail.com>

	CI: also display the examples' test suite log
	* .travis.yml: here.

2018-12-01  Akim Demaille  <akim.demaille@gmail.com>

	java: add an example
	* examples/java/Calc.y: New, based on test 495: "Calculator
	parse.error=verbose %locations".
	* examples/java/Calc.test, examples/java/local.mk: New.

	* configure.ac (ENABLE_JAVA): New.
	* examples/test (prog): Be ready to run Java programs.

2018-12-01  Akim Demaille  <akim.demaille@gmail.com>

	style: unsigned int -> unsigned
	See
	https://lists.gnu.org/archive/html/bison-patches/2018-08/msg00027.html

	* src/output.c (muscle_insert_unsigned_int_table): Rename as...
	(muscle_insert_unsigned_table): this.

2018-12-01  Akim Demaille  <akim.demaille@gmail.com>

	output: restore yyrhs and yyprhs
	This was demanded several times.  See for instance:

	- David M. Warme
	  https://lists.gnu.org/archive/html/help-bison/2011-04/msg00003.html

	- box12009
	  http://lists.gnu.org/archive/html/bug-bison/2016-10/msg00001.html

	Basically, this reverts:

	- commit 3d3bc1fe30f356cf674a979409e86ea0f88de4a0
	  Get rid of (yy)rhs and (yy)prhs

	- commit d333175f63f402dbadb647175e40ad88bf1defb5
	  Avoid compiler warning.

	Note that since these tables are not needed in the generated parsers,
	no skeleton requests them.  This change only brings back their
	definition to M4, making it possible to user-defined skeletons to use
	these tables.

	* src/output.c (muscle_insert_item_number_table): Define.
	(prepare_rules): Generate the rhs and prhs tables.

2018-11-30  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-30  Akim Demaille  <akim.demaille@gmail.com>

	parser: shorten side-effects on current_type
	* src/parse-gram.y (tag.opt): Don't change current_type.
	Rather, return its value.
	Adjust dependencies.

2018-11-30  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/symlist.c: here.

2018-11-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't name C++ files *.c
	* tests/synclines.at (syncline escapes): Here.
	Otherwise, Clang generates an error and skips the test.

2018-11-29  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-11-29  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-29  Akim Demaille  <akim.demaille@gmail.com>

	parser: factor the symbol definition
	* src/parse-gram.y (int.opt, string_as_id.opt): New.
	(symbol_def): Use it.

2018-11-29  Akim Demaille  <akim.demaille@gmail.com>

	parser: improve location of string alias errors
	* src/parse-gram.y (symbol_def): Pass the right location for symbol_make_alias.
	* tests/regression.at (Duplicate string): Move to...
	* tests/input.at: here.
	(Token collisions): New.

2018-11-29  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: complain about Bison directives when -Wyacc
	* src/complain.h, src/complain.c (bison_directive): New.
	* src/scan-gram.l (BISON_DIRECTIVE): New.
	Use it for Bison extensions.

2018-11-28  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: here.

2018-11-27  Akim Demaille  <akim.demaille@gmail.com>

	style: fix quotation in the test suite
	* tests/input.at: here.

2018-11-27  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-27  Akim Demaille  <akim.demaille@gmail.com>

	%nterm: do not accept character literals
	Reported by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html

	* src/complain.h: Formatting change.
	* src/parse-gram.y (id): Reject character literals used in a context
	for non-terminals.
	* tests/input.at (Invalid %nterm uses): Check that.

2018-11-27  Akim Demaille  <akim.demaille@gmail.com>

	%nterm: do not accept numbers nor string alias
	Reported by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html

	* src/parse-gram.y (symbol_def): Refuse string aliases and numbers
	for non-terminals.
	(prologue_declaration): Recover from errors ended with ';'.
	* tests/input.at (Invalid %nterm uses): New.

2018-11-27  Akim Demaille  <akim.demaille@gmail.com>

	TODO: update

2018-11-26  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: Here.

2018-11-26  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* tests/testsuite.at: here.

2018-11-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update ignores

2018-11-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update to use its bitsets
	Bison's bitset were moved to gnulib.

	* lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c,
	* lib/bitset.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
	* lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c,
	* lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h,
	* lib/lbitset.h, lib/vbitset.c, lib/vbitset.h:
	Remove.

	* gnulib: Update.
	* bootstrap.conf, lib/local.mk: Adjust.

2018-11-25  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: use conditional dependencies
	* bootstrap.conf: here.

2018-11-25  Akim Demaille  <akim.demaille@gmail.com>

	CI: run on xenial
	Xenial (Ubuntu 16.04) is finally available on Travis.  Let's use it.

	Among the changes:

	- Automake 1.14.1 -> 1.15.0
	- Doxygen  1.8.6  -> 1.8.11
	- Flex     2.5.35 -> 2.6.0, with plenty of new compiler warnings
	- Gettext  0.18.3 -> 0.19.7
	- Graphviz 2.36.0 -> 2.38.0
	- Texinfo  5.2    -> 6.1

	* .travis.yml: here.

2018-11-25  Akim Demaille  <akim.demaille@gmail.com>

	CI: we don't need git show
	* .travis.yml: Don't run it.

2018-11-25  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-25  Akim Demaille  <akim.demaille@gmail.com>

	warning: avoid warnings about unreachable code
	Reported by Uxio Prego.
	https://lists.gnu.org/archive/html/help-bison/2018-11/msg00031.html

	We also need to move the unreachable 'goto' to a reachable place,
	otherwise clang complains about the code being unreachable anyway.
	See also https://bugs.llvm.org/show_bug.cgi?id=39736.

	Interestingly, we don't have to apply that trick to
	`#define YYCDEBUG if (false) std::cerr`, clang does not warn when the
	code comes from macro expansion.

	* configure.ac: Use -Wunreachable-code when supported.
	* data/lalr1.cc, data/yacc.c: Pacify clang's warning about `if (0)`
	by using a macro.
	Another possibility was to move this statement to a reachable place.
	* tests/actions.at, tests/c++.at: Avoid generating unreachable code.

2018-11-24  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: avoid generating dead code
	We should probably introduce some struct and functions to deal with
	stack management, rather than open coding it.  yyparse would be much
	nicer to read, and a better model for possible other skeletons.

	* data/yacc.c (yyparse::yysetstate): Avoid generating code when
	neither yyoverflow nor YYSTACK_RELOCATE is defined.

2018-11-22  Akim Demaille  <akim.demaille@gmail.com>

	%expect-rr: tune the number of conflicts per rule
	Currently on a grammar such as

	    exp : a '1' | a '2' | a '3' | b '1' | b '2' | b '3'
	    a:
	    b:

	we count only one rr-conflict on the `b:` rule, i.e., we expect:

	    b: %expect-rr 1

	although there are 3 conflicts in total.  That's because in the
	conflicted state we count only a single conflict, not three (one for
	each of the lookaheads: '1', '2', '3').

	    State 0

	        0 $accept: . exp $end
	        1 exp: . a '1'
	        2    | . a '2'
	        3    | . a '3'
	        4    | . b '1'
	        5    | . b '2'
	        6    | . b '3'
	        7 a: . %empty  ['1', '2', '3']
	        8 b: . %empty  ['1', '2', '3']

	        '1'       reduce using rule 7 (a)
	        '1'       [reduce using rule 8 (b)]
	        '2'       reduce using rule 7 (a)
	        '2'       [reduce using rule 8 (b)]
	        '3'       reduce using rule 7 (a)
	        '3'       [reduce using rule 8 (b)]
	        $default  reduce using rule 7 (a)

	        exp  go to state 1
	        a    go to state 2
	        b    go to state 3

	See https://lists.gnu.org/archive/html/bison-patches/2013-02/msg00106.html.

	* src/conflicts.c (rule_has_state_rr_conflicts): Rename as...
	(count_rule_state_sr_conflicts): this.
	DWIM.
	(count_rule_rr_conflicts): Adjust.
	* tests/conflicts.at (%expect-rr in grammar rules)
	(%expect-rr too much in grammar rules)
	(%expect-rr not enough in grammar rules): New.

2018-11-22  Akim Demaille  <akim.demaille@gmail.com>

	%expect-rr: fix the computation of the overall number of conflicts
	On a grammar such as

	   exp: "num" | "num" | "num"

	we currently report only one RR conflict, instead of two.

	This bug is present since the origins of Bison

	    commit 08089d5d35ece0c7d41659cc1bc09638e2abb151
	    Author: David MacKenzie <djm@djmnet.org>
	    Date:   Tue Apr 20 05:42:52 1993 +0000

	       Initial revision

	and was preserved in

	    commit 676385e29c4aedfc05d20daf1ef20cd4ccc84856
	    Author: Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
	    Date:   Fri Jun 28 02:26:44 2002 +0000

	       Initial check-in introducing experimental GLR parsing.  See entry in
	       ChangeLog dated 2002-06-27 from Paul Hilfinger for details.

	See
	https://lists.gnu.org/archive/html/bison-patches/2018-11/msg00011.html

	* src/conflicts.h, src/conflicts.c (count_state_rr_conflicts)
	(count_rr_conflicts): Use only the correct count of conflicts.
	* tests/glr-regression.at: Fix expectations.

2018-11-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: generate *.output files
	* tests/glr-regression.at: here.

2018-11-21  Akim Demaille  <akim.demaille@gmail.com>

	%expect: tune the number of conflicts per rule
	Currently on a grammar such as

	    exp: "number" | exp "+" exp | exp "*" exp

	we count only one sr-conflict for both binary rules, i.e., we expect:

	    exp: "number" | exp "+" exp  %expect 1 | exp "*" exp  %expect 1

	although there are 4 conflicts in total.  That's because in the states
	in conflict, for instance that for the "+" rule:

	    State 6

	        2 exp: exp . "+" exp
	        2    | exp "+" exp .  [$end, "+", "*"]
	        3    | exp . "*" exp

	        "+"  shift, and go to state 4
	        "*"  shift, and go to state 5

	        "+"       [reduce using rule 2 (exp)]
	        "*"       [reduce using rule 2 (exp)]
	        $default  reduce using rule 2 (exp)

	we count only a single conflict, although there are two (one on "+"
	and another with "*").

	See https://lists.gnu.org/archive/html/bison-patches/2013-02/msg00106.html.

	* src/conflicts.c (rule_has_state_sr_conflicts): Rename as...
	(count_rule_state_sr_conflicts): this.
	DWIM.
	(count_rule_sr_conflicts): Adjust.
	* tests/conflicts.at (%expect in grammar rules): New.

2018-11-21  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-21  Akim Demaille  <akim@lrde.epita.fr>

	style: reduce scopes
	* src/conflicts.c, src/reader.c: Minor style changes.

2018-11-21  Paul Hilfinger  <hilfingr@eecs.berkeley.edu>

	allow %expect and %expect-rr modifiers on individual rules
	This change allows one to document (and check) which rules participate
	in shift/reduce and reduce/reduce conflicts.  This is particularly
	important GLR parsers, where conflicts are a normal occurrence.  For
	example,

	    %glr-parser
	    %expect 1
	    %%

	    ...

	    argument_list:
	      arguments %expect 1
	    | arguments ','
	    | %empty
	    ;

	    arguments:
	      expression
	    | argument_list ',' expression
	    ;

	    ...

	Looking at the output from -v, one can see that the shift-reduce
	conflict here is due to the fact that the parser does not know whether
	to reduce arguments to argument_list until it sees the token AFTER the
	following ','.  By marking the rule with %expect 1 (because there is a
	conflict in one state), we document the source of the 1 overall shift-
	reduce conflict.

	In GLR parsers, we can use %expect-rr in a rule for reduce/reduce
	conflicts.  In this case, we mark each of the conflicting rules.  For
	example,

	    %glr-parser
	    %expect-rr 1

	    %%

	    stmt:
	      target_list '=' expr ';'
	    | expr_list ';'
	    ;

	    target_list:
	      target
	    | target ',' target_list
	    ;

	    target:
	      ID %expect-rr 1
	    ;

	    expr_list:
	      expr
	    | expr ',' expr_list
	    ;

	    expr:
	      ID %expect-rr 1
	    | ...
	    ;

	In a statement such as

	    x, y = 3, 4;

	the parser must reduce x to a target or an expr, but does not know
	which until it sees the '='.  So we notate the two possible reductions
	to indicate that each conflicts in one rule.

	See https://lists.gnu.org/archive/html/bison-patches/2013-02/msg00105.html.

	* doc/bison.texi (Suppressing Conflict Warnings): Document %expect,
	%expect-rr in grammar rules.
	* src/conflicts.c (count_state_rr_conflicts): Adjust comment.
	(rule_has_state_sr_conflicts): New static function.
	(count_rule_sr_conflicts): New static function.
	(rule_nast_state_rr_conflicts): New static function.
	(count_rule_rr_conflicts): New static function.
	(rule_conflicts_print): New static function.
	(conflicts_print): Also use rule_conflicts_print to report on individual
	rules.
	* src/gram.h (struct rule): Add new fields expected_sr_conflicts,
	expected_rr_conflicts.
	* src/reader.c (grammar_midrule_action): Transfer expected_sr_conflicts,
	expected_rr_conflicts to new rule, and turn off in current_rule.
	(grammar_current_rule_expect_sr): New function.
	(grammar_current_rule_expect_rr): New function.
	(packgram): Transfer expected_sr_conflicts, expected_rr_conflicts
	to new rule.
	* src/reader.h (grammar_current_rule_expect_sr): New function.
	(grammar_current_rule_expect_rr): New function.
	* src/symlist.c (symbol_list_sym_new): Initialize expected_sr_conflicts,
	expected_rr_conflicts.
	* src/symlist.h (struct symbol_list): Add new fields expected_sr_conflicts,
	expected_rr_conflicts.
	* tests/conflicts.at: Add tests "%expect in grammar rule not enough",
	"%expect in grammar rule right.", "%expect in grammar rule too much."

2018-11-21  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-11-21  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-11-21  Akim Demaille  <akim.demaille@gmail.com>

	remove ancient lint directives
	* data/c++.m4, data/yacc.c: Remove surprising remains of lint
	directives.

2018-11-21  Jannick  <thirdedition@gmx.net>

	doc: calc++: remove ancient fix for flex
	* doc/bison.texi (Calc++ Scanner): Remove fix for Flex 2.5.31-2.5.33.

2018-11-21  Jannick  <thirdedition@gmx.net>

	doc: calc++: ignore \r in the scaner
	* doc/bison.texi (Calc++ Scanner): Ignore \r.

2018-11-20  Akim Demaille  <akim.demaille@gmail.com>

	style: harmonize the labels of yyparse
	* data/glr.c, data/lalr1.cc, data/yacc.c: Fix indentation and
	other formatting issues.

2018-11-20  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-20  Akim Demaille  <akim.demaille@gmail.com>

	style: avoid lengthy actions
	We also lack a consistent naming for directive implementations.
	`directive_skeleton` is too long, `percent_skeleton` is not very nice
	looking, `process_skeleton` looks ambiguous, `do_skeleton` is somewhat
	ambiguous too, but seems a better track.

	* src/parse-gram.y (version_check): Rename as...
	(do_require): this.
	(do_skeleton): New.
	Use it.

2018-11-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: using macros around user types breaks when they include comma
	We may generate code such as

	    basic_symbol (typename Base::kind_type t, YY_RVREF (std::pair<int,int>) v);

	which, of course, breaks, because YY_RVREF sees two arguments.  Let's
	not play tricks with _VA_ARGS__, I'm unsure about it portability.
	Anyway, I plan to change more things in this area.

	Reported by Sébastien Villemot.
	http://lists.gnu.org/archive/html/bug-bison/2018-11/msg00014.html

	* data/variant.hh (b4_basic_symbol_constructor_declare)
	(b4_basic_symbol_constructor_define): Don't use macro on user types.
	* tests/types.at: Check that we support pairs.

2018-11-16  Akim Demaille  <akim.demaille@gmail.com>

	README: update

2018-11-16  Akim Demaille  <akim.demaille@gmail.com>

	tests: remove duplicate definition
	Probably imported by 6d58c632025cb6928a90e4176577982bfb9c3981, a merge
	commit.

	* tests/atlocal.in (POSIXLY_CORRECT_IS_EXPORTED): Define it once.

2018-11-16  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: fix use of _Noreturn
	In C++, [[noreturn]] must not be between "static" and the rest of the
	function signature, it must precede it.  C's _Noreturn does not seem
	to have such a constraint, but it is therefore compatible with the C++
	constraint.  Since we #define _Noreturn as [[noreturn]] is modern C++,
	be sure to push the _Noreturn first.

	Unfortunately this was not caught by the test suite, because it always
	loads config.h first, and config.h contains another definition of
	_Noreturn that does not use [[noreturn]], and hides ours.  That's
	probably a sign we should avoid always loading config.h.

	* data/glr.c (yyFail, yyMemoryExhausted): here.

2018-11-16  Akim Demaille  <akim.demaille@gmail.com>

	tests: run the api.value.type tests for all C++ standards
	* tests/local.at (AT_LANG_FOR_EACH_STD): New.
	(AT_REQUIRE_CXX_VERSION): Rename as...
	(AT_REQUIRE_CXX_STD): this.
	Accept an argument for what to do when the requirement is not met.
	* tests/types.at (api.value.type): Check all the C++ stds.

2018-11-16  Akim Demaille  <akim.demaille@gmail.com>

	CI: split the ASAN job in two
	The following commit introduce even more compilations/runs than
	before, and with ASAN on, we go beyond to 50min credit from Travis.

	* .travis.yml (Clang 7 libc++ and ASAN): Split in two.

2018-11-14  Akim Demaille  <akim.demaille@gmail.com>

	c++: use YY_CPLUSPLUS
	* data/c++.m4: here.

2018-11-13  Akim Demaille  <akim.demaille@gmail.com>

	c++: factor the handling of __cplusplus into YY_CPLUSPLUS
	* data/c++.m4 (b4_cxx_portability): Define it.
	Use it.
	* data/lalr1.cc, data/variant.hh: Use it.

2018-11-13  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* src/scan-gram.l: here.

2018-11-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: clarify some magic constant
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): here.

2018-11-13  Akim Demaille  <akim.demaille@gmail.com>

	examples: remove useless includes
	* examples/c++/variant-11.yy, examples/c++/variant.yy: here.
	Fix warning when storing a long into an int.

2018-11-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: compile the C++ examples with warnings
	* examples/c++/local.mk: Pass $(WARN_CXXFLAGS_TEST).

2018-11-12  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-12  Akim Demaille  <akim.demaille@gmail.com>

	parser: deprecate %error-verbose
	It is unfortunate that %error_verbose was properly diagnosed as
	obsoleted by "%define parse.error verbose", but %error-verbose was
	not.

	* src/parse-gram.y (%error-verbose): Remove support.
	* src/scan-gram.l: Do it here instead, with a warning.
	* tests/input.at (Deprecated directives): Check it.

2018-11-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: migrate from %error-verbose to %define parse.error verbose
	* tests/actions.at, tests/c++.at, tests/conflicts.at,
	* tests/cxx-type.at, tests/existing.at, tests/glr-regression.at,
	* tests/headers.at, tests/input.at, tests/java.at, tests/javapush.at,
	* tests/local.at, tests/regression.at, tests/skeletons.at,
	* tests/torture.at:
	Here.

2018-11-12  Akim Demaille  <akim.demaille@gmail.com>

	parser: deprecate %nterm
	It has several weaknesses.
	Reported by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html

	* src/scan-gram.l: here.

2018-11-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix syncline tests
	These tests are skipped with GCC:

	    "\"".c:1:5: error: function declaration isn't a prototype [-Werror=strict-prototypes]
	     int main() { return 0; }
	         ^~~~

	* tests/synclines.at: Stop writing C++ in C.
	* tests/local.at: Formatting changes.

2018-11-11  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: expected features of Bison 3.3

2018-11-11  Akim Demaille  <akim.demaille@gmail.com>

	yacc: reduce scope in push mode
	* data/yacc.c (yypull_parse): Here.

2018-11-11  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* data/c++.m4, data/glr.c, data/lalr1.java, data/yacc.c
	(yytranslate, YYTRANSLATE): Harmonize comments.

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	c++: simplify a default construction
	* data/lalr1.cc (yytnamerr_): here.

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	reader: no longer accept %define variable names in quotes
	It was never documented.

	* src/parse-gram.y (variable): Here.

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	dogfooding: use api.value.type union
	* src/parse-gram.y (api.value.type): Set to union.
	Replace occurrences of %union with explicit %types.
	* src/scan-gram.l: Adjust yylval's field names.
	(RETURN_VALUE): No longer needs the Field argument.
	Use it more.

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	djgpp: remove
	Support for DJGPP was announced to be removed in the NEWS of Bison
	3.1 (2018-08-27) unless someone expressed interest.  There was no answer.

	* djgpp: Remove.
	* NEWS, Makefile.am, cfg.mk, po/POTFILES.in: Adjust.

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	scanner: simplify use of gettext
	* src/scan-gram.l (unexpected_end): Leave the actual call to gettext
	to the caller.

2018-11-10  Akim Demaille  <akim.demaille@gmail.com>

	style: clean up the scanner and parser
	* src/scan-gram.l: Formatting changes.
	Add "missing" assertion for symmetry.
	* src/parse-gram.y: Formatting changes.

2018-11-09  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2018-11-09  Akim Demaille  <akim.demaille@gmail.com>

	version 3.2.1
	* NEWS: Record release date.

2018-11-08  Akim Demaille  <akim.demaille@gmail.com>

	build: fix issues in the generated tarball
	Reported by Andre da Costa Barros.
	https://savannah.gnu.org/patch/?9716

	* examples/calc++/local.mk: We no longer generate position.hh and
	stack.hh.  Leaving them here triggers their concurrent generation,
	which fails.
	(%C%_calc___CPPFLAGS): Fix the extracted headers in the source tree.
	* examples/mfcalc/local.mk (%C%_mfcalc_CPPFLAGS): Ditto.

2018-11-07  Akim Demaille  <akim.demaille@gmail.com>

	build: fix typo
	Reported by Horst Von Brand.
	https://savannah.gnu.org/support/?109580

	* examples/local.mk (.PHOMY): Rename as...
	(.PHONY): this.

2018-11-06  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-11-06  Akim Demaille  <akim.demaille@gmail.com>

	examples: ship them
	Currently, the examples are extracted on the user's side.
	Unfortunately, that requires that the user has Perl, which is
	otherwise not needed for Bison.  Let's ship the examples instead.

	The examples were handled this way so that we could depend on
	configure flags: if --enable-gcc-warnings is passed, it is understood
	as "I'm a maintainer", so the examples are generated with `#line`s.
	Regular users should not see them, so they are now unconditionally
	removed when rolling a tarball.

	Reported by Mike Frysinger.
	https://lists.gnu.org/archive/html/bison-patches/2015-04/msg00000.html

	* examples/local.mk: Ship all the extracted files.
	(examples-unline): New.
	Make sure that the generated tarballs do not contain the #lines.

2018-11-06  Akim Demaille  <akim.demaille@gmail.com>

	build: minor fixes in doc/
	* doc/local.mk: Consistently use *.tmp for temporary files.
	Fix comments.

2018-11-05  Akim Demaille  <akim.demaille@gmail.com>

	CI: maximize chances of errors sooner
	* .travis.yml: Try clang and icc soon, so that we don't have to wait
	for the end of the run to know that they fail.

2018-11-04  Akim Demaille  <akim.demaille@gmail.com>

	c++: improve the generated documentation
	* data/lalr1.cc, data/location.cc: Improve documenting comments.
	* tests/c++.at (Doxygen Documentation): Fix AT_BISON_OPTION_PUSHDEFS,
	so that the generated yyerror is correct.
	* tests/c++.at, tests/headers.at: Prefer %empty.

2018-11-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't fail if the C++ compiler does not work
	Also, make sure that `make dist` generates a correct tarball even if
	the C++ compiler does not work.

	Reported by Nelson H. F. Beebe.

	* m4/cxx.m4 (BISON_CXX_WORKS): Define to true/false instead of
	true/exit 77.  The latter is too dangerous to use (it directly quits).
	(ENABLE_CXX): New name for the Automake conditional, for consistency
	with ENABLE_CXX11 etc.
	* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Adjust to the new
	semantics of BISON_CXX_WORKS.
	* examples/c++/local.mk: Skip the variant test if C++ does not work.
	* examples/calc++/local.mk: Likewise.

2018-11-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't disable C++ warnings in C files
	This triggers error with GCC.
	See eff6739124c61bb5660d78453210d1d6a17d30e7.

	* tests/testsuite.h: Disable -Wzero-as-null-pointer-constant only for
	C++.

2018-11-04  Akim Demaille  <akim.demaille@gmail.com>

	c++: workaround portability issue
	On some systems (x86_64-pc-solaris2.11), with Developer Studio 12.5's
	CC, we get:

	    ".../include/CC/Cstd/vector.cc", line 127: Error: Cannot assign const yy::parser::stack_symbol_type to yy::parser::stack_symbol_type without "yy::parser::stack_symbol_type::operator=(const yy::parser::stack_symbol_type&)";.
	    ".../include/CC/Cstd/vector", line 475:     Where: While instantiating "std::vector<yy::parser::stack_symbol_type>::__insert_aux(yy::parser::stack_symbol_type*, const yy::parser::stack_symbol_type&)".
	    ".../include/CC/Cstd/vector", line 475:     Where: Instantiated from non-template code.
	    1 Error(s) detected.

	Don't expect __cplusplus to be always defined.  If it's not, consider
	this is C++98.

	Reported by Nelson H. F. Beebe.

	* data/c++.m4, data/lalr1.cc, examples/c++/variant.yy, tests/local.at,
	* tests/testsuite.h:
	An undefined __cplusplus means pre C++11.

2018-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: work around getopt portability issues
	On some systems, we don't use our getopt.  As a consequence the error
	messages vary:

	    $ bison --skeleton
	    bison: option requires an argument -- skeleton
	    Try 'bison --help' for more information.

	instead of

	    bison: option '--skeleton' requires an argument
	    Try 'bison --help' for more information.

	Reported by Jannick and Nelson H. F. Beebe.
	https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00140.html

	* tests/input.at (Invalid number of arguments): work around getopt
	portability issues.

2018-11-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: -Wzero-as-null-pointer-constant was added to GCC 4.7
	It is not supported by previous versions.
	See https://www.gnu.org/software/gcc/gcc-4.7/changes.html
	Reported by Nelson H. F. Beebe.

	* doc/bison.texi (Calc++ Scanner): here.

2018-11-02  Adam Sampson  <ats@offog.org>

	examples: #include <cstring> in calc++
	strerror is defined by <string.h>, and recent versions of GNU libstdc++
	no longer include this automatically from <string>.

2018-10-31  Akim Demaille  <akim.demaille@gmail.com>

	c: provide a definition of _Noreturn that works for C++
	On Solaris, GCC 7.3 defines:

	                      -std=c++14  -std=c++17
	    __cplusplus       201402L       201703L
	    __STDC_VERSION__  199901L       201112L

	So the current #definition of _Noreturn sees that 201112 <=
	__STDC_VERSION__, i.e., that C11 is supported, so it expects _Noreturn
	to be supported.  Apparently it is not.

	This is only for C++, the test suite works for C.  However, the test
	suite does not try several C standards, maybe we should...

	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00064.html

	* data/c.m4 (b4_attribute_define): Define _Noreturn as [[noreturn]] in
	modern C++.

2018-10-30  Akim Demaille  <akim.demaille@gmail.com>

	c: update the definition of _Noreturn
	Does not work on Solaris 11.3 x86/64:

	    479. c++.at:1293: testing C++ GLR parser identifier shadowing ...
	    ======== Testing with C++ standard flags: '-std=c++17'
	    ./c++.at:1332: $BISON_CXX_WORKS
	    stderr:
	    stdout:
	    ./c++.at:1332: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o input input.cc $LIBS
	    stderr:
	    input.cc:837:8: error: '_Noreturn' does not name a type
	     static _Noreturn void
	            ^~~~~~~~~
	    input.cc:845:8: error: '_Noreturn' does not name a type
	     static _Noreturn void
	            ^~~~~~~~~

	Reported by Kiyoshi Kanazawa.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00051.html

	* data/c.m4 (b4_attribute_define): Use the snippet which is currently
	in gnulib's m4/gnulib-common.m4 (which seems a little more advanced
	than lib/_Noreturn.h).

2018-10-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't expect the shell to support 'local'
	It doesn't work on Solaris 11.3 x86/64.
	Reported by Kiyoshi Kanazawa.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00051.html

	* examples/test: Don't use 'local'.

2018-10-30  Akim Demaille  <akim.demaille@gmail.com>

	bitset: fix warning
	Reported by Hans Åberg.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00047.html

	* lib/bitset.c (bitset_count_): here.

2018-10-30  Akim Demaille  <akim.demaille@gmail.com>

	build: fix use of gnulib Make variables
	Reported by Kiyoshi Kanazawa.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00048.html

	* lib/local.mk (lib_libbison_a_LIBADD): Merge into...
	* src/local.mk (src_bison_LDADD): here.

2018-10-29  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2018-10-29  Akim Demaille  <akim.demaille@gmail.com>

	version 3.2
	* NEWS: Record release date.

2018-10-29  Akim Demaille  <akim.demaille@gmail.com>

	build: don't depend on the libc to generate bison.help
	The "Report translation bugs to..." part of --help is issued only on
	glibc systems.  So if the tarball is not wrapped on such a system, and
	used on such a system (or the converse), then bison.help will differ
	on the user's system, and help2man will be called to update bison.1.

	But help2man should not be a requirement.

	Reported by Alexandre Duret-Lutz.

	* doc/local.mk (doc/bison.help): Remove the possible doc about
	translation bugs.
	Pass LC_ALL=C, as reported in src/getargs.c's usage().
	(doc/cross-options.texi): Use bison.help instead of calling bison
	--help.

2018-10-29  Akim Demaille  <akim.demaille@gmail.com>

	c++: always issue the "generated by" message
	Some users rely on this sentence to know that the file can be ignored.
	Reported by Alexandre Duret-Lutz.

	* data/bison.m4 (b4_generated_by): New.
	(b4_copyright): Use it.
	* data/location.cc, data/stack.hh: Use it too, for the stub files
	(position.hh and stack.hh).

2018-10-28  Akim Demaille  <akim.demaille@gmail.com>

	cfg.mk: remove exceptions for timevar
	They appear to be no longer needed.

	* cfg.mk: here.

2018-10-28  Akim Demaille  <akim.demaille@gmail.com>

	style: clean up src/AnnotationList.c
	* src/AnnotationList.c: Reduce scopes.

2018-10-28  Akim Demaille  <akim.demaille@gmail.com>

	style: clean up print.c
	* src/print.c: Reduce scopes.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up bbitset.h
	* lib/libiberty.h: Inline in...
	* lib/bbitset.h: here.
	* lib/local.mk: Adjust.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up bitset.h
	* lib/bitset.h: Fix include order.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up vbitset.c
	* lib/vbitset.c: Reduce scopes, etc.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up lbitset.c
	* lib/lbitset.c: Reduce scopes, etc.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up ebitset.c
	* lib/ebitset.c: Reduce scopes, etc.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up bitset_stats.c
	* lib/bitset_stats.c: Reduce scopes, etc.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up bitset.c
	* lib/bitset.c: Reduce scopes, etc.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	bitset: clean up abitset.c
	* lib/abitset.c: Reduce scopes, etc.

2018-10-27  Jannick  <thirdedition@gmx.net>

	xml2dot.xsl: fix typos in comments

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix distcheck
	The extracted example, simple.yy, does not use %require "3.2", so it
	generates a stack.hh, which breaks distcheck.

	* doc/bison.texi: Fix it.

2018-10-27  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: prepare for 3.2

2018-10-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of Windows file name constraints
	Don't expect to be able to build a file named '"\"".y' (6 characters)
	on Windows.

	Reported by Jannick.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00042.html

	* tests/synclines.at (syncline escapes): Skip if we failed to create
	the file.

2018-10-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix invocation of m4_map
	* tests/actions.at, tests/synclines.at: m4_map takes a list of
	arguments in $2, m4_map_args takes arguments in $2, $3, etc.

2018-10-26  Akim Demaille  <akim.demaille@gmail.com>

	doc: spell check
	* README, doc/bison.texi, examples/README, examples/c++/README: here.

2018-10-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: add a Makefile for C++ short examples
	* examples/c++/Makefile: New.
	* examples/c++/local.mk, examples/c++/README: Adjust.

2018-10-26  Akim Demaille  <akim.demaille@gmail.com>

	doc: some improvements
	* doc/bison.texi (Calc++ Scanner): Show how exception can be thrown
	from auxiliary functions.
	Clarify the meaning of the various flex %options we use.
	Get rid of a warning.
	(Calc++ Parsing Driver): Use the parser as a functor.

2018-10-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: check the errors
	* examples/test (run): Check stderr, unless -noerr is passed.
	* examples/calc++/calc++.test, examples/mfcalc/mfcalc.test: Check
	errors.

2018-10-25  Akim Demaille  <akim.demaille@gmail.com>

	doc: minor fixes
	* doc/bison.texi: Simplify wording.
	Fix Texinfo error.
	(Complete Symbols): Handle the token EOF.
	(Calc++ Parser): In the modern C++ world, prefer assignment to swap.
	(Strings are Destroyed): Prefer an explicit 'continue' to a comment.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	configure: quit on trying to get ICC and Flex be friends
	The CI is using Flex 2.5.35.  And ICC is too picky for it.  Let's stop
	making these warnings errors.  I wish I could disable them in the
	source files using the ICC version and the Flex version, but ICC's
	pragma support is unclear, and I'm tired of fighting it.

	* configure.ac (FLEX_SCANNER_CXXFLAGS): Make warnings warnings.
	* examples/c++/local.mk: Comment changes.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	doc: mention earlier how to disable the generation of location.hh
	Suggested by Victor Khomenko.

	* doc/bison.texi (C++ Bison Interface): Here.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: std::to_string is available in C++11
	Reported by Victor Khomenko.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00033.html

	* doc/bison.texi, examples/c++/variant-11.yy: Use std::to_string
	instead of ours.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: move the variant examples into the C++ directory
	* examples/variant-11.test examples/variant-11.yy,
	* examples/variant.test examples/variant.yy:
	Move into examples/c++/.
	* examples/c++/README: New.
	* examples/README, examples/c++/local.mk, examples/local.mk:
	Adjust.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	doc: an introductory example for C++
	Suggested by Victor Khomenko.
	http://lists.gnu.org/archive/html/bug-bison/2018-08/msg00037.html

	* doc/bison.texi (A Simple C++ Example): New.
	* examples/c++/local.mk, examples/c++/simple.test: New.
	Extract, check, and install this new example.
	* examples/local.mk: Adjust.
	* examples/test: Adjust to the case where the dirname differs
	from the test name.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	build: remove a few copies of the Copyright from the generated Makefile
	* build-aux/local.mk, cfg.mk, examples/calc++/local.mk,
	* examples/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk, lib/local.mk, src/local.mk,
	* tests/local.mk:
	Use Automake comments so that we don't get a copy of each in the
	generated Makefile.

2018-10-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: make operator() an alias to the parse function
	* data/glr.cc, data/lalr1.cc (operator()): New.
	* doc/bison.texi: Update.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	build: enable more warnings during tests
	Prompted by Derek Clegg.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00018.html

	* configure.ac: here.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: work around strange typing issues
	On the CI, both GCC and Clang report:

	    src/parse-gram.c: In function 'yy_lac':
	    src/parse-gram.c:1479:29: error: format '%hd' expects argument of type 'int',
	       but argument 3 has type 'yytype_int16 {aka long int}' [-Werror=format=]
	             YYDPRINTF ((stderr, " G%hd", yystate));
	                                 ^

	Although yytype_int16 is supposed to be a short int, not a long int.
	This must be explored.

	* data/yacc.c (yy_lac): Work around typing issue.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: don't define _Noreturn uselessly
	Clang warns:

	     aux/x.h:97:11: error: macro name is a reserved identifier
	           [-Werror,-Wreserved-id-macro]
	     #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))

	Reported by Derek Clegg.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00024.html

	* data/c.m4 (b4_attribute_define): Don't define _Noreturn unconditionally.
	* data/glr.c: Ask for _Noreturn.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	pacify ICC 16.0.3 20160415
	Found on the CI.

	yacc.c:

	    error #2259: non-pointer conversion from "int" to "yytype_int16={short}" may lose significant bits
	        yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyesp
	                ^

	glr.c:

	    error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits
	      yybool yynormal YY_ATTRIBUTE_UNUSED = (yystackp->yysplitPoint == YY_NULLPTR);
	                                          ^

	    error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits
	      return yypact_value_is_default (yypact[yystate]);
	             ^

	    error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits
	      return 0 < yyaction;
	             ^

	    error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits
	      return yyaction == 0;
	             ^

	    error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits
	      yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY;
	                                                     ^

	* data/glr.c, data/yacc.c: Avoid these warnings.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	flex: work around more warnings
	* doc/bison.texi: here.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	examples: clang 5 defines nullptr as a macro
	* examples/variant.yy: So don't do it.
	* examples/variant-11.yy: Fix comment.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: be strict about types
	* data/glr.c: Don't use `foo |= bar` with foo and bar being yybool:
	the result appears to be an int, not a yybool.
	Use yybool where appropriate.
	Add casts where needed.

2018-10-23  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: fix warnings about integral types
	Reported by Derek Clegg.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00018.html

	Rather than adding casts, we should be more careful with types.  For
	instance yystate should be a yytype_int16.  But currently we can't: it
	is also used sometimes for storing other things that state numbers.

	* data/yacc.c (yyparse): Add missing casts.

2018-10-22  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: clarify the computation of yystate
	The yacc.c skeleton is old, and was using many tricks to save
	registers.  Today's register allocators can do this themselves.  Let's
	keep the code simpler to read and let compilers do their job.

	* data/yacc.c: Avoid using yystate for different types of content.
	An inline function would be better, but doing this portably will be
	a problem.

2018-10-22  Akim Demaille  <akim.demaille@gmail.com>

	printf returns a signed int
	* tests/local.at: Adjust location_print's signature.

2018-10-22  Akim Demaille  <akim.demaille@gmail.com>

	tests: be strict about types
	* tests/actions.at, tests/c++.at, tests/cxx-type.at,
	* tests/glr-regression.at, tests/local.at, tests/torture.at,
	* tests/types.at:
	Pay stricter attention to types to avoid warnings.

2018-10-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix signedness issues
	* data/lalr1.cc, data/stack.hh: The callers of stack use int, while
	stack is based on size_type.  Add overloads to avoid warnings.

2018-10-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: minor changes
	* data/lalr1.cc: Fix oldish comment.
	* data/stack.hh: Prefer typename for type names.
	Use size() instead of duplicating it.
	* examples/variant-11.yy, examples/variant.yy (yylex): Use int,
	as this is the type of the semantic value.

2018-10-22  Akim Demaille  <akim.demaille@gmail.com>

	all: display a clear warning about private macros
	* data/bison.m4 (b4_disclaimer): New.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.

2018-10-21  Akim Demaille  <akim.demaille@gmail.com>

	c++: minor simplification
	* data/stack.hh: Prefer a default argument value to two constructors.

2018-10-21  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-10-21  Akim Demaille  <akim.demaille@gmail.com>

	all: avoid useless comments and #lines
	Currently we emit useless code for places where we might issue user
	content, but there is none.  This commit avoids this.  Besides, some
	of the comments looked like implementation details ("Copy the first
	part of user declarations"), rather than made for the reader of the
	result ("First part of user prologue").

	On Bison's parse-gram.c we get:

	    @@ -76,10 +76,6 @@
	     #define yynerrs         gram_nerrs

	    -/* Copy the first part of user declarations.  */
	    -
	    -#line 82 "src/parse-gram.c" /* yacc.c:339  */
	    -

	* data/bison.m4 (b4_define_user_code): Accept a comment to document
	the section.
	Do not emit any code if the content is empty.
	Adjust callers to not emit the comment.
	Do not
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, data/yacc.c:
	Adjust.

2018-10-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: refactor
	* tests/actions.at, tests/synclines.at: Prefer iteration to
	copy-paste.

2018-10-21  Akim Demaille  <akim.demaille@gmail.com>

	tests: rename AT_SKEL_CC_IF/AT_SKEL_JAVA_IF as AT_CXX_IF/AT_JAVA_IF
	The previous name is too obscure, and the other macros for C++ use
	CXX, not CC.

	* tests/local.at (AT_SKEL_CC_IF, AT_SKEL_JAVA_IF): Rename as...
	(AT_CXX_IF, AT_JAVA_IF): these.
	Adjust callers.

2018-10-21  Akim Demaille  <akim.demaille@gmail.com>

	c++: check that emplace for rvalues works
	See the previous commit.

	* tests/local.at (AT_REQUIRE_CXX_VERSION): New.
	* tests/types.at (api.value.type): Check emplace in C++14.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: prefer a perfect forwarding version of variant's emplace
	* data/variant.hh (emplace): In modern C++, use only a perfect
	forwarding version.
	And use it.
	* doc/bison.texi: Document it.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: prefer 'emplace' to 'build'
	When we introduced variants in Bison, C++ did not have the 'emplace'
	functions, and we chose 'build'.  Let's align with modern C++ and
	promote 'emplace' rather than 'build'.

	* data/lalr1.cc, data/variant.hh (emplace): New.
	(build): Deprecate in favor of emplace.
	* doc/bison.texi: Adjust.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	%printer: promote yyo rather than yyoutput
	* doc/bison.texi: Promote yyo rather than yyoutput.

	* data/c.m4, data/glr.cc, tests/types.at, tests/calc.at,
	tests/regression.at: Adjust.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	doc: improve the C++ section
	* doc/bison.texi (C++ Parser): file.hh and location.hh are no longer
	mandatory.
	Various minor fixes.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	doc: reorder C++ sections
	* doc/bison.texi (C++ Parser Interface): Document before semantic_type
	and location_type.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	git: don't ignore auxiliary Texinfo files
	As a matter of fact, I think it is wrong to gitignore generated files
	that belong to the build tree.  There should be the strict minimum,
	and it's up to people that build in place to adjust their own
	~/.gitignore.

	* doc/.gitignore: here.
	Remove files we no longer produce (thanks to texi2dvi).

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: do not exhibit private macros
	* examples/variant-11.yy: here.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	c++: don't obfuscate std::move when not needed
	* data/lalr1.cc, data/variant.hh: Avoid macros that depend on the
	version of C++ when not needed.

2018-10-20  Akim Demaille  <akim.demaille@gmail.com>

	build: add missing gnulib libs
	Reported by Denis Excoffier.

	* lib/local.mk, src/local.mk: here.

2018-10-18  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2018-10-18  Akim Demaille  <akim.demaille@gmail.com>

	version 3.1.91
	* NEWS: Record release date.

2018-10-18  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-10-18  Akim Demaille  <akim.demaille@gmail.com>

	examples: force stack resizing with unique_ptr
	In the previous commit we fixed a problem when the C++ stack was
	resized.  The test was using ints.  Let's add a test with someone
	quite touchy: unique_ptr

	* examples/variant-11.yy: Accept an argument, which is the number of
	numbers to send to the parser.
	* examples/variant-11.test: Check with many numbers.

2018-10-18  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: fix stack symbol move
	In some casing, once we moved a stack symbol, we forget to mark the
	source stack symbol as emptied.  As a consequence, it may be destroyed
	a second time.

	This happens when the stack has to be resized.

	* data/lalr1.cc (stack_symbol_type::stack_symbol_type): Record that
	the source was emptied.
	(stack_symbol_type::operator=): Likewise.
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Force the stack
	to be resized.  Check its content.

2018-10-17  Akim Demaille  <akim.demaille@gmail.com>

	doc: improve the doc of the examples
	* examples/README: here.

2018-10-17  Akim Demaille  <akim.demaille@gmail.com>

	reader: recognize C++ even when it's not lalr1.cc or glr.cc
	* src/reader.c (grammar_rule_check_and_complete): If a user uses her
	own skeleton but sets the language to C++, recognize it as C++.

2018-10-17  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2018-10-17  Akim Demaille  <akim.demaille@gmail.com>

	version 3.1.90
	* NEWS: Record release date.

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	examples: don't generate the position/stack files
	* examples/variant-11.yy, examples/variant.yy: Require 3.2.

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	pacify syntax-checks
	* lib/lbitset.c, tests/c++.at: here.
	* cfg.mk: Add exceptions.

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	generate the default action only for C++
	This commit adds restrictions to what was done in
	01898726e27c8cf64f8fcea7f26f8ce62f3f5cf2 [1].

	Rici Lake [2] has shown that it's risky to disable the pre-action, at
	least now.  Also, generating the default $$ = $1 action can have bad
	effects in some cases [3].

	The original change [1] was prompted for C++.  Let's try it there
	only, for a start.  We could restrict it further to lalr1.cc with
	variants, but we need to see in the wild how this change behaves.  And
	it is not unreasonable to expect grammar files in C++ to behave better
	wrt types.

	See
	[1] https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00050.html
	[2] https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00061.html
	[3] https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00066.html

	* src/getargs.c: Style changes.
	* src/reader.c (grammar_rule_check_and_complete): Complete only for
	C++.

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-10-16  Akim Demaille  <akim.demaille@gmail.com>

	C++: let %require "3.2" disable the generation of obsolete files
	The files stack.hh and position.hh are deprecated.  Rather than
	devoting specify %define variables to discard them (api.position.file
	and api.stack.file), and rather than having to use special rules when
	api.location.file is used, let's simply decide that from %require
	"3.2" onwards, these files will not be generated.

	The only noticeable thing here is that, in order to be able to check
	the behavior of %require "3.2", to have this version (which is still
	3.1-*) to accept %require "3.2".

	* src/gram.h, src/gram.c (required_version): New.
	* src/parse-gram.y (version_check): Set it.
	* src/output.c (prepare): Pass it m4.
	* data/bison.m4 (b4_required_version_if): Receive it and use it.
	* data/location.cc, data/stack.hh: Replace the api.*.file with only
	required version comparison.
	* tests/input.at: No longer check api.stack.file and api.position.file.
	* NEWS, doc/bison.texi: Don't mention them.
	Document the %require 3.2 behavior.
	* tests/output.at: Use %require 3.2 instead.

2018-10-15  Akim Demaille  <akim.demaille@gmail.com>

	java: bump to Java SE 7
	macOS 10.14 no longer supports versions of Java earlier than 5.
	And Java 6 will be deprecated by the end of this year.  So let's move
	our requirement to Java 7.
	Reported by Yu Yijun.
	https://lists.gnu.org/archive/html/bug-bison/2018-09/msg00060.html
	Suggested by Paul Eggert and Bruno Haible.
	http://lists.gnu.org/archive/html/bug-gnulib/2018-10/msg00094.html

	* configure.ac: Require Java 7, both compiler and runtime.

2018-10-15  Akim Demaille  <akim.demaille@gmail.com>

	doc: do not advertise %nterm
	Reported by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html

	* NEWS, doc/bison.texi: here.

2018-10-14  Akim Demaille  <akim.demaille@gmail.com>

	generate the default semantic action
	Currently, in C, the default semantic action is implemented by being
	always run before running the actual user semantic action.  As a
	consequence, when the user action is run, $$ is already set as $1.

	In C++ with variants, we don't do that, since we cannot manipulate the
	semantic value without knowing its exact type.  When variants are
	enabled, the only guarantee is that $$ is default contructed and ready
	to the used.

	Some users still would like the default action to be run with
	variants.  Frank Heckenbach's parser in
	C++17 (http://lists.gnu.org/archive/html/bug-bison/2018-04/msg00011.html)
	provides this feature, but relying on std::variant's dynamic typing,
	which we forbid in lalr1.cc.

	The simplest seems to be actually generating the default semantic
	action (in all languages/skeletons).  This makes the pre-action (that
	sets $$ to $1) useless.  But...  maybe some users depend on this, in
	spite of the comments that clearly warn againt this.  So let's not
	turn this off just yet.

	* src/reader.c (grammar_rule_check_and_complete): Rename as...
	(grammar_rule_check_and_complete): this.
	Install the default semantic action when applicable.
	* examples/variant-11.yy, examples/variant.yy, tests/calc.at:
	Exercise the default semantic action, even with variants.

2018-10-14  Jannick  <thirdedition@gmx.net>

	xml2xhtml.xsl: add UTF-8 encoding
	To make arrows appear nicely in the browser. Currently it is shown as
	some garbled something in mine (Firefox).

	* data/xslt/xml2xhtml.xsl: here.

2018-10-14  Akim Demaille  <akim.demaille@gmail.com>

	reader: reorder some calls to separate checks from assignments
	* src/reader.c (packgram): Move assignments to rules[ruleno] after the
	checks on the rule.

2018-10-14  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: add missing space before parens
	* data/c++.m4, data/lalr1.cc, data/stack.hh, data/variant.hh,
	* examples/variant-11.yy: here.

2018-10-14  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update timevar
	See
	https://lists.gnu.org/archive/html/bug-gnulib/2018-10/msg00005.html.

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/vbitset.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/vbitset.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/lbitset.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/lbitset.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/ebitset.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/ebitset.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitsetv.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitsetv.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitsetv-print.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitsetv-print.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitset_stats.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitset_stats.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitset.c

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bitset.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/bbitset.h

2018-10-11  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/abitset.c

2018-10-10  Akim Demaille  <akim.demaille@gmail.com>

	style: modernize lib/abitset.h

2018-10-09  Akim Demaille  <akim.demaille@gmail.com>

	C++: issue a better CPP guard and Doxygen file command
	Currently we use "<dir><api.location.file>" as \file argument, and as
	base for the CPP guard.  This is not nice when <dir> is absolute, in
	which case it is expected that the user will use api.location.include
	to get something nicer.  If defined, use that name instead.

	* data/location.cc (b4_location_path): New.
	Use it.
	* tests/c++.at (Shared locations): Check the guard and Doxygen doc.

2018-10-09  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove stray empty line
	* data/stack.hh: here.

2018-10-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: spell check

2018-10-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: document api.*.file and the like
	* doc/bison.texi (Exposing the Location Classes): New.
	(%define Summary): Document api.location.file, api.location.include,
	api.stack.file and api.position.file.
	(C++ Bison Interface): stack.hh and position.hh are deprecated.

2018-10-07  Akim Demaille  <akim.demaille@gmail.com>

	build: add missing gnulib libs
	* src/local.mk (LDADD): Here.

2018-10-07  Akim Demaille  <akim.demaille@gmail.com>

	build: let timevar be dealt with by gnulib
	* lib/local.mk (lib_libbison_a_SOURCES): Remove timevar.

2018-10-07  Akim Demaille  <akim.demaille@gmail.com>

	build: fix distcheck
	Now that distcheck no longer fails (see previous commit), let's
	address the shortcomings.

	* Makefile.am (CLEANDIRS, clean-local): New.
	* doc/local.mk, examples/calc++/local.mk, examples/local.mk,
	* examples/mfcalc/local.mk, examples/rpcalc/local.mk,
	* src/local.mk
	(CLEANDIRS): Get rid of Apple's *.dSYM directories.
	(CLEANFILES): Get rid of *.output files.
	* examples/variant-11.yy, examples/variant.yy: Don't generate
	any of the auxiliary files (location.hh and the like).

2018-10-07  Akim Demaille  <akim.demaille@gmail.com>

	README: work around a nasty behavior of gettext
	`make update-po` runs:

	    package_gnu="$(PACKAGE_GNU)"; \
	    test -n "$$package_gnu" || { \
	      if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
	             LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
	                           -size -10000000c -exec grep 'GNU @PACKAGE@' \
	                           /dev/null '{}' ';' 2>/dev/null; \
	           else \
	             LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
	           fi; \
	         } | grep -v 'libtool:' >/dev/null; then \
	         package_gnu=yes; \
	       else \
	         package_gnu=no; \
	       fi; \
	    }; \

	and based on the result, put GNU or not in the following line from
	bison.pot:

	    # This file is distributed under the same license as the GNU bison package.

	It turns out that in my environment some log files had the 'GNU bison'
	string (note the lower case), but in distcheck, these files are no
	longer visible, so the generate bison.pot was different, and distcheck
	failed because we try to update bison.pot, which is read only in
	distcheck.

	The heuristics should look accept 'GNU Bison', not just 'GNU bison'.
	But let's please it to make sure we have our 'GNU'.

	* README: Mention 'GNU bison'.

2018-10-07  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: document api.*.file changes

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: provide a means to control how location.hh is included
	Users may want to generate the location file elsewhere, say
	$top_srcdir/include/ast/location.hh.  Yet, we should not generate
	`#include "$top_srcdir/include/ast/location.hh"` but probably
	something like `#include <ast/location.hh>`, or `#include
	"ast/location.hh", or `#include <location.hh>`.  It entirely depends
	on the compiler flags (-I/-isystem) that are used.  Bison cannot guess
	what is expected, so let's give the user a means to tell how the
	location file should be included.

	* data/location.cc (b4_location_file): New.
	* data/glr.cc, data/lalr1.cc: Use it.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: support absolute api.location.file names
	In the case a user wants to create location.hh elsewhere, it can be
	helpful to define api.location.file to some possibly absolute path
	such as -Dapi.location.file='"$(top_srcdir)/include/ast/location.hh"'.
	Currently this does not work with `-o foo/parser.cc`, as we join foo/
	and $(top_srcdir) together, the latter starting with slash.

	We should not try to do that in m4, manipulating file names is quite
	complex when you through Windows file name in.  Let m4 delegate this
	to gnulib.

	* src/scan-skel.l (at_output): Accept up to two arguments.
	* data/bison.m4 (b4_output): Adjust.
	* tests/skeletons.at (Fatal errors but M4 continues producing output):
	Adjust to keep the error.

	* data/location.cc, data/stack.hh: Leave the concatenation to @output.
	* tests/output.at: Exercise api.location.file with an absolute path.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: when api.location.file is defined, don't generate stack.hh
	Make it easier to have fewer files.

	* data/stack.hh: Don't generate stack.hh when api.location.file is
	specified.
	* tests/calc++.at, tests/output.at: Adjust tests.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: make position.hh completely useless
	Let's put the definition of position into location.hh, there's no real
	value in keeping them separate: they are small, and share the same
	requirements.

	To help users transition to this new model, still generate position.hh
	by default, but as a simple include to location.hh.

	* data/location.cc (api.position.file): Accept only 'none' as possible
	value.
	(position.hh): Make it a stub.
	(location.hh): Adjust.
	(b4_position_define): Merge into...
	(b4_location_define): this.
	* data/glr.cc, data/lalr1.cc, tests/input.at, tests/output.at: Adjust.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: make stack.hh completely useless
	Let's completely deprecate stack.hh.  Don't provide a means to give it
	a new name, allow only its removal.

	See https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00151.html
	and https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00182.html.

	* data/stack.hh: Reduce stack.hh to a simple comment explaining how to
	get rid of it.
	* data/lalr1.cc: Adjust
	* tests/input.at (%define file variables): Adjust.
	* tests/output.at: Remove cases where stack.hh was removed.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: add support for api.position.file and api.location.file
	* data/location.cc: Sort includes.
	(b4_position_file, b4_location_file): New.
	When there's a file for locations but not for positions, include the
	definition of position in the location file.
	* data/lalr1.cc (b4_shared_declarations): Include the
	position/location file when it exists.
	Otherwise, define the class.
	* data/glr.cc: Likewise.
	* tests/input.at (%define file variables): Check them.
	* tests/output.at (C++ output): Check various cases with
	api.position.file and api.location.file.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: provide control over the stack.hh file name
	It was not a good idea to generate the file stack.hh.  It never was.
	But now we have to deal with backward compatibility: if we stop
	generating it, the build system of some build system will probably
	break.

	So offer the user a means to (i) decide what the name of the output
	file should be, and (ii) not generate this file at all (its content
	will be inline where the parser is defined).

	* data/lalr1.cc (b4_percent_define_check_file_complain)
	(b4_percent_define_check_file): New.
	* data/stack.hh: Generate the file only if api.stack.file is not
	empty.
	In that case, use it as file name.
	* data/lalr1.cc: Adjust to include the right file, or to include
	the definition of stack.
	* tests/calc.at, tests/output.at: Exercise api.stack.file.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: c++: don't fuse prefix and namespace
	They are not the same concept.  It appears that we still consider that
	api.prefix is the default for api.namespace.  We should stop that.

	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	Separate namespace and prefix.
	Adjust dependencies.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	style: tests: factor file extension computations
	* tests/local.at (AT_LANG_HDR): New.
	* tests/calc.at, tests/headers.at, tests/synclines.at: Use it, and
	AT_LANG_EXT.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: style changes
	* data/lalr1.cc: Formatting changes.
	Remove duplicate definition of YY_NULLPTR.
	Add quotes to help Emacs track balanced parens.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	lib: introduce xpath_join
	* lib/path-join.h, lib/path-join.c: New.
	* lib/local.mk: Adjust.
	* src/output.c: Use it.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	CI: travis finally knows about llvm-toolchain-trusty-7
	See https://github.com/travis-ci/apt-source-safelist/pull/392.

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-10-06  Akim Demaille  <akim.demaille@gmail.com>

	doc: restore spello made on purpose

2018-10-05  Akim Demaille  <akim.demaille@gmail.com>

	THANKS: add Josh Soref

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: whether

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: typedef

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: troubleshooting

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: transparent

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: translated

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: transitions

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: transition

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: tracking

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: suppress

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: succesful

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: storage

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: safely

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: responsibility

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: resources

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: releases

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: reduction

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: reachable

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: rawtoknumflag

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: possibly

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: persistent

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: outputting

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: otherwise

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: occurrence

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: namespace

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: minimal

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: invocations

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: initialize

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: incorrectly

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: included

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: illicit

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: handling

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: gratuitously

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: grammar

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: generation

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: generate

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: forewarn

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: fnchange

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: family

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: extensions

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: enum

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: diagnostics

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: determined

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: detailed

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: descriptive

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: definitions

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: declaration

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: corrupted

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: consuming

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: consistently

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: conflicts

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: concatenation

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: complete

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: compatibility

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: comparison

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: combination

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: characters

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: builddir

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: assoc

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: appropriate

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: alignment

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: aggregate

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: adjust

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: additional

2018-10-05  Josh Soref  <jsoref@users.noreply.github.com>

	spelling: accurately

2018-10-05  Akim Demaille  <akim.demaille@gmail.com>

	README-hacking: details about make check-local

2018-10-05  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-10-04  Akim Demaille  <akim.demaille@gmail.com>

	main: fix error message for missing argument
	* src/getargs.c (getargs): Don't display any argv other that argv[0]
	when reporting a missing argument.
	* tests/bison.in: Neutralize path differences in stderr.
	* tests/input.at (Invalid number of arguments): New.

2018-09-30  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: move timevar to it
	* lib/timevar.c, lib/timevar.h, m4/timevar.m4: Remove.
	* gnulib: Update.
	* configure.ac: Adjust.
	* lib/timevar.def: Use lower case for the timevvars.
	Adjust dependencies.

2018-09-29  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* data/glr.cc, data/lalr1.cc: here.

2018-09-29  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-09-29  Paul Eggert  <eggert@cs.ucla.edu>

	getargs: use LC_MESSAGES trick only on glibc
	* src/getargs.c (usage): Rely on setlocale (LC_MESSAGES, NULL)
	trick only on glibc, as POSIX does not specify the output
	of setlocale in this case, and the Gnulib localename module
	source code indicates that the trick works only on glibc.

2018-09-29  Paul Eggert  <eggert@cs.ucla.edu>

	uniqstr: avoid need for VLAs
	C11 no longer requires support for variable-length arrays, and
	VS2015 does not have them.  Redo UNIQSTR_CONCAT to use a method
	that is simpler and better anyway.
	* src/uniqstr.c (uniqstr_vsprintf): Remove; no longer needed.
	* src/uniqstr.h (UNIQSTR_GEN_FORMAT, UNIQSTR_GEN_FORMAT_):
	* src/uniqstr.c (uniqstr_concat): New function.
	* src/uniqstr.h (UNIQSTR_CONCAT): Use it instead of using
	uniqstr_vsprintf.

2018-09-26  Akim Demaille  <akim.demaille@gmail.com>

	doc: clean up the C++ section
	* doc/bison.texi: Minor fixes in typography.
	It is no longer require to pass --defines for C++ (it was addressed
	long ago).
	No longer refer to the `variant` define variable, it was replaced by
	`api.value.type variant`.
	Prefer nullptr to 0 for the null pointer.
	Use deftypeop for constructors.
	(Complete Symbols): Give the expected signature of yylex.
	Don't document the symbol_type constructors, as we want users to focus
	on make_TOKEN.
	Also show the case without locations.

2018-09-26  Akim Demaille  <akim.demaille@gmail.com>

	CI: fixes for clang and asan
	Bison's test 464 (Syntax error as exception) fails on the CI.
	Do not use clang with asan on Ubuntu's libc++.
	https://bugs.llvm.org/show_bug.cgi?id=17379

	* .travis.yml (Clang 7 libc++ and ASAN): New.
	(Clang 6 -O3 and libc++): Really use libc++.
	(Clang 5): Don't use libc++, nor asan (does not work either, same
	reason).

2018-09-24  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in muscle-tab.c

2018-09-24  Akim Demaille  <akim.demaille@gmail.com>

	style: remove useless parens
	* data/bison.m4, data/glr.c, data/glr.cc, data/lalr1.cc,
	* data/lalr1.java, data/location.cc, data/yacc.c: Call b4_output_end
	without parens.

2018-09-24  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix warning message for automove
	* src/scan-code.l: Remove 'enabled'.
	Use only $k (numeric), even for named references, for clarity.
	* tests/c++.at: Adjust expectations.

2018-09-24  Akim Demaille  <akim.demaille@gmail.com>

	style: minor refactoring
	* data/bison.m4: Formatting changes.
	* src/scan-code.l: Avoid loops, prefer standard string functions.
	(find_prefix_end): Be const correct.
	Avoid useless intermediate variables.
	(variant_add): Be const correct.
	(parse_ref): Prefer variable definitions to assignments.

2018-09-24  Akim Demaille  <akim.demaille@gmail.com>

	CI: don't exit
	* .travis.yml: Prefer `false` to `exit`, as it completely ends the
	script (so we don't get the logs).

2018-09-24  Akim Demaille  <akim.demaille@gmail.com>

	CI: really use Clang 3.3 and 3.4, not 5.0
	* .travis.yml: Don't define CC/CXX, it does not work.
	Use `[[...]]` instead of `[...]`.
	Show the compiler versions.
	(Clang 3.3, Clang 3.4): Specify the path to avoid using
	/usr/local/clang-5.0.0/bin's clang.

2018-09-23  Akim Demaille  <akim.demaille@gmail.com>

	CI: more compiler configurations
	* .travis.yml (GCC 8): Use sanitizers.
	(Clang 5 -O3): Remove, replaced by...
	(Clang 7 ASAN and libc++, Clang 6 -O3 and libc++): New.

2018-09-23  Akim Demaille  <akim.demaille@gmail.com>

	build: rename and simplify the -std checks for C++
	Too much code duplication.

	* m4/bison-cxx-std.m4: s/BISON_CXX_COMPILE_STDCXX/BISON_CXXSTD/.
	(BISON_CXXSTD): New.
	* configure.ac: Use it.

2018-09-23  Akim Demaille  <akim.demaille@gmail.com>

	build: check for C++98 and 03 like the others
	* m4/bison-cxx-std.m4 (BISON_CXX_COMPILE_STDCXX_98)
	(BISON_CXX_COMPILE_STDCXX_03): New.
	* configure.ac: Use them.

2018-09-23  Akim Demaille  <akim.demaille@gmail.com>

	build: use our own version of ax_check_link_flag
	The message on configure is misleading:

	    checking whether the linker accepts -std=c++11... yes
	    checking whether the linker accepts -std=c++14... yes
	    checking whether the linker accepts -std=c++17... no

	It is the compiler that we check, not just the linker.

	* m4/ax_check_link_flag.m4: Remove.
	* m4/bison-check-compiler-flag.m4: New.
	* m4/bison-cxx-std.m4: Use it.

2018-09-23  Akim Demaille  <akim.demaille@gmail.com>

	build: fix Autoconf macros to check for C++ standard flags
	* m4/bison-cxx-std.m4: Since now we link the program, we need a
	program: main was missing and linking was failing.

2018-09-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix a memory leak
	This has been bugging me for while.  I was hard to reproduce: it
	worked only on GNU/Linux, probably because libc++ implements the small
	string optimization, while libstdc++ did not and actually allocated on
	the heap for this small string.

	See https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00110.html.

	* tests/types.at (api.value.type): Do not provide a semantic value to
	EOF.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	doc: work around Flex's use of 'register'
	The CI uses an old version of Flex.
	See 65fa634cdcfc5cf59b8b074670f488bba4df57cd.

	* doc/bison.texi (calc++/scanner.ll): Here.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: don't declare getrusage if we don't use it
	This fails on MinGW.
	Reported by Simon Sobisch.
	http://lists.gnu.org/archive/html/bug-bison/2018-09/msg00058.html

	* lib/timevar.c: Don't provide default prototypes for functions
	we don't use.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: get rid of a useless macro
	* lib/timevar.h (timevar_report): Rename as...
	(timevar_enabled): this.
	* lib/timevar.c (TIMEVAR_ENABLE): Remove.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: introduce and use get_current_time
	* lib/timevar.c: here.
	Remove useless prototypes.
	(timevar_accumulate): Be const correct.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: rename get_time as set_to_current_time
	* lib/timevar.c: here.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: reduce scopes
	* lib/timevar.c: here.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: document in the header, not in the implementation
	* lib/timevar.c: Move documentation from here...
	* lib/timevar.h: to there.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: remove useless 'extern' for prototypes
	* lib/timevar.h, lib/timevar.c: here.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: rename init_timevar as timevar_init
	* lib/timevar.h, lib/timevar.c: here.
	* src/main.c: Adjust.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: we don't care about backward compatibility
	* lib/timevar.h, lib/timevar.c (get_run_time, print_time): Remove.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: prefer #elif
	* lib/timevar.c: Use #if/#elif to be clearer about mutually exclusive
	cases.
	Indent CPP nested directives.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: assume ANSI C
	Suggested by Bruno Haible.
	https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00102.html

	* lib/timevar.c: Wow...  This was still KnR C!

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	timevar: remove remains of GCC
	* lib/timevar.h, lib/timevar.c: Rename the header guard.
	Get rid of parts meant for GCC only.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	news: c++: move semantics

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: issue a warning with a value is moved several times
	Suggested by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2018-09/msg00022.html

	* src/scan-code.l (parse_ref): Check multiple occurrences of rhs
	values.
	* tests/c++.at (Multiple occurrences of $n and api.value.automove): New.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	c++: introduce api.value.automove
	Based on work by Frank Heckenbach.
	See http://lists.gnu.org/archive/html/bug-bison/2018-04/msg00000.html
	and http://lists.gnu.org/archive/html/bug-bison/2018-09/msg00019.html.

	* data/lalr1.cc (b4_rhs_value): Use YY_MOVE api.rhs.automove is set.
	* doc/bison.texi (%define Summary): Document api.rhs.automove.
	* examples/variant-11.yy: Use it.

	* tests/local.at (AT_AUTOMOVE_IF): New.
	* tests/c++.at (Variants): Check move semantics.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	tests: c++: use a custom string type
	The forthcoming automove feature, to be properly checked, will require
	that we can rely on the value of a moved-from string, which is not
	something the C++ standard guarantees.  So introduce our own wrapper.

	Suggested by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00111.html

	* tests/c++.at (Variants): Introduce and use a new 'string' class.

2018-09-22  Akim Demaille  <akim.demaille@gmail.com>

	tests: prepare a test for automove
	The 'Variants' tests are well suited to check support for move, and in
	particular for the forthcoming automove feature.  But the tests were
	written to show the best practice in C++98, using swap:

	    list "," item { std::swap ($$, $1); $$.push_back ($3); }

	This cannot work with std::move.  So, make this example simpler, based
	on regular assignment instead of swap, which is a regression for
	C++98 (as the new traces show), but will be an improvement for modern
	C++ with automove.

	* tests/c++.at (Variants): Stop using swap.
	We don't generate a header file, so remove the 'require' code section.
	Adjust expectations.

2018-09-20  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in gram.c
	* src/gram.c: here.

2018-09-20  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in reduce.c
	* src/reduce.c: Here.

2018-09-20  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-09-20  Akim Demaille  <akim.demaille@gmail.com>

	build: work around ICC's limitations
	Several types of failures.  First, unable to pass the file name
	properly to the linker.

	    ./synclines.at:416: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o \"\\\"\" \"\\\"\".c $LIBS
	    stderr:
	    ld: cannot open output file "/"": No such file or directory
	    stdout:

	Unable to save under such a file name.

	    ./synclines.at:421: $CXX $CXXFLAGS $CPPFLAGS -c $LDFLAGS -o \"\\\"\" \"\\\"\".cc $LIBS
	    stderr:
	    error: can't open file "/"" for write
	    compilation aborted for "\"".cc (code 1)

	Spurious output because of warning flags is failed to reject as an
	error during configure:

	    ./headers.at:343: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx ||
	              exit 77
	    --- /dev/null	2018-09-18 21:21:37.745649000 +0000
	    +++ /home/travis/build/akimd/bison/tests/testsuite.dir/at-groups/222/stderr	2018-09-18 21:28:17.291919519 +0000
	    @@ -0,0 +1,7 @@
	    +icpc: command line warning #10006: ignoring unknown option '-Wcast-align'
	    +icpc: command line warning #10006: ignoring unknown option '-fparse-all-comments'
	    +icpc: command line warning #10006: ignoring unknown option '-Wdocumentation'
	    +icpc: command line warning #10006: ignoring unknown option '-Wnull-dereference'
	    +icpc: command line warning #10006: ignoring unknown option '-Wnoexcept'
	    +icpc: command line warning #10006: ignoring unknown option '-fno-color-diagnostics'
	    +icpc: command line warning #10006: ignoring unknown option '-Wno-keyword-macro'
	    stdout:

	* tests/local.at (AT_SKIP_IF_CANNOT_LINK_C_AND_CXX): Also ignore
	stderr, as with ICC we get
	* tests/synclines.at (syncline escapes): Don't link the output.

2018-09-19  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix typo
	Introduced in the previous commit.

	* doc/bison.texi: here.

2018-09-19  Akim Demaille  <akim.demaille@gmail.com>

	style: use midrule only, not mid-rule
	The code was already using midrule only, never mid_rule.  This is
	simpler to remember, and matches a similar change we made from
	look-ahead to lookahead.

	* NEWS, doc/bison.texi, src/reader.c, src/scan-code.h, src/scan-code.l
	* tests/actions.at, tests/c++.at, tests/existing.at: here.

2018-09-19  Akim Demaille  <akim.demaille@gmail.com>

	style: use _foo for private macros, not foo_
	We use both styles, let's stick to a single one.  Autoconf uses the
	prefix one, let's do the same.

	* data/bison.m4, data/c++.m4, data/c-like.m4, data/lalr1.cc,
	* data/variant.hh, data/yacc.c: Rename all the b4_*_ macros
	as _b4_*.

2018-09-19  Akim Demaille  <akim.demaille@gmail.com>

	build: don't accept a broken standard lib for C++
	On the CI, we had failures such as:

	    ./c++.at:401:  $PREPARSER ./list
	    stderr:
	    ./list: error while loading shared libraries: libc++.so.1:
	            cannot open shared object file: No such file or directory

	because we accepted `-std=c++ -stdlib=libc++` although libc++ is not
	installed on the machine.

	* m4/ax_check_compile_flag.m4 (AX_CHECK_COMPILE_FLAG): Rewrite as...
	* m4/bison-check-compile-flag.m4 (BISON_CHECK_COMPILE_FLAG): this, so
	that we use AC_LINK_IFELSE to check the compiler (and its std lib)
	instead of AC_COMPILE_IFELSE.

2018-09-18  Paul Eggert  <eggert@cs.ucla.edu>

	doc: document older compiler issues
	* doc/bison.texi (Compiler Requirements for GLR):
	Rename from Compiler Requirements.
	(I can't build Bison): Add FAQ for older compilers.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: work around ICC limitations
	The CI is littered with

	    #                             -*- compilation -*-
	    423. regression.at:907: testing Dancer %glr-parser ...
	    ./regression.at:907: bison -fno-caret -o dancer.c dancer.y
	    ./regression.at:907: $BISON_C_WORKS
	    stderr:
	    stdout:
	    ./regression.at:907: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o dancer dancer.c $LIBS
	    stderr:
	    icc: command line warning #10006: ignoring unknown option '-Wcast-align'
	    icc: command line warning #10006: ignoring unknown option '-fparse-all-comments'
	    icc: command line warning #10006: ignoring unknown option '-Wdocumentation'
	    icc: command line warning #10006: ignoring unknown option '-Wnull-dereference'
	    icc: command line warning #10006: ignoring unknown option '-Wbad-function-cast'
	    icc: command line warning #10006: ignoring unknown option '-fno-color-diagnostics'
	    icc: command line warning #10006: ignoring unknown option '-Wno-keyword-macro'
	    dancer.c(755): error #1628: function declared with "noreturn" does return
	      }
	      ^

	    dancer.c(761): error #1628: function declared with "noreturn" does return
	      }
	      ^

	    compilation aborted for dancer.c (code 2)

	ICC sees that `longjmp(buf, 1);` does not return, it sees that
	`abort();` does not either, but fails to see it for
	`longjmp(buf, 1); abort();`

	* data/glr.c (YYLONGJMP): Be even clearer on the fact this does not
	return.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	TODO: more

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: change strategy to pass CXXFLAGS and the like
	Putting them in the env is useless.  We don't want to pass
	`CPPFLAGS="$CPPFLAGS"` to configure, as it means "set it to nothing"
	when $CPPFLAGS is not set, which is not what we want.

	This correctly started to use libc++, but it is not installed on the
	Ubuntu.  We will see later if we can use it.

	* .travis.yml: Define CONFIGUREFLAGS, and pass it to configure.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: also use GCC 4.7 and 4.8
	* .travis.yml (matrix): here.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: name the items of the matrix
	* .travis.yml: here.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: also check with ICC
	* build-aux/install-icc.sh: New.
	* .travis.yml (icc): New.
	Use -k to get as many errors as possible from the start.
	* src/complain.c (warnings_types): Use a more precise type.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: be sure to exit on failures
	a807cfa6eb1a5362ead0b7c99bdc8fd2f4f896da completely broke the whole
	point of having a CI: we always exit with success!

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	build: strengthen the C++ standard flag test
	On the CI, we have this spurious failure with clang 3.9 with
	-std=c++17:

	    In file included from list.y:23:
	    In file included from /usr/include/c++/4.8/iostream:39:
	    In file included from /usr/include/c++/4.8/ostream:38:
	    In file included from /usr/include/c++/4.8/ios:42:
	    In file included from /usr/include/c++/4.8/bits/ios_base.h:41:
	    In file included from /usr/include/c++/4.8/bits/locale_classes.h:40:
	    In file included from /usr/include/c++/4.8/string:52:
	    In file included from /usr/include/c++/4.8/bits/basic_string.h:2815:
	    In file included from /usr/include/c++/4.8/ext/string_conversions.h:43:
	    /usr/include/c++/4.8/cstdio:120:11: error: no member named 'gets' in the global namespace
	      using ::gets;
	            ~~^

	This shows that our test, based on gl_WARN_ADD, is a joke.  We have to
	really check for at least a bit of C++.

	* m4/ax_check_compile_flag.m4, m4/bison-cxx-std.m4: New.
	* configure.ac: Use them to make sure the compiler actually works.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix memory leak
	This was reported by ASAN on the CI.

	* tests/types.at (api.value.type): Don't set a semantic value to EOF.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: prefer true/false to 1/0 in C++
	* data/glr.c: here.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: work around Flex's use of 'register'
	The CI uses an old version of Flex.

	* doc/bison.texi (calc++/scanner.ll): Here.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	tests: fight G++ warnings about zero as null pointer constant
	In C++ pre C++11 it is standard practice to use 0 for the null pointer.
	But GCC pre 8 -std=c++98 with -Wzero-as-null-pointer-constant warns about
	this.

	So disable -Wzero-as-null-pointer-constant when compiling C++ pre 11.
	Let's do this in AT_DATA_SOURCE_PROLOGUE (which is pasted on top of
	all the test grammar files).  Unfortunately, that shifts all the
	locations in the expected error messages, which would be too noisy.
	Instead, let's introduce testsuite.h, which can vary in length, and
	include it in AT_DATA_SOURCE_PROLOGUE.

	* tests/testsuite.h: New.
	Disable -Wzero-as-null-pointer-constant's warning with GCC pre 8,
	C++ pre 11.
	* tests/local.at (AT_DATA_SOURCE_PROLOGUE): Use it.
	* tests/atlocal.in (CPPFLAGS): Find it.
	* tests/local.mk: Ship it.
	* data/c.m4 (YY_NULLPTR): Prefer ((void*)0) to 0 in C.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: make sure `git describe` works
	For some reasons, the checkout on travis may not have any tags, so
	`git describe` fails, so bootstrap fails.

	* .travis.yml: If git describe fails, install some tag.

2018-09-18  Akim Demaille  <akim.demaille@gmail.com>

	CI: install Doxygen
	* .travis.yml: here, so that its tests are not skipped.
	Remove valgrind: it's too expensive on the CI, and asan does the job.

2018-09-16  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer %D% in Automake files
	* tests/local.mk: Prefer %D%/ to tests/.

2018-09-15  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in complain.c

2018-09-15  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in tables.c
	* src/tables.c: here.
	* src/state.h: Formatting changes.

2018-09-15  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in graphviz.c

2018-09-15  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in LR0.c

2018-09-15  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes in print_graph.c
	* src/print_graph.c: here.

2018-09-15  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: No changes in the output.

2018-09-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: run the C++ tests on all the available standards
	This is much of course more efficient than in the matrix of the CI (or
	on our own machines), but a bit more tedious.

	* configure.ac (CXX03_CXXFLAGS, CXX11_CXXFLAGS, CXX14_CXXFLAGS)
	(CXX17_CXXFLAGS, CXX2A_CXXFLAGS, STDCXX_FLAGS): New.
	* tests/atlocal.in: Receive them.
	* tests/local.at (AT_FOR_EACH_CXX): New.
	* tests/c++.at: Use AT_FOR_EACH_CXX.

2018-09-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: allow to override variables with envvars
	* tests/atlocal.in: Allow the user to change interesting variables
	(CFLAGS, CXXFLAGS, etc.).

2018-09-13  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: modern C++ no longer needs an assignment for symbols
	Reported by Frank Heckenbach.
	http://lists.gnu.org/archive/html/bug-bison/2018-03/msg00002.html

	Actually the assignment operator should never be needed: the C++98
	requirements for vector::push_back is CopyInsertable, which does not require
	an assignment operator.  However, libstdc++ shipped with GCC up to (and
	including) 6 uses the assignment operator (which affects Clang on top of
	libstdc++, but also ICC).  So let's keep it for legacy C++.

	See https://gcc.godbolt.org/z/q0XXmC.

	* data/lalr1.cc (stack_symbol_type::operator=): Remove.
	* data/c++.m4 (basic_symbol::operator=): Ditto.
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Adjust.

2018-09-13  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: support move semantics
	Modern C++ (i.e., C++11 and later) introduced "move only" types: types such
	as std::unique_ptr<T> that can never be duplicated.  They must never be
	copied (by assignments and constructors), they must be "moved".  The
	implementation of lalr1.cc used to copy symbols (including their semantic
	values).  This commit ensures that values are only moved in modern C++, yet
	remain compatible with C++98/C++03.

	Suggested by Frank Heckenbach, who provided a full implementation on
	top of C++17's std::variant.
	See http://lists.gnu.org/archive/html/bug-bison/2018-03/msg00002.html,
	and https://lists.gnu.org/archive/html/bison-patches/2018-04/msg00002.html.

	Symbols (terminal/non terminal) are handled by several functions that used
	to take const-refs, which resulted eventually in a copy pushed on the stack.
	With modern C++ (C++11 and later) the callers must use std::move, and the
	callees must take their arguments as rvalue refs (foo&&).  In order to avoid
	duplicating these functions to support both legacy C++ and modern C++, let's
	introduce macros (YY_MOVE, YY_RVREF, etc.)  that rely on copy-semantics for
	C++98/03, and move-semantics for modern C++.

	That's easy for inner types, when the parser's functions pass arguments to
	each other.  Functions facing the user (make_NUMBER, make_STRING, etc.)
	should support both rvalue-refs (for instance to support move-only types:
	make_INT (std::make_unique<int> (1))), and lvalue-refs (so that we can pass
	a variable: make_INT (my_int)).  To avoid the multiplication of the
	signatures (there is also the location), let's take the argument by value.

	See:
	https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00024.html.

	* data/c++.m4 (b4_cxx_portability): New.
	(basic_symbol): In C++11, replace copy-ctors with move-ctors.
	In C++11, replace copies with moves.
	* data/lalr1.cc (stack_symbol_type, yypush_): Likewise.
	Use YY_MOVE to avoid useless copies.
	* data/variant.hh (variant): Support move-semantics.
	(make_SYMBOL): In C++11, in order to support both read-only lvalues,
	and rvalues, take the argument as a copy.
	* data/stack.hh (yypush_): Use rvalue-refs in C++11.
	* tests/c++.at: Use move semantics.

	* tests/headers.at: Adjust to the new macros (YY_MOVE, etc.).

	* configure.ac (CXX98_CXXFLAGS, CXX11_CXXFLAGS, CXX14_CXXFLAGS)
	(CXX17_CXXFLAGS, ENABLE_CXX11): New.
	* tests/atlocal.in: Receive them.

	* examples/variant.yy: Don't define things in std.
	* examples/variant-11.test, examples/variant-11.yy: New.
	Check the support of move-only types.
	* examples/README, examples/local.mk: Adjust.

2018-09-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: factor the definition of full compilation
	* tests/local.at (AT_LANG_EXT): New.
	(AT_FULL_COMPILE): Simplify.

2018-09-10  Akim Demaille  <akim.demaille@gmail.com>

	CI: use clang with libc++
	GCC uses libstdc++.  Let's also check libc++.

	* .travis.yml: here.

2018-09-10  Akim Demaille  <akim.demaille@gmail.com>

	CI: use address sanitizer
	* .travis.yml (matrix): Use the latest (available) clang with asan.

2018-09-10  Akim Demaille  <akim.demaille@gmail.com>

	CI: sort the matrix in reverse-chronological
	There are only three builds at a time: show the result of modern
	compilers first.

	* .travis.yml (matrix): Sort in reverse-chronological.

2018-09-10  Akim Demaille  <akim.demaille@gmail.com>

	build: use -fparse-all-comments with -Wdocumentation
	Clang checks only /** ... */ comments without this flag.

	* configure.ac (warn_common): Also check -fparse-all-comments.

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	TODO: minor updates

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	build: fix support for --disable-dependency-tracking
	Reported by Juan Manuel Guerrero.
	https://lists.gnu.org/archive/html/bug-bison/2014-07/msg00000.html.

	* examples/local.mk (%D%/extracted.stamp): Make sure the output
	directory exists.
	* examples/extexi (process): Likewise.

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	configure.ac: fix definition of NO_EXCEPTIONS_CXXFLAGS
	* configure.ac: Always define it, not just when --enable-gcc-warnings
	is passed.

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: style/comment changes
	* data/c++.m4, data/c.m4, data/glr.c: Here.

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	variant: indent better the generated code
	* data/variant.hh (b4_basic_symbol_constructor_declare)
	(b4_basic_symbol_constructor_define): here.

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: don't generate useless constructors when variant is used
	This generates less code, which is nicer to read, but also takes less
	chances with compilers such as G++ 4.8 that are too strict and check
	"dead code" (templated code that is not instantiated).

	* data/c++.m4 (b4_symbol_type_declare, b4_symbol_type_define): When
	variants are used, don't generate code meant for non variants.

2018-09-09  Akim Demaille  <akim.demaille@gmail.com>

	CI: Clang 6.0 is not available
	But Clang 3.3 and 3.4 are.

	* .travis.yml (addons): Remove, it appears to be ignore if the matrix
	also defines it.
	(matrix): Update.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	build: work around warnings in Flex
	See ea0db44fedc8d5cbdc5c3180bef0285d7ae83803.  We also need to disable
	the warning in the examples (but don't want to clutter the
	documentation with such details).

	* doc/bison.texi (scanner.ll): Disable Clang's -Wdocumentation.
	While at it, hide the other kludges.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: more compiler configurations
	* .travis.yml: here.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	configure: reveal the name of the Valgrind suppression file we use
	* configure.ac: here.
	* build-aux/Linux.valgrind (libstdcxx_init): New.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	build: work around warnings in Flex 2.5.35
	That's the version on Ubuntu Precise.
	See also 1dac131ec45ffa1e382319a94640c65bd10f6aa5.

	* src/flex-scanner.h: Disable -Wdocumentation.
	* doc/bison.texi: Turn off a warning triggered by Flex 2.6.4.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: show the version of the tools we use
	We have failures on Flex output, which are probably related to an old
	release.  Let's check.

	    In file included from src/scan-code-c.c:3:
	    src/scan-code.c:2198:21: error: empty paragraph passed to '@param' command
	          [-Werror,-Wdocumentation]
	     * @param line_number
	       ~~~~~~~~~~~~~~~~~^

	* .travis.yml: here.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: run more maintainer tests and show the logs
	Running all these tests might be overkill: it is very long, and don't
	need full portability checks.  Besides, some tests under Valgrind are
	too slow and get killed by the CI (timeout of 10min without output).

	* .travis.yml: here.

2018-09-08  Akim Demaille  <akim.demaille@gmail.com>

	CI: enable compiler warnings
	* .travis.yml: here.
	* README-hacking: We no longer aim at K&R C.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	build: work around GCC warnings on Flex code
	See ef98967ada3c1cd48c177d7349e65a709bb49b97.

	* src/flex-scanner.h: Disable -Wnull-dereference for GCC 6+.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix target naming convention
	We have some maintainer-check-foo and some maintainer-foo-check.  Keep
	only the former.

	* tests/local.mk (maintainer-push-check, maintainer-xml-check)
	(maintainer-release-check): Rename as...
	(maintainer-check-push, maintainer-check-xml)
	(maintainer-check-release): these.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix variable naming convention
	Most of our variables for C++ flags are named FOO_CXXFLAGS, not
	CXXFLAGS_FOO.

	* configure.ac, tests/atlocal.in, tests/calc.at
	(NO_EXCEPTIONS_CXXFLAGS): Rename as...
	(CXXFLAGS_NO_EXCEPTIONS): this.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix maintainer-check-g++ make recipe
	Clang++ issues warnings when it's used to compile C.  This make target
	is precisely checking whether we can do that.

	* configure.ac (NO_DEPRECATED_CXXFLAGS): New.
	* tests/atlocal.in: Use it.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix maintainer-check-valgrind make recipe
	* tests/local.mk (maintainer-check-valgrind): Run the with Valgrind
	when it's available, not the converse.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	CI: prepare for travis
	* .travis.yml: New.

2018-09-06  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of shell portability issues
	This completes 2d7e7438024e47650c3a0c9f5f313c6eb6acae2d.

	Some shells don't grok "local var=`cmd`" very well: they need the rhs
	to be quoted.

	    ./examples/test: 72: local: you.,: bad variable name
	    FAIL examples/variant.test (exit status: 2)

	Reported by Étienne Renault.

	* examples/test (run): Quote the values in 'local' assignments.

2018-09-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: style changes
	* tests/c++.at: Formatting changes.
	Use 'using' to shorten the code.

2018-09-02  Akim Demaille  <akim.demaille@gmail.com>

	tests: disable GCC7 warnings for some tests
	With GCC7 we have warnings (false positive):

	    x8.c: In function 'x8_parse':
	    x8.c:1233:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	             yylval = *yypushed_val;
	             ~~~~~~~^~~~~~~~~~~~~~~
	    x8.c: In function 'x8_pull_parse':
	    x8.c:1233:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	             yylval = *yypushed_val;
	             ~~~~~~~^~~~~~~~~~~~~~~

	See also 9645a2b20ee7cbfa8bb4ac2237f87d598afe349c.

	* tests/local.at (AT_PUSH_IF): New.
	(AT_BISON_OPTION_POPDEFS): Pop it, and pop AT_PURE_IF.
	* tests/headers.at (Several parsers, Several parsers): Disable these
	warnings when in push parser.

2018-09-02  Akim Demaille  <akim.demaille@gmail.com>

	C++: don't issue the definition of symbol_type when not used
	Currently, in glr.cc, we emit the definitions of basic_symbol and
	symbol_type, although there are not used.

	* data/c++.m4 (b4_public_types_declare): Extract these definitions from
	here, and move them...
	(b4_symbol_type_declare): here.
	(b4_public_types_declare): Also remove the definition of the symbol
	constructors.
	* data/lalr1.cc (b4_shared_declarations): Adjust: call
	b4_symbol_type_declare and b4_symbol_constructor_declare.

2018-09-02  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of shell portability issues
	Some shells don't grok `local var=$val` very well: they need the rhs
	to be quoted.

	    ./examples/test: 66: local: you.,: bad variable name
	    FAIL examples/variant.test (exit status: 2)

	Reported by Étienne Renault.

	* examples/test (run): Quote the values in 'local' assignments.

2018-08-31  Akim Demaille  <akim.demaille@gmail.com>

	C++: leave 'inline' on the definition, not the declaration
	This is for consistency with the other uses of 'inline' in the C++
	skeletons.  On examples/variant.yy, this change gives:

	    --- examples/variant.hh	2018-08-31 07:16:57.214222580 +0200
	    +++ examples/variant.hh	2018-08-31 07:19:52.285431997 +0200
	    @@ -444,15 +444,15 @@
	         typedef basic_symbol<by_type> symbol_type;

	         // Symbol constructors declarations.
	    -    static inline
	    +    static
	         symbol_type
	         make_END_OF_FILE (const location_type& l);

	    -    static inline
	    +    static
	         symbol_type
	         make_TEXT (const ::std::string& v, const location_type& l);

	    -    static inline
	    +    static
	         symbol_type
	         make_NUMBER (const int& v, const location_type& l);

	    @@ -945,19 +945,23 @@
	         };
	         return static_cast<token_type> (yytoken_number_[type]);
	       }
	    +
	       // Implementation of make_symbol for each symbol type.
	    +  inline
	       parser::symbol_type
	       parser::make_END_OF_FILE (const location_type& l)
	       {
	         return symbol_type (token::END_OF_FILE, l);
	       }

	    +  inline
	       parser::symbol_type
	       parser::make_TEXT (const ::std::string& v, const location_type& l)
	       {
	         return symbol_type (token::TEXT, v, l);
	       }

	    +  inline
	       parser::symbol_type
	       parser::make_NUMBER (const int& v, const location_type& l)
	       {
	    @@ -967,7 +971,7 @@

	     } // yy
	    -#line 971 "examples/variant.hh" // lalr1.cc:380
	    +#line 975 "examples/variant.hh" // lalr1.cc:380

	and no changes on variant.cc.

	* data/c++.m4 (b4_public_types_define): Formatting changes.
	* data/variant.hh (b4_symbol_value_template_, b4_symbol_constructor_declare_):
	Move the 'inline' from declaration to implementation.

2018-08-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: style changes
	Instead of

	    parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that)
	      : super_type (that.state, that.location)
	    {
	      value = that.value;
	    }

	generate

	    parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that)
	      : super_type (that.state, that.value, that.location)
	    {}

	* data/lalr1.cc (stack_symbol_type): Improve the copy ctor, when not
	using the variants.
	(yypush_): Rename arguments for clarity.

2018-08-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: the assignment operator does not have to be const
	* data/lalr1.cc (stack_symbol_type::operator=): Don't copy the
	argument, move it.

2018-08-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: style changes
	* tests/c++.at (C++ Variant-based Symbols): Rename as...
	(C++ Variant-based Symbols Unit Tests): this.
	Comment/style changes.

2018-08-27  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2018-08-27  Akim Demaille  <akim.demaille@gmail.com>

	version 3.1
	* NEWS: Record release date.

2018-08-27  Akim Demaille  <akim.demaille@gmail.com>

	build: tabs are ok in a Makefile
	* cfg.mk: TABs are ok in examples/calc++/Makefile.

2018-08-26  Akim Demaille  <akim.demaille@gmail.com>

	C++: make sure the generated header is self container
	See the previous commit.

	* data/lalr1.cc: Be sure to define YY_NULLPTR.
	* tests/headers.at: Check the case that was failing.

2018-08-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: check that headers are sane
	The header generated for variants with assertions but without
	locations, is not self-contained.  Prepare a check for this.

	* tests/headers.at (Sane headers): New, extracted from...
	(Several parsers): here.

2018-08-25  Akim Demaille  <akim.demaille@gmail.com>

	"C++: restore copy-constructor for stack_symbol_type
	Benchmarks show that it is more efficient to keep this copy
	constructor, rather than forcing the use of the default constructor
	and then assignment.

	This reverts commit 7ab25ad0208d00f509613e1e151aa3043cf2862f.

2018-08-25  Akim Demaille  <akim.demaille@gmail.com>

	examples: calc++: a Makefile and a README
	* examples/calc++/Makefile, examples/calc++/README: New.
	* examples/calc++/local.mk: Ship and install them.
	* doc/bison.texi: Formatting changes.

2018-08-25  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2018-08-25  Jiahao Li  <jiahaoli@fb.com>

	variant: fix uninitialized memory access in `variant<>`
	Currently, in bison's C++ parser template (`lalr.cc`), the `variant<>`
	struct's `build()` method uses placement-new in the form `new (...) T`
	to initialize a variant type.  However, for POD variant types, this
	will leave the memory space uninitialized.  If we subsequently tries
	to `::move` into a variant object in such state, the call can trigger
	clang's undefined behavior sanitizer due to accessing the
	uninitialized memory.

	https://lists.gnu.org/archive/html/bison-patches/2018-08/msg00098.html

	* data/variant.hh (build): Always initialize the stored value.

2018-08-24  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-08-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: calc++: minor improvements
	* doc/bison.texi (A Complete C++ Example): Prefer throw exceptions
	from the scanner.
	Show the invalid characters.
	Since the scanner sends exceptions, it no longer needs to report
	errors, so we can get rid of the driver's routine to report error,
	do it in yyerror.
	Use @group/@end group to improve rendering.

2018-08-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: calc++: make sure the file name in location is set
	Reported by Hans Åberg.
	http://lists.gnu.org/archive/html/bug-bison/2018-08/msg00039.html

	* doc/bison.texi (A Complete C++ Example): Move the token's location
	from the scanner to the driver.

2018-08-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: calc++: remove prefixes
	This example uses the calcxx_ prefix for each class.  That's uselessly
	heavy.

	* doc/bison.texi (A Complete C++ Example): Simplify the class names.
	Since now 'driver' denotes the class, use 'drv' for the values.
	Formatting changes.

2018-08-23  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix the leading empty line
	* examples/extexi: Really avoid the first empty line.
	Remove useless `next`.

2018-08-23  Akim Demaille  <akim.demaille@gmail.com>

	examples: shorten the name of the calc++ files
	* doc/bison.texi: Turn the calc++- prefix into calc++/.
	* examples/extexi (%file_wanted): Replace with
	(&file_wanted): this.
	* examples/calc++/local.mk: Adjust.

2018-08-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: disable -Wmaybe-uninitialized in some tests
	On these tests, at -O2 and above, GCC 8 complains that yylval may be
	uninitialized.  But it seems wrong: it is initialized.  Rather than
	turning off the warning in the skeleton (hence possibility hiding
	relevant warnings of user parsers), let's turn it off in the tests
	only.

	    163: parse.error=verbose and consistent errors:      FAILED (conflicts.at:625)
	    165: parse.error=verbose and consistent errors: lr.default-reduction=consistent FAILED (conflicts.at:635)
	    166: parse.error=verbose and consistent errors: lr.default-reduction=accepting FAILED (conflicts.at:641)
	    167: parse.error=verbose and consistent errors: lr.type=canonical-lr FAILED (conflicts.at:645)
	    168: parse.error=verbose and consistent errors: parse.lac=full FAILED (conflicts.at:650)
	    169: parse.error=verbose and consistent errors: parse.lac=full lr.default-reduction=accepting FAILED (conflicts.at:655)

	We get:

	    input.c: In function 'yyparse':
	    input.c:980:9: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
	             ^~~~~~
	    cc1: all warnings being treated as errors

	See https://lists.gnu.org/archive/html/bison-patches/2018-08/msg00063.html.

	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Disable
	-Wmaybe-uninitialized.

2018-08-19  Akim Demaille  <akim.demaille@gmail.com>

	doc: clarify that the push parser object can be reused
	Suggested by Rici Lake.
	https://lists.gnu.org/archive/html/bug-bison/2018-08/msg00033.html

	* doc/bison.texi: Complete description of the first node in the main
	@menu.
	(Push Decl): Remove the 'experimental' warnings about push parser.
	Clarify that the push parser object can be reused in several parses.

2018-08-19  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: support compilation with disabled support for exceptions
	Reported by Brooks Moses <bmoses@google.com>
	http://lists.gnu.org/archive/html/bison-patches/2018-02/msg00000.html

	* data/lalr1.cc (YY_EXCEPTIONS): New.
	Use it to disable try/catch clauses.

	* doc/bison.texi (C++ Parser Interface): Document it.

	* configure.ac (CXXFLAGS_NO_EXCEPTIONS): New.
	* tests/atlocal.in: Receive it.
	* tests/local.at (AT_FULL_COMPILE, AT_LANG_COMPILE):
	Accept a new argument, extra compiler flags.
	* tests/calc.at: Run the C++ calculator with exception support disabled.

2018-08-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: add empty lines
	Currently the examples are too dense, let's put empty lines where
	'#line' would be issued.  And also remove some spurious empty
	lines (remains from @group, @end group, etc.).

	* examples/extexi: Do that.
	* examples/local.mk (extexiFLAGS): Rename as...
	(EXTEXIFLAGS): this.

2018-08-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: check the variant example
	* examples/mfcalc/local.mk, examples/rpcalc/local.mk: Define the
	programs in a more natural order, source, preproc, then linker.

	* examples/test: Be ready to work on programs that are not in
	a subdir.
	* examples/variant.test: New.
	* examples/local.mk: Use it.
	* examples/variant.yy: Don't use 0 for nullptr.
	Use a more natural output for a list of string.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	C++: fix portability issue with MSVC 2017
	Visual Studio issues a C4146 warning on '-static_cast<unsigned>(rhs)'.
	The code is weird, probably to cope with INT_MIN.  Let's go back to
	using std::max (whose header is still included in position.hh...) like
	originally, but with the needed casts.

	Reported by 長田偉伸, and with help from Rici Lake.

	See also
	http://lists.gnu.org/archive/html/bug-bison/2013-02/msg00000.html
	and commit 75ae8299840bbd854fa2474d38402bbb933c6511.

	* data/location.cc (position::add_): Take min as an int.
	Use std::max.
	While here, get rid of a couple of useless inlines.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	build: fix concurrent build failure
	Reported by Dengke Du and Robert Yang.
	https://lists.gnu.org/archive/html/bison-patches/2017-07/msg00000.html

	* src/local.mk (src/yacc): Make sure the directory exists.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: remove debug comment
	* data/lalr1.cc: Remove a comment about indentation.
	I'm not sure it would be nice to indent even more, it's already quite
	of the right.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix the name of the GFDL section
	Reported by dine <2500418497@qq.com>.
	http://lists.gnu.org/archive/html/bug-bison/2016-10/msg00000.html

	I mirrored what the Coreutils do.

	* doc/bison.texi (Copying This Manual): Rename as...
	(GNU Free Documentation License): this, since that the name we
	used in the preamble.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: clarify the destructor selection example
	Reported by Gary L Peskin.
	http://lists.gnu.org/archive/html/help-bison/2016-02/msg00000.html

	* doc/bison.texi (Destructor Decl): here.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	portability: don't use _Pragma with ICC
	ICC defines __GNUC__ [1], but does not support GCC's _Pragma for
	diagnostics.  As a matter of fact, I believe it does not support
	_Pragma at all (only #pragma) [2].

	Reported by Maxim Prohorenko.
	https://savannah.gnu.org/support/index.php?108339

	[1] https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-gcc-compatibility-and-interoperability
	[2] https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-pragmas

	* data/c.m4 (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): Exclude ICC from
	the club.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: typed mid-rule actions
	* doc/bison.texi (Mid-Rule Actions): Restructure to insert...
	(Typed Mid-Rule Actions): this new section.
	Move the manual translation of mid-rule actions into regular actions
	to...
	(Mid-Rule Action Translation): here.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	escape properly the file names in #line for printer/destructor
	Reported by Jannick.
	http://lists.gnu.org/archive/html/bug-bison/2017-05/msg00001.html

	"Amusingly" enough, we have the same problem with %defines when the
	parser file name has backslashes or quotes: we generate #includes with
	an incorrect C string.

	* src/output.c (prepare_symbol_definitions): Escape properly the file
	names before passing them to M4.
	* data/bison.m4, data/lalr1.cc: Don't simply put the file name between
	two quotes (that should have been strong enough a smell...), expect
	the string to be properly quoted.
	* tests/synclines.at: New tests to check this.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix title and improve quoting
	* tests/synclines.at: here.
	Also, prefer '%code' to ;%{...%}' for yylex/yyerror prototypes.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/output.c: here.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/scan-code.l: here.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/parse-gram.y: Declare iterator within the for-loop.

2018-08-18  Akim Demaille  <akim.demaille@gmail.com>

	tests: style changes
	* tests/c++.at, tests/local.at: Formatting and title changes.

2018-08-17  Akim Demaille  <akim.demaille@gmail.com>

	reader: simplify the search of the start symbol
	Suggested by Paul Eggert.

	* src/reader.c (find_start_symbol): Don't check 'res', we know it is
	not null.  That suffices to avoid the GCC warnings.
	* bootstrap.conf: We don't need 'assume', which doesn't exist anyway.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix GCC8 warnings about uninitialized values
	In 0931d14728fb4a2272399f2c927ae78e2607b4fb I removed too many
	initializations from some ctors: some were not about base ctors, but
	about member variables.  In fact, more of them were missing to please
	GCC 8.

	While at it, generate more natural code for C++ without variant:
	instead of

	    template <typename Base>
	    parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
	      : Base (other)
	      , value ()
	    {
	      value = other.value
	    }

	generate

	    template <typename Base>
	    parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
	      : Base (other)
	      , value (other.value)
	    {}

	* data/c++.m4 (basic_symbol::basic_symbol): Always initialize 'value',
	it might be a POD without a ctor.
	* data/lalr1.cc (stack_symbol_type::stack_symbol_type): Likewise.
	* data/variant.hh (variant::variant): Default initialize the buffer too.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	tests: style: use %empty
	* tests/conflicts.at: here.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix warnings in push mode
	Fix warning with GCC 8, -DNDEBUG.

	    422. push.at:83: testing Multiple impure instances ...
	    input.y: In function 'main':
	    input.c:1022:12: error: potential null pointer dereference [-Werror=null-dereference]
	       if (!yyps->yynew && yyps->yyss != yyps->yyssa)
	            ~~~~^~~~~~~

	* data/yacc.c (pstate_delete): Do nothing if called on null pointer.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	c++: avoid GCC 8 warnings
	GCC 8 issues warnings whose root cause was a bit hard to find.

	    calc.cc: In member function 'virtual int yy::parser::parse()':
	    calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used uninitialized in this function [-Wmaybe-uninitialized]
	         , location (l)
	                      ^
	    calc.cc: In member function 'void yy::parser::yypush_(const char*, yy::parser::stack_symbol_type&)':
	    calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used uninitialized in this function [-Wmaybe-uninitialized]
	         , location (l)
	                      ^
	    calc.cc: In member function 'void yy::parser::yypush_(const char*, yy::parser::state_type, yy::parser::symbol_type&)':
	    calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used uninitialized in this function [-Wmaybe-uninitialized]
	         , location (l)
	                      ^

	The problem is with locations that don't have a constructor, such as
	Span (in calc.cc) which is POD.  It is POD on purpose: so that we can
	use that structure to test glr.cc which cannot use non POD in its
	(C) stacks.

	* data/c++.m4 (basic_symbol): Also ensure that 'location' is
	initialized.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	tests: avoid compiler warnings
	* tests/calc.at (AT_CALC_MAIN): Declare yyparse and operator<< in an
	unnamed namespace to avoid "not declared" warnings (clang
	-Weverything).
	Remove useless prototypes.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	build: work around GCC warnings on Flex code
	With GCC 7.3.0 and Flex 2.6.4, we get warnings on all the generated
	scanners:

	    examples/calc++/calc++-scanner.cc: In function 'void yyrestart(FILE*)':
	    examples/calc++/calc++-scanner.cc:1611:20: error: potential null pointer dereference [-Werror=null-dereference]
	     /* %endif */
	      ~~~~~~~~~~~       ^
	    examples/calc++/calc++-scanner.cc:1607:19: error: potential null pointer dereference [-Werror=null-dereference]
	     /* %if-c-only */
	      ~~~~~~~~~~~~~~~  ^
	    examples/calc++/calc++-scanner.cc:1611:20: error: potential null pointer dereference [-Werror=null-dereference]
	     /* %endif */
	      ~~~~~~~~~~~       ^
	    examples/calc++/calc++-scanner.cc:1607:19: error: potential null pointer dereference [-Werror=null-dereference]
	     /* %if-c-only */
	      ~~~~~~~~~~~~~~~  ^
	    cc1plus: all warnings being treated as errors

	Obviously the lines are incorrect, and the warnings are emitted twice.
	Still, let's get rid of these warnings.

	* doc/bison.texi, src/flex-scanner.h: Disable these warnings in code
	generated by Flex.

2018-08-15  Akim Demaille  <akim.demaille@gmail.com>

	fix incorrect C code
	Commit 3df32101e7978eaafa63bce8908de3dcae4d9cda introduced invalid C
	code.  Caught by GCC 7.3.0.

	* bootstrap.conf (gnulib_modules): We need assume.
	* src/reader.c (find_start_symbol): Fix the signature (too much C++,
	sorry...).
	Prefer 'assume' to 'assert', so that we don't have these warnings even
	when NDEBUG is defined.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix Englishoes
	* examples/README: Fix my mistakes.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	examples: ship and install variant.yy
	This file was meant to be shown as an example.  Install it.

	* README, data/README: Put Emacs metadata in the final section.
	* examples/README: New.
	* examples/variant.yy: Use %empty.
	* examples/local.mk: Install both these files.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove useless copy-constructor
	We currently generate copy constructors such as the following
	one (taken from examples/variant.yy):

	    parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that)
	      : super_type (that.state, that.location)
	    {
	      switch (that.type_get ())
	      {
	        case 3: // TEXT
	        case 8: // item
	          value.copy< ::std::string > (that.value);
	          break;

	        case 7: // list
	          value.copy< ::std::vector<std::string> > (that.value);
	          break;

	        case 4: // NUMBER
	          value.copy< int > (that.value);
	          break;

	        default:
	          break;
	      }
	    }

	they are actually useless: we never need it.

	* data/lalr1.cc: Don't generate the stack_symbol_type copy ctor.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	C++: symbol constructors: add a missing reference
	Fix a typo so that instead of

	    basic_symbol::basic_symbol (typename Base::kind_type t, const int v)

	we now generate

	    basic_symbol::basic_symbol (typename Base::kind_type t, const int& v)

	* data/variant.hh (b4_basic_symbol_constructor_declare)
	(b4_basic_symbol_constructor_define): Add missing reference.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove useless calls to the base default constructor
	* data/c++.m4, data/stack.hh, data/variant.hh: here.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	C++: prefer size_type to unsigned for indexes
	* data/stack.hh (size_type): New, based on the container type.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	style: m4: remove useless reference to 'int' in integral types
	* m4/cxx.m4: Prefer 'unsigned' to 'unsigned int'.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	style: doc: remove useless reference to 'int' in integral types
	* doc/bison.texi: Prefer 'unsigned' to 'unsigned int'.  Likewise for
	long and short.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	style: lib: remove useless reference to 'int' in integral types
	* lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
	* lib/bitset_stats.c, lib/bitsetv-print.c, lib/bitsetv.c,
	* lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/timevar.c,
	* lib/vbitset.c:
	Prefer 'unsigned' to 'unsigned int'.  Likewise for long and short.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	style: src: remove useless reference to 'int' in integral types
	* src/AnnotationList.c, src/AnnotationList.h, src/InadequacyList.h,
	* src/closure.c, src/closure.h, src/gram.c, src/gram.h, src/ielr.c,
	* src/location.c, src/output.c, src/reader.c, src/relation.c,
	* src/scan-code.l, src/scan-gram.l, src/tables.c, src/tables.h:
	Prefer 'unsigned' to 'unsigned int'.  Likewise for long and short.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	style: tests: remove useless reference to 'int' in integral types
	* tests/actions.at, tests/cxx-type.at: Prefer 'unsigned' to 'unsigned
	int'.  Likewise for long and short.

2018-08-14  Akim Demaille  <akim.demaille@gmail.com>

	style: data: remove useless reference to 'int' in integral types
	* data/c.m4, data/glr.c, data/yacc.c: Prefer 'unsigned' to 'unsigned
	int'.  Likewise for long and short.

2018-08-12  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	* bootstrap.conf: gnulib_mk is defined again by bootstrap.

2018-08-12  Akim Demaille  <akim.demaille@gmail.com>

	doc: avoid type aliases
	* doc/bison.texi (C++ Location Values): Use 'unsigned' instead of
	'uint'.

2018-08-12  Akim Demaille  <akim.demaille@gmail.com>

	doc: remove the "experimental" warning for some features
	Several features were flagged 'experimental' and waiting for user
	feedback to 'stabilize', but i. AFAIK, no user ever reported anything
	about them, ii. they'be been here long enough to prove they don't do
	harm.

	* doc/bison.texi: No longer experimental: default %printer and
	%destructor (typed: <*> and untyped: <>), %define api.value.type union
	and variant, Java parsers, XML output, LR family (lr, ielr, lalr),
	semantic predicates (%?).

2018-08-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: check variants and typed mid-rule actions
	See
	http://lists.gnu.org/archive/html/bison-patches/2018-08/msg00013.html

	* tests/c++.at (Variants and Typed Mid-rule Actions): New.

2018-08-12  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix minor issues
	* tests/actions.at: Fix some log messages.
	Prefer #error to fprintf: it fixes the invalid use of yyoutput in
	%destructor, and it is an even stronger check: that the code is not
	even emitted.  The portability of #error is not really a problem here,
	since the point is anyway to have the compilation fail.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	c++: variant: add more assertions
	* data/variant.hh (variant::as): Check yytypeid_ before
	checking *yytypeid_.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	doc: -fcaret is enabled by default
	* doc/bison.texi (Mid-Rule Action Translation): So no need to pass it.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/closure.c, src/conflicts.c: here.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	rule actions cannot be typed
	Make sure that we cannot apply a type to the (main) action of a rule.

	* src/reader.c (grammar_rule_check): Issue the warning.
	* tests/input.at (Cannot type action): Check the warning.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	warn about typed mid-rule actions in Yacc mode
	* src/reader.c (grammar_current_rule_action_append): Warn.
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Check.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	tests: check typed mid-rule actions
	* tests/input.at (_AT_UNUSED_VALUES_DECLARATIONS): Check
	typed mid-rule actions.
	* tests/report.at (Reports): Check that types of typed mid-rule
	actions are reported.
	* tests/actions.at (Typed mid-rule actions): Check that
	the values of typed mid-rule actions are correct.

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-08-11  Akim Demaille  <akim.demaille@gmail.com>

	add support for typed mid-rule actions
	Prompted on Piotr Marcińczyk's message:
	http://lists.gnu.org/archive/html/bug-bison/2017-06/msg00000.html.
	See also http://lists.gnu.org/archive/html/bug-bison/2018-06/msg00001.html.

	Because their type is unknown to Bison, the values of midrule actions are
	not treated like the others: they don't have %printer and %destructor
	support.  In addition, in C++, (Bison) variants cannot work properly.

	Typed midrule actions address these issues.  Instead of:

	    exp: { $<ival>$ = 1; } { $<ival>$ = 2; }   { $$ = $<ival>1 + $<ival>2; }

	write:

	    exp: <ival>{ $$ = 1; } <ival>{ $$ = 2; }   { $$ = $1 + $2; }

	* src/scan-code.h, src/scan-code.l (code_props): Add a `type` field to
	record the declared type of an action.
	(code_props_rule_action_init): Add a type argument.
	* src/parse-gram.y: Accept an optional type tag for actions.
	* src/reader.h, src/reader.c (grammar_current_rule_action_append): Add
	a type argument.
	(grammar_midrule_action): When a mid-rule is typed, pass its type to
	the defined dummy non terminal symbol.

2018-08-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: make room for more cases
	* tests/input.at (AT_CHECK_UNUSED_VALUES): Add an empty line
	to allow more symbols, and adjust line numbers.
	Use a more consistent m4 quoting scheme.

2018-08-05  Akim Demaille  <akim.demaille@gmail.com>

	warnings: address -Wnull-dereference in reader.c
	Based on a patch by David Michael.
	http://lists.gnu.org/archive/html/bison-patches/2018-07/msg00000.html

	* src/reader.c (find_start): New, extracted from...
	(check_and_convert_grammar): here.

2018-08-05  Akim Demaille  <akim.demaille@gmail.com>

	style: ielr: reduce scopes
	* src/ielr.c: Use modern C to reduce the scopes of some variables.

2018-07-26  Akim Demaille  <akim.demaille@gmail.com>

	style: move to C99 to reduce scopes
	* src/symtab.c, src/reader.c: Freely mix statements and variable
	definitions.  And use for-loops with initializers.

2018-07-26  Akim Demaille  <akim.demaille@gmail.com>

	style: split a function in two
	grammar_current_rule_action_append was used in two different places:
	for actual action (`{...}`), and for predicates (`%?{...}`).  Let's
	split this in two different functions.

	* src/reader.h, src/reader.c (grammar_current_rule_predicate_append): New.
	Extracted from...
	(grammar_current_rule_action_append): here.
	Remove arguments that don't apply.
	Adjust dependencies.

2018-07-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix typo
	* tests/actions.at: Remove (harmless) stray character.

2018-07-26  Akim Demaille  <akim.demaille@gmail.com>

	print: remove unused function
	This function was unused since 1991's original import by
	rms (e06f0c34427faedc7afbec9554adbffc4c87312e).

	* src/print.c (print_token): Remove.

2018-06-23  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix Texinfo syntax error
	* doc/bison.texi (Understanding): here.

2018-06-22  Akim Demaille  <akim.demaille@gmail.com>

	doc: we now show the type of the symbols
	* doc/bison.texi (Understanding Your Parser): Update the output
	from Bison.
	Use types in the example, and show them in the report.
	* NEWS: Update.

2018-06-18  Akim Demaille  <akim.demaille@gmail.com>

	tests: check the typed symbols in the reports
	* tests/report.at: New.
	* tests/local.mk, tests/testsuite.at: Use it.

2018-06-18  Akim Demaille  <akim.demaille@gmail.com>

	report: display the type of the symbols
	* src/print.c (print_nonterminal_symbols, print_terminal_symbols):
	Also should the type of the symbols.

2018-06-18  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/print.c (print_terminal_symbols, print_nonterminal_symbols): Here.

2018-06-18  Akim Demaille  <akim.demaille@gmail.com>

	style: split large function
	* src/print.c (print_grammar): Split into...
	(print_terminal_symbols, print_nonterminal_symbols): these.
	Adjust dependencies.

2018-06-18  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/print.c (print_grammar): Shorten scopes.

2018-06-18  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	Fixes the `make install-pdf` problem reported by Hans Åberg in
	http://lists.gnu.org/archive/html/bug-bison/2018-06/msg00000.html
	that had already been fixed by Joel E. Denny in
	http://lists.gnu.org/archive/html/bug-bison/2012-04/msg00011.html
	Final fix in
	http://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00019.html

2018-06-17  Akim Demaille  <akim.demaille@gmail.com>

	Merge maint into master
	* upstream/maint: (48 commits)
	  THANKS: update an address
	  tests: adjust syncline tests to GCC 7
	  glr: fix improperly placed synclines
	  bison: be git grep friendly
	  Replace ftp with https
	  maint: post-release administrivia
	  version 3.0.5
	  bison: style: indentation fixes
	  regen
	  bison: please address sanitizer
	  C++: style: fix indentation
	  NEWS: update
	  C++: style: prefer `unsigned` to `unsigned int`
	  C++: style: space before paren
	  C++: fix -Wdeprecated warnings
	  tests: fix -Wdeprecated warning
	  maint: update syntax-check exclusions
	  autoconf: update
	  regen
	  Update copyright years
	  ...

2018-05-30  Akim Demaille  <akim.demaille@gmail.com>

	THANKS: update an address

2018-05-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: adjust syncline tests to GCC 7
	GCC 7 also underlines the error.

	    syncline.c:4:2: error: #error "4"
	     #error "4"
	      ^~~~~

	* tests/synclines.at (_AT_SYNCLINES_COMPILE): Remove tildas from GCC 7.

2018-05-29  Akim Demaille  <akim.demaille@gmail.com>

	glr: fix improperly placed synclines
	Predicates with GLR are issued with synclines in the middle of C code:

	          case 2:
	      if (! (#line 6 "sempred.y" /* glr.c:816  */
	      new_syntax)) YYERROR;
	    #line 793 "sempred.tab.c" /* glr.c:816  */
	      break;

	Reported by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2018-05/msg00033.html

	* data/c.m4 (b4_predicate_case): Be sure to start on column 0.
	It would be nicer if b4_syncline could ensure this by itself
	(that would avoid ugly code when synclines are disabled), but that's
	way more work.
	* tests/glr-regression.at (Predicates): Be a real end-to-end test.
	This would have caught this error years ago...

2018-05-29  Akim Demaille  <akim.demaille@gmail.com>

	bison: be git grep friendly
	* src/output.c (user_actions_output): Make calls to b4_case and
	b4_predicate_case explicit.

2018-05-29  Akim Demaille  <akim.demaille@gmail.com>

	Replace ftp with https
	Reported by Hans Åberg.

	* README, cfg.mk, doc/bison.texi: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	version 3.0.5
	* NEWS: Record release date.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	bison: style: indentation fixes
	* src/parse-gram.y: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	bison: please address sanitizer
	* src/parse-gram.y (add_param): Asan does not like that the second
	argument of strspn is not 0-terminated.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: fix indentation
	* data/variant.hh (b4_symbol_variant): De-indent, as the callers are
	indented.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: prefer `unsigned` to `unsigned int`
	* data/c++.m4: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: space before paren
	* data/c++.m4, data/lalr1.cc: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: fix -Wdeprecated warnings
	For instance on test 99:

	    In file included from @@.cc:56:
	    @@.hh:409:26: error: definition of implicit copy constructor for
	                         'stack_symbol_type' is deprecated because it
	                         has a user-declared copy assignment operator
	                         [-Werror,-Wdeprecated]
	          stack_symbol_type& operator= (const stack_symbol_type& that);
	                         ^

	Reported by Derek Clegg.
	https://lists.gnu.org/archive/html/bison-patches/2018-05/msg00036.html

	* configure.ac (warn_tests): Add -Wdeprecated.
	* data/lalr1.cc (stack_symbol_type): Add an explicit copy ctor.
	We cannot rely on the explicit default implementation (`= default`)
	as we support C++ 98.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix -Wdeprecated warning
	With recent compilers:

	    input.yy:49:5: error: definition of implicit copy assignment
	                          operator for 'Object' is deprecated because
	                          it has a user-declared destructor
	                          [-Werror,-Wdeprecated]
	        ~Object ()
	        ^
	    input.yy:130:35: note: in implicit copy assignment operator for
	                           'Object' first required here
	        { yylhs.value.as< Object > () = yystack_[0].value.as< Object > (); }

	* tests/c++.at (Object): Add missing assignment operator.

2018-05-19  Akim Demaille  <akim.demaille@gmail.com>

	maint: update syntax-check exclusions
	sc_two_space_separator_in_usage complains about bootstrap:

	    two_space_separator_in_usage
	    /Users/akim/src/gnu/bison/bootstrap:905:   --aux-dir $build_aux\
	    /Users/akim/src/gnu/bison/bootstrap:906:   --doc-base $doc_base\
	    /Users/akim/src/gnu/bison/bootstrap:907:   --lib $gnulib_name\
	    /Users/akim/src/gnu/bison/bootstrap:908:   --m4-base $m4_base/\
	    /Users/akim/src/gnu/bison/bootstrap:909:   --source-base $source_base/\
	    /Users/akim/src/gnu/bison/bootstrap:910:   --tests-base $tests_base\
	    /Users/akim/src/gnu/bison/bootstrap:911:   --local-dir $local_gl_dir\
	    maint.mk: help2man requires at least two spaces between an option and its description

	* cfg.mk: Exclude bootstrap from this check.

2018-05-19  Akim Demaille  <akim.demaille@gmail.com>

	autoconf: update
	* submodules/autoconf: Update to latest master.
	No difference on the M4 files we use.

2018-05-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-05-12  Akim Demaille  <akim.demaille@gmail.com>

	Update copyright years
	Run `make update-copyright`.

2018-05-12  Nate Guerin  <nathan.guerin@riseup.net>

	Add a missing word in the documentation
	Small patch adds the word 'to' to the documentation.

2018-05-12  Akim Demaille  <akim.demaille@gmail.com>

	Examples: improve C++ style
	* examples/variant.yy: Prefer vector to list.
	Remove useless inline.

2018-05-12  Akim Demaille  <akim.demaille@gmail.com>

	Avoid compiler warnings
	At least GCC 7.3, with -O1 or -O2 (but not -O0 or -O3) generates
	warnings with -Wnull-dereference when using yyformat: it fails to see
	yyformat cannot be null.

	Reported by Frank Heckenbach, https://savannah.gnu.org/patch/?9620.

	* configure.ac: Use -Wnull-dereference if supported.
	* data/glr.c, data/lalr1.cc, data/yacc.c: Define yyformat in such
	a way that GCC cannot not see that yyformat is defined.
	Using `default: abort();` also addresses the issue, but forces
	the inclusion of `stdlib.h`, which we avoid.

2018-05-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: fix uses of `inline`
	Sometimes `inline` would be used in *.cc files on symbols that are not
	exported (useless but harmless), and sometimes on exported symbols
	such as the constructor of syntax_error (harmful: linking fails).

	Reported several times, including:

	- by Dennis T
	  http://lists.gnu.org/archive/html/bug-bison/2016-03/msg00002.html
	- by Frank Heckenbach
	  https://savannah.gnu.org/patch/?9616

	* data/c++.m4 (b4_inline): New: expands to `inline` or nothing.
	Use it where appropriate.
	* data/lalr1.cc: Use it where appropriate.

	* tests/c++.at (Syntax error as exception): Put the scanner in another
	compilation unit to exercise the constructor of syntax_error.

2018-05-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove useless `inline` in CC files
	* data/glr.cc, data/lalr1.cc: Remove `inline` from implementations
	that are not in headers.

2018-05-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove useless `inline` on templates
	Templates are implicitly `inline`.

	* data/c++.m4, data/lalr1.cc: Remove `inline` from templates.

2018-05-08  Akim Demaille  <akim.demaille@gmail.com>

	style: don't use std::endl
	* data/lalr1.cc, doc/bison.texi, etc/bench.pl.in, examples/variant.yy,
	* tests/actions.at, tests/atlocal.in, tests/c++.at, tests/headers.at,
	* tests/local.at, tests/types.at:
	Don't use std::endl, it flushes uselessly, and is considered bad
	style.

2018-05-08  Akim Demaille  <akim.demaille@gmail.com>

	doc: wrap
	* README-hacking: Refill paragraphs.

2018-05-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	* README-hacking: Commit before bootstrapping.
	* bootstrap.conf: gnulib_mk is no longer defined by bootstrap.
	* bootstrap, gnulib, lib/.gitignore, m4/.gitignore: Update/regen.

2018-05-08  Akim Demaille  <akim.demaille@gmail.com>

	tests: we might need to find gnulib headers
	    315. calc.at:596: testing Calculator  ...
	    ++ cat
	    ++ test x = x1
	    ++ set +x
	    bison/tests/calc.at:596: bison -fno-caret -o calc.c calc.y
	    ++ bison -fno-caret -o calc.c calc.y
	    ++ set +x
	    bison/tests/calc.at:596: $BISON_C_WORKS
	    stderr:
	    stdout:
	    ++ set +x
	    bison/tests/calc.at:596: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
	    ++ ccache clang-mp-6.0 -Qunused-arguments -O3 -g -Wall -Wextra -Wno-sign-compare -Wcast-align -Wdocumentation -Wformat -Wpointer-arith -Wwrite-strings -Wbad-function-cast -Wshadow -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wmissing-declarations -Wmissing-prototypes -Wundef -pedantic -Wsign-compare -fno-color-diagnostics -Wno-keyword-macro -Werror -Ibison/_build/6s/lib -DNDEBUG -isystem /opt/local/include -I/opt/local/include -L/opt/local/lib -o calc calc.c bison/_build/6s/lib/libbison.a -lintl -Wl,-framework -Wl,CoreFoundation
	    stderr:
	    In file included from calc.y:198:
	    bison/_build/6s/lib/unistd.h:592:11: fatal error: 'getopt-pfx-core.h' file not found
	    # include <getopt-pfx-core.h>
	              ^~~~~~~~~~~~~~~~~~~
	    1 error generated.
	    stdout:
	    bison/tests/calc.at:596: exit code was 1, expected 0
	    315. calc.at:596: 315. Calculator  (calc.at:596): FAILED (calc.at:596)

	* tests/atlocal.in (CPPFLAGS): Find gnulib's headers.

2018-05-08  Akim Demaille  <akim.demaille@gmail.com>

	getargs: rename argument to avoid gnulib's renaming
	With Clang 6.0:

	      CC       src/bison-getargs.o
	    bison/src/getargs.c:67:12: error: parameter 'option' not found in the
	                               function declaration [-Werror,-Wdocumentation]
	     *  \param option   option being decoded.
	               ^~~~~~
	    bison/src/getargs.c:67:12: note: did you mean 'rpl_option'?

	* src/getargs.c: Don't use `option` as a documentation argument.

2017-09-22  Paul Eggert  <eggert@cs.ucla.edu>

	Capitalize "Polish" when it's a proper adjective

2017-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to recent Gnulib changes

2017-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	autoconf: update

2017-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	gnulib: update

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	lalr1, yacc: use the default location as initial error location
	Currently lalr1.cc makes an out-of-bound access when trying to read @1
	in rules with an empty rhs (i.e., when there is no @1) that raises an
	error (YYERROR).

	glr.c already gracefully handles this by using @$ as initial location
	for the errors.  Let's do that in yacc.c and lalr1.cc.

	* data/lalr1.cc, data/yacc.c: Use @$ to initialize the error location.
	* tests/actions.at: Check that case.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	style: formatting and comment changes
	* data/glr.c: Avoid empty lines.
	* data/lalr1.cc: Use the same comments as in glr.c and yacc.c.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	c++: style: use "unsigned", not "unsigned int"
	This style appears to be more traditional, at least in C++.
	For instance in the standard, [facets.examples].
	There are occurrences using "unsigned int" too though.

	* data/lalr1.cc, data/location.cc, data/stack.hh: here.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	c++: style: remove useless "inline" and fix space issues
	* data/lalr1.cc, data/c++.m4: Formatting changes.
	* data/stack.hh: Remove useless "inline".
	Add documentation.
	* data/location.cc: Prefer {} for empty bodies.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware of additional warnings from GCC 5
	* tests/synclines.at (AT_SYNCLINES_COMPILE): Avoid warnings about
	unused functions.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware that clang warns about "#define private public"
	We use this trick to write some test about internal details.  But
	since we use -Werror, clang++ 3.6 dies issueing a warning about it.

	* configure.ac (warn_tests): Disable this warning.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: update our Valgrind suppression files
	* build-aux/linux-gnu.valgrind, build-aux/darwin11.4.0.valgrind: Rename as...
	* build-aux/Linux.valgrind, build-aux/Darwin.valgrind: these.
	* build-aux/Linux.valgrind: Add suppression clause.
	* configure.ac: Update.
	* tests/local.mk: Use it.

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

	doc: improve html and pdf rendering
	* doc/bison.texi: Help html conversion to understand where the
	function names end.
	Beware of PDF width.

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

	doc: fixes in the C++ part
	Reported by Askar Safin.

	http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00018.html
	http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00019.html

	* doc/bison.texi (Split Symbols): Fix access to token types.
	yylval is a pointer, so use ->.
	Fix coding style issues: space before paren.

2015-02-10  Akim Demaille  <akim@lrde.epita.fr>

	tests: be robust to platforms that support UTF-8 even with LC_ALL=C
	Because musl supports UTF-8 with LC_ALL=C, gcc produces:

	  input.y: In function ‘yyparse’:

	instead of:

	  input.y: In function 'yyparse':

	Reported by Ferdinand Thiessen.
	http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00001.html

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Skip syncline tests when
	we can't trust error messages issued about a function body.

2015-02-10  Akim Demaille  <akim@lrde.epita.fr>

	tests: java: avoid recent Java features
	Tests 463 and 464 fail with Java 1.4 compilers.

	Reported by Michael Felt.
	<http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00091.html>

	* tests/javapush.at: Use StringBuffer instead of StringBuilder.

2015-01-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: c++: fix symbol lookup issue
	Sun C 5.13 SunOS_sparc 2014/10/20 reports errors on tests 430-432.

	Reported by Dennis Clarke.
	<http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00087.html>

	* tests/c++.at (Variants): Be sure to emit operator<< before using it:
	use "%code top" rather than "%code".
	Prefer std::vector to std::list.
	Do not define anything in std::, to avoid undefined behavior.

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: post-release administrivia
	  version 3.0.4
	  gnulib: update
	  build: re-enable compiler warnings, and fix them
	  tests: c++: fix a C++03 conformance issue
	  tests: fix a title
	  c++: reserve 200 slots in the parser's stack
	  tests: be more robust to unrecognized synclines, and try to recognize xlc
	  tests: fix C++ conformance
	  build: fix some warnings
	  build: avoid infinite recursions on include_next

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.4
	* NEWS: Record release date.

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	build: re-enable compiler warnings, and fix them
	There are warnings (-Wextra) in generated C++ code:

	  ltlparse.cc: In member function 'ltlyy::parser::symbol_number_type
	  ltlyy::parser::by_state::type_get() const':
	  ltlparse.cc:452:33: warning: enumeral and non-enumeral type in
	  conditional expression
	      return state == empty_state ? empty_symbol : yystos_[state];

	Reported by Alexandre Duret-Lutz.

	It turns out that -Wall and -Wextra were disabled because of a stupid
	typo.

	* configure.ac: Fix the stupid typo.
	* data/lalr1.cc, src/AnnotationList.c, src/InadequacyList.c,
	* src/ielr.c, src/print.c, src/scan-code.l, src/symlist.c,
	* src/symlist.h, src/symtab.c, src/tables.c, tests/actions.at,
	* tests/calc.at, tests/cxx-type.at, tests/glr-regression.at,
	* tests/named-refs.at, tests/torture.at:
	Fix warnings, mostly issues about variables used only with assertions,
	which are disabled with -DNDEBUG.

2015-01-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: c++: fix a C++03 conformance issue
	This fixes test 241 on xLC:

	"input.y", line 42.11: 1540-0274 (S) The name lookup for "report" did not find a declaration.
	"input.y", line 42.11: 1540-1292 (I) Static declarations are not considered for a function call if the function is not qualified.

	where report is:

	  static void
	  report (std::ostream& yyo, int ival, float fval)
	  {
	    yyo << "ival: " << ival << ", fval: " <<  fval;
	  }

	and line 42 is:

	  %printer { report (yyo, $$,       $<fval>$); } <ival>;

	It turns out that indeed this function must not be declared static,
	<http://stackoverflow.com/a/17662745/1353549>.  Let's put it into an
	anonymous namespace.

	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* tests/actions.at (Qualified $$ in actions): Don't use "static",
	prefer anonymous namespace.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix a title
	* tests/conflicts.at: De-overquote.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	c++: reserve 200 slots in the parser's stack
	This is consistent with what is done with yacc.c and glr.c.  Because
	it also avoids that the stack needs to be resized very soon, it should
	help keeping tests about destructors more reliable.

	Indeed, if the stack is created too small, very soon the C++ library
	needs to enlarge it, which means creating a new one, copying the
	elements from the initial one onto it, and then destroy the elements
	of the initial stack: that would be a spurious call to a destructor.

	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* data/stack.hh (stack::stack): Reserve 200 slots.
	* tests/c++.at: Remove traces of stack expansions.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: be more robust to unrecognized synclines, and try to recognize xlc
	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Rename as...
	(_AT_SYNCLINES_COMPILE): this.
	Try to recognize xlc locations.
	(AT_SYNCLINES_COMPILE): New.  Skips the test if we can't read the
	synclines.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix C++ conformance
	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* tests/c++.at (Exception safety): Add missing include.
	Don't use const_iterator for erase.

2015-01-18  Akim Demaille  <akim@lrde.epita.fr>

	build: fix some warnings
	Reported by John Horigan.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00034.html

	* src/graphviz.c, src/symtab.h: Address compiler warnings.

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

	Merge remote-tracking branch 'origin/maint' into origin/master
	* origin/maint:
	  doc: minor fixes
	  gnulib: strtoul is considered obsolete and now useless
	  c++: avoid warnings when destructors don't use $$
	  maint: post-release administrivia
	  version 3.0.3
	  gnulib: update

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

	build: avoid infinite recursions on include_next
	On MacOS X 10.5 PPC with Apple's GCC 4.0.1:

	  % uname -a
	  Darwin aria.cielonegro.org 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:57:0
	  1 PDT 2009; root:xnu-1228.15.4~1/RELEASE_PPC Power Macintosh
	  % gcc --version
	  powerpc-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493)
	  Copyright (C) 2005 Free Software Foundation, Inc.
	  This is free software; see the source for copying conditions.  There is NO
	  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

	building in place enters into an infinite recursion on "#include_next":

	  % gmake V=1
	  [snip]
	  depbase=`echo lib/math.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
	  gcc -std=gnu99    -I. -Ilib -I. -I./lib   -g -O2 -MT lib/math.o -MD -MP -MF $depbase.Tpo -c -o lib/math.o lib/math.c &&\
	  mv -f $depbase.Tpo $depbase.Po
	  In file included from lib/math.h:27,
	                   from lib/math.h:27,
	                   from lib/math.h:27,
	                   from lib/math.h:27,
	  [snip]
	                   from lib/math.h:27,
	                   from lib/math.h:27,
	                   from lib/math.c:3:
	  lib/math.h:27:23: error: #include nested too deeply
	  Makefile:3414: recipe for target 'lib/math.o' failed
	  gmake[2]: *** [lib/math.o] Error 1

	Using -I./lib instead of -Ilib fixes the problem.

	Reported by Pho.
	<https://lists.gnu.org/archive/html/bison-patches/2014-01/msg00000.html>

	* Makefile.am (AM_CPPFLAGS): Use -I./lib instead of -Ilib.

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

	doc: minor fixes
	* doc/bison.texi: Fix warnings about colon in reference names.
	* data/bison.m4, src/files.h: Fix comments.
	* doc/Doxyfile.in: update.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: strtoul is considered obsolete and now useless
	* bootstrap.conf: here.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	c++: avoid warnings when destructors don't use $$
	* data/c++.m4: here.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.3
	* NEWS: Record release date.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2015-01-14  Akim Demaille  <akim@lrde.epita.fr>

	symbol: use the first occurrence as an LHS as defining location
	Currently on the following grammar:

	    %type <foo> foo
	    %%
	    start: foo | bar | "baz"
	    foo: foo
	    bar: bar

	bison reports:

	    warning: 2 nonterminals useless in grammar [-Wother]
	    warning: 4 rules useless in grammar [-Wother]
	    1.13-15: warning: nonterminal useless in grammar: foo [-Wother]
	     %type <foo> foo
	                 ^^^
	    3.14-16: warning: nonterminal useless in grammar: bar [-Wother]
	     start: foo | bar | "baz"
	                  ^^^
	    [...]

	i.e., the location of the first occurrence of a symbol is taken as its
	definition point.  In the case of nonterminals, the first occurrence
	as a left-hand side of a rule makes more sense:

	    warning: 2 nonterminals useless in grammar [-Wother]
	    warning: 4 rules useless in grammar [-Wother]
	    4.1-3: warning: nonterminal useless in grammar: foo [-Wother]
	     foo: foo
	     ^^^
	    5.1-3: warning: nonterminal useless in grammar: bar [-Wother]
	     bar: bar
	     ^^^
	    [...]

	* src/symtab.h, src/symtab.c (symbol::location_of_lhs): New.
	(symbol_location_as_lhs_set): New.
	* src/parse-gram.y (current_lhs): Use it.
	* tests/reduce.at: Update locations.

2015-01-14  Akim Demaille  <akim@lrde.epita.fr>

	reduce: don't complain about rules whose lhs is useless
	In the following grammar, the 'exp' nonterminal is trivially useless.
	So, of course, its rules are useless too.

	    %%
	    input: '0' | exp
	    exp: exp '+' exp | exp '-' exp | '(' exp ')'

	Previously all the useless rules were reported, including those whose
	left-hand side is the 'exp' nonterminal:

	    warning: 1 nonterminal useless in grammar [-Wother]
	    warning: 4 rules useless in grammar [-Wother]
	    2.14-16: warning: nonterminal useless in grammar: exp [-Wother]
	     input: '0' | exp
	                  ^^^
	    2.14-16: warning: rule useless in grammar [-Wother]
	     input: '0' | exp
	                  ^^^
	  ! 3.6-16: warning: rule useless in grammar [-Wother]
	  !  exp: exp '+' exp | exp '-' exp | '(' exp ')'
	  !       ^^^^^^^^^^^
	  ! 3.20-30: warning: rule useless in grammar [-Wother]
	  !  exp: exp '+' exp | exp '-' exp | '(' exp ')'
	  !                     ^^^^^^^^^^^
	  ! 3.34-44: warning: rule useless in grammar [-Wother]
	  !  exp: exp '+' exp | exp '-' exp | '(' exp ')'
	  !                                   ^^^^^^^^^^^

	The interest of being so verbose is dubious.  I suspect most of the
	time nonterminals are not expected to be useless, so the user wants to
	fix the nonterminal, not remove its rules.  And even if the user
	wanted to get rid of its rules, the position of these rules probably
	does not help more that just having the name of the nonterminal.

	This commit discard these messages, marked with '!', and keep the
	others.  In particular, we still report:

	    2.14-16: warning: rule useless in grammar [-Wother]
	     input: '0' | exp
	                  ^^^

	All the useless rules (including the '!' ones) are still reported in
	the reports (xml, text, etc.); only the diagnostics on stderr change.

	* src/gram.c (grammar_rules_useless_report): Don't complain about
	useless rules whose lhs is useless.
	* src/reduce.h, src/reduce.c (reduce_nonterminal_useless_in_grammar):
	Take a sym_content as argument.
	Adjust callers.
	* tests/reduce.at (Useless Rules, Underivable Rules, Reduced Automaton):
	Adjust.

2015-01-14  Akim Demaille  <akim@lrde.epita.fr>

	style: reduce: use unsigned to count a number of objects
	* src/reduce.h, src/reduce.c (nuseful_productions, nuseless_productions)
	(nuseful_nonterminals, nuseless_nonterminals): Declare as unsigned.
	Simplify "0 <" tests into non-zero tests.

2015-01-14  Akim Demaille  <akim@lrde.epita.fr>

	style: reduce: introduce and use a swap for bitset
	* src/reduce.c (bitset_swap): New.
	Use it.

2015-01-14  Akim Demaille  <akim@lrde.epita.fr>

	style: reduce: reduce scopes and other stylistic changes
	* src/reduce.c: Various stylistic changes:
	Reduce scopes.
	Prefer ++i to i++.
	Prefer < to >.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  tests: split a large test case into several smaller ones
	  package: a bit of trouble shooting indications
	  doc: liby's main arms the internationalization
	  bison: avoid warnings from static code analysis
	  c++: fix the use of destructors when variants are enabled
	  style: tests: simplify the handling of some C++ tests
	  c++: symbols can be empty, so use it
	  c++: variants: don't leak the lookahead in error recovery
	  c++: provide a means to clear symbols
	  c++: clean up the handling of empty symbols
	  c++: comment and style changes
	  c++: variants: comparing addresses of typeid.name() is undefined
	  c++: locations: complete the API and fix comments
	  build: do not clean figure sources in make clean

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

	tests: split a large test case into several smaller ones
	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Move AT_SETUP/AT_CLEANUP
	into it, so that we don't skip non Java tests following a test case in Java.

2015-01-12  Akim Demaille  <akim@lrde.epita.fr>

	package: a bit of trouble shooting indications
	* README-hacking: here.

2015-01-12  Akim Demaille  <akim@lrde.epita.fr>

	doc: liby's main arms the internationalization
	Reported by Nicolas Bedon.
	<https://lists.gnu.org/archive/html/bug-bison/2014-11/msg00005.html>

	* doc/bison.texi (Yacc Library): Document the call the setlocale.

2015-01-09  Akim Demaille  <akim@lrde.epita.fr>

	bison: avoid warnings from static code analysis
	A static analysis tool reports that some callers of symbol_list_n_get
	might get NULL and not handle it properly.  This is not the case, yet
	we can suppress this pattern.

	Reported by Mike Sullivan.
	<https://lists.gnu.org/archive/html/bug-bison/2013-12/msg00027.html>

	* src/symlist.c (symbol_list_n_get): Actually it is never called
	to return 0.  Enforce this postcondition via aver.
	(symbol_list_n_type_name_get): Simplify accordingly.  In particular,
	discards a (translated) useless error message.
	* src/symlist.h: Adjust documentation.
	* src/scan-code.l: Style change.

2015-01-09  Akim Demaille  <akim@lrde.epita.fr>

	c++: fix the use of destructors when variants are enabled
	When using variants, destructors generate invalid code.
	<http://lists.gnu.org/archive/html/bug-bison/2014-09/msg00005.html>
	Reported by Michael Catanzaro.

	* data/c++.m4 (~basic_symbol): b4_symbol_foreach works on yysym:
	define it.
	* tests/c++.at (Variants): Check it.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	style: tests: simplify the handling of some C++ tests
	* tests/c++.at: here.
	(Doxygen): Pass %define, so that files such as position.hh etc.
	are generated, instead of putting everything into input.hh.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: symbols can be empty, so use it
	The previous patches ensure that symbols (symbol_type and
	stack_symbol_type) can be empty, cleared, and their emptiness can be
	checked.  Therefore, yyempty, which codes whether yyla is empty or
	not, is now useless.

	In C skeletons (e.g., yacc.c), the fact that the lookahead is empty is
	coded by "yychar = YYEMPTY", which is exactly what this patch
	restores, since yychar/yytoken corresponds to yyla.type.

	* data/lalr1.cc (yyempty): Remove.
	Rather, depend on yyla.empty ().

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: variants: don't leak the lookahead in error recovery
	During error recovery, when discarding the lookeahead, we don't
	destroy it, which is caught by parse.assert assertions.

	Reported by Antonio Silva Correia.
	With an analysis and suggested patch from Michel d'Hooge.
	<http://savannah.gnu.org/support/?108481>

	* tests/c++.at (Variants): Strengthen the test to try syntax errors
	with discarded lookahead.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: provide a means to clear symbols
	The symbol destructor is currently the only means to clear a symbol.
	Unfortunately during error recovery we might have to clear the
	lookahead, which is a local variable (yyla) that has not yet reached
	its end of scope.

	Rather that duplicating the code to destroy a symbol, or rather than
	destroying and recreating yyla, let's provide a means to clear a
	symbol.

	Reported by Antonio Silva Correia, with an analysis from Michel d'Hooge.
	<http://savannah.gnu.org/support/?108481>

	* data/c++.m4, data/lalr1.cc (basis_symbol::clear, by_state::clear)
	(by_type::clear): New.
	(basic_symbol::~basic_symbol): Use clear.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: clean up the handling of empty symbols
	* data/c++.m4, data/lalr1.cc (yyempty_): Remove, replaced by...
	(empty_symbol, by_state::empty_state): these.
	(basic_symbol::empty): New.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: comment and style changes
	* data/c++.m4, data/lalr1.cc: More documentation.
	Tidy.
	* tests/c++.at (string_cast): Rename as...
	(to_string): this C++11 name.

2015-01-07  Akim Demaille  <akim@lrde.epita.fr>

	c++: variants: comparing addresses of typeid.name() is undefined
	Instead of storing and comparing pointers to names of types, store
	pointers to the typeids, and compares the typeids.
	Reported by Thomas Jahns.
	<http://lists.gnu.org/archive/html/bug-bison/2014-03/msg00001.html>

	* data/variant.hh (yytname_): Replace with...
	(yytypeid_): this.

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	c++: locations: complete the API and fix comments
	There are no support for += between locations, and some comments are wrong.
	Reported by Alexandre Duret-Lutz.

	* data/location.cc: Fix.
	* doc/bison.texi: Document.
	* tests/c++.at: Check.

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	build: do not clean figure sources in make clean
	"make clean && make" fails in in-tree builds.

	* doc/local.mk (CLEANDIRS): Replace with...
	(CLEANFILES): this safer list of files to clean.

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  build: don't try to generate docs when cross-compiling
	  package: fix a reporter's name
	  %union: fix the support for named %union
	  package: bump to 2015
	  flex: don't trust YY_USER_INIT
	  yacc.c: fix broken union when api.value.type=union and %defines are used
	  doc: fix missing xref
	  gnulib: update
	  location: remove some ugly debugging code traces
	  build: use abort to pacify compiler errors
	  package: bump to 2014
	  doc: specify documentation encoding

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	build: don't try to generate docs when cross-compiling
	When cross-compiling don't run the generated bison to update the docs.
	Reported by Aaro Koskinen.
	<http://lists.gnu.org/archive/html/bison-patches/2014-03/msg00000.html>

	* configure.ac (CROSS_COMPILING): New.
	* doc/local.mk: Use it.

2015-01-04  Akim Demaille  <akim@lrde.epita.fr>

	package: fix a reporter's name
	* THANKS, build-aux/git-log-fix: s/Bernd Edligner/Bernd Edlinger/.

2015-01-04  Akim Demaille  <akim@lrde.epita.fr>

	%union: fix the support for named %union
	Bison supports a union tag, for obscure reasons.  But it does a poor
	job at it, especially since Bison 3.0.
	Reported by Stephen Cameron and Tobias Frost.

	It did not ensure that the name was not given several times.  An easy
	way to do this is to make the %union tag be handled as a %define
	variable, as they cannot be defined several times.

	Since Bison 3.0, the synclines were wrongly placed, resulting in
	invalid code.  Addressing this issue, because of the way the union tag
	was stored (as a code muscle), would have been tedious.  Unless we
	rather define the %union tag as a %percent variable, whose synclines
	are easier to manipulate.

	So replace the b4_union_name muscle by the api.value.union.name
	%define variable, document, and check.

	* data/bison.m4: Make sure that api.value.union.name has a keyword value.
	* data/c++.m4: Make sure that api.value.union.name is not defined.
	* data/c.m4 (b4_union_name): No longer use it, use api.value.union.name.
	* doc/bison.texi (%define Summary): Document it.
	* src/parse-gram.y (union_name): No longer define b4_uion_name, but
	api.value.union.name.
	* tests/input.at (Redefined %union name): New.
	* tests/synclines.at (%union name syncline): New.
	* tests/types.at: Check named %unions.

2015-01-04  Akim Demaille  <akim@lrde.epita.fr>

	package: bump to 2015
	Which also requires:

	* gnulib: Update.

2014-12-31  Akim Demaille  <akim@lrde.epita.fr>

	flex: don't trust YY_USER_INIT
	Reported by Bernd Edlinger and others.

	* src/scan-gram.l: here.

2014-12-31  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: fix broken union when api.value.type=union and %defines are used
	Reported by Rich Wilson.

	* data/c.m4 (b4_symbol_type_register): Append to b4_union_members,
	not b4_user_union_members.
	The latter invokes the former, but it is the former which is reinitialized
	to empty by b4_value_type_setup_union.
	* tests/types.at: Check it.

	This reveals another bug, this time in the case of glr.c parsers.

	* data/glr.c: Generate the header file before the implementation file,
	to be sure that the setup is run before what depends on it.

2014-12-31  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix missing xref
	Reported by xolodho.

	* doc/bison.texi (Printer Decl): here.

2014-12-29  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2014-02-03  Akim Demaille  <akim@lrde.epita.fr>

	location: remove some ugly debugging code traces
	* data/location.cc: here.

2014-02-03  Akim Demaille  <akim@lrde.epita.fr>

	build: use abort to pacify compiler errors
	clang, with -DNDEBUG and -Werror fails on some functions that might
	lack a return.  This is because aver is just another assert, discarded
	with -DNDEBUG.  So use abort.

	* src/muscle-tab.c, src/scan-skel.l: here.

2014-02-03  Akim Demaille  <akim@lrde.epita.fr>

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

2014-01-03  Paul Eggert  <eggert@cs.ucla.edu>

	doc: specify documentation encoding
	* doc/bison.texi: Add '@documentencoding UTF-8'; needed since the
	manual contains UTF-8 characters.  This will cause the .info files
	to contain UTF-8 quotes and the like, which should be OK nowadays.
	Add @documentlanguage while we're at it.

2013-12-10  Akim Demaille  <akim@lrde.epita.fr>

	symbols: properly fuse the properties of two symbol aliases
	This completes and fixes a7280757105b2909f6a58fdd1c582de8e278319a.
	Reported by Valentin Tolmer.

	Before it Bison used to put the properties of the symbols
	(associativity, printer, etc.) in the 'symbol' structure.  An
	identifier-named token (FOO) and its string-named alias ("foo")
	duplicated these properties, and symbol_check_alias_consistency()
	checked that both had compatible properties and fused them, at the end
	of the parsing of the grammar.

	The commit a7280757105b2909f6a58fdd1c582de8e278319a introduces a
	sym_content structure that keeps all these properties, and ensures
	that both aliases point to the same sym_content (instead of
	duplicating).  However, it removed symbol_check_alias_consistency,
	which resulted in the non-fusion of *existing* properties:

	  %token FOO "foo"
	  %left FOO %left "foo"

	was properly diagnosed as a redeclaration, but

	  %left FOO %left "foo"
	  %token FOO "foo"

	was not, as the properties of FOO and "foo" were not checked before
	fusion.  It certainly also means that

	  %left "foo"
	  %token FOO "foo"

	did not transfer properly the associativity to FOO.

	The fix is simple: reintroduce symbol_check_alias_consistency (under a
	better name, symbol_merge_properties) and call it where appropriate.

	Also, that commit made USER_NUMBER_HAS_STRING_ALIAS useless, but left
	it.

	* src/symtab.h (USER_NUMBER_HAS_STRING_ALIAS): Remove, unused.
	Adjust dependencies.
	* src/symtab.c (symbol_merge_properties): New, based on the former
	symbol_check_alias_consistency.
	* tests/input.at: Re-enable tests that we now pass.

2013-12-10  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  package: install the examples
	  package: install README and the like in docdir
	  diagnostics: fix the order of multiple declarations reports
	  symbol: provide an easy means to compare them in source order

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	package: install the examples
	Currently, we do not install the various examples extracted from the
	documentation.  Let's do it, as they are useful starting points.

	* configure.ac: When --enable-gcc-warnings is set, enable ENABLE_GCC_WARNINGS.
	* examples/extexi: No longer issue synclines by default.
	* examples/local.mk: Except if ENABLE_GCC_WARNINGS.
	* examples/calc++/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk: Install the example files.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	package: install README and the like in docdir
	* Makefile.am: here.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: fix the order of multiple declarations reports
	On

	  %token FOO "foo"
	  %printer {} "foo"
	  %printer {} FOO

	we report

	  /tmp/foo.yy:2.10-11: error: %printer redeclaration for FOO
	   %printer {} "foo"
	            ^^
	  /tmp/foo.yy:3.10-11:     previous declaration
	   %printer {} FOO
	            ^^

	* src/symtab.c (locations_sort): New.
	Use it.
	* tests/input.at (Invalid Aliases): Stress the order of diagnostics.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	symbol: provide an easy means to compare them in source order
	* src/symtab.c (symbols_sort): New.
	(user_token_number_redeclaration): Taken from here.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint: (43 commits)
	  maint: post-release administrivia
	  version 3.0.2
	  gnulib: update
	  output: do not generate source files when late errors are caught
	  output: record what generated files are source or report files
	  output: do not generate source files when early errors are caught
	  xml: also use "%empty" with html output
	  style: formatting changes
	  xml: also display %empty for empty right-hand sides
	  reports: display %empty in the generated pointed-rules
	  news: YYERROR vs variants
	  style: scope reduction in lalr.cc
	  lalr1.cc: formatting changes
	  lalr1.cc: fix the support of YYERROR with variants
	  tests: check $$'s destruction with variant, YYERROR, and no error recovery
	  tests: simplify useless obfuscation
	  skeletons: use better names when computing a "goto"
	  maint: post-release administrivia
	  version 3.0.1
	  aver: it is no longer "protected against NDEBUG"
	  ...

2013-12-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2013-12-05  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.2
	* NEWS: Record release date.

2013-12-05  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update
	* gnulib: here.

2013-12-04  Akim Demaille  <akim@lrde.epita.fr>

	output: do not generate source files when late errors are caught
	Reported by Alexandre Duret-Lutz as "second problem" in:
	http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html

	* bootstrap.conf: We need the "unlink" module.
	* src/files.h, src/files.c (unlink_generated_sources): New.
	* src/output.c: Use it.
	* tests/output.at: Check the case of late errors.

2013-12-04  Akim Demaille  <akim@lrde.epita.fr>

	output: record what generated files are source or report files
	* src/files.h, src/files.c (output_file_name_check): Take an additional
	argument to record whether a file is a source or report file.
	* src/files.c (generated_file): New.
	(file_names, file_names_count): Replace with...
	(generated_files, generated_files_size): these.
	* src/scan-skel.l: Adjust.

2013-12-04  Akim Demaille  <akim@lrde.epita.fr>

	output: do not generate source files when early errors are caught
	Reported by Alexandre Duret-Lutz as "second problem" in:
	http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html

	One problem is that some errors are caught early, before the
	generation of output files, while others can only be detected
	afterwards (since, for instance, skeletons can raise errors
	themselves).

	This will be addressed in two steps: early errors do not generate
	source files at all, while later errors will remove the files that
	have already been generated.

	* src/scan-skel.l (yyout): Open to /dev/null when there are errors.
	* tests/output.at (AT_CHECK_FILES): Factored out of...
	(AT_CHECK_OUTPUT): this.
	Fuse the "SHELLIO" argument in the "FLAGS" one.
	Use $5 to denote the expected exit status.
	Add a test case for early errors.

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

	xml: also use "%empty" with html output
	* data/xslt/xml2xhtml.xsl: No longer issue an Epsilon, display as in
	dot and text formats.

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

	style: formatting changes
	* src/print-xml.c: here.

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

	xml: also display %empty for empty right-hand sides
	* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl: Display %empty where needed.

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

	reports: display %empty in the generated pointed-rules
	* src/print.c (print_core): Use %empty for empty rules.
	* src/print_graph.c (print_core): Ditto.
	* tests/conflicts.at, tests/output.at, tests/reduce.at: Adjust
	expectations.

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

	news: YYERROR vs variants

2013-11-18  Akim Demaille  <akim@lrde.epita.fr>

	style: scope reduction in lalr.cc
	* src/lalr.c: Shorten variable scopes.
	(lookahead_tokens_print): Use the same variable name in two loops
	iterating over the same structure.

2013-11-15  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: formatting changes
	* data/lalr1.cc: Fix indentation.

2013-11-15  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: fix the support of YYERROR with variants
	When variant are enabled, the yylhs variable (the left-hand side of
	the rule being reduced, i.e. $$ and @$) is explicitly destroyed when
	YYERROR is called.  This is because before running the user code, $$
	is initialized, so that the user can properly use it.

	However, when quitting yyparse, yylhs is also reclaimed by the C++
	compiler: the variable goes out of scope.

	Instead of trying to be too smart, let the compiler do its job: reduce
	the scope of yylhs to exactly the reduction.  This way, whatever the
	type of scope exit (regular, exception, return, goto...) this variable
	will be properly reclaimed.

	Reported by Paolo Simone Gasparello.
	<http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00003.html>

	* data/lalr1.cc (yyparse): Reduce the scope of yylhs.
	* tests/c++.at: We now pass this test.

2013-11-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: check $$'s destruction with variant, YYERROR, and no error recovery
	When variant are enabled, the yylhs variable (the left-hand side of
	the rule being reduced, i.e. $$ and @$) is explicitly destroyed when
	YYERROR is called.  This is because before running the user code, $$
	is initialized, so that the user can properly use it.

	However, when quitting yyparse, yylhs is also reclaimed by the C++
	compiler: the variable goes out of scope.

	This was not detected by the test suite because (i) the Object tracker
	was too weak, and (ii) the problem does not show when there is error
	recovery.

	Reported by Paolo Simone Gasparello.
	<http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00003.html>

	* tests/c++.at (Exception safety): Improve the objects logger to make
	sure that we never destroy twice an object.
	Also track copy-constructors.
	Use a set instead of a list.
	Display the logs before running the function body, this is more
	useful in case of failure.
	Generalize to track with and without error recovery.

2013-11-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: simplify useless obfuscation
	* tests/c++.at: $$ is not special for M4, there is no need to "escape"
	it.

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

	skeletons: use better names when computing a "goto"
	* data/glr.c (yyLRgotoState): Name the symbol argument yysym, instead
	of yylhs.
	* data/lalr1.cc (yy_lr_goto_state_): Likewise.
	* data/lalr1.java (yy_lr_goto_state_): New, modeled after the previous
	two routines.
	Use it.

2013-11-12  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2013-11-12  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.1
	* NEWS: Record release date.

2013-11-12  Akim Demaille  <akim@lrde.epita.fr>

	aver: it is no longer "protected against NDEBUG"
	Apply the same rules for aver as for assert: no side effects,
	especially not important ones.

	* src/AnnotationList.c, src/muscle-tab.c: Adjust aver uses to resist
	to -DNDEBUG.

2013-11-08  Akim Demaille  <akim@lrde.epita.fr>

	parsers: rename YY_NULL as YY_NULLPTR to avoid conflicts with Flex
	Flex also defines YY_NULL (to 0).  Avoid gratuitous conflicts.

	* data/c.m4 (b4_null_define): Rename YY_NULL as YY_NULLPTR.

	* data/glr.c, data/lalr1.cc, data/location.cc, data/variant.hh,
	* data/yacc.c, src/parse-gram.c, tests/actions.at, tests/c++.at,
	* tests/cxx-type.at, tests/glr-regression.at, tests/headers.at,
	* tests/push.at, tests/regression.at:
	Adjust.

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

	build: use Automake 1.14's non-recursive Makefile features
	* configure.ac: Require Automake 1.14.
	* examples/calc++/local.mk, examples/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk, tests/local.mk: Use %D% and %C%.

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

	build: restore maintainer-push-check
	* tests/local.mk: here.

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

	c++: use __attribute__((__pure__)) to avoid warnings
	Building C++ parsers with -Wsuggest-attribute=const and
	-Wsuggest-attribute=noreturn triggers warning in generated code.

	* data/lalr1.cc: Call b4_attribute_define.
	(debug_stream, debug_level): Flag as pure.
	* tests/headers.at (Several parsers): There are now more YY macros
	that "leak".

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

	skeletons: update the handling of compiler attributes
	* data/c.m4 (b4_attribute_define): Instead of defining __attribute__,
	define YY_ATTRIBUTE conditionally.
	(YY_ATTRIBUTE_PURE, YY_ATTRIBUTE_UNUSED, _Noreturn): New.
	Use them.
	* data/glr.c: Use them.

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

	gnulib: update

2013-10-24  Akim Demaille  <akim@lrde.epita.fr>

	style: use /* ... */ comments
	* src/complain.c: Here.

2013-10-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: skip C++ tests that are too demanding for some compilers
	Some tests now fail when compiled with G++ 4.3 or 4.4 on MacPorts.

	* tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): New.
	* tests/c++.at (Exception safety): Use it.

2013-10-22  Akim Demaille  <akim@lrde.epita.fr>

	install: do not install yacc.1 when --disable-yacc
	* configure.ac (ENABLE_YACC): New conditional.
	(YACC_SCRIPT, YACC_LIBRARY): Remove.
	* lib/local.mk, src/local.mk: Use the former instead of the latter.
	* doc/local.mk: Use ENABLE_YACC to avoid installing yacc.1.

2013-10-22  Akim Demaille  <akim@lrde.epita.fr>

	style: avoid tabs
	* src/scan-code.l: here.

2013-10-22  Akim Demaille  <akim@lrde.epita.fr>

	c++: fix generated doxygen comments
	* configure.ac: Enable -Wdocumentation if supported.
	* data/lalr1.cc: Fix comments.

2013-10-22  Akim Demaille  <akim@lrde.epita.fr>

	fix: uniqstr are already pointers
	* src/uniqstr.c (uniqstr_assert): Remove incorrect double indirection,
	and now useless cast.

2013-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	bison: pacify Sun C 5.12
	* src/scan-code.l (show_sub_message):
	Redo initializations to work around a bogus Sun C 5.12 warning.
	(parse_ref): Remove unreachable code that Sun C 5.12 complains about.
	* src/uniqstr.h (uniqstr_vsprintf): Use
	_GL_ATTRIBUTE_FORMAT_PRINTF (...)  instead of __attribute__
	((__format__ (__printf__, ...))).  Otherwise, Sun C 5.12
	complains about an unknown attribute.

2013-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	maint: git now ignores rpcalc
	* examples/rpcalc/.gitignore: Ignore rpcalc.

2013-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	build: examples/calc++/calc++ requires flex
	* configure.ac (FLEX_CXX_WORKS): New AM_CONDITIONAL.
	* examples/calc++/local.mk (examples/calc++/calc++):
	Build if FLEX_CXX_WORKS, not BISON_CXX_WORKS.

2013-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	maint: mention help2man, texinfo, apt-get
	* README-hacking: Add help2man, texinfo.
	Describe how to add packages if you're using Debian.

2013-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	maint: git now ignores .log and .trs files
	* .gitignore: Add *.log, *.trs.

2013-10-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix incorrect object construction
	Reported by Ken Moffat.
	http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00009.html

	* tests/c++.at (Exception safety): Here.

2013-10-16  Akim Demaille  <akim@lrde.epita.fr>

	glr: allow spaces between "%?" and "{" in predicates
	Reported by Rici Lake.
	http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00004.html
	http://stackoverflow.com/questions/19330171/

	* src/scan-gram.l: Do not try to be too smart when diagnosing invalid
	directives.
	* tests/glr-regression.at (Predicates): New test.

2013-10-16  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: "-Werror -Wno-error=foo" must not emit errors
	Currently "-Werror -Wno-error=foo" still turns "foo" warnings into errors.
	Reported by Alexandre Duret-Lutz.
	See http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html.

	* src/complain.c (errority, errority_flag): New.
	(complain_init): Initialize the latter.
	(warning_argmatch): Extract the loop iterating on the flag's bits.
	Set and unset errority_flag here.
	(warnings_argmatch): -Wno-error is not the same as -Wno-error=everything:
	we must remember if category foo was explicitly turned in an error/warning
	via -W(no-)error=foo.
	(warning_severity): Use errority_flag.

	* tests/input.at (Symbols): Just check --yacc, not -Wyacc, that's the
	job of tests on -W.
	(-Werror is not affected by -Wnone and -Wall): Rename as...
	(-Werror combinations): this.
	Tests more combinations of -W, -W(no-)error, and -W(no-)error=foo.
	* tests/local.at (AT_BISON_CHECK_WARNINGS): Don't expect -Werror
	to turn runs that issue warnings into runs with errors, as the
	warnings might be enforced as warnings by -Wno-error=foo, in which
	case -Werror does not change anything.

	* doc/bison.texi (Bison Options): Try to be clearer about how
	-W(no-)error and -W(no-)error=foo interact.

2013-10-16  Akim Demaille  <akim@lrde.epita.fr>

	comment changes
	* src/complain.h, src/complain.c: More documentation, more comments.

2013-10-04  Andreas Schwab  <schwab@linux-m68k.org>

	location: fix EOF check
	* location.c (location_caret): Use int, not char, for values from
	getc.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	style: variant: remove empty line
	* data/variant.hh (b4_symbol_constructor_define_): Remove
	stray eol.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  glr: more assertions
	  glr: shorten scopes
	  glr: formatting changes
	  glr: better use of tracing macros
	  examples: improve the output of the "variant" example
	  variant: remove useless assertion
	  tests: remove stray debugging traces
	  tests: do not use grep -q
	  build: don't require flex for ordinary builds
	  maint: update .gitignore
	  build: port to pre-5.8.7 perl
	  tests: minor change to make it easier to test other skeletons
	  uniqstr: fix assertion

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	glr: simplify the invocation of YYLLOC_DEFAULT
	The commit which introduces yyresolveLocations (commit
	8710fc41aaebc5d167a2783a4b8b60849a803869) saves and restores the
	look-ahead (type, value and location) for no clear reason.  This
	appears to be useless.

	* data/glr.c (yyresolveLocations): Don't save/restore the current
	look-ahead to call YYLLOC_DEFAULT.
	Minor style changes.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	glr: more assertions
	* data/glr.c (yyaddDeferredAction, yyglrShiftDefer, yypdumpstack):
	More assertions.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	glr: shorten scopes
	* data/glr.c (yyglrReduce): Define yyflag with its value.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	glr: formatting changes
	* data/glr.c: here.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	glr: better use of tracing macros
	* data/glr.c (yydestroyGLRState): Use YY_SYMBOL_PRINT instead of
	yy_symbol_print.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	examples: improve the output of the "variant" example
	* examples/variant.yy: Improve the printing of lists.

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	variant: remove useless assertion
	* data/variant.hh (move): Remove precondition assertion which is
	ensured by the first call of the body (this precondition is also one
	of "build").

2013-09-19  Akim Demaille  <akim@lrde.epita.fr>

	tests: remove stray debugging traces
	* tests/atlocal.in: Remove traces.
	Be ready to remove conftest.dSYM generated on OS X.

2013-09-04  Akim Demaille  <akim@lrde.epita.fr>

	tests: do not use grep -q
	Reported by Daniel Galloway.
	http://lists.gnu.org/archive/html/bug-bison/2013-08/msg00020.html

	* tests/java.at: Ignore grep's output instead.

2013-08-25  Paul Eggert  <eggert@cs.ucla.edu>

	build: don't require flex for ordinary builds
	* configure.ac (LEX): Don't fail if this is lex, as flex is not
	required for ordinary builds.  Instead, issue a warning and
	substitute a no-op LEX.  Reported by Michael Felt in
	<http://lists.gnu.org/archive/html/bug-bison/2013-08/msg00009.html>.

2013-08-25  Paul Eggert  <eggert@cs.ucla.edu>

	maint: update .gitignore
	* .gitignore: Add *.eps, *.o, *.pdf, *.png, *.stamp, *~,
	.deps, .dirstamp.  Needed to suppress unwanted chatter from
	'git status' after a bootstrap build.

2013-08-24  Paul Eggert  <eggert@cs.ucla.edu>

	build: port to pre-5.8.7 perl
	* examples/local.mk (extract): Omit -f from perl options.
	This doesn't work with perl versions before 5.8.7
	that are configured without USE_SITECUSTOMIZE.
	Reported by Michael Felt in
	<http://lists.gnu.org/archive/html/bug-bison/2013-08/msg00006.html>.

2013-08-01  Akim Demaille  <akim@lrde.epita.fr>

	tests: minor change to make it easier to test other skeletons
	* tests/c++.at (Variants): Pass the skeleton as argument.

2013-08-01  Valentin Tolmer  <valentin.tolmer@gmail.com>

	uniqstr: fix assertion
	* src/uniqstr.c (uniqstr_assert): Really make sure str is a uniqstr,
	not just whether some uniqstr with the same content was registered.

2013-08-01  Valentin Tolmer  <nitnelave1@gmail.com>

	symbols: improve symbol aliasing
	Rather than having duplicate info in the symbol and the alias that has
	to be resolved later on, both the symbol and the alias have a common
	pointer to a separate structure containing this info.

	* src/symtab.h (sym_content): New structure.
	* src/symtab.c (sym_content_new, sym_content_free, symbol_free): New

	* src/AnnotationList.c, src/conflicts.c, src/gram.c, src/gram.h,
	* src/graphviz.c, src/ielr.c, src/output.c, src/parse-gram.y, src/print.c
	* src/print-xml.c, src/print_graph.c, src/reader.c, src/reduce.c,
	* src/state.h, src/symlist.c, src/symtab.c, src/symtab.h, src/tables.c:
	Adjust.

	* tests/input.at: Fix expectations (order changes).

2013-08-01  Akim Demaille  <akim@lrde.epita.fr>

	build: ship the ASCII art figures
	We don't ship the *.txt files that are used to build the info
	file.
	Reported by Colin Daley.

	* doc/figs/example.txt: New.
	* doc/local.mk (bison.info): Depend on the txt files.
	And ship them.

2013-08-01  Akim Demaille  <akim@lrde.epita.fr>

	doc: prefer the ".gv" extension to ".dot"
	See http://marc.info/?l=graphviz-devel&m=129418103126092 for the
	motivation (basically, some word processor now uses *.dot).

	* doc/figs/example-reduce.dot: Rename as...
	* doc/figs/example-reduce.gv: this.
	* doc/figs/example-shift.dot: Rename as...
	* doc/figs/example-shift.gv: this.
	* doc/figs/example.dot: Rename as...
	* doc/figs/example.gv: this.
	* doc/local.mk: Adjust.

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0
	* NEWS: Record release date.

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	news: prepare 3.0
	* NEWS (3.0): Reorder.

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix invalid assignment when using variants in C++11
	* tests/c++.at (Exception safety): In variant mode $$ is an instance
	of Object.  Assigning YY_NULL in C++98 is incorrect, but behaves ok,
	as it assigns YY_NULL=0 using Object::operator= (char v).  It is wrong
	in C++11 as there is operator for "$$ = nullptr".

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	yacc: beware of "uninitialized uses" warnings
	Again some issues with the fact that yylval is reported by GCC as
	possibly not initialized in some cases.  Here, the case at hand is the
	%destructor.

	I am still not convinced that it is worth going all the trouble of
	using pragmas to disable temporarily some warnings, instead of just
	initializing the looking symbol once for all, but that's what Paul
	voted for, see
	<http://lists.gnu.org/archive/html/bison-patches/2012-10/msg00050.html>.

	* data/c.m4 (b4_attribute_define): Define
	YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN, YY_IGNORE_MAYBE_UNINITIALIZED_END,
	YY_INITIAL_VALUE here, as we will need them in the generation of the
	destructor function, which is defined in yacc.c before yyparse, which
	was in charge of defining these macros.
	* data/yacc.c (b4_declare_scanner_communication_variables): Simplify:
	trying to factor the definitions of the case pure and impure is
	too complex.
	Actually, it is not even clear that this macro should really exist,
	as even the calls are complex.
	Be careful not to issue a lone ";", as this is a statement, and C90
	forbids declarations after statements ; so write
	"YY_INITIAL_VALUE(Decl;)", not "YY_INITIAL_VALUE(Decl);".

2013-07-25  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2013-07-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: skip C++ tests if we can't compile a simple program
	There are possible conflicts between gnulib replacement functions (in
	<stdio.h>) and their C++ wrappers (in <stream>).  Trying to address
	these in configure seems too hard, and I don't know how to fix the issue
	in gnulib.  Cowardly avoid the problem by skipping C++ tests when this
	happens.
	Reported by Stefano Lattarini.
	http://lists.gnu.org/archive/html/bug-bison/2013-06/msg00001.html

	* tests/atlocal.in (BISON_CXX_WORKS): Also set it to "skip" if we can't
	compile a simple program using <stream>.
	* tests/local.at: Comment changes.

2013-07-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix 'find' portability issues
	Reported by Stefano Lattarini.
	http://lists.gnu.org/archive/html/bug-bison/2013-06/msg00000.html

	* tests/output.at (AT_CHECK_OUTPUT): Use Perl instead.

2013-06-24  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2013-06-24  Akim Demaille  <akim@lrde.epita.fr>

	version 2.7.91
	* NEWS: Record release date.

2013-06-24  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: prepare for 2.7.91
	* NEWS (2.7.91): Java push parsers.

2013-06-24  Akim Demaille  <akim@lrde.epita.fr>

	java: rename YYMORE as YYPUSH_MORE for consistency with C
	http://lists.gnu.org/archive/html/bison-patches/2013-06/msg00008.html

	* data/lalr1.java, doc/bison.texi, tests/javapush.at:
	s/YYMORE/YYPUSH_MORE.

2013-06-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix Java push failure when running with BISON_USE_PUSH_FOR_PULL
	* tests/javapush.at (Trivial Push Parser with api.push-pull verification):
	When push for pull is enabled, there is one such function generated.

2013-06-21  Akim Demaille  <akim@lrde.epita.fr>

	style: minor changes in the Java tests
	* tests/java.at (AT_CHECK_JAVA_GREP): Ignore the exit status.
	* tests/javapush.at (AT_CHECK_JAVA_GREP): Be more alike the previous
	one.
	Formating changes.
	Remove stray debugging "jj" file.

2013-06-21  Akim Demaille  <akim@lrde.epita.fr>

	java: push: do not reset the error counter
	* data/lalr1.java (parse): here, when in push-pull is in "both" mode.
	This breaks the test suite, for instance
	make check TESTSUITEFLAGS='-d 388 BISON_USE_PUSH_FOR_PULL=1'.
	More generally make maintainer-push-check.

2013-06-14  Akim Demaille  <akim@lrde.epita.fr>

	build: add Valgrind suppression file for GNU/Linux
	* build-aux/linux-gnu.valgrind: New.
	* build-aux/local.mk: Ship it.
	* configure.ac: Use it.

2013-06-13  Dennis Heimbigner  <dmh@unidata.ucar.edu>

	java: add push-parser support
	* data/lalr1.java: Capture the declarations as m4 macros to avoid
	duplication.  When push parsing, the declarations occur at the class
	instance level rather than within the parse() function.

	Change the way that the parser state is initialized.  For
	push-parsing, the parse state declarations are moved to
	"push_parse_initialize()", which is called on the first invocation of
	"push_parse()". The %initial-action code is also inserted after the
	invocation of "push_parse_initialize()".

	The body of the parse loop is modified to return values at appropriate
	points when doing push parsing.  In order to make push parsing work,
	it is necessary to divide YYNEWSTATE into two states: YYNEWSTATE and
	YYGETTOKEN. On the first call to push_parse(), the state is
	YYNEWSTATE. On all later entries, the state is set to YYGETTOKEN. The
	YYNEWSTATE switch arm falls through into YYGETTOKEN. YYGETTOKEN
	indicates that a new token is potentially needed.  Normally, with a
	pull parser, this new token would be obtained by calling "yylex()". In
	the push parser, the value YYMORE is returned to the caller. On the
	next call to push_parse(), the parser will return to the YYGETTOKEN
	state and continue operation.

	* tests/javapush.at: New test file for java push parsing.
	* tests/testsuite.at: Use it.
	* tests/local.mk: Adjust.
	* doc/bison.texi (Java Push Parser Interface): New.

2013-06-11  Akim Demaille  <akim@lrde.epita.fr>

	build: ship all the files, even if the C++ compiler is broken
	* examples/calc++/local.mk: Be sure to ship calc++.test even if
	the current C++ compiler is not sufficient to run the tests.

2013-06-05  Dennis Heimbigner  <dmh@unidata.ucar.edu>

	style: comment changes in Java skeleton
	* data/lalr1.java: Here.

2013-06-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix a G++ warning
	* tests/c++.at: Use YY_NULL instead of 0 for the null pointer.
	And formatting changes.

2013-06-03  Akim Demaille  <akim@lrde.epita.fr>

	build: fix a warning from clang
	* src/muscle-tab.c: Declare local functions static.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	version 2.7.90
	* NEWS: Record release date.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	style: syntax-check fixes
	* data/yacc.c, src/Sbitset.c, src/Sbitset.h, src/muscle-tab.h,
	* src/output.c, src/parse-gram.y, src/reader.c, src/symtab.c,
	* src/uniqstr.c, src/uniqstr.h: Fix space before parens.
	* cfg.mk (_space_before_paren_exempt): Add needed exceptions.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	xml: use %empty in the text output
	* data/xslt/xml2text.xsl: here.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	build: locally disable new GCC warnings that fail on Flex generated code
	* configure.ac: here.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	fix a memory leak
	* src/print-xml.c (num_escape_bufs): New.
	(print_xml): Be sure to release all the escape_bufs.

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-05-30  Akim Demaille  <akim@lrde.epita.fr>

	build: be sure to include config.h first in the generated parser
	Using %code for config.h is wrong, as some headers will already have
	been included by Bison.  In some cases, e.g., glibc's string.h, this
	results in some declaration not being made for lack of definition of
	_GNU_SOURCE, which is performed by config.h.

	* src/parse-gram.y: here.

2013-05-29  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: post-release administrivia
	  version 2.7.1
	  regen

2013-05-29  Petr Machata  <pmachata@redhat.com>

	drop unused options --raw, -n, -e, --include and -I
	* --raw appears to be ignored.  It was marked as obsolete in the
	  commit ec3bc39, and documented as no longer supported as of 1.29
	  (2001-09-07).  Support for %raw appears to have been dropped in
	  e9955c83 on 2002-06-11, but --raw was kept around.  Maybe it's time
	  to drop it as well?

	* Commit e9955c83 dropped support for %no-parser as well, and
	  converted it to option.  --no-parser was later dropped in 728c4be2
	  on 2007-08-12, but -n was kept around, probably as an omission.  All
	  three are documented as removed since 2.3b (2008-05-27).

	* -e existed for a single day in 2001.  It was introduced in eeeb962b
	  on 2001-11-27.  The handling was removed in c7925b99 on 2001-11-28,
	  but "e" was kept in the list of short options.  Probably an
	  omission.

	* --include appears to be dead code.  The option sets a variable, but
	  that variable is not used anywhere.  It was added in f6bd5427 on
	  2001-11-26 as a %-directive, with comments that it's not yet
	  implemented.  It was converted to a command-line option later, but
	  doesn't seem to ever have been actually implemented.

2013-05-28  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2013-04-22  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: always point to the first directive
	Some directives cannot be used several times (e.g., a given symbol may
	only have a single printer).  In case of repeated definitions, an
	error is issued for the second definition, yet it is not discarded,
	and becomes the definition used for the rest of the file.

	This is not consistent with the idea that multiple definitions are not
	allowed: discard any repeated directive.

	* src/symtab.c (symbol_type_set, symbol_code_props_set)
	(semantic_type_code_props_set, symbol_class_set, symbol_translation):
	Discard repeated directives.
	* tests/input.at (Default %printer and %destructor redeclared)
	(Per-type %printer and %destructor redeclared): Update expectations.

2013-04-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: factor test for printer/desctructor redefined
	* tests/input.at (Default %printer and %destructor redeclared):
	Introduce AT_TEST to factor.

2013-04-22  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: use appropriate location for useless precedence/associativity
	* src/symtab.c (symbol_precedence_set): Use prec_location, not
	location (which is the first occurrence of the symbol, possibly just
	%token).
	Also, as redefinitions are not allowed, keep the first values, not
	the subsequent ones.
	* tests/conflicts.at, tests/existing.at, tests/regression.at: Adjust.

2013-04-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: factor duplicate expected warnings
	* tests/existing.at: Instead of "t ? abc : aBc", write "a(t?b:B)c".

2013-04-19  Akim Demaille  <akim@lrde.epita.fr>

	tests: enable -Wsign-compare and fix corresponding warnings
	-Wsign-compare was disabled for bison's own code, following gnulib's
	approach.  However, the generated parsers should not trigger such
	warnings.

	Reported by Efi Fogel.
	http://lists.gnu.org/archive/html/help-bison/2013-04/msg00018.html

	See also http://stackoverflow.com/questions/16101062 for the weird
	"-(unsigned)i" piece of code.

	* configure.ac (warn_tests): Enable -Wsign-compare.
	* data/location.cc (position::add_): New.
	(position::lines, position::columns): Use it.
	* tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): Fix signedness issues.

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	muscle: check more cases of %define variables with code values
	* data/bison.m4 (b4_percent_define_check_kind): Fix overquotation.
	(api.location.type, api.position.type): Check they have code values here.
	* data/c++.m4 (api.location.type): No longer checked here.
	(parser_class_name): Check it here.
	* data/java.m4 (api.value.type, init_throws, lex_throws, parser_class_name)
	(throws, annotations, extends, implements): Check they have code values.
	* doc/bison.texi: Fix every incorrect occurrence of %define.
	Document the additional syntax for %define: code values.
	Document the additional syntax for -D/-F: string and code values.
	* tests/calc.at, tests/headers.at, tests/input.at, tests/java.at,
	* tests/local.at: Fix dependencies.

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	parser: do not convert $ and @ in code values of %define variables
	* src/parse-gram.y (value: "{...}"): Just strip the braces, but pass
	the value as is.

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	parser: no longer use the "braceless" non-terminal
	The purpose of this symbol was only to factor function calls.  As a
	result the actions were indeed simpler, but the grammar was somewhat
	uselessly obfuscated.  Get rid of this symbol, but introduce functions
	to simplify dependencies.

	There is no (intended) changes of behavior here.

	* src/parse-gram.y (strip_braces, translate_code(
	(translate_code_braceless): New.
	(braceless): Remove, use "{...}" instead, and one of the previous
	functions depending on the context.
	(STRING, "%{...%}", EPILOGUE): Declare as <code>, instead of <chars>,
	the difference between both is useless (well, I couldn't make sense of
	it, even after having read the initial commit that introduced them).
	(%union): Remove the now useless "chars" type.
	Adjust the printers.
	* src/scan-gram.l: Adjust.

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	style: avoid %{...%} in our parser
	* src/parse-gram.y (%{...%}): Split in %code and %code requires.
	* src/location.h: Add missing includes for self containedness.

2013-04-18  Akim Demaille  <akim@lrde.epita.fr>

	style: use %code for local function declarations in our parser
	* src/parse-gram.y (version_check, gram_error, char_name, lloc_default):
	Move their prototypes from %{...%} to %code.
	(YYLLOC_DEFAULT, YY_LOCATION_PRINT): Move from %{...%} to %code.
	(current_lhs): Move its implementation to the epilogue.

2013-04-16  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-04-16  Akim Demaille  <akim@lrde.epita.fr>

	muscle: check the kind of api.prefix, api.location.type
	* data/bison.m4: Check api.prefix.
	* data/c++.m4: Check api.location.type.
	* doc/bison.texi: Fix uses of api.value.type, api.prefix, api.location.type.
	Document {...} values for %define.
	* src/parse-gram.y: Fix use of api.prefix.
	* tests/calc.at: Fix uses of api.location.type.
	* tests/input.at: Check api.prefix, and api.location.type.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	version 2.7.1
	* NEWS: Record release date.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: enforce definition syntax for keyword variables
	* src/muscle-tab.c (muscle_percent_define_get_kind)
	(muscle_percent_define_check_kind): New.
	(muscle_percent_define_default): Variables with a default value are
	of "keyword" kind.
	(muscle_percent_define_flag_if, muscle_percent_define_check_values):
	Check that the variable is of keyword kind.
	* data/bison.m4: Likewise, but in M4.  That is to say...
	(b4_percent_define_default): Define the kind when the variable is undefined.
	(b4_percent_define_check_kind): Use a better error message.
	(_b4_percent_define_check_values, _b4_percent_define_check_values):
	Former "enum" variables should be defined using the keyword syntax.
	* doc/bison.texi: Update.
	A couple of fixes.
	* tests/input.at (%define keyword variables): New.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: let -D/-F support the three kinds of %define variable values
	See http://lists.gnu.org/archive/html/bison-patches/2013-04/msg00012.html

	* src/getargs.c (getargs): Recognize {value} and "value" for -D and -F.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: minor refactoring
	* src/muscle-tab.c (muscle_percent_define_default): Reduce the scopes.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: minor simplification which uncovers a missing warning
	* src/muscle-tab.c (muscle_percent_define_ensure): Discover the virtues
	of || to factor conditionals.
	* NEWS: As api.pure is no longer flagged as "used" by accident,
	we now have warnings for useless definitions.
	* tests/calc.at: So remove api.pure settings when running C++ tests,
	since C++ skeletons use a pure interface.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: factor the field retrieval
	* src/muscle-tab.c (muscle_percent_define_get_raw): New.
	Use it where appropriate.
	(location_decode): No longer fetch the value from the table,
	take the value as argument.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: factor the handling of used variables
	* src/muscle-tab.c (muscle_percent_define_use): New, corresponding
	to b4_percent_define_use.
	Use it where appropriate.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: factor the computation of variable names
	* src/muscle-tab.c (muscle_name): New.
	Use it.
	Propagate "uniqstr" as value type instead of plain "char const *".

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: factor the kind check in M4
	* data/bison.m4 (b4_percent_define_check_kind): New.
	Use it to check api.token.prefix.
	* data/c++.m4: Check the kind of api.namespace.
	* doc/bison.texi: Update a reference to former 'namespace' variable.
	* tests/input.at ("%define" code variables): Check api.namespace.

2013-04-15  Akim Demaille  <akim@lrde.epita.fr>

	muscle: factor conditionals on defined %define variables
	* data/bison.m4 (b4_percent_define_ifdef_): New.
	Use it where appropriate.

2013-04-11  Akim Demaille  <akim@lrde.epita.fr>

	api.token.prefix: use code values
	* data/bison.m4: Remove useless (and incorrect: m4_* instead of b4_*)
	default assignment to api.token.prefix.
	Check that api.token.prefix is assigned code.
	* tests/input.at (%define code variables): New test.
	* NEWS, doc/bison.texi, tests/c++.at, tests/calc.at,
	* tests/java.at, tests/local.at: Adjust to use braces.

2013-04-11  Akim Demaille  <akim@lrde.epita.fr>

	c++: fix several issues with locations
	Reported by Daniel Frużyński.
	http://lists.gnu.org/archive/html/bug-bison/2013-02/msg00000.html

	* data/location.cc (position::columns, position::lines): Check for
	underflow.
	Fix some weird function signatures.
	(location): Accept signed integers as arguments where appropriate.
	Add operator- and operator+=.
	* doc/bison.texi (C++ position, C++ location): Various fixes
	and completion.
	* tests/c++.at (C++ Locations): New tests.

2013-04-11  Akim Demaille  <akim@lrde.epita.fr>

	muscles: be sure that %code snippets are not glue together on a single line
	Recently "braceless" in the parser was changed so that an eol was no
	longer added to the value.  This is not correct when a %code is used
	multiple times, because the syncline of the next snippet might be
	appended to the last (and not ended) line of the previous snippet.

	* src/muscle-tab.h (muscle_grow): Make it private.
	* src/muscle-tab.c (muscle_grow): Accept a fourth argument: a required
	terminator.
	Adjust callers.
	* tests/input.at (Multiple %code): New.

2013-04-11  Akim Demaille  <akim@lrde.epita.fr>

	style: fix comments
	* tests/actions.at: Fix incorrect "prototype".

2013-04-10  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  glr.cc: fix a clang warning
	  maint: update copyright years
	  build: fix VPATH issue
	  build: avoid clang's colored diagnostics in the test suite
	  tests: please clang and use ".cc", not ".c", for C++ input
	  gnulib: update
	  skeletons: avoid empty switch constructs
	  lalr1.cc: fix compiler warnings
	  yacc.c: do not use __attribute__ unprotected
	  tests: style changes

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	api.value.type: use keyword/brace values
	Suggested by Joel E. Denny.
	http://lists.gnu.org/archive/html/bison-patches/2013-03/msg00016.html

	* data/bison.m4 (b4_percent_define_get_kind): New.
	(b4_variant_flag): Check that api.value.type is defined as the 'variant'
	keyword value.
	* data/c.m4 (_b4_value_type_setup_keyword): New.
	(b4_value_type_setup): Use it to simplify reading.
	Use b4_define_silent.
	Decode api.value.type, including its type.
	(b4_value_type_define): Likewise.
	* data/c++.m4 (b4_value_type_declare): Adjust the decoding of api.value.type,
	taking its kind into account.
	* doc/bison.texi: Adjust all the examples to the new syntax.
	* NEWS: Ditto.
	* tests/types.at: Adjust

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	api.value.type: diagnose guaranteed failure with --yacc
	Instead of generating invalid C code, generate an error when --yacc and
	'%define api.value.type union' are used together.

	* data/bison.m4: Issue an error in this case.
	* tests/types.at (%yacc vs. %define api.value.type union): New, check this
	error.
	* doc/bison.texi (Type Generation): Document it.
	* tests/output.at: Check that '-o y.tab.c' and '-y' behave equally
	wrt generated file names.
	* NEWS (Use of YACC='bison -y'): New.
	Promote the use of 'bison -o y.tab.c'.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: style changes
	* doc/bison.texi (Destructor Decl, Printer Decl): Group series of %token
	and %type together.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: display locations in error as recommended by GNU Coding Standards
	* doc/bison.texi (Actions and Locations): here.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: api.value.type union
	* doc/bison.texi (Type Generation): New section.
	(Multi-function Calc): Convert to use api.value.type=union.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: move the section about "%union" where types are discussed
	* doc/bison.texi (Union Decl): Move to...
	(Defining Language Semantics): here.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: deprecate #define YYSTYPE in favor of %define api.value.type
	* doc/bison.texi: Convert examples with YYSTYPE to use api.value.type.
	Deprecate YYSTYPE.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	value type: accept "->" in type tags
	Provide a means to dereference pointers when defining tags.  One
	example could be:

	  %code requires
	  {
	    typedef struct ListElementType
	    {
	      union value
	      {
	        int intVal;
	        float floatVal;
	        char* charptrVal;
	      } value;

	      struct ListElementType* next;
	    } ListElementType;
	  }

	  %union
	  {
	    ListElementType* list;
	  }

	  %token <list->value.charptrVal> STRING
	  %token <list->value.intVal> INTEGER
	  %token <list->value.floatVal> REAL
	  %type <list> ElementList LiteralType

	* src/scan-code.l, src/scan-gram.l: Accept "->" in tags.
	* tests/types.at: Add more test cases to cover this case.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	style: simplify the scanning of type tags
	* src/scan-gram.l: Remove the rule for simple tags: the "complex" case
	subsumes it.  It was more efficient, but duplicated the code for a
	negligible benefit.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	api.value.type: implement proper support, check, and document
	* data/c.m4 (b4_symbol_type_register, b4_type_define_tag)
	(b4_symbol_value_union, b4_value_type_setup_union)
	(b4_value_type_setup_variant, b4_value_type_setup):
	New.
	(b4_value_type_define): Use it to set up properly the type.
	Handle the various possible values of api.value.type.
	* data/c++.m4 (b4_value_type_declare): Likewise.
	* data/lalr1.cc (b4_value_type_setup_variant): Redefine.

	* tests/types.at: New.
	Exercise all the C/C++ skeletons with different types of
	api.value.type values.
	* tests/local.mk, tests/testsuite.at: Use it.

	* doc/bison.texi (%define Summary): Document api.value.type.
	* NEWS: Advertise it, together with api.token.constructor.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	m4: allow the definition of side-effect only macros
	* data/bison.m4 (b4_divert_kill, b4_define_silent): New.
	* data/c.m4: Comment change.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	variant: fix inconsistent quotation
	* data/variant.hh (b4_char_sizeof): De-overquote.
	(b4_value_type_declare): De-underquote.

2013-04-09  Akim Demaille  <akim@lrde.epita.fr>

	m4: style changes in error messages
	* data/bison.m4: Use $0 to denote the current macro's name.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: fix a clang warning
	* data/glr.cc (b4_epilogue): Be sure to end with an end-of-line,
	so that the file does end with one.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	maint: update copyright years
	Run "make update-copyright".

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	build: fix VPATH issue
	* Makefile.am (update-b4-copyright, update-package-copyright-year): Fix
	path to build-aux.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	build: avoid clang's colored diagnostics in the test suite
	The syncline tests, which try to recognize compiler diagnostics,
	are confused by escapes for colors.

	* configure.ac (warn_tests): New, to factor the warnings for both
	C and C++ tests.
	Add -fno-color-diagnostics to it.
	* tests/local.at (AT_TEST_TABLES_AND_PARSE): Do not remove glue
	together compiler flags.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	tests: please clang and use ".cc", not ".c", for C++ input
	When fed with foo.c, clang++ 3.2 answers:

	  clang: error: treating 'c' input as 'c++' when in C++ mode,
	                this behavior is deprecated

	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use *.cc and *.hh
	for C++.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: avoid empty switch constructs
	Reported by Rob Conde.
	http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html

	* data/c.m4 (b4_symbol_actions): Rename as...
	(_b4_symbol_actions): this.
	(b4_symbol_actions): New wrapper.
	Do not emit empty switches.
	Adjust all b4_symbol_actions callers.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: fix compiler warnings
	Reported by Rob Conde.
	http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html

	* data/stack.hh (operator=, stack(const stack&)): Make this class
	uncopyable, i.e., "undefine" these operators: make them private and
	don't implement them.
	(clear): New.
	* data/lalr1.cc: Use it instead of an assignment.
	(parser): Make this class uncopyable.

2013-04-08  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: do not use __attribute__ unprotected
	Reported by Victor Khomenko.
	http://lists.gnu.org/archive/html/bug-bison/2013-04/msg00001.html

	* data/glr.c (YYUSE, __attribute__): Fuse their definition into...
	* data/c.m4 (b4_attribute_define): this new macro.
	* data/yacc.c, data/glr.c: Use it.

2013-04-05  Akim Demaille  <akim@lrde.epita.fr>

	api.namespace: demonstrate and use {...} values instead of "..." values
	* tests/c++.at, tests/input.at: Use "%define api.namespace {foo}" instead
	of using quotes.
	* tests/local.at (AT_SETUP_STRIP, AT_NAME_PREFIX): Recognize uses of
	braces instead of quotes.
	* doc/bison.texi: Use braces for api.namespace's values.

2013-04-05  Akim Demaille  <akim@lrde.epita.fr>

	grammar: do not add a \n at the end of blocks of code
	Now that we use "braceless" (which is {...} blocks of code with
	initial and final braces stripped) to denote "short" values (such as
	api.namespaces), the added end-of-line is a nuisance.  As a matter of
	fact, this extra-safety was useless, as every expansion of "braceless"
	(aka, "user code") is followed by an end of line.

	* src/parse-gram.y, src/parse-gram.c (braceless): Instead of replacing
	the final brace by \n, just delete the brace.

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	grammar: record the kind of %define variable values
	Provide a means to tell the difference between "keyword" values (e.g.,
	%define api.pull both), "string" values (e.g., %define file.name
	"foo"), and "code" values (e.g., %define api.namespace {calc}).

	Suggested by Joel E. Denny.
	http://lists.gnu.org/archive/html/bison-patches/2013-03/msg00016.html

	* src/muscle-tab.h, src/muscle-tab.c (muscle_kind, muscle_kind_new)
	(muscle_kind_string): New.
	(muscle_percent_define_insert): Take the kind as new argument.
	Insert it in the muscle table.
	Adjust callers.
	* src/getargs.c: Adjust callers.
	* src/parse-gram.y: Ditto.
	(content.opt): Remove, replaced by...
	(value): this new non-terminal, whose semantics value is stored
	in the new "value" union member.
	Provide a printer.
	Support values in braces in additions to keyword and string values.

	fuse me

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	style: fix comments
	* src/muscle-tab.c (muscle_percent_define_ensure): Update obsolete
	comments.

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	grammar: style changes
	* src/parse-gram.y (PARAM_TYPE): Remove useless typedef guard.
	There's a header guard.
	Use 'yyo' with %printer.
	Use a consistent style for %union one-liners.

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	grammar: split %union to group together related aspects
	* src/parse-gram.y (INT): Fuse the %type and %token declaration.
	Move its %union right before its introduction.
	(%union): Split in several %unions, right before their use.

2013-04-04  Akim Demaille  <akim@lrde.epita.fr>

	muscle: refactor
	* src/muscle-tab.c (muscle_lookup, muscle_entry_new): New.
	(muscle_insert, muscle_grow, muscle_find_const, muscle_find): Use them.

2013-04-03  Akim Demaille  <akim@lrde.epita.fr>

	style: comment changes
	* src/muscle-tab.c: Move the documentation of public functions to...
	* src/muscle-tab.h: here.
	Fix comment consistency issues.

2013-04-03  Akim Demaille  <akim@lrde.epita.fr>

	muscle: minor refactoring
	* src/muscle-tab.h (MUSCLE_INSERT_C_STRING): Use MUSCLE_INSERT_STRING.

2013-03-06  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-03-06  Valentin Tolmer  <nitnelave1@gmail.com>

	gram: correct token numbering in precedence declarations
	In a precedence declaration, when tokens are declared with a litteral
	character (e.g., 'a') or with a identifier (e.g., B), Bison behaved
	differently: the litteral tokens would be numbered first, and then the
	other ones, leading to the following grammar:

	  %right A B 'c' 'd'

	being numbered as such: 'c' 'd' A B.

	* src/parse-gram.y (symbol.prec): Set the symbol number when reading the
	symbols.
	* tests/conflicts.at (Token declaration order: literals vs. identifiers):
	New.

2013-03-04  Akim Demaille  <akim@lrde.epita.fr>

	maint: update autoconf submodule
	* submodules/autoconf: Up to master.
	No significant changes in the files we use (m4sugar.m4 and foreach.m4).

2013-03-04  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: no longer include the yacc category in -Wall
	It would be a pity to warn the users against Bison features...
	http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00107.html

	* src/complain.h, src/complain.c (Wall): Disable Wyacc.
	(Weverything): New (hidden so far) category which really denotes all
	the categories (what used to be Wall).
	(warnings_args, warnings_types): Adjust.
	(warning_argmatch): Now !none = Weverything and conversely, no longer Wall.
	* NEWS, doc/bison.texi, src/getargs.c: Adjust the documentation.
	* tests/input.at (-Werror is not affected by -Wnone and -Wall): Adjust
	by not using a -Wyacc type of warning.

2013-03-04  Akim Demaille  <akim@lrde.epita.fr>

	grammar: no longer detect and cure missing semicolon at end of actions
	Bison 3.0 is already breaking backward compatibility with other
	features.  It is an appropriate time to drop this feature.  Note that
	it was disabled when --yacc is passed.  See
	http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00102.html

	Basically, revert e8cd1ad655bcc704b06fb2f191dc3ac1df32b796.

	* src/scan-code.l (braces_level, need_semicolon, in_cpp): Remove.
	Remove every rule needed to detect and add missing semicolon.
	* tests/actions.at (Fix user actions without a trailing semicolon):
	Remove.
	* NEWS: Adjust.

2013-03-04  Akim Demaille  <akim@lrde.epita.fr>

	build: stop using bison -y
	* Makefile.am (YACC): Pass -o y.tab.c, so that ylwrap is happy, and
	yet we don't pass --yacc to bison.
	(AM_YFLAGS): Disable Yacc warnings.

2013-02-23  Akim Demaille  <akim@lrde.epita.fr>

	c++: rename b4_semantic_type_declare as b4_value_type_declare
	This is to match the names used in C and api.value.type, even if the
	parser actually defines semantic_type.

	* data/c++.m4 (b4_semantic_type_declare): Rename as...
	(b4_value_type_declare): this.
	* data/variant.hh: Likewise.

2013-02-23  Akim Demaille  <akim@lrde.epita.fr>

	news: typo
	* NEWS: here.

2013-02-23  Akim Demaille  <akim@lrde.epita.fr>

	style: space changes in the tests
	* tests/local.at: here.

2013-02-22  Akim Demaille  <akim@lrde.epita.fr>

	style: formatting changes in the doc
	* doc/bison.texi: Use @file where appropriate.

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix invalid C++11 code
	* tests/c++.at (Object): Somehow instances of Object were assigned
	YY_NULL, which is 0 most of the time (that case passes), but is
	nullptr in C++11, and there is nothing in Object to support such an
	assignment (failure).  Use 0 as value, and provide the needed
	assignment operator.
	Also, use a more natural order within the class definition.

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix failures with G++ 4.8 in Flex scanner
	* configure.ac (WARN_NO_NULL_CONVERSION_CXXFLAGS): Rename as...
	(FLEX_SCANNER_CXXFLAGS): this.
	Pass -Wno-zero-as-null-pointer-constant to G++ if it supports it.
	* examples/calc++/local.mk: Adjust.

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	style: rename variant private members
	* data/variant.hh (buffer, tname, as_, raw, align_me): Rename as...
	(yybuffer_, yytname_,yyas_, yyraw, yyalign_me): these.

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	style: space changes
	* data/variant.hh: Be sure to leave a space before arguments in function
	calls.

2013-02-19  Akim Demaille  <akim@lrde.epita.fr>

	variant: fix G++ 4.4 warnings
	The changes by Théophile Ranquet about type punning issues need
	to be extend to in-place new to please G++ 4.4.7.

	* data/variant.hh (variant::as_): New, factors the casts that avoid
	compiler warnings.
	(as, build): Use them.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	news: spell fixes
	* NEWS: here.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: factor and enhance messages about duplicate rule directives
	When reporting a duplicate directive on a rule, point to its first
	occurrence:

	one.y:11.10-15: error: only one %empty allowed per rule
	   %empty {} %empty
	             ^^^^^^
	one.y:11.3-8: previous declaration
	   %empty {} %empty
	   ^^^^^^

	And consistently discard the second one.

	* src/complain.h, src/complain.c (duplicate_directive): New.
	* src/reader.c: Use it where appropriate.
	* src/symlist.h, src/symlist.c (symbol_list): Add a dprec_location member.
	* tests/actions.at: Adjust expected output.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	style: no longer use backquotes
	* tests/actions.at, tests/atlocal.in, tests/c++.at, tests/calc.at,
	* tests/conflicts.at, tests/existing.at, tests/glr-regression.at,
	* tests/input.at, tests/java.at, tests/local.at, tests/sets.at,
	* tests/synclines.at, doc/bison.texi, lib/libiberty.h, lib/timevar.h:
	Use single quotes.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	style: no longer use backquotes
	* README, REFERENCES, TODO, configure.ac, data/README, data/bison.m4,
	* data/c++.m4, data/c.m4, data/java.m4, data/lalr1.cc,
	* data/lalr1.java, data/yacc.c, doc/local.mk, etc/bench.pl.in,
	* src/conflicts.c, src/files.c, src/getargs.c, src/gram.h, src/lalr.c,
	* src/location.c, src/location.h, src/muscle-tab.c, src/muscle-tab.h,
	* src/output.c, src/parse-gram.c, src/parse-gram.y, src/print-xml.c,
	* src/print.c, src/reader.c, src/reduce.c, src/scan-skel.l,
	* src/symtab.h, src/system.h, src/tables.c:
	Use single quotes, as currently recommended by the GNU Coding Standards.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	style: no longer use backquotes in messages
	* src/getargs.c (usage): Use single quotes.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	doc: use %empty instead of /* empty */
	* doc/bison.texi: Change the comments into explicit %empty.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	doc: introduce %empty and -Wempty-rule
	* doc/bison.texi (Grammar Rules): Make it a @section which
	contains...
	(Rules Syntax): this new subsection (with the previous contents of
	"Grammar Rules".
	(Empty Rules): New subsection, extracted from the former
	"Grammar Rules".
	Document %empty.
	(Recursion): New a subsection of "Grammar Rules".
	Complete a few index entries.
	(Bison Options): Document -Wempty-rule.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	report: use %empty to denote empty rules
	* src/gram.c (rule_rhs_print): Use %empty for empty rules.
	* tests/conflicts.at, tests/regression.at, tests/sets.at: Adjust.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: %empty enables -Wempty-rule
	* src/complain.h, src/complain.c (warning_is_unset): New.
	* src/reader.c (grammar_current_rule_empty_set): If enabled -Wempty-rule,
	if not disabled.
	* tests/actions.at (Implicitly empty rule): Check this feature.
	Also check that -Wno-empty-rule does disable this warning.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	-Wempty-rule: diagnose empty rules without %empty
	* src/complain.h, src/complain.c (warning_empty_rule, Wempty_rule):
	New warning category.
	(warnings_args, warnings_types): Adjust.
	* src/reader.c (grammar_rule_check): Check the empty rules are
	flagged by %empty.
	* tests/actions.at (Implicitly empty rule): New.
	* tests/existing.at: Add expected warnings.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	tests: use %empty
	* tests/actions.at, tests/input.at, tests/reduce.at,
	* tests/regression.at:
	here.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	parser: use %empty
	Avoid that Bison's own use of "bison -Wall" trigger warnings.

	* src/parse-gram.y: Use %empty for every empty rule.

2013-02-18  Akim Demaille  <akim@lrde.epita.fr>

	grammar: introduce %empty
	Provide a means to explicitly denote empty right-hand sides of rules:
	instead of

	  exp:  { ... }

	allow

	  exp: %empty { ... }

	Make sure that %empty is properly used.

	With help from Joel E. Denny and Gabriel Rassoul.
	http://lists.gnu.org/archive/html/bison-patches/2013-01/msg00142.html

	* src/reader.h, src/reader.c (grammar_current_rule_empty_set): New.
	* src/parse-gram.y (%empty): New token.
	Use it.
	* src/scan-gram.l (%empty): Scan it.
	* src/reader.c (grammar_rule_check): Check that %empty is properly used.
	* tests/actions.at (Invalid uses of %empty, Valid uses of %empty): New.

2013-02-16  Akim Demaille  <akim@lrde.epita.fr>

	getargs: minor simplification
	* src/getargs.c (flag_argmatch): Simplify the handling of "none".

2013-02-16  Akim Demaille  <akim@lrde.epita.fr>

	style: move argument handling of -W into the diagnostics module
	This allows to reduce the number of public interfaces.

	* src/getargs.c (--yacc): Use warning_argmatch instead of tweaking
	directly warnings_flag (which will be private).
	(warning_argmatch, warnings_argmatch): Move to...
	* src/complain.h, src/complain.c: here.

	* src/getargs.h, src/getargs.c (warnings_args, warnings_types): Move to...
	* src/complain.c: here, now private.

	* src/complain.h (severity, warnings_flag): Move to...
	* src/complain.c: here, now private.

2013-02-16  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: revamp the handling of -Werror
	Recent discussions with Joel E. Denny
	(http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00026.html)
	show that it is desirable to tell the difference between an option
	that was explicitly disabled with -Wno-foo, as opposed to be left
	unset.  The current framework does not allow this.

	Instead of having a first int to store which options are enabled, and
	another to store which are turned into errors, use an array that for
	each warning category tells its status: disabled, unset, warning,
	error.

	* src/complain.h, src/complain.c (warning_bit): New enum.
	(warnings): Use it.
	(severity): New enum.
	(warnings_flag): Now an array of severity.
	(errors_flag): Remove, now done by warnings_flag.
	(complain_init): New function, to initialie warnings_flag.
	(warnings_are_errors): New Boolean, for -Werror.
	* src/complain.c (warning_severity): New.
	(warnings_print_categories, complains): Use it.
	* src/getargs.c (warning_argmatch): Adjust to use warnings_flag.
	(warnings_argmatch): Ditto.
	Handle -Werror and -Wno-error here.
	(getargs): Adjust.
	* src/main.c (main): Call complain_init.
	* tests/input.at (Invalid options): Add more corner cases.

2013-02-14  Akim Demaille  <akim@lrde.epita.fr>

	options: simplify the handling of -W
	* src/getargs.c (warnings_argmatch, warning_argmatch): Simplify by
	replacing function arguments with their actual values.
	(WARNING_ARGMATCH): Remove, useless.
	Adjust callers.

2013-02-14  Akim Demaille  <akim@lrde.epita.fr>

	options: don't accept "error=" for -f and -r
	* src/getargs.c (warning_argmatch, warnings_argmatch, WARNINGS_ARGMATCH):
	New.
	Use them for -W/--warning.
	They are copied from...
	(flag_argmatch, flags_argmatch, FLAGS_ARGMATCH): these.
	Simplify by removing the support for "error".
	* tests/input.at (Invalid options): New.
	* TODO (Laxism in Bison invocation arguments): Remove.

2013-02-14  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: factor the list of warning names
	* src/getargs.h, src/getargs.c (warnings_args, warnings_types): Make
	them public.
	* src/complain.h, src/complain.c (warnings_print_categories): Its
	only use outside complain.c was removed in a recent commit, so
	make it static.
	Simplify its implementation.
	Use warnings_args and warnings_types.
	* src/muscle-tab.c (muscle_percent_define_check_values): Make it
	silent.

2013-02-14  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: no longer pretty-print rules in error messages, carets suffice
	* src/gram.c (grammar_rules_useless_report): Let -fcaret handle the
	pretty-printing of the guilty rules.
	(rule_print): Inline in its only use.
	* tests/conflicts.at, tests/existing.at, tests/reduce.at,
	* tests/regression.at: Adjust.
	* NEWS: Document.

2013-02-14  Akim Demaille  <akim@lrde.epita.fr>

	options: no longer document warnings when diagnosing an invalid -W
	The argmatch functions accept prefixes of the alternatives (like
	getopt does for long options).  Bison uses this to document the
	warning categories.  This is troublesome: it duplicates the --help
	documentation, it is not gettextized, it is displayed with ugly quotes
	(because argmatch uses it to display the list of possible answers),
	and it prevents straighforward uses of the tables of valid warning
	categories (for instance so that warning diagnostics end with the name
	of the warning).

	The "hidden" option --trace uses the same trick, but it does not need
	to be translated, nor to be described in --help.

	* src/getargs.c (warnings_args): Remove pseudo documentation.
	Comment changes.

2013-02-11  Akim Demaille  <akim@lrde.epita.fr>

	tests: enlarge the allowed duration for calc tests
	Hydra "often" fails on this test:

	252. calc.at:658: 252. Calculator %glr-parser api.pure
	parse.error=verbose %debug %locations %defines api.prefix="calc"
	%verbose %yacc %parse-param {semantic_value *result}
	%parse-param {int *count} (calc.at:658): FAILED

	* tests/calc.at: Give 200s instead of 100s.
	Use AT_DEBUG_IF.

2013-02-11  Akim Demaille  <akim@lrde.epita.fr>

	debug: improve the display of symbol lists
	* src/symtab.c (symbol_print): Remove useless quotes (the symbol already
	has quotes).
	Prefer fputs.
	* src/symlist.c (symbol_list_syms_print): Likewise.
	Fix separators.

2013-02-09  Akim Demaille  <akim@lrde.epita.fr>

	style: minor changes
	* src/complain.c: Space changes.
	* src/reader.c: Comment changes.
	Avoid && in assertions.
	* src/location.c: Move comments to...
	* src/location.h: here.
	* src/symlist.h, src/symlist.c: Create a pseudo section for members
	that apply to the rule.

2013-02-08  Akim Demaille  <akim@lrde.epita.fr>

	news: restructure, document variants for C++
	* NEWS: here.

2013-02-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: api.token.constructor requires api.value.type=variant
	Eventually it should also support "union".

	* data/glr.cc: Move this check to...
	* data/c++.m4: here, as lalr1.cc is affected too.

2013-02-05  Akim Demaille  <akim@lrde.epita.fr>

	build: restore C90 compatibility
	* src/parse-gram.y, src/parse-gram.c: Don't use // comments.

2013-02-05  Akim Demaille  <akim@lrde.epita.fr>

	doc: use @group to improve page breaking
	* doc/bison.texi: here.

2013-02-04  Akim Demaille  <akim@lrde.epita.fr>

	style: rename internal "stype" as "union_members" for clarity
	"stype" is quite unclear, and it also collides with the former %define
	variable that had the same name (replaced by api.value.type).

	* src/parse-gram.y (stype): Rename as...
	(union_members): this.
	* data/bison.m4: Adjust.
	(b4_user_stype): Rename as...
	(b4_user_union_members): this.
	* data/c++.m4, data/c.m4: Adjust.
	* src/parse-gram.c: regen.

2013-02-04  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve the language independance layer
	* tests/local.at (_AT_LANG_DISPATCH): New, shamelessly stolen from
	Autoconf's _AT_LANG_DISPATCH.
	(AT_LANG_DISPATCH): New.
	(AT_YYERROR_FORMALS, AT_YYERROR_PROTOTYPE, AT_YYERROR_DECLARE_EXTERN)
	(AT_YYERROR_DECLARE, AT_YYERROR_DEFINE, AT_MAIN_DEFINE, AT_COMPILE)
	(AT_FULL_COMPILE):
	Use AT_LANG_DISPATCH instead of an ad hoc m4_case.

2013-02-04  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-02-04  Akim Demaille  <akim@lrde.epita.fr>

	style: space changes in the parser
	* src/parse-gram.y: Fix spaces.

2013-02-04  Akim Demaille  <akim@lrde.epita.fr>

	parser: use api.pure full
	* src/parse-gram.y: Use api.pure full instead of silly macro tricks.

2013-02-04  Akim Demaille  <akim@lrde.epita.fr>

	style: use a for loop instead of a while loop, and scope reduction
	* src/reader.c (packgram): Improve readability.
	The parser calls grammar_current_rule_end at the end of every rhs,
	which adds a NULL to separate the rules.  So there is no need to
	check whether "p" is non-null before proceeding.

2013-02-01  Theophile Ranquet  <ranquet@lrde.epita.fr>

	variants: stylistic change
	* data/variant.hh (tname): Respect the GNU Coding Standards for this
	pointer's declaration.

2013-02-01  Theophile Ranquet  <ranquet@lrde.epita.fr>

	grammar: free the association tracking graph
	The graph introduced by Valentin wasn't free'd after use.

	* src/symtab.c (assoc_free): New, clear the array of linked lists with...
	(linkedlist_free): This, new.
	(print_precedence_warnings): Call assoc_free when done.
	(print_assoc_warnings): Free used_assoc after use.

2013-02-01  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: use AT_FULL_COMPILE where possible
	* tests/c++.at (C++ Variant-based Symbol, Variants): Here.  Rename the
	generated input files to use .y instead of .yy, as a requirement for using
	AT_FULL_COMPILE instead of a combination of AT_BISON_CHECK and
	AT_BISON_COMPILE_CXX.

2013-02-01  Theophile Ranquet  <ranquet@lrde.epita.fr>

	variants: avoid type punning issue
	This is based on what is recommended by both Scott Meyers, in 'Effective
	C++', and Andrei Alexandrescu and Herb Sutter in 'C++ Coding Standards'.

	Use a static_cast on void* rather than directly use a reinterpret_cast,
	which can have nefarious effects on objects.  However, even though following
	this guideline is good practice in general, I am not quite sure how relevant
	it is when applied to conversions from POD to objects.  Actually, it might
	very well be the opposite: isn't this exactly what reinterpret_cast is for?
	What we really want *is* to transmit the memory map as a series of bytes,
	which, if I am correct, falls into the kind of "low level" hack for which
	this cast is meant.

	In any case, this silences the warning, which will be greatly appreciated by
	anyone using variants with a compiler supporting -fstrict-aliasing.

	* data/variant.hh (as): Here.
	* tests/c++.at (Exception safety, C++ Variant-based Symbols, Variants):
	Don't use NO_STRICT_ALIAS_CXXFLAGS (revert commit ddb9db15), as type punning
	is no longer an issue.
	* tests/atlocal.in, configure.ac (NO_STRICT_ALIAS_CXXFLAGS): Remove
	definition.
	* examples/local.mk (NO_STRICT_ALIAS_CXXFLAGS): Remove from AM_CXXFLAGS.
	* doc/bison.texi: Don't mention type punning issues.

2013-02-01  Theophile Ranquet  <ranquet@lrde.epita.fr>

	todo: update
	Reformulate and give more details on my thoughts concerning the graphical
	visualization, and add an entry about a bug in the options processing for
	warnings as errors.

	* TODO: Here.

2013-02-01  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-02-01  Akim Demaille  <akim@lrde.epita.fr>

	location: pass the location first
	* src/location.h, src/location.c (location_print): For consistency
	with other data structures and other location_* routines, pass the
	location argument first.
	* src/complain.c: Adjust.
	(location_caret): Likewise.
	* src/parse-gram.y: Adjust.

2013-02-01  Akim Demaille  <akim@lrde.epita.fr>

	symlist: use the right stream
	* src/symlist.c (symbol_list_syms_print): Use "f", not stderr.

2013-01-30  Akim Demaille  <akim@lrde.epita.fr>

	tests: put two related tests together
	* tests/conflicts.at (Useless associativity warning): Move next
	to "Useless precedence warning".

2013-01-30  Akim Demaille  <akim@lrde.epita.fr>

	news: name contributors
	* NEWS: here.

2013-01-30  Valentin Tolmer  <nitnelave1@gmail.com>

	warnings: introduce -Wprecedence
	The new warning category "precedence" flags useless precedence and
	associativity.  -Wprecedence can now be used, it is disabled by default.
	The warnings about precedence and associativity are grouped into one, and
	the testsuite was corrected accordingly.

	* src/complain.h (warnings): Introduce "precedence".
	* src/complain.c (warnings_print_categories): Adjust.
	* src/getargs.c (warnings_args, warning_types): Likewise.
	* src/symtab.h, src/symtab.c (print_associativity_warnings): Remove.
	* src/symtab.h (register_assoc): Correct arguments.
	* src/symtab.c (print_precedence_warnings): Print both warnings together.
	* doc/bison.texi (Bison options): Document the warnings and provide an
	example.
	* tests/conflicts.at, tests/existing.at, tests/local.at,
	* tests/regression.at: Adapt the testsuite for the new category
	(-Wprecedence instead of -Wother where appropriate).

2013-01-30  Akim Demaille  <akim@lrde.epita.fr>

	build: avoid clang's colored diagnostics in the test suite
	The syncline tests, which try to recognize compiler diagnostics,
	are confused by escapes for colors.

	* configure.ac (warn_tests): New, to factor the warnings for both
	C and C++ tests.
	Add -fno-color-diagnostics to it.
	* tests/local.at (AT_TEST_TABLES_AND_PARSE): Do not remove glue
	together compiler flags.

2013-01-30  Akim Demaille  <akim@lrde.epita.fr>

	build: please Clang++ 3.2+ on Flex scanners
	Clang++, with -Wall, rejects code generated by Flex (for C scanners):

	  CXX      examples/calc++/examples_calc___calc__-calc++-scanner.o
	  In file included from examples/calc++/calc++-scanner.cc:1:
	  error: implicit conversion of NULL constant to 'bool' [-Werror,-Wnull-conversion]
	  if ( ! ( (yy_buffer_stack) ? (yy_buffer_stack)[(yy_buffer_stack_top)] : __null) ) {
	       ~                                                                  ^~~~~~
	                                                                          false
	* configure.ac (WARN_NO_NULL_CONVERSION_CXXFLAGS): Compute it.
	* examples/calc++/local.mk (examples_calc___calc___CXXFLAGS): Use it.

2013-01-30  Valentin Tolmer  <nitnelave1@gmail.com>

	grammar: record used associativity and print useless ones
	Record which symbol associativity is used, and display useless ones.

	* src/symtab.h, src/symtab.c (register_assoc, print_assoc_warnings): New
	* src/symtab.c (init_assoc, is_assoc_used): New
	* src/main.c: Use print_assoc_warnings
	* src/conflicts.c: Use register_assoc
	* tests/conflicts.at (Useless associativity warning): New.

	Due to the new warning, many tests had to be updated.

	* tests/conflicts.at tests/existing.at tests/regression.at:
	Add the associativity warning in the expected results.
	* tests/java.at: Fix the java calculator's grammar to remove a useless
	associativity.
	* doc/bison.texi (mfcalc example): Fix associativity to remove
	warning.

2013-01-29  Valentin Tolmer  <nitnelave1@gmail.com>

	grammar: warn about unused precedence for symbols
	Symbols with precedence but no associativity, and whose precedence is
	never used, can be declared with %token instead.  The used precedence
	relationships are recorded and a warning about useless ones is issued.

	* src/conflicts.c (resolve_sr_conflict): Record precedence relation.
	* src/symtab.c, src/symtab.h (prec_nodes, init_prec_nodes)
	(symgraphlink_new, register_precedence_second_symbol)
	(print_precedence_warnings): New.
	Record relationships in a graph and warn about useless ones.
	* src/main.c (main): Print precedence warnings.
	* tests/conflicts.at: New.

2013-01-29  Theophile Ranquet  <ranquet@lrde.epita.fr>

	variants: remove the 'built' assertions
	When using %define parse.assert, the variants come with additional variables
	that are useful for development purposes. One is a Boolean indicating if the
	variant is built (to make sure we don't read a non-built variant), and the
	other is a string describing the stored type. There is no need to have both of
	these, the string is enough.

	* data/variant.hh (built): Remove.

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	style: indentation fixes
	* src/parse-gram.y: here.

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	maint: be sure to neutralize out-of-tree paths from our parser
	* tests/bison.in: Adjust to support fixed versions of ylwrap.

2013-01-29  Theophile Ranquet  <ranquet@lrde.epita.fr>

	m4: generate a basic_symbol constructor for each symbol type
	Recently, there was a slightly vicious bug hidden in the make_ functions:

	  parser::symbol_type
	  parser::make_TEXT (const ::std::string& v)
	  {
	    return symbol_type (token::TOK_TEXT, v);
	  }

	The constructor for symbol_type doesn't take an ::std::string& as
	argument, but a constant variant.  However, because there is a variant
	constructor which takes an ::std::string&, this caused the implicit
	construction of a built variant.  Considering that the variant argument
	for the symbol_type constructor was cv-qualified, this temporary variant
	was never destroyed.

	As a temporary solution, the symbol was built in two stages:

	  symbol_type res (token::TOK_TEXT);
	  res.value.build< ::std::string&> (v);
	  return res;

	However, the solution introduced in this patch contributes to letting
	the symbols handle themselves, by supplying them with constructors that
	take a non-variant value and build the symbol's own variant with that
	value.

	* data/variant.hh (b4_symbol_constructor_define_): Use the new
	constructors rather than building in a temporary symbol.
	(b4_basic_symbol_constructor_declare,
	b4_basic_symbol_constructor_define): New macros generating the
	constructors.
	* data/c++.m4 (basic_symbol): Invoke the macros here.

2013-01-29  Theophile Ranquet  <ranquet@lrde.epita.fr>

	c++: minor stylistic changes
	* data/c++m4: Remove useless comment lines.
	* data/variant.hh (self_type): Use this typedef instead of variant<S>.
	(b4_symbol_constructor_define_): Remove commented-out line, and stylistic
	change (avoid blank line).

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	c++: please G++ 4.8 with -O3: type puning issue
	* tests/c++.at (Exception safety): Now that this test covers
	variants, pass -fno-strict-aliasing to g++.

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	c++: please G++ 4.8 with -O3: array bounds
	* data/c++.m4, data/lalr1.cc (by_state, by_type): Do not use -1 to
	denote the absence of value, as GCC then fears that this -1 might
	be used to dereference arrays (such as yytname).
	Use 0, which corresponds to $accept, which is valueless (the needed
	property: the symbol destructor must not try to reclaim the memory
	associated with the symbol).

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	c++: use more explicit types than int
	* data/c++.m4 (b4_public_types_declare): Declare token_number_type soon.
	Introduce symbol_number_type (wider than token_number_type).
	Clarify the requirement that kind_type from by_state and by_type
	denote the _input_ type (required by the constructor), not the stored type.
	Use symbol_number_type and token_number_type where appropriate, instead
	of int.
	* data/lalr1.cc: Adjust to these changes.
	Propagate "symbol_number_type".
	Invoke "type_get ()" instead of read "type" directly.

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	c++: value_type -> kind_type
	* data/c++.m4, data/lalr1.cc (by_type, by_state): Rename 'value_type'
	as 'kind_type', as it is clearer.

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	c++: improve the signature of yysyntax_error_
	* data/lalr1.cc: This function is const.
	It takes a symbol_number_type.

2013-01-29  Akim Demaille  <akim@lrde.epita.fr>

	c++: style changes
	* data/lalr1.cc: Formatting changes.
	And name changes.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	doxygen: upgrade Doxyfile, and complete it
	* doc/Doxyfile.in: Let doxygen upgrade it.
	(INCLUDE_PATH): Point to lib too.
	(PROJECT_BRIEF): New.
	(EXCLUDE): Update to reflect the current file hierarchy.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix syntax-check issues
	* cfg.mk: Ignore strcmp in local.at.
	* tests/conflicts.at: Use AT_PARSER_CHECK.
	* tests/regression.at: Preserve the exit status of the generated parsers.

	* tests/local.mk ($(TESTSUITE)): Map @tb@ to a tabulation.
	* tests/c++.at, tests/input.at, tests/regression.at: Use @tb@.
	* cfg.mk: (space-tab): There are no longer exceptions.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: please C90 compilers
	* tests/actions.at, tests/conflicts.at: Use /* ... */ comments.
	Let "main" return a value.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	maint: update todo
	* TODO: Remove fixed items.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	news: minor improvements
	* NEWS: Name some more contributors.
	Restructure slightly.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: please clang and use ".cc", not ".c", for C++ input
	When fed with foo.c, clang++ 3.2 answers:

	  clang: error: treating 'c' input as 'c++' when in C++ mode,
	                this behavior is deprecated

	* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use *.cc and *.hh
	for C++.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: formatting changes
	* tests/local.at: Restore proper indentation.

2013-01-28  Theophile Ranquet  <ranquet@lrde.epita.fr>

	c++: better inline expansion
	Many 'inline' keywords were in the declarations.  They rather belong in
	definitions, so move them.

	* data/c++.m4 (basic_symbol, by_type): Many inlines here.
	* data/lalr1.cc (yytranslate_, yy_destroy_, by_state, yypush_, yypop_): Inline
	these as well.
	(move): Move the definition outside the struct, where it belongs.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: check that using variants is exception safe
	* tests/local.at: (Slightly) improve the regexp by escaping '.'
	when it denotes a point.
	(AT_VARIANT_IF): New.
	* tests/c++.at (Exception Safety): Run it for variants too.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: remove useless %defines
	Many tests were using %defines because C++ skeletons used to require
	it.

	* tests/actions.at, tests/c++.at, tests/input.at, tests/regression.at:
	Remove useless %defines.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	c++: remove now-useless operators
	Now that symbols behaves properly, we can eliminate special routines
	that are no longer needed.

	* data/c++.m4, data/glr.cc, data/lalr1.cc, data/variant.hh:
	Remove useless assignment operators and copy constructors.
	As a consequence, remove useless includes for "abort".

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: enable support for --debug
	* tests/c++.at (Variants): Here.
	And remove useless clutter when api.token.constructor is enabled.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	c++: revamp the support for variants
	The current approach was too adhoc: the symbols were not sufficiently
	self-contained, in particular wrt memory management.  The "new"
	guideline is the one that should have been followed from the start:
	let the symbols handle themslves, instead of leaving their users to
	it.  It was justified by the will to avoid gratuitious moves and
	copies, but the current approach does not seem to be slower, yet it
	will probably be simpler to adjust to support move semantics from
	C++11.

	The documentation says that the %parse-param are available from the
	%destructor.  In retrospect, that was a silly design decision, which
	we can break for variants, as its a new feature.  It should be phased
	out for non-variants too.

	* data/variant.hh: A variant never knows if it stores something or
	not, it is up to its users to store this information.
	Yet, in parse.assert mode, make sure the empty/filled variants
	are properly used.
	(b4_symbol_constructor_define_): Don't call directly the symbol
	constructor, to save a useless temporary.
	* data/stack.hh (push): Steal the pushed value instead of duplicating
	it.
	This will simplify the callers of push, who handled this "move"
	approach themselves.
	* data/c++.m4 (basic_symbol): Let -1, as kind, denote the fact that
	a symbol is empty.
	This is needed for instance when shifting the lookahead: yyla
	is given as argument to "push", and its value is then moved on
	the stack.  But then yyla must be declared "empty" so that its
	destructor won't be called.
	(basic_symbol::move): New.
	Move the responsibility of calling the destructor from yy_destroy
	to ~basic_symbol in the case of variants.
	* data/lalr1.cc (stack_symbol_type): Now a derived class from its
	previous value, so that we can add a constructor from a symbol_type.
	(by_state): State -1 means empty.
	(yypush_): Factor, by calling one overload from the other one, and
	using the new semantics of stack::push.
	No longer reclaim by hand the memory from rhs symbols, since now
	that we store objects with proper destructors, they will be reclaimed
	automatically.
	Conversely, be sure to delete yylhs.
	* tests/c++.at (C++ Variant-based Symbols): New "unit" test for
	symbols.

2013-01-28  Akim Demaille  <akim@lrde.epita.fr>

	c++: formatting and comment changes
	* data/c++.m4, data/lalr1.cc, data/stack.hh, data/variant.hh:
	Fix indentation.
	Fix some comments.

2013-01-27  Valentin Tolmer  <nitnelave1@gmail.com>

	tests: add token declaration order test
	* tests/conflicts.at: New test.

2013-01-27  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-01-27  Valentin Tolmer  <nitnelave1@gmail.com>

	grammar: preserve token declaration order
	In a declaration %token A B, the token A is declared before B, but in %left
	A B (or with %precedence or %nonassoc or %right), the token B was declared
	before A (tokens were declared in reverse order).

	* src/symlist.h, src/symlist.c (symbol_list_append): New.
	* src/parse-gram.y: Use it instead of symbol_list_prepend.
	* tests/input.at: Adjust expectations.

2013-01-25  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve test group titles
	* tests/local.at (AT_SETUP_STRIP): AT_SETUP does not behave properly
	with new-lines in its argument.
	Remove them.
	Fix the handling of %define with quotes.

2013-01-25  Akim Demaille  <akim@lrde.epita.fr>

	c: no longer require stdio.h when locations are enabled
	Recent changes (in 2.7) introduced a dependency on both FILE and
	fprintf, which are "available" only in %debug mode.  This was to
	define yy_location_print_, which is used only in %debug mode by the
	parser, but massively used by the test suite to output the locations
	in yyerror.

	Break this dependency: the test suite should define its own routines
	to display the locations.  Eventually Bison will provide the user with
	a means to display locations, but not yet.

	* data/c.m4 (b4_yy_location_print_define): Use YYFPRINTF instead of
	fprintf directly.
	* data/yacc.c (b4_yy_location_print_define): Invoke it only in %debug
	mode, so that stdio.h is included (needed for FILE*), and YYFPRINTF
	is defined.

	* tests/local.at (AT_YYERROR_DECLARE, AT_YYERROR_DEFINE): Declare
	and define location_print and LOCATION_PRINT.

	* tests/actions.at, tests/existing.at, tests/glr-regression.at,
	* tests/input.at, tests/named-refs.at, tests/regression.at: Adjust
	to use them.
	Fix the expected line numbers (as the prologue's length has changed).

2013-01-25  Akim Demaille  <akim@lrde.epita.fr>

	c: minor simplification in the debug code
	* data/c.m4 (yy_symbol_print): Minor factoring.

2013-01-25  Akim Demaille  <akim@lrde.epita.fr>

	c++: display locations as C does
	See commit 3804aa260b956dd012adde3894767254422a5fcf.

	* data/location.cc (operator<<): Display location exactly as is
	done in C skeletons.
	* tests/local.at (AT_LOC_PUSHDEF, AT_LOC_POPDEF): Also define
	AT_FIRST_LINE, AT_LAST_LINE, AT_FIRST_COLUMN, AT_LAST_COLUMN.
	* tests/actions.at (Location Print): Also check C++ skeletons.

2013-01-25  Akim Demaille  <akim@lrde.epita.fr>

	tests: highlight empty right-hand sides
	* tests/actions.at, tests/c++.at, tests/headers.at,
	* tests/input.at: here.

2013-01-25  Akim Demaille  <akim@lrde.epita.fr>

	news: prepare for 2.8
	* NEWS: Restructure.
	Name contributors.

2013-01-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: generalize default main for api.namespace
	* tests/local.at (AT_NAME_PREFIX): Also match api.namespace.
	(AT_MAIN_DEFINE): Take it into account.
	* tests/c++.at, tests/headers.at: Use AT_NAME_PREFIX.
	(AT_CHECK_NAMESPACE): Rename as...
	(AT_TEST): this.

2013-01-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve factoring of the main function
	* tests/local.at (AT_MAIN_DEFINE): If %debug is used, check if
	-d/--debug is passed to the generated parser, and enable the traces.
	Return exactly the result of yyparse, so that we can check exit code
	2 too.
	* tests/actions.at, tests/glr-regression.at, tests/regression.at:
	Use AT_MAIN_DEFINE, helping AT_BISON_OPTION_PUSHDEFS where needed,
	preferably to option -t.

2013-01-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: factor the definition of main
	With Théophile Ranquet.

	* tests/local.at (AT_MAIN_DEFINE): New.
	(AT_YYERROR_DEFINE): Improve formatting.
	* tests/actions.at, tests/c++.at, tests/conflicts.at,
	* tests/glr-regression.at, tests/input.at, tests/regression.at,
	* tests/skeletons.at, tests/torture.at: Adjust.
	* tests/c++.at: Add missing %skeleton for a PUSHDEFS, and a missing
	PUSH/POPDEFS for another test.

2013-01-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: minor refactoring
	* tests/named-refs.at: Use AT_FULL_COMPILE where applicable.

2013-01-21  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: avoid useless caret stuttering
	* src/scan-code.l: When reporting a missing ending ';', don't display
	the guilty action twice.

2013-01-21  Theophile Ranquet  <ranquet@lrde.epita.fr>

	examples: please clang
	* doc/bison.texi (calc++-scanner.ll): Don't output useless yyinput function.

2013-01-21  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: better silencing of unused argument warnings
	input.yy:35:44: error: unused parameter 'msg' [-Werror,-Wunused-parameter]
	void yy::parser::error (std::string const& msg)
	                                           ^

	* tests/c++.at (C++ GLR parser identifier shadowing): Don't name unused
	argument, use YYUSE instead of a direct cast to void.

2013-01-21  Theophile Ranquet  <ranquet@lrde.epita.fr>

	bench: compatibility for Bison <= 2.7
	There used to be a bug in some skeletons, which caused the expansion of
	'yylval' and 'yylloc', generating these errors:

	input.cc:547:16: error: expected ',' or '...' before '(' token
	 #define yylval (yystackp->yyval)
	                ^
	input.yy:29:39: note: in expansion of macro 'yylval'
	 int yylex (yy::parser::semantic_type *yylval)
	                                       ^

	This bug is fixed by 'skel: better aliasing of identifiers', but a workaround
	is useful when benchmarking against older versions of Bison, which are still
	affected by the bug.

	* etc/bench.pl.in: Rename yylval to yylvalp and yylloc to yyllocp in base
	grammar 'list'.

2013-01-15  Theophile Ranquet  <ranquet@lrde.epita.fr>

	c++: remove useless inlines
	* data/c++.m4 (basic_symbol): Keep 'inline' in the prototypes, but don't
	duplicate it in the implementation.
	* data/variant.hh (variant): 'inline' is not needed when the implementation is
	provided in the class definition.

2013-01-15  Theophile Ranquet  <ranquet@lrde.epita.fr>

	c++: m4 stylistic change
	* data/c++.m4 (syntax_error): Fix the indentation of 'inline'.

2013-01-14  Theophile Ranquet  <ranquet@lrde.epita.fr>

	c++: silence warnings
	* data/c++.m4 (basic_symbol<Base>::operator=): Unused parameter.
	* tests/c++.at (C++ GLR parser identifier shadowing): Here too.
	-

2013-01-14  Theophile Ranquet  <ranquet@lrde.epita.fr>

	news: typos
	* NEWS: Fix a typo, use YYSTYPE rather than semantic_type.

2013-01-12  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-01-12  Akim Demaille  <akim@lrde.epita.fr>

	maint: update copyright years
	Suggested by Stefano Lattarini.
	Run "make update-copyright".

2013-01-12  Akim Demaille  <akim@lrde.epita.fr>

	build: fix VPATH issue
	* Makefile.am (update-b4-copyright, update-package-copyright-year): Fix
	path to build-aux.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	carets: document default activation
	* NEWS: Announce it.
	* doc/bison.texi: Adjust.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	carets: show them in more tests
	* tests/input.at, tests/named-refs.at: Here.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	carets: activate by default
	* src/getargs.c (feature_flag): Here.
	* tests/local.at (AT_BISON_CHECK_, AT_BISON_CHECK_NO_XML): Deactivate carets
	for the testsuite, by default.
	* tests/input.at: Adjust the locations for command line definitions.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	variants: document move and swap
	* data/variant.hh (swap): Doc.
	(build): Rename as...
	(move): This, more coherent naming with clearer meaning.
	* data/c++.m4 (move): Adjust.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	c++: privatize variant blind copies
	* data/variant.hh (variant, operator=): Make private.
	* data/c++.m4 (operator=): New, to avoid needing a definition of that operator
	for each class member (such as a possible variant).
	* data/glr.cc, data/lalr.cc: Add the necessary include for the abort.

2013-01-11  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: fix an unused argument issue
	* data/glr.c (yyuserAction): "Use" yyrhslen, as in variant mode, we might
	not use it.

2013-01-11  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: style changes
	* data/glr.c (yyuserAction): Use a size_t for sizes.

2013-01-11  Akim Demaille  <akim@lrde.epita.fr>

	c.m4: style fix
	* data/c.m4 (b4_parse_param_use): Add missing space before paren.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	skel: better aliasing of identifiers
	* data/glr.c, data/yacc.c: Avoid emitting useless defines.
	* data/glr.cc: Restore prefixes for epilogue.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	glr.cc: fatal if using api.token.ctor without variants
	* data/glr.cc: Here.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	skel: correctly indent switch cases
	* data/bison.m4 (b4_type_action_): Here.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	variants: assert changes
	* data/variant.hh (swap): More asserts can't hurt. Don't perform useless swaps.
	(build): Deactivate problematic asserts, pending further investigation.
	(variant): Prohibit copy construction.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	lalr1.cc: use a vector for the symbol stack
	* data/lalr1.cc: Adjust includes.
	* data/stack.hh (push, pop): Use push_back and pop_back.
	(operator []): Access vector from the end.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	lalr1.cc: change symbols implementation
	A "symbol" groups together the symbol type (INT, PLUS, etc.), its
	possible semantic value, and its optional location.  The type is
	needed to access the value, as it is stored as a variant/union.

	There are two kinds of symbols. "symbol_type" are "external symbols":
	they have type, value and location, and are returned by yylex.
	"stack_symbol_type" are "internal symbols", they group state number,
	value and location, and are stored in the parser stack.  The type of
	the symbol is computed from the state number.

	The class template symbol_base_type<Exact> factors the code common to
	stack_symbol_type and symbol_type.  It uses the Curiously Recurring
	Template pattern so that we can always (static_) downcast to the exact
	type.  symbol_base_type features value and location, and delegates the
	handling of the type to its parameter.

	When trying to generalize the support for variant, a significant issue
	was revealed: because stack_symbol_type and symbol_type _derive_ from
	symbol_base_type, the type/state member is defined _after_ the value
	and location.  In C++ the order of the definition of the members
	defines the order in which they are initialized, things go backward:
	the value is initialized _before_ the type.  This is wrong, since the
	type is needed to access the value.

	Therefore, we need another means to factor the common code, one that
	ensures the order of the members.

	The idea is simple: define two (base) classes that code the symbol
	type ("by_type" codes it by its type, and "by_state" by the state
	number).  Define basic_symbol<Base> as the class template that
	provides value and location support.  Make it _derive_ from its
	parameter, by_type or by_state.  Then define stack_symbol_type and
	symbol_type as basic_symbol<by_state>, basic_symbol<by_type>.  The
	name basic_symbol was chosen by similarity with basic_string and
	basic_ostream.

	* data/c++.m4 (symbol_base_type<Exact>): Remove, replace by...
	(basic_symbol<Base>): which derives from its parameter, one of...
	(by_state, by_type): which provide means to retrieve the actual type of
	symbol.
	(symbol_type): Is now basic_symbol<by_type>.
	(stack_symbol_type): Is now basic_symbol<by_state>.
	* data/lalr1.cc: Many adjustments.

2013-01-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	bench: add %b directive to use a specific Bison
	For example,
	  $ bench.pl -v '%s lalr1.cc & %d variant & ( %b ~/old-bison/bin/bison
	    | %b ~/new-bison/bin/bison )' -g list -i 10000

	* etc/bench.pl.in: Here.

2013-01-09  Akim Demaille  <akim@lrde.epita.fr>

	regen

2013-01-04  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-12-31  Akim Demaille  <akim@lrde.epita.fr>

	doc: use deffn to declare the list of %define variables
	* doc/bison.texi (%define Summary): Use @deffn instead of @table, it
	spares a lot of width, especially in PDF, and looks nicer in the other
	formats too.
	It is also more consistent with the rest of the document.

2012-12-31  Akim Demaille  <akim@lrde.epita.fr>

	doc: minor completion and fixes
	* doc/bison.texi (%define Summary): Provide more history to some
	variables.

2012-12-31  Akim Demaille  <akim@lrde.epita.fr>

	java: stype is obsoleted by api.value.type
	This is consistent with the other %define variable names.

	* data/java.m4: Use api.value.type instead of stype.
	* doc/bison.texi, NEWS: Document that change.
	* src/muscle-tab.c (muscle_percent_variable_update): Provide backward
	compatibility.
	* tests/java.at: Adjust.

2012-12-31  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix html build
	* doc/local.mk (bison.html): Fix dependencies.

2012-12-31  Akim Demaille  <akim@lrde.epita.fr>

	todo: remove erroneous task
	* tests/input.at: Check that there are no warnings about stray $ and @
	in the epilogue.
	* TODO: Remove the correponding task.

2012-12-31  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-12-28  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-12-28  Akim Demaille  <akim@lrde.epita.fr>

	syncline: one line is enough
	So far we were issuing two lines for each syncline change:

	  /* Line 356 of yacc.c  */
	  #line 1 "src/parse-gram.y"

	This is a lot of clutter, especially when reading diffs, as these
	lines change often.  Fuse them into a single, shorter, line:

	  #line 1 "src/parse-gram.y" /* yacc.c:356  */

	* data/bison.m4 (b4_syncline): Issue a single line.
	Comment improvements.
	(b4_sync_start, b4_sync_end): Issue a shorter comment.
	* data/c++.m4 (b4_semantic_type_declare): b4_user_code must be
	on its own line as it might start with a "#line" directive.

2012-12-28  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-12-28  Akim Demaille  <akim@lrde.epita.fr>

	maint: restore ANSI 89 compliance
	* data/bison.m4, src/conflicts.c, src/files.c, src/output.c,
	* src/symtab.c: Use /* ... */ comments only.
	Declare variables before statements.

2012-12-28  Akim Demaille  <akim@lrde.epita.fr>

	graph: minor simplification
	* src/gram.c (print_lhs): Use %*s to indent.
	* src/print_graph.c (print_lhs): Use obstack_printf.
	Became simple enough to be inlined in...
	(print_core): here.
	Use a "rule*" instead of an index in "rules[]".

2012-12-28  Akim Demaille  <akim@lrde.epita.fr>

	closure, gram: add missing const
	* src/closure.h, src/closure.c, src/gram.h, src/gram.c: Add some missing
	const where appropriate.

2012-12-27  Theophile Ranquet  <ranquet@lrde.epita.fr>

	carets: properly display when no line feed is present
	* src/location.c (location_caret): finish the line with one whether or not it
	is present in input. Rewrite code without getline.
	(cleanup_caret): Reset the caret_info global.
	* bootstrap.conf: No longer require getline.

2012-12-27  Theophile Ranquet  <ranquet@lrde.epita.fr>

	scanner: reintroduce unput for missing end tokens
	Unput was no longer used since a POSIX-compatiblity issue with Flex 2.5.31,
	which has been adressed in newer versions of Flex.  See this discussion:
	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00029.html>

	This partially reverts commit aa4180418fff518198e1b0f2c43fec6432210dc7.

	* src/scan-gram.l (unexpected_end): Here.
	* tests/input.at: Adjust for new order of error reports.

2012-12-27  Akim Demaille  <akim@lrde.epita.fr>

	tables: scope reduction
	* src/tables.c (default_goto): Make it easier to understand.

2012-12-27  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-12-27  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: fix comments
	The commit 38de4e570fdc7c8db9633c3b2054e565d8c1c6b9 underquoted the
	content of the comments, which resulted in losing square brackets in
	the comments.  Besides, some other invocations were underquoting the
	effective arguments.

	* data/c.m4 (b4_comment_): Properly quote the comment.
	(b4_comment_, b4_comment): Move to...
	* data/c-like.m4: here, so that...
	* data/java.m4: can use it instead of its own copy.
	* data/bison.m4 (b4_integral_parser_tables_map): Fix some comments.

	* data/lalr1.cc, data/lalr1.java, data/yacc.c: Comment fixes.

	* data/lalr1.cc: Reorder a bit to factor some CPP directives.

2012-12-27  Akim Demaille  <akim@lrde.epita.fr>

	maint: which -> whose
	Apparently, I was confusing both.

	* data/bison.m4, data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c:
	Use "whose" where appropriate.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tables: scope reduction
	* src/tables.c (matching_state): here.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tables: scope reduction
	* src/tables.c (token_actions): here.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tables: scope reduction
	* src/tables.c (save_row): here.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tables: scope reduction
	* src/tables.c (save_column, pack_vector): Reduce the scope to
	emphasize the structure of the code.
	Rename the returned value "res" to make understanding easier.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tables: use size_t where appropriate
	These changes aim at making the code easier to understand.

	* src/tables.c (tally): This is a size, always >= 0, so make it
	a size_t.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tables: style changes
	* src/tables.c: Prefer < to >.
	Fix/complete some comments.
	Remove useless parens.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: no longer call yylex via a CPP macro
	The YYLEX existed only to support YYLEX_PARAM, which is now removed.
	This macro was a nuisance, since incorrect yylex calls where pointed
	the macro _use_, instead of its definition.

	* data/c.m4 (b4_lex_formals, b4_lex): New.
	* data/glr.c, data/yacc.c: Use it.
	* data/lalr1.cc (b4_lex): New.
	Use it.

	squash! skeletons: no longer call yylex via a CPP macro

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	YYLEX_PARAM: drop support
	* data/yacc.c, doc/bison.texi: Remove YYLEX_PARAM support.
	* NEWS: Document it.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	examples: minor improvements
	* examples/variant.yy: Don't use debug_stream(), obsoleted.
	Use <*>.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: factor comments about symbols
	* data/variant.hh (b4_char_sizeof_): Rename as...
	* data/bison.m4 (b4_symbol_tag_comment): this.
	Provide more documentation about b4_symbol_*.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	c: improve the definition of public types
	* data/c.m4 (b4_token_enum): Improve comments.
	(b4_value_type_define, b4_location_type_define): New, extracted
	from...
	(b4_declare_yylstype): here.
	Separate the typedefs from the union/struct definitions.

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	doc: update variant usage
	* doc/bison.texi, examples/variant.yy: Use "%define api.value.type variant",
	instead of "%define variant".

2012-12-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: check the "%define variant" is deprecated.
	* tests/input.at: Rename some AT_SETUP to avoid that
	AT_SETUP_STRIP thinks they contain %define directives.
	("%define" backward compatibility): Merge tests together
	to speed up the test suite, and to make maintenance easier
	(multiple AT_CHECK means multiple runs of the test suite to
	be sure to have updated all the error messages).
	Check the "%define variant" is properly obsoleted.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	%define variables: support value changes in deprecation
	* src/muscle-tab.c (define_directive): Be robust to "assignment"
	containing '='.
	(muscle_percent_variable_update): Upgrade "variant" to "api.value.type".
	Support such upgrade patterns.
	Adjust callers.

	* data/bison.m4: Use api.value.type for variants.
	* tests/c++.at: Adjust tests.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: treat obsolete %define variable names as obsolete directives
	Instead of

	  warning: deprecated %define variable name: 'namespace', use 'api.namespace' [-Wdeprecated]

	display (in -fno-caret mode):

	  warning: deprecated directive: '%define namespace foo', use '%define api.namespace foo' [-Wdeprecated]

	and (in -fcaret mode):

	  warning: deprecated directive, use '%define api.namespace toto' [-Wdeprecated]
	   %define namespace toto
	           ^^^^^^^^^

	This is in preparation of cases where not only the variable is
	renamed, but the values are too:

	  warning: deprecated directive: '%define variant', use '%define api.value.type variant' [-Wdeprecated]

	* src/muscle-tab.c (define_directive): New.
	(muscle_percent_variable_update): Take the value as argument, and use it
	in the diagnostics.
	Loop with a pointer instead of an index.
	* tests/input.at (%define backward compatibility): Adjust.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: factor the deprecated directive message
	* src/complain.h, src/complain.c (deprecated_directive): New.
	* src/muscle-tab.c: Use it.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	variant: produce stable results
	Improve the output by ensuring a well defined order for type switches.

	* src/uniqstr.h: Style changes for macro arguments.
	(UNIQSTR_CMP): Replace by...
	(uniqstr_cmp): this.
	* src/uniqstr.c (uniqstr_cmp): New.
	Produce well defined results.
	* src/output.c: Use it.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	uniqstr: formatting changes
	* src/uniqstr.h: Sort functions by object type.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: fix an error message
	* data/bison.m4 (b4_flag_if): Display the invalid value.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve titles
	* tests/local.at (AT_SETUP_STRIP): New.
	(AT_SETUP): Use it to shorten the test titles: remove %defines, %language
	and %skeleton whose arguments suffice.
	* tests/synclines.at: Use more precise AT_SETUP.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	c++: comment changes
	* data/c++.m4, data/glr.cc, data/lalr1.cc: Convert some /* ... */
	comments to //.

2012-12-23  Akim Demaille  <akim@lrde.epita.fr>

	c++: use // comments in the output
	This is mostly used for the license header, the synclines, and the
	generated tables:

	-  /* STOS_[STATE-NUM] -- The (internal number of the) accessing
	-     symbol of state STATE-NUM.    */
	+  // STOS_[STATE-NUM] -- The (internal number of the) accessing
	+  // symbol of state STATE-NUM.
	   static const unsigned char yystos_[];

	* data/c.m4: Comment changes.
	(b4_comment_): Expand the text argument.
	Before this change, we were actually formatting M4 code as a
	C comment, and then expand it.
	(b4_comment): Fix the closing of comments: there is no reason to
	add the (line) prefix before the closing "*/".
	* data/c++.m4 (b4_comment): New.

2012-12-21  Akim Demaille  <akim@lrde.epita.fr>

	maint: disable sc_prohibit_test_backticks
	* cfg.mk: here.
	And fix typos.
	Reported by Stefano Lattarini.

2012-12-21  Akim Demaille  <akim@lrde.epita.fr>

	maint: more syntax-checks
	* cfg.mk (sc_prohibit_tab_based_indentation, sc_prohibit_test_backticks)
	(sc_preprocessor_indentation, sc_space_before_open_paren): New,
	stolen from Coreutils (2e9f5ca4ebbbdb6a9fa2dd3d5add3f7720a172d7).

2012-12-21  Akim Demaille  <akim@lrde.epita.fr>

	debug: no longer generate tabs
	* src/closure.c, src/derives.c, src/nullable.c, tests/sets.at: Use
	spaces.

2012-12-21  Akim Demaille  <akim@lrde.epita.fr>

	style changes: run cppi
	Run it in src/ for a start.

	* src/AnnotationList.h, src/InadequacyList.h, src/Sbitset.h,
	* src/closure.c, src/complain.h, src/flex-scanner.h, src/getargs.h,
	* src/gram.h, src/graphviz.h, src/ielr.h, src/location.h,
	* src/muscle-tab.h, src/named-ref.h, src/relation.h, src/scan-code.h,
	* src/state.h, src/symtab.h, src/system.h, src/uniqstr.h:
	Reindent preprocessor directives.

2012-12-21  Akim Demaille  <akim@lrde.epita.fr>

	style changes: untabify
	* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl, m4/flex.m4,
	* tests/glr-regression.at, tests/torture.at: here.

2012-12-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: be robust to set -e.
	* examples/test (run): here.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	variants: prohibit simple copies
	The "variant" structure provides a means to store, in a typeless way,
	C++ objects.  Manipulating it without provide the type of the stored
	content is doomed to failure.  So provide a means to copy in a type
	safe way, and prohibit typeless assignments.

	* data/c++.m4 (symbol_type::move): New.
	* data/lalr1.cc: Use it.
	* data/variant.hh (b4_variant_define): Provide variant::copy.
	Let variant::operator= abort.
	We cannot undefine it, yet, as it is still uses by the implicit
	assigment in symbols, which must also be disabled.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	variant: more assertions
	Equip variants with more checking code.  Provide a means to request
	includes.

	* data/variant.hh (b4_variant_includes): New.
	* data/lalr1.cc: Use it.
	* data/variant.hh (variant::built): Define at the end, as a private member.
	(variant::tname): New.
	Somewhat makes "built" useless, but let's keep both for a start, in
	case using "typeinfo" is considered unacceptable in some environments.
	Fix some formatting issues.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: fix output directives
	* data/lalr1.cc, data/location.cc, data/glr.cc: Use b4_output_begin.
	Broken during a merge.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: style changes
	* data/yacc.c (b4_lex_param): Provide arguments with a name.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: simplifying the handling of parse/lex params
	The fact that glr.cc uses glr.c makes the handling of parse params
	more complex, as the parser object of glr.cc must be passed to the
	parse function of glr.c.  Yet not all the functions need access to
	the parser object.

	* data/glr.cc (b4_parse_param_wrap): New.
	Use them.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	glr: rename lex params
	* data/glr.c (b4_lex_param): Rename as...
	(b4_lex_formals): this, for consistency.
	Provide arguments a name.
	(LEX): Adjust.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: move function declaration earlier
	* data/glr.c (yypstack, yypdumpstack): Declare earlier, to make
	it easier to call them from other functions.

2012-12-19  Akim Demaille  <akim@lrde.epita.fr>

	%define variables: backward compatibility
	* src/muscle-tab.c (muscle_percent_variable_update): Accept lex_symbol.
	Reported by Roland Levillain.

2012-12-16  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: improve -fcaret for list of accepted values
	Instead of

	  input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
	   %define api.push_pull "neither"
	           ^^^^^^^^^^^^^
	  input.y:1.9-21:     accepted value: 'pull'
	   %define api.push_pull "neither"
	           ^^^^^^^^^^^^^
	  input.y:1.9-21:     accepted value: 'push'
	   %define api.push_pull "neither"
	           ^^^^^^^^^^^^^
	  input.y:1.9-21:     accepted value: 'both'
	   %define api.push_pull "neither"
	           ^^^^^^^^^^^^^

	report

	  input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
	   %define api.push_pull "neither"
	           ^^^^^^^^^^^^^
	  input.y:1.9-21:     accepted value: 'pull'
	  input.y:1.9-21:     accepted value: 'push'
	  input.y:1.9-21:     accepted value: 'both'

	* src/complain.h (no_caret): New.
	* src/complain.c (error_message): Use it.
	* src/muscle-tab.c (muscle_percent_define_check_values): Use it.
	* src/scan-skel.l (flag): Ditto.
	* tests/input.at: Adjust and check.

2012-12-16  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: simplify the handling of default api.location.type
	* data/bison.m4 (b4_bison_locations_if): New.
	* data/glr.cc, data/lalr1.cc: Use it.

2012-12-16  Akim Demaille  <akim@lrde.epita.fr>

	tests: address syntax-check failures
	* cfg.mk: Ignore failures in timevar (uses GCC style configuration,
	not gnulib's).
	* doc/local.mk: Space changes.
	* lib/main.c, tests/calc.at: Remove useless HAVE_ tests.

2012-12-15  Akim Demaille  <akim@lrde.epita.fr>

	remove duplicate definitions
	* src/system.h: here, inherited from a merge.

2012-12-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: style changes
	* tests/glr-regression.at: Issue yyerror before yylex.

2012-12-15  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix dependencies
	* doc/local.mk: here.

2012-12-14  Akim Demaille  <akim@lrde.epita.fr>

	doc: style fixes
	* doc/bison.texi: Add a couple of missing @var and @code.

2012-12-14  Theophile Ranquet  <ranquet@lrde.epita.fr>

	doc: fix build dependencies
	Suggested by Nick Bowler
	<http://lists.gnu.org/archive/html/bug-automake/2012-12/msg00001.html>

	* doc/local.mk: Avoid overwriting Automake's rules.

2012-12-14  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'origin/maint'
	* origin/maint:
	  maint: credit Wojciech Polak
	  maint: post-release administrivia
	  version 2.7
	  yacc.c: scope reduction
	  tests: C90 compliance
	  fix C90 compliance
	  glr.c: scope reduction
	  gnulib: update

2012-12-14  Theophile Ranquet  <ranquet@lrde.epita.fr>

	symtab: add missing initializations
	* src/symtab.c (semantic_type_new): Here.

2012-12-14  Theophile Ranquet  <ranquet@lrde.epita.fr>

	symtab: fix some leaks
	* src/symlist.c (symbol_list_free): Deep free it.
	* src/symtab.c (symbols_free, semantic_types_sorted): Free it too.
	(symbols_do, sorted): Call by address.

2012-12-14  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: remove use of PARSE_PARAM
	* tests/header.at: Here.

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

	maint: credit Wojciech Polak
	* NEWS, THANKS: He is the author of XML support (including XSLTs).

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

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

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

	version 2.7
	* NEWS: Record release date.

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

	yacc.c: scope reduction
	* data/yacc.c (yysyntax_error): here.

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

	tests: C90 compliance
	* tests/synclines.at: here.

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

	fix C90 compliance
	* data/glr.c, src/graphviz.h, src/ielr.c, src/scan-gram.l,
	* src/system.h, tests/actions.at, tests/glr-regression.at: Do not
	use // comments.
	Do not introduce variables after statements.
	Provide "main" with a return value.

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

	glr.c: scope reduction
	* data/glr.c (yyreportSyntaxError): Reduce the scope of yysize1 (now
	yysz).

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

	gnulib: update

2012-12-10  Theophile Ranquet  <ranquet@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  news: prepare for forthcoming release
	  doc: explain how mid-rule actions are translated
	  error: use better locations for unused midrule values
	  doc: various minor improvements and fixes
	  tests: ignore more useless compiler warnings
	  tests: be robust to C being compiled with a C++11 compiler
	  build: beware of Clang++ not supporting POSIXLY_CORRECT
	  maint: post-release administrivia
	  version 2.6.90
	  build: fix syntax-check error.
	  cpp: simplify the Flex version checking macro
	  news: improve the carets example and fix a typo
	  cpp: improve the Flex version checking macro
	  carets: improve the code
	  maint: update news
	  build: keep -Wmissing-declarations and -Wmissing-prototypes for modern GCCs
	  build: drop -Wcast-qual
	  gnulib: update

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	news: prepare for forthcoming release
	* NEWS: Fill paragraph.
	Reorder.
	Update examples.
	Remove line for 2.6.90.

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: explain how mid-rule actions are translated
	* doc/bison.texi (Actions in Mid-Rule): Mention and use named references.
	Split into three subsections, among which...
	(Mid-Rule Action Translation): this new section.

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	error: use better locations for unused midrule values
	On

	  %%
	  exp: {;} {$$;} { $$ = $1; }

	instead of reporting (with -fcaret -Wmidrule-value)

	  midrule.y:2.6-8: warning: unset value: $$ [-Wmidrule-values]
	   exp: {;} {$$;} { $$ = $1; }
	        ^^^
	  midrule.y:2.6-27: warning: unused value: $2 [-Wmidrule-values]
	   exp: {;} {$$;} { $$ = $1; }
	        ^^^^^^^^^^^^^^^^^^^^^^

	report

	  midrule.y:2.6-8: warning: unset value: $$
	   exp: {;} {$$;} { $$ = $1; }
	        ^^^
	  midrule.y:2.10-14: warning: unused value: $2
	   exp: {;} {$$;} { $$ = $1; }
	            ^^^^^

	* src/reader.c (grammar_rule_check): When warning about the value of a
	midrule action, use the location of the midrule action instead of the
	location of the rule.
	the location of the part of the rule.
	* tests/actions.at (Default %printer and %destructor for mid-rule values):
	Adjust expectations
	* tests/input.at (Unused values with default %destructor): Ditto.
	(AT_CHECK_UNUSED_VALUES): Ditto.
	And use -fcaret.

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	doc: various minor improvements and fixes
	* doc/figs/example.dot, doc/figs/example.y: New.
	* doc/bison.texi: Prefer "token" to TOKEN.
	Use @group where appropriate.
	Adjust with style changes in the output (State 0, not state 0).
	Fix some @ref that were missing the third argument.
	Fix some incorrect line numbers.
	Use "nonterminal", not "non-terminal".
	Fix overfull and underfull TeX hboxes.
	Put the comments in the index.
	Remove duplicate index entries.
	Fuse glossary entries where appropriate.
	(Understanding): Improve the continuity between sections.
	Use example.dot to show the whole graph.
	* doc/Makefile.am: Adjust.

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	tests: ignore more useless compiler warnings
	* tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore complains about
	using c++ to compile C.

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	tests: be robust to C being compiled with a C++11 compiler
	* tests/glr-regression.at: Use YY_NULL instead of NULL.
	Comment changes.

2012-12-09  Akim Demaille  <akim@lrde.epita.fr>

	build: beware of Clang++ not supporting POSIXLY_CORRECT
	* m4/c-working.m4 (BISON_LANG_COMPILER_POSIXLY_CORRECT): New.
	(BISON_C_COMPILER_POSIXLY_CORRECT): Use it.
	For consistency with C++, also define BISON_C_WORKS.
	* m4/cxx.m4 (BISON_CXX_COMPILER_POSIXLY_CORRECT): New.
	* configure.ac: Use it.
	* tests/atlocal.in: Get its result.
	Propagate properly CXX values when used to compile C.
	When POSIXLY_CORRECT, adjust BISON_C_WORKS and BISON_CXX_WORKS.
	* tests/local.at (AT_COMPILE): Use BISON_C_WORKS.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6.90
	* NEWS: Record release date.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	build: fix syntax-check error.
	* cfg.mk: Exclude names-refs, it includes a "double" if (end of first
	line, first of second line below).

	test.y:43.12-44.59:  symbol not found in production: if
	 if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
	            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>

	cpp: simplify the Flex version checking macro
	* src/flex-scanner,h (FLEX_VERSION): Consider YY_FLEX_SUBMINOR_VERSION
	defined.

2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>

	news: improve the carets example and fix a typo
	* NEWS: Here.

2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>

	cpp: improve the Flex version checking macro
	* src/flex-scanner.h (FLEX_VERSION): Here.

2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>

	carets: improve the code
	* src/location.c: Remove duplicate documentations.
	(caret_info): Stylistic change.
	(location_caret): Many reworks.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	maint: update news
	* NEWS: There is no 2.6.6, remove its stub.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	build: keep -Wmissing-declarations and -Wmissing-prototypes for modern GCCs
	Fixes a -Werror failure of xalloc.h used in src.
	From Eric Blake.
	http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00006.html

	* configure.ac: Check whether GCC pragma diagnostic push/pop works.
	Enable these warnings for bison if it does.
	Enable these warnings for the test suite anyway.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	build: drop -Wcast-qual
	Suggested by Jim Meyering.
	http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00017.html
	* configure.ac (warn_common): Remove -Wcast-qual.

2012-12-07  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-12-06  Theophile Ranquet  <ranquet@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  misc: pacify the Tiny C Compiler
	  cpp: make the check of Flex version portable
	  misc: require getline
	  c++: support wide strings for file names
	  doc: document carets
	  tests: enhance existing tests with carets
	  errors: show carets
	  getargs: add support for --flags/-f

2012-12-06  Theophile Ranquet  <ranquet@lrde.epita.fr>

	misc: pacify the Tiny C Compiler
	* src/graphviz.c (conclude_red): Remove a useless return.

2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>

	cpp: make the check of Flex version portable
	This was problematic with tcc 0.9.25

	* src/flex-scanner.h (FLEX_VERSION_GT): Rewrite and rename as...
	(FLEX_VERSION): This.

2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>

	misc: require getline
	* bootstrap.conf: Here, used by src/location.c.
	* src/getargs.c (long_options): Rename --flags to --feature.

2012-12-05  Akim Demaille  <akim@lrde.epita.fr>

	c++: support wide strings for file names
	Reported by Mark Boyall.
	http://lists.gnu.org/archive/html/help-bison/2011-08/msg00002.html

	* data/location.cc (operator<<): Be templated on the type of
	output stream.
	* tests/headers.at (Several parsers): Adjust.

2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>

	doc: document carets
	* NEWS: Announce it.
	* doc/bison.texi (Bison Options):  Here.

2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: enhance existing tests with carets
	* tests/actions.at: Unset value.
	* tests/conflicts.at: Rule useless due to conflicts.
	* tests/input.at: Missing terminator, unexpected end of file, command line
	redefinition of variable.
	* tests/named-refs.at: Many errors.
	* tests/reduce.at: Useless nonterminals and rules.
	* tests/regression.at: Large token.

2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: show carets
	* src/locations.c (caret_info): New, persistant information useful
	for...
	(location_caret): New, print a caret.
	(cleanup_caret): Release caret_info cleanly, call it...
	* src/main.c (main): Here.
	* src/complain.c (error_message): Call location_caret here.

2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>

	getargs: add support for --feature/-f
	Introduce -fdiagnostics-show-caret

	* src/getargs.c (feature_flag): New global.
	* src/getargs.h (feature): New enum.

2012-12-05  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  getargs: don't label --language/-l as experimental
	  getargs: fix the locations of command-line input
	  errors: indent missing action code semicolon warning

2012-12-04  Theophile Ranquet  <ranquet@lrde.epita.fr>

	getargs: don't label --language/-l as experimental
	* NEWS: Announce it.
	* doc/bison.texi, src/getargs.c (usage): Here.

2012-12-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: minor improvements
	* tests/calc.at (AT_CHECK_SPACES): To speed up, accept several files
	at once, and factor some calls.

2012-12-03  Theophile Ranquet  <ranquet@lrde.epita.fr>

	getargs: fix the locations of command-line input
	* src/getargs.c (command_line_location): Here.
	* tests/input.at: Adjust.

2012-12-03  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: indent missing action code semicolon warning
	Also, remove a duplicate #define.

	* src/scan-code.l (SC_RULE_ACTION): Here.
	* tests/actions.at: Adjust.

2012-12-03  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  parser: accept #line NUM
	  m4: use a safer pattern to enable/disable output
	  tests: beware of gnulib's need for config.h
	  gnulib: update
	  yacc.c, glr.c: check and fix the display of locations
	  formatting changes
	  glr.c: remove stray macro

2012-12-03  Akim Demaille  <akim@lrde.epita.fr>

	parser: accept #line NUM
	* src/scan-gram.l (scanner): Accept '#line NUM'.
	(handle_syncline): Adjust to the possible missing file name.

2012-12-03  Akim Demaille  <akim@lrde.epita.fr>

	m4: use a safer pattern to enable/disable output
	Work on some other areas of Bison revealed that some macros expanded
	to be expanded only once were actually expanded several times.  This
	was due to the fact that changecom was not properly restored each
	time, and macro names appearing in comments were then expanded.

	Introduce begin/end macros which are easier to match that
	changecom()/changecom(#).

	* data/bison.m4 (b4_output_begin, b4_output_end): New.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
	* data/location.cc, data/stack.hh, data/yacc.c:
	Use them.

2012-12-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware of gnulib's need for config.h
	* tests/skeletons.at, tests/torture.at: Be sure to include config.h
	where appropriate.

2012-11-30  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update
	* lib/yyerror.c: Include config.h since the following stdio.h might be
	from gnulib.

2012-11-30  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c, glr.c: check and fix the display of locations
	In some case, negative column number could be displayed.
	Make YY_LOCATION_PRINT similar to bison's own implementation of
	locations.  Since the macro is getting fat, make it a static
	function.
	Reported by Jonathan Fabrizio.

	* data/c.m4 (yy_location_print_define): Improve the implementation,
	and generate the yy_location_print_ function.
	Adjust YY_LOCATION_PRINT.
	* tests/actions.at (Location Print): New tests.

2012-11-30  Akim Demaille  <akim@lrde.epita.fr>

	formatting changes
	* data/c.m4: Fix comments, put macros in a more natural order.
	Space changes (from M-x whitespace-cleanup).
	* src/location.c: Fix spaces.
	* tests/actions.at: Space changes.

2012-11-30  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: remove stray macro
	* data/glr.c (YYOPTIONAL_LOC): Remove, unused since commit
	769a8ef9bcb5e14d0be9d0869f5dca20ab093930.

2012-11-29  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  doc: minor fixes
	  doc: improve the index
	  doc: introduce api.pure full, rearrange some examples
	  yacc.c: support "%define api.pure full"
	  local.at: improvements

2012-11-29  Akim Demaille  <akim@lrde.epita.fr>

	doc: minor fixes
	* doc/bison.texi: Use stderr for error messages.
	Meta-variables are usually spelled in lower case.
	Use @code for function names.

2012-11-29  Akim Demaille  <akim@lrde.epita.fr>

	doc: improve the index
	* doc/bison.texi: Fix uses of "deffn" so that the arguments of the
	directives do not show in the index.
	Remove a duplicate entry for api.pure.

2012-11-29  Theophile Ranquet  <ranquet@lrde.epita.fr>

	doc: introduce api.pure full, rearrange some examples
	* NEWS: Add entry.
	* doc/bison.texi (%define Summary): Show the old Yacc behaviour.
	(Parser Function): Move parse-param examples here.
	(Pure Calling): Remove parse-param examples.
	(Error Reporting): Don't show the old behavior, stick to 'full'.

2012-11-29  Theophile Ranquet  <ranquet@lrde.epita.fr>

	yacc.c: support "%define api.pure full"
	This makes the interface for yyerror() pure without the need for a spurious
	parse_param.

	* data/yacc.c (b4_pure_if, b4_pure_flag): New definition, accept three states.
	(b4_yacc_pure_if): Rename as...
	(b4_yyerror_arg_loc_if): This, and use b4_pure_flag.
	* tests/actions.at (%define api.pure): Modernize.
	* test/calc.at (Simple LALR Calculator): Modernize.
	* tests/local.at (AT_YYERROR_ARG_LOC_IF): Adjust.

2012-11-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: check variants without locations
	* tests/c++.at (Variants): Support non-use of locations, and
	check its support.

2012-11-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	local.at: improvements
	* tests/local.at (AT_YYERROR_FORMALS): Make llocp const.
	(AT_PURE_AND_LOC_IF, AT_GLR_OR_PARAM_IF): Remove, expand...
	(AT_YYERROR_ARG_LOC_IF): Here, and use m4_join for readability.

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

	tests: use -fno-strict-aliasing with variants
	Reported by Théophile Ranquet.

	* configure.ac (NO_STRICT_ALIAS_CXXFLAGS): New.
	* tests/c++.at, tests/atlocal.in, examples/local.mk: Use it.

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

	tests: remove leftover
	* tests/atlocal.in: Remove duplicate handling of --compile-c-with-cxx.

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

	doc: use %precedence instead of nonassoc when associativity is not wanted
	* doc/bison.texi: here.
	Formatting changes in some grammars.
	Fix a %prec into %precedence.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  yacc.c: always initialize yylloc
	  scanner: issue a single error for groups of invalid characters
	  tests: formatting changes
	  doc: one of the fixes for an ambiguous grammar was ambiguous too
	  doc: fix the dangling else with precedence directives
	  doc: prefer "token" to TOKEN
	  doc: formatting changes
	  scanner: use explicit "ignore" statements

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

	Merge remote-tracking branch 'origin/branch-2.6' into maint
	* origin/branch-2.6:
	  yacc.c: always initialize yylloc
	  doc: one of the fixes for an ambiguous grammar was ambiguous too
	  doc: fix the dangling else with precedence directives
	  doc: prefer "token" to TOKEN
	  doc: formatting changes

2012-11-23  Theophile Ranquet  <ranquet@lrde.epita.fr>

	yacc.c: always initialize yylloc
	The initial location might be used if the parser starts by an empty
	reduction, so really ensure proper initialization of the initial
	location.  The previous approach fails for PostgreSQL, which uses
	Reported by Peter Eisentraut.
	http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00023.html
	With help from Théophile Ranquet.

	* data/yacc.c (b4_declare_scanner_communication_variables): Be sure
	to initialize yylloc, even when its structure is unknown.
	(yyparse): Simplify the call to b4_dollar_pushdef.
	* tests/actions.at (Initial location): Check of similar pattern
	as in the case of PostgreSQL.

2012-11-23  Akim Demaille  <akim@lrde.epita.fr>

	scanner: issue a single error for groups of invalid characters
	* src/scan-gram.l: Scan groups of invalid characters together.
	* tests/input.at, tests/named-refs.at: Adjust.

2012-11-23  Akim Demaille  <akim@lrde.epita.fr>

	tests: formatting changes
	* tests/named-refs.at: Here.

2012-11-23  Akim Demaille  <akim@lrde.epita.fr>

	doc: one of the fixes for an ambiguous grammar was ambiguous too
	Reported by Аскар Сафин.
	http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00024.html

	* doc/bison.texi (Reduce/Reduce): Fix the resulting ambiguity using
	precedence/associativity directives.

2012-11-22  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix the dangling else with precedence directives
	* doc/bison.texi (Non Operators): New node.
	(Shift/Reduce): Point to it.
	Don't promote "%expect n" too much.

2012-11-22  Akim Demaille  <akim@lrde.epita.fr>

	doc: prefer "token" to TOKEN
	This is more readable in short examples.

	* doc/bison.texi (Shift/Reduce): here.
	Make "win" and "lose" action more alike.

2012-11-22  Akim Demaille  <akim@lrde.epita.fr>

	doc: formatting changes
	* doc/bison.texi: Use @group.

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

	scanner: use explicit "ignore" statements
	* src/scan-gram.l: here.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  tests: close files in glr-regression
	  xml: match DOT output and xml2dot.xsl processing
	  xml: factor xslt space template
	  graph: fix a memory leak
	  xml: documentation
	  output: capitalize State

2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: close files in glr-regression
	* tests/glr-regression.at: Here.

2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>

	xml: match DOT output and xml2dot.xsl processing
	Make the DOT produced by XSLT processing equivalent to the one made with the
	--graph option.

	* data/xslt/xml2dot.xsl: Stylistic changes, and add support for reductions.
	* doc/bison.texi (Xml): Update.
	* src/graphviz.c (conclude_red): Minor stylistic changes to DOT internals.
	(output_red): Swap enabled and disabled reductions output, for coherence
	with XSLT output.
	* src/print_graph.c (print_core): Minor stylistic change to States' output.
	(print_actions): Swap order of output for reductions and transitions.
	* tests/local.at (AT_BISON_CHECK_XML): Ignore differences in order.
	* tests/output.at: Adjust to changes in DOT internals.

2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>

	xml: factor xslt space template
	* data/xslt/bison.xsl (space): New, import from...
	* data/xslt/xml2text.xsl: Here.

2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>

	graph: fix a memory leak
	* src/graphviz.c (output_red): Here.

2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>

	xml: documentation
	The XML output combined with the XSL Transformations provided in data/ are
	incredibly useful, they should be documented.

	* doc/bison.texi (Xml): New node.

2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>

	output: capitalize State
	* src/print.c (print_state): Here.
	* tests/conflicts.at, tests/existing.at, tests/local.at, tests/reduce.at,
	tests/regression.at, tests/sets.at: Adjust.

2012-11-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix syntax-check errors
	Reported by Théophile Ranquet.

	* tests/c++.at: Use AT_PARSER_CHECK.
	Avoid using "strcmp", which triggers an error from syntax-check.

2012-11-12  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: address syntax-check errors.
	  tests: use valgrind where appropriate
	  tests: use valgrind where appropriate
	  tests: don't expect $EGREP to support -w
	  tests: more possible error compiler messages for "#error"

2012-11-12  Akim Demaille  <akim@lrde.epita.fr>

	maint: address syntax-check errors.
	* cfg.mk: Ignore the "error" call in tests/c++.at, it is not to be
	translated.
	* doc/bison.texi: Fix incorrect @pxref use.
	* po/POTFILES.in: Add missing file.
	* src/print_graph.c: Remove useless include.

2012-11-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: use valgrind where appropriate
	Reported by Théophile Ranquet.

	* cfg.mk (sc_at_parser_check): New.
	* tests/c++.at: Fix use of AT_CHECK vs. AT_PARSER_CHECK.

2012-11-12  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/branch-2.6' into maint
	* origin/branch-2.6:
	  tests: use valgrind where appropriate
	  tests: don't expect $EGREP to support -w

2012-11-10  Akim Demaille  <akim@lrde.epita.fr>

	tests: use valgrind where appropriate
	Reported by Théophile Ranquet.

	* tests/glr-regression.at: Rewrite some test cases so that AT_PARSER_CHECK,
	which runs valgrind, is exposed with the parser, not with "echo".
	* tests/local.at, tests/regression.at, tests/headers.at:
	Use AT_PARSER_CHECK for generated parsers.

2012-11-08  Akim Demaille  <akim@lrde.epita.fr>

	tests: don't expect $EGREP to support -w
	Does not work on Solaris 10.  Reported by Dennis Clarke.
	http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00009.html
	* tests/headers.at (Several parsers): Use Perl instead.
	While at it, run it only once, on all the generated headers.
	Adjust to YY_NULL be defined in position.hh.

2012-11-08  Akim Demaille  <akim@lrde.epita.fr>

	tests: more possible error compiler messages for "#error"
	* tests/synclines.at (AT_SYNCLINES_COMPILE): Adjust for Clang.
	Verified with GCC 4.0, 4.2 to 4.8, and Clang 2.9, 3.2: none skip.

2012-11-08  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-11-08  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* origin/maint:
	  regen
	  maint: post-release administrivia
	  version 2.6.5
	  regen
	  tests: syntax-check
	  tests: beware of compilers that do not support POSIXLY_CORRECT
	  gnulib: update

2012-11-08  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-11-08  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'branch-2.6' into maint
	* origin/branch-2.6:
	  maint: post-release administrivia
	  version 2.6.5
	  regen
	  tests: syntax-check
	  tests: beware of compilers that do not support POSIXLY_CORRECT
	  gnulib: update

2012-11-07  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-11-07  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6.5
	* NEWS: Record release date.

2012-11-07  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-11-07  Akim Demaille  <akim@lrde.epita.fr>

	tests: syntax-check
	* tests/actions.at: Fix typo.

2012-11-07  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware of compilers that do not support POSIXLY_CORRECT
	Running "maintainer-release-check" on OS X with Clang 2.9 fails,
	because "clang-mp-2.9 -o test -g test.c" launches "/usr/bin/dsymutil
	test -o test.dSYM" which fails with "error: unable to open executable
	'-o'".

	* m4/c-working.m4 (BISON_CHECK_WITH_POSIXLY_CORRECT)
	(BISON_C_COMPILER_POSIXLY_CORRECT): New.
	* configure.ac: Use the latter.
	* tests/atlocal.in (POSIXLY_CORRECT_IS_EXPORTED): New.
	* tests/local.at (AT_BISON_CHECK_WARNINGS_): Use it instead of computing its
	value each time.
	(AT_QUELL_VALGRIND): Skip tests that cannot work because of compilers
	that do not support POSIXLY_CORRECT.

2012-11-07  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint: (24 commits)
	  tests: calc: modernize the use of locations
	  tests: remove useless location initializations
	  lalr1.cc: always initialize yylval.
	  tests: check that C and C++ objects can be linked together.
	  yacc.c: also disable -Wuninitialized.
	  glr.cc, yacc.c: initialize yylloc properly
	  yacc.c, glr.c: a better YY_LOCATION_PRINT
	  yacc.c: simplify initialization
	  doc: formatting changes
	  c++: fix position operator signatures
	  tests: remove useless location initialization.
	  tests: fix locations in C
	  tests: handle %parse-param in the generated yyerror
	  tests: simplifications
	  grammars: fix display of nul character in error message
	  tests: sort
	  tests: cosmetic changes
	  comment changes
	  autoconf: update
	  gnulib: update
	  ...

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'branch-2.6' into maint
	* origin/branch-2.6: (24 commits)
	  tests: calc: modernize the use of locations
	  tests: remove useless location initializations
	  lalr1.cc: always initialize yylval.
	  tests: check that C and C++ objects can be linked together.
	  yacc.c: also disable -Wuninitialized.
	  glr.cc, yacc.c: initialize yylloc properly
	  yacc.c, glr.c: a better YY_LOCATION_PRINT
	  yacc.c: simplify initialization
	  doc: formatting changes
	  c++: fix position operator signatures
	  tests: remove useless location initialization.
	  tests: fix locations in C
	  tests: handle %parse-param in the generated yyerror
	  tests: simplifications
	  grammars: fix display of nul character in error message
	  tests: sort
	  tests: cosmetic changes
	  comment changes
	  autoconf: update
	  gnulib: update
	  ...

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	tests: calc: modernize the use of locations
	* tests/calc.at: Don't initialize the location, let the parser
	do it.
	Use a $printer.
	Change some testing input to be easier to distinguish (instead of always
	"0 0" for instance).

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	tests: remove useless location initializations
	* tests/actions.at, tests/calc.at: here.

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: always initialize yylval.
	* data/lalr1.cc: here.

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	tests: check that C and C++ objects can be linked together.
	* tests/local.at (AT_SKIP_IF_CANNOT_LINK_C_AND_CXX): New.
	* tests/headers.at (Several parsers): Use it.

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: also disable -Wuninitialized.
	* data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): For some versions
	of GCC, -Wmaybe-uninitialized alone does not suffice.

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc, yacc.c: initialize yylloc properly
	There are several issues to address here.  One is that yylloc should
	be initialized when possible.  Another is that the push parser needs
	to update yypushed_loc when the user modified it.  And if the parser
	starts by a reduction of an empty, it uses the first location on the
	stack, which, therefore, must also be initialized to this initial
	location.

	This is getting complex, especially since because initializing a
	global (impure interface) is different from initializing a local
	variable.  To simplify, the local yylloc is not initialized during its
	definition.

	* data/c.m4 (b4_yyloc_default_define): Replace by...
	(b4_yyloc_default): this.
	Adjust dependencies.
	* data/glr.cc: Initialize yylloc.
	* data/yacc.c (b4_declare_scanner_communication_variables):
	Initialize yylloc during its definition.
	Don't define yyloc_default.
	(yypush_parse): The location formal is not const, as we might
	initialize it.
	(yyparse): Define yyloc_default.
	Use it before running the user initial action.
	Possibly update the first location on the stack, and the pushed
	location after the user initial action.
	* tests/actions.at (Initial locations): Check that the initial
	location is correct.

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c, glr.c: a better YY_LOCATION_PRINT
	* data/c.m4 (b4_yy_location_print_define): New.
	Now issues "short" locations, e.g., "1.1" instead of "1.1-1.1".
	Was initially a function, but then we face "static but unused"
	warnings.
	Simpler as a macro.
	* tests/local.at, data/glr.c, data/yacc.c: Use it instead of duplicating.
	* tests/actions.at: Adjust expectations.

2012-11-06  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: simplify initialization
	* data/yacc.c: Fuse the initializations of yyssp, yyss and the like.
	Remove an obsolete comment: we do initialize these initial stack
	members (in some cases).

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

	doc: formatting changes
	* doc/bison.texi: In a pointer type.

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

	c++: fix position operator signatures
	* data/location.cc (operator+=, operator-=): Remove const from return
	type.

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

	tests: remove useless location initialization.
	* tests/glr-regression.at: here.
	glr.c does initialize yylloc.

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

	tests: fix locations in C
	* tests/local.at (AT_YYERROR_DEFINE): Don't display the end of the location
	if it is not after its beginning.
	* tests/actions.at, tests/cxx-type.at: Adjust the expected output.

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

	tests: handle %parse-param in the generated yyerror
	* tests/local.at (AT_PARSE_PARAMS): New.
	(AT_YYERROR_FORMALS, AT_YYERROR_DEFINE): Use it to add the parse-param
	to yyerror.
	* tests/calc.at, tests/regression.at: Use AT_YYERROR_DEFINE and
	AT_YYERROR_DECLARE, now that they handle properly the parse-params.
	Be sure to let AT_BISON_OPTION_PUSHDEFS now what parse-params are used.

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

	tests: simplifications
	* tests/actions.at (Exotic Dollars): Formatting changes.
	Use AT_FULL_COMPILE.
	(AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove useless initialization of @$.

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

	lalr1.cc: rename lex_symbol as api.token.constructor
	* data/bison.m4 (b4_lex_symbol_if): Rename as...
	(b4_token_ctor_if): this.
	Depend upon api.token.constructor.
	* data/c++.m4, data/lalr1.cc: Adjust.
	* doc/bison.texi: Fix all the occurrences of lex_symbol.
	* etc/bench.pl.in: Adjust.
	* examples/variant.yy: Likewise.

	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	Handle AT_TOKEN_CTOR_IF.
	* tests/c++.at: Adjust to using api.token.constructor and AT_TOKEN_CTOR_IF.
	Simplify the test of both build call styles.
	(AT_CHECK_VARIANTS): Rename as...
	(AT_TEST): this.
	And undef when done.

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

	examples: simplify/improve
	* examples/variant.yy: Put yylex in yy::, and simplify accordingly.
	Minor formatting changes.

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

	bison.m4: support b4_*_if macros whose name differ from their variable
	* data/bison.m4 (b4_percent_define_if_define_, b4_percent_define_if_define):
	Accept a second argument.

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

	grammars: fix display of nul character in error message
	Reported by Marc Mendiola.
	http://lists.gnu.org/archive/html/help-bison/2012-10/msg00017.html

	* gnulib: Update to get quote_mem.
	* src/scan-gram.l: Use it.
	* tests/input.at (Invalid inputs): Additional checks.
	* tests/named-refs.at: Likewise.

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

	tests: sort
	* tests/regression.at (Invalid inputs, Invalid inputs with {}): Move to...
	* tests/input.at: here, for consistency.

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

	tests: cosmetic changes
	* tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): Improve the
	displayed title.

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

	comment changes
	* data/lalr1.cc: here.

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

	autoconf: update
	There are comment changes only in the files we use.

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

	gnulib: update

2012-10-28  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-10-28  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: initialize yylval and yylloc.
	When generating a pure push parser, the initialization of yylval and
	yylloc may not be visible to the compiler.  With warnings enabled, GCC
	4.3.6, 4.4.7, 4.5.4, and 4.6.3 report uninitialized uses of
	yylval/yylloc.  Using local pragmas to disable these warnings is not
	supported before 4.6, and 4.6 does not support it properly.  So
	initialize yylval and yylloc at their definition.  Reported by Peter
	Simons.  See
	http://lists.gnu.org/archive/html/bison-patches/2012-10/msg00133.html

	* data/c.m4 (b4_yyloc_default_define): New.
	* data/yacc.c: Use it when locations are requested.
	(YYLVAL_INITIALIZE): Replace by...
	(YY_INITIAL_VALUE): this.
	(yyparse): Initialize yylloc and yylval.
	Therefore, remove the initialization of yylloc's field.
	* data/glr.c: Likewise.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	graphs: fix spacing refactoring
	* src/print_graph.c (print_lhs, print_core): Here.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: make deprecation tests more specific
	* tests/input.at (Deprecated directives): Here, don't generate unrelated errors
	or warnings.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: fix AT_BISON_CHECK_WARNINGS_ stderr rewriting
	* tests/input.at (Deprecated directives): Avoid spurious error.
	* tests/locat.at (AT_BISON_CHECK_WARNINGS): Adjust for recent changes.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	scan-skel.l: consider m4 notes as related to "complaint" errors
	* src/scan-skel.l (flag): Here.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	warnings: distinguish context information based on warning type
	* src/scan-code.l (show_sub_message, show_sub_messages): Take a new warnings
	argument.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	warnings: fix early exit of warnings treated as errors
	Treating warnings as errors caused Bison to exit earlier than needed, making it
	hide warnings that would have been printed had -Werror not been set.

	Also, fix a bug that caused some context information of errors to not be
	shown.

	* src/complain.c (complaint_issued): Rename as...
	(complaint_status): This, and change its type from boolean to
	* src/complain.h (err_status): This, new enumeration.
	* src/main.c (main): Adjust (only finish early if an actual complaint was
	risen, not a mere warning treated an error).
	* src/reader.c: Adjust.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	tests: reindent for legibility
	* tests/local.at (AT_BISON_CHECK_WARNINGS_): Here.

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	build: fix Texinfo compilation
	* doc/local.mk: fix dependencies.

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint: (46 commits)
	  doc: minor style change
	  maint: use gendocs's new -I option
	  regen
	  yacc.c: do not define location support when not using locations
	  maint: be compilable with GCC 4.0
	  tests: address a warning from GCC 4.4
	  tests: don't use options that Clang does not support
	  tests: restore the tests on -Werror
	  regen
	  parse-gram: update the Bison interface
	  fix comment
	  maint: post-release administrivia
	  version 2.6.4
	  regen
	  2.6.4: botched 2.6.3
	  maint: post-release administrivia
	  version 2.6.3
	  gnulib: update
	  tests: check %no-lines
	  NEWS: warnings with clang
	  ...

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'branch-2.6' into maint
	* origin/branch-2.6:
	  regen
	  yacc.c: do not define location support when not using locations
	  maint: be compilable with GCC 4.0
	  tests: address a warning from GCC 4.4
	  tests: don't use options that Clang does not support
	  tests: restore the tests on -Werror
	  regen
	  parse-gram: update the Bison interface
	  fix comment

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	doc: minor style change
	* doc/figs/example-reduce.txt: here.

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	maint: use gendocs's new -I option
	* gnulib: Update gendocs.
	* cfg.mk (gendocs_options_): New.

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: don't use _Pragma GCC diagnostic with 4.6
	Reported by Peter Simons.
	http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00033.html

	* data/yacc.c (b4_declare_scanner_communication_variables): 4.7
	seems fine though.

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: do not define location support when not using locations
	* data/yacc.c (YYLLOC_DEFAULT, YYRHSLOC): Don't define when not
	using locations.

2012-10-26  Akim Demaille  <akim@lrde.epita.fr>

	maint: be compilable with GCC 4.0
	The "shadows a global declaration" warning in GCC 4.0 was a bit
	annoying.  It does not like that a type name be used in a prototype of
	a function (not the implementation, just the declaration):

	  In file included from src/LR0.c:38:
	  src/reader.h:56: warning: declaration of 'named_ref' shadows a
	                            global declaration
	  src/named-ref.h:35: warning: shadowed declaration is here

	It does not like either when a global variable name is used in a
	prototype.  Flex 2.5.37 generates this prototype:

	  void gram_set_debug (int debug_flag  );

	* src/getargs.h, src/getargs.c (debug_flag): Rename as...
	(debug): this.
	Adjust dependencies.
	* src/reader.h: Don't use "named_ref" as a formal argument name.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	misc: document TESTSUITEFLAGS in README-hacking
	* README-hacking: Document -j and -k flags.

2012-10-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	deprecation: add tests
	* tests/input.at (Deprecated directives warn, Non-deprecated
	directives don't, Unput doesn't mess up locations): New tests.

2012-10-25  Akim Demaille  <akim@lrde.epita.fr>

	tests: address a warning from GCC 4.4
	236. torture.at:465: testing Exploding the Stack Size with Alloca ...
	../../../tests/torture.at:474: bison -o input.c input.y
	../../../tests/torture.at:474: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
	stderr:
	cc1: warnings being treated as errors
	input.y: In function 'main':
	input.y:60: error: 'status' may be used uninitialized in this function

	* tests/torture.at (AT_DATA_STACK_TORTURE): Initial status to avoid
	the previous error.

2012-10-25  Akim Demaille  <akim@lrde.epita.fr>

	tests: don't use options that Clang does not support
	* configure.ac (WARN_CFLAGS, WARN_CXXFLAGS): Do not include options
	that Clang does not support.

2012-10-25  Akim Demaille  <akim@lrde.epita.fr>

	tests: restore the tests on -Werror
	When run as /bin/sh, Bash sets the shell variable POSIXLY_CORRECT to
	y.  The test suite checks for the envvar POSIXLY_CORRECT to turn of
	some tests not supported in POSIX mode.  Restore these tests.

	Reported by the Hydra build farm, from Rob Vermaas.

	* tests/local.at (AT_BISON_CHECK_WARNINGS_): Check the envvar
	POSIXLY_CORRECT, not the shell variable.

2012-10-25  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-10-25  Akim Demaille  <akim@lrde.epita.fr>

	parse-gram: update the Bison interface
	* src/parse-gram.y (%pure-parser, %name-prefix): Replace with...
	(%define api.pure, %define api.prefix)
	* src/location.h, src/scan-gram.h: Adjust to api.prefix.

2012-10-25  Akim Demaille  <akim@lrde.epita.fr>

	fix comment
	* data/c.m4 (b4_YYDEBUG_define): here.

2012-10-24  Theophile Ranquet  <ranquet@lrde.epita.fr>

	regen

2012-10-24  Theophile Ranquet  <ranquet@lrde.epita.fr>

	deprecation: issue warnings in scanner
	* src/parse-gram.y: Move the handling of (three) deprecated constructs ...
	* src/scan-gram.l: ...Here, and issue warnings.
	(DEPRECATED): New.

2012-10-23  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'branch-2.6' into maint
	* origin/branch-2.6:
	  maint: post-release administrivia
	  version 2.6.4
	  regen
	  2.6.4: botched 2.6.3

2012-10-23  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-10-23  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6.4
	* NEWS: Record release date.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	2.6.4: botched 2.6.3
	* NEWS: here.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch '2.6.3' into maint
	* 2.6.3: (22 commits)
	  maint: post-release administrivia
	  version 2.6.3
	  gnulib: update
	  tests: check %no-lines
	  NEWS: warnings with clang
	  warnings: avoid warnings from clang
	  tests: no longer disable -O compiler options
	  yacc.c: initialize yylval in pure-parser mode
	  skeletons: style changes
	  tests: minor improvements
	  tests: use $PERL instead of perl
	  build: look for Perl in configure.
	  tests: fix sed portability issues
	  tests: diff -u is not portable
	  maint: word changes
	  lalr1.cc: fix test suite portability
	  maint: fix an erroneous include
	  tests: check that headers are self contained
	  doc: add missing documentation for --report
	  headers: move CPP guards into YY_*_INCLUDED to avoid collisions
	  ...

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6.3
	* NEWS: Record release date.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: check %no-lines
	* tests/synclines.at: here.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: warnings with clang
	* NEWS: here.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	warnings: avoid warnings from clang
	Fix the following warning

	  parse-gram.c:2078:14: error: equality comparison with extraneous parentheses
	                        [-Werror,-Wparentheses-equality]
	    if (((yyn) == (-91)))
	         ~~~~~~^~~~~~~~
	  parse-gram.c:2078:14: note: remove extraneous parentheses around the
	                        comparison to silence this warning
	    if (((yyn) == (-91)))
	        ~      ^       ~
	  parse-gram.c:2078:14: note: use '=' to turn this equality comparison into
	                        an assignment
	    if (((yyn) == (-91)))
	               ^~
	               =
	  1 error generated.

	and the following one:

	  input.cc:740:1: error: function declared 'noreturn' should not return
	                         [-Werror,-Winvalid-noreturn]
	  static void yyMemoryExhausted (yyGLRStack* yystackp)
	    __attribute__ ((__noreturn__));
	  static void
	  yyMemoryExhausted (yyGLRStack* yystackp)
	  {
	    YYLONGJMP (yystackp->yyexception_buffer, 2);
	  }
	  ^
	  1 warning and 1 error generated.

	This is Apple clang version 3.1 (tags/Apple/clang-318.0.61).

	* data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B)
	to avoid this warning.
	Any reasonable compiler should generate the same code.
	* src/uniqstr.h (UNIQSTR_EQ): Likewise.
	* data/glr.c (LONGJMP): abort after longjmp to pacify clang.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: no longer disable -O compiler options
	Tests are running without -O since
	f377f69fec28013c79db4efe12bbb9d48987fb2c because some warnings (about
	yylval not being initialized) show only when GCC is given -O2.  The
	previous patch fixes the warnings. Run the test suite with compiler
	options unmodified.

	* tests/atlocal.in (O0CFLAGS, O0CXXFLAGS): Remove, use CFLAGS and
	CXXFLAGS.

2012-10-22  Paul Eggert  <eggert@cs.ucla.edu>

	yacc.c: initialize yylval in pure-parser mode
	See http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00024.html
	(spreading over September and October).

	* data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN)
	(YY_IGNORE_MAYBE_UNINITIALIZED_END, YYLVAL_INITIALIZE):
	New macros.  Use them to suppress an unwanted GCC diagnostic.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: style changes
	* data/yacc.c, data/glr.c: Prefer Title case for (CPP) macro arguments.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: minor improvements
	* tests/c++.at: Space changes.
	Use AT_YYERROR_DEFINE.
	* tests/local.at (AT_YYERROR_DEFINE): Issue errors on unknown languages.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: use $PERL instead of perl
	* tests/atlocal.in (PERL): New.
	Sort.
	* tests/calc.at, tests/input.at, tests/local.at, tests/regression.at,
	* tests/skeletons.at, tests/synclines.at, tests/torture.at: here.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	build: look for Perl in configure.
	Bison uses "/usr/bin/perl" or "perl" in several places, and it does
	not appear to be a problem.  But, at least to make it simpler to
	change PERL on the make command line, check for perl in configure.

	* configure.ac (PERL): New.
	* doc/Doxyfile.in, doc/Makefile.am, tests/bison.in: Use it.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix sed portability issues
	Reported by Didier Godefroy,
	<http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00005.html>.

	* tests/calc.at (AT_CHECK_SPACES): Use Perl.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: diff -u is not portable
	Reported by Didier Godefroy
	<http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00006.html>.

	* tests/existing.at (AT_LALR1_DIFF_CHECK): Skip if diff -u does not
	work.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	maint: word changes
	* README-hacking (Typical errors): Improve wording.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: fix test suite portability
	Reported by Rob Vermaas' Hydra build farm on x86_64-darwin 10.2.0 with
	G++ 4.6.3.

	* tests/headers.at (Several parsers): Include AT_DATA_SOURCE_PROLOGUE
	in the files to compile.
	* data/location.cc: Do not include twice string and iostream (once
	by position.hh, and then by location.hh).
	* README-hacking (Typical errors): Some hints for other maintainers.

2012-10-22  Theophile Ranquet  <theophile.ranquet@gmail.com>

	maint: fix an erroneous include
	This fixes test 130 (Several parsers).

	* data/location.cc: Include <iostream> rather than <iosfwd> since
	we really need << on strings for instance.
	* NEWS: Document this.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: check that headers are self contained
	Reported by Alexandre Duret-Lutz.

	* tests/headers.at (Several parsers): here.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	doc: add missing documentation for --report
	* doc/bison.texi (Bison Options): Document --report's "solved", "all",
	and "none".

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	headers: move CPP guards into YY_*_INCLUDED to avoid collisions
	See <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00016.html>.

	* data/c.m4 (b4_cpp_guard): Prepend YY_ and append _INCLUDED.
	* tests/headers.at: Adjust.
	* NEWS, doc/bison.texi: Document.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	minor changes.
	* NEWS: Word changes.
	* doc/bison.texi: Spell check.
	Fix minor issues.
	* tests/headers.at: Comment and formatting changes.

2012-10-22  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-10-19  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-10-19  Akim Demaille  <akim@lrde.epita.fr>

	xml: slight improvement of the DOT output
	This was completely forgotten...  Nothing about XML is actually
	documented...

	* data/xslt/xml2dot.xsl: Use boxes, and Courier font.

2012-10-19  Akim Demaille  <akim@lrde.epita.fr>

	maint: check for dot before using it
	* configure.ac: here.
	* doc/Makefile.am: Use $(DOT).
	Ship the generated files, to spare the user the need for Graphviz.

2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: documentation
	Note that 'make web-manual' fails.

	* NEWS: Document these changes.
	* doc/Makefile.am: Adjust to generate example files.
	* doc/bison.texi: Add a Graphviz section after "Understanding::", the section
	describing the .output file, because these are similar.
	* doc/figs/example-reduce.dot, doc/figs/example-reduce.txt,
	doc/figs/example-shift.dot, doc/figs/example-shift.txt: New, minimal
	examples to illustrate the documentation.

2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: add tests, introducing -k graph
	* tests/output.at (AT_TEST): New.
	Use it to add 6 --graph tests.

2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: change the output format of the rules
	Use something similar to the report file.

	* src/print_graph.c (print_lhs): New, obstack equivalent of rule_lhs_print.
	(print_core): Use here.

2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: style changes
	* src/graphviz.c (start_graph): Use courier font.
	(conclude_red): Use commas to separate attributes. Show the acceptation
	as a special reduction, with a blue color and an "Acc" label. Show the
	lookahead tokens between square brackets.
	(output_red): No longer label default reductions.
	* src/print_graph.c (print_core): Refactor spacing, and print an
	additional space between a rule's rhs and its lookahead tokens. Also,
	capitalize "State".
	(print_actions): Style, move a declaration.

2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: address an issue with R/R conflicts
	All disabled reductions should now be shown as such.

	* src/graphviz.c (output_red): Here.
	(conclude_red): New.

2012-10-16  Akim Demaille  <akim@lrde.epita.fr>

	news: spell check
	* NEWS: here.

2012-10-16  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* origin/maint:
	  java: use api.location.type and api.position.type

2012-10-16  Akim Demaille  <akim@lrde.epita.fr>

	variables: use singular in %define variable names
	See http://lists.gnu.org/archive/html/bison-patches/2012-02/msg00045.html

	* doc/bison.texi, src/lalr.c, src/main.c, src/muscle-tab.c,
	* src/print.c, src/reader.c, src/tables.c, tests/conflicts.at,
	* tests/input.at, tests/reduce.at:
	s/lr.default-reductions/lr.default-reduction/
	s/lr.keep-unreachable-states/lr.keep-unreachable-state/.
	* NEWS: Document.

2012-10-16  Akim Demaille  <akim@lrde.epita.fr>

	java: fixes
	* data/java.m4: Remove stray M4 characters.

2012-10-16  Akim Demaille  <akim@lrde.epita.fr>

	api.tokens.prefix -> api.token.prefix
	See
	http://lists.gnu.org/archive/html/bison-patches/2012-02/msg00045.html
	Note that api.tokens.prefix has not been released, yet.

	* NEWS, data/bison.m4, doc/bison.texi, tests/c++.at,
	* tests/calc.at, tests/java.at, tests/local.at: Do it.
	* src/muscle-tab.c (muscle_percent_variable_update): Ensure
	backward compatibility.

2012-10-15  Theophile Ranquet  <theophile.ranquet@gmail.com>

	scan-skel.l: shift complain_args arguments
	Because argv[0] is never used, shift it out from the argument list.

	* src/complain.c (complain_args): Here.
	* src/scan-skel.l (at_complain): Adjust argv and argc.

2012-10-15  Theophile Ranquet  <theophile.ranquet@gmail.com>

	scan-skel.l: formatting changes
	* src/scan-skel.l (fail_for_at_directive_too_few_args): Here.

2012-10-12  Akim Demaille  <akim@lrde.epita.fr>

	java: use api.location.type and api.position.type
	* data/java.m4: here.
	* NEWS, doc/bison.texi, tests/java.at: Adjust.

2012-10-12  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* origin/maint:
	  tests: check %no-lines
	  tests: minor simplification
	  graphs: stylistic changes.
	  graphs: minor style changes
	  graphs: show reductions
	  graphs: style: prefix state number with "state"
	  graphs: style: use left justification for states
	  graphs: style: prefix rules and change shapes
	  obstack: import obstack_finish0 from master
	  c++: api.location.type
	  muscles: a function for backward compatibility
	  maint: more macros

2012-10-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: check %no-lines
	* tests/synclines.at: here.

2012-10-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: minor simplification
	* tests/headers.at (Several parsers): Use *.y even for C++.

2012-10-11  Akim Demaille  <akim@lrde.epita.fr>

	graphs: stylistic changes.
	* src/graphviz.c (output_red): Comment and formatting changes.

2012-10-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	graphs: minor style changes
	* src/graphviz.c (output_red): Fix C90 issues.
	Reduce variable scopes.

2012-10-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	graphs: show reductions
	* src/graphviz.c (output_red): New, show reductions on the graph.
	(no_reduce_bitset_init): New, initialize a bitset.
	(print_token): New, print a lookahead token.
	(escape): New, print "foo" as \"foo\" because Dot doesn't like quotes within
	a label.

	* src/graphviz.h : Adjust.
	* src/print_graph.c (print_actions): Call output_red here.

2012-10-11  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: style: prefix state number with "state"
	* src/print_graph.c (print_core): Here.

2012-10-11  Theophile Ranquet  <ranquet@lrde.epita.fr>

	graphs: style: use left justification for states
	The label text of nodes is centered "by default" (by the use of '\n' as
	a line feed). This gives bad readability to the grammar rules shown in
	state nodes, a left justification is much nicer. This is done by using '\l'
	as the line feed.

	In order to allow \l in the DOT file, changes to the quoting system seem
	necessary.

	* src/print_graph.c (print_core): Escape tokens here, instead of...
	* src/graphviz.c (output_node): Here...
	(escape): Using this, new.

2012-10-11  Theophile Ranquet  <theophile.ranquet@gmail.com>

	graphs: style: prefix rules and change shapes
	* src/graphviz.c (start_graph): Use box rather than ellipsis.
	* src/print_graph.c (print_core): Prefix rules with their number.

2012-10-11  Theophile Ranquet  <theophile.ranquet@gmail.com>

	obstack: import obstack_finish0 from master
	* src/system.h (obstack_finish0): New.

2012-10-11  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* origin/maint:
	  NEWS: warnings with clang
	  warnings: avoid warnings from clang
	  tests: no longer disable -O compiler options
	  yacc.c: initialize yylval in pure-parser mode
	  skeletons: style changes
	  lalr1.cc: document exception safety
	  lalr1.cc: check exception safety of error handling
	  lalr1.cc: check (and fix) %printer exception safety
	  lalr1.cc: check (and fix) %initial-action exception safety
	  lalr1.cc: fix exception safety
	  lalr1.cc: check exception safety.
	  lalr1.cc: indentation fixes.
	  lalr1.cc: don't leave macros define to nothing
	  tests: minor improvements
	  tests: use $PERL instead of perl
	  build: look for Perl in configure.
	  tests: fix sed portability issues
	  tests: diff -u is not portable

2012-10-09  Akim Demaille  <akim@lrde.epita.fr>

	c++: api.location.type
	This feature was introduced in 95a2de5695670ae0df98cb3c42141cad549f0204
	(which is part of 2.5), but not documented.  Give it a proper name, and
	make it public.

	* data/c++.m4, data/lalr1.cc, data/glr.cc, data/java.m4: Use
	api.location.type instead of location_type.
	* src/muscle-tab.c (muscle_percent_variable_update): Map the latter to
	the former.
	* tests/local.at: Adjust.
	* tests/calc.at: Use api.location.type.
	Leave tests/java.at with location_type, at least for the time being,
	to cover both names.
	* doc/bison.texi: Document api.location.type.
	(User Defined Location Type): New.
	* NEWS: Update.

2012-10-09  Akim Demaille  <akim@lrde.epita.fr>

	muscles: a function for backward compatibility
	Based on commit 171ad99d6421935a278656be6dc7161591835d00 from master.

	* src/muscle-tab.c (muscle_percent_variable_update): New.
	(muscle_percent_define_insert): Use it.
	Define the variables with their initial value.

2012-10-09  Akim Demaille  <akim@lrde.epita.fr>

	maint: more macros
	* src/output.c (ARRAY_CARDINALITY): Move to...
	* src/system.h: here.
	(STREQ, STRNEQ): new.

2012-10-08  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: warnings with clang
	* NEWS: here.

2012-10-08  Akim Demaille  <akim@lrde.epita.fr>

	warnings: avoid warnings from clang
	Fix the following warning

	  parse-gram.c:2078:14: error: equality comparison with extraneous parentheses
	                        [-Werror,-Wparentheses-equality]
	    if (((yyn) == (-91)))
	         ~~~~~~^~~~~~~~
	  parse-gram.c:2078:14: note: remove extraneous parentheses around the
	                        comparison to silence this warning
	    if (((yyn) == (-91)))
	        ~      ^       ~
	  parse-gram.c:2078:14: note: use '=' to turn this equality comparison into
	                        an assignment
	    if (((yyn) == (-91)))
	               ^~
	               =
	  1 error generated.

	and the following one:

	  input.cc:740:1: error: function declared 'noreturn' should not return
	                         [-Werror,-Winvalid-noreturn]
	  static void yyMemoryExhausted (yyGLRStack* yystackp)
	    __attribute__ ((__noreturn__));
	  static void
	  yyMemoryExhausted (yyGLRStack* yystackp)
	  {
	    YYLONGJMP (yystackp->yyexception_buffer, 2);
	  }
	  ^
	  1 warning and 1 error generated.

	This is Apple clang version 3.1 (tags/Apple/clang-318.0.61).

	* data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B)
	to avoid this warning.
	Any reasonable compiler should generate the same code.
	* src/uniqstr.h (UNIQSTR_EQ): Likewise.
	* data/glr.c (LONGJMP): abort after longjmp to pacify clang.

2012-10-08  Akim Demaille  <akim@lrde.epita.fr>

	tests: no longer disable -O compiler options
	Tests are running without -O since
	f377f69fec28013c79db4efe12bbb9d48987fb2c because some warnings (about
	yylval not being initialized) show only when GCC is given -O2.  The
	previous patch fixes the warnings. Run the test suite with compiler
	options unmodified.

	* tests/atlocal.in (O0CFLAGS, O0CXXFLAGS): Remove, use CFLAGS and
	CXXFLAGS.

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

	yacc.c: initialize yylval in pure-parser mode
	See http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00024.html
	(spreading over September and October).

	* data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN)
	(YY_IGNORE_MAYBE_UNINITIALIZED_END, YYLVAL_INITIALIZE):
	New macros.  Use them to suppress an unwanted GCC diagnostic.

2012-10-08  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: style changes
	* data/yacc.c, data/glr.c: Prefer Title case for (CPP) macro arguments.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: document exception safety
	* NEWS: here.
	* doc/bison.texi (Destructor Decl, C++ Parser Interface): and there.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: check exception safety of error handling
	* tests/c++.at (Exception safety): Don't use swap here, it
	is useless.
	Cover more test cases: yyerror, YYERROR, YYABORT, and
	error recovery.
	(Object): Instead of just keeping a counter of instances, keep
	a list of them.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: check (and fix) %printer exception safety
	* tests/c++.at (Exception safety): Let the parser support the --debug
	option.
	On 'p', throw an exception from the %printer.
	* data/lalr1.cc (yyparse): Do not display the values we discard, as it
	uses %printer, which might have thrown the exception.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: check (and fix) %initial-action exception safety
	* data/lalr1.cc: Check size > 1, rather than size != 1, when cleaning
	the stack, as at the beginning, size is 0.
	* tests/c++.at (Exception safety): Check exception safety in
	%initial-action.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: fix exception safety
	lalr1.cc does not reclaim its memory when ended by an exception.

	Reported by Oleksii Taran:
	http://lists.gnu.org/archive/html/help-bison/2012-09/msg00000.html

	* data/lalr1.cc (yyparse): Protect the whole yyparse by a try-catch
	block that cleans the stack and the lookahead.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: check exception safety.
	* tests/c++.at (Exception safety): New.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: indentation fixes.
	* data/lalr1.cc (yyparse): here.
	Untabify a block of code.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: don't leave macros define to nothing
	* data/lalr1.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT, YY_STACK_PRINT):
	Define to something so that, for instance, "if (foo) YY_SYMBOL_PRINT"
	is valid even when !YYDEBUG.

2012-10-06  Akim Demaille  <akim@lrde.epita.fr>

	tests: minor improvements
	* tests/c++.at: Space changes.
	Use AT_YYERROR_DEFINE.
	* tests/local.at (AT_YYERROR_DEFINE): Issue errors on unknown languages.

2012-10-05  Akim Demaille  <akim@lrde.epita.fr>

	tests: use $PERL instead of perl
	* tests/atlocal.in (PERL): New.
	Sort.
	* tests/calc.at, tests/input.at, tests/local.at, tests/regression.at,
	* tests/skeletons.at, tests/synclines.at, tests/torture.at: here.

2012-10-05  Akim Demaille  <akim@lrde.epita.fr>

	build: look for Perl in configure.
	Bison uses "/usr/bin/perl" or "perl" in several places, and it does
	not appear to be a problem.  But, at least to make it simpler to
	change PERL on the make command line, check for perl in configure.

	* configure.ac (PERL): New.
	* doc/Doxyfile.in, doc/Makefile.am, tests/bison.in: Use it.

2012-10-05  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix sed portability issues
	Reported by Didier Godefroy,
	<http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00005.html>.

	* tests/calc.at (AT_CHECK_SPACES): Use Perl.

2012-10-05  Akim Demaille  <akim@lrde.epita.fr>

	tests: diff -u is not portable
	Reported by Didier Godefroy
	<http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00006.html>.

	* tests/existing.at (AT_LALR1_DIFF_CHECK): Skip if diff -u does not
	work.

2012-10-04  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* origin/maint:
	  maint: word changes
	  lalr1.cc: fix test suite portability
	  maint: fix an erroneous include
	  tests: check that headers are self contained
	  doc: add missing documentation for --report

2012-10-04  Akim Demaille  <akim@lrde.epita.fr>

	scan-skel: use the scanner to reject all invalid directives
	* src/scan-skel.l: Use a simpler and more consistent pattern escaping
	scheme.
	Catch all the invalid directives here by just removing the previous
	catch-all-but-alphabetical rule.

2012-10-04  Theophile Ranquet  <theophile.ranquet@gmail.com>

	scan-skel: recognize the @directives directly in scanner
	* src/scan-skel.l (at_directive, at_init): New.
	(at_ptr): New, function pointer used to call the right at_directive
	function (at_basename, etc.).
	(outname): Rename as...
	(out_name): this, for consistency with out_lineno.

2012-10-04  Theophile Ranquet  <theophile.ranquet@gmail.com>

	scan-skel: split @directive functions
	* src/scan-skel.l (at_directive_perform): Split as...
	(at_basename, at_complain, at_output): these.

2012-10-04  Theophile Ranquet  <theophile.ranquet@gmail.com>

	errors: support indented context info in m4 macros
	* TODO: Address the issue, so remove it.
	* data/bison.m4: Use b4_error with [[note]] rather than a complain_at
	for context information.
	* src/complain.c (complain_args): Take an additional argument, an
	indentation pointer, to allow the dispatching of context information.
	* src/complain.h (complain_args): Adjust prototype.
	* src/scan-skel.l (at_directive_perform): Recognize the new @note mark.
	* tests/input.at: Adjust.

2012-10-04  Theophile Ranquet  <theophile.ranquet@gmail.com>

	errors: factor b4_error @directives
	Instead of @complain, @warn, and @fatal, use a unique @complain
	directive. This directive's first argument is "complain", "warn", etc.

	* data/bison.m4 (m4_error): Here.
	* src/scan-skel.l (at_directive_perform): Adjust.
	(flag): Replace the switch by safer and more explicit if branches.

2012-10-04  Theophile Ranquet  <theophile.ranquet@gmail.com>

	errors: pointerize complain_at_indent
	* src/complain.c (complain_at_indent): Rename as...
	(complaint_indent): This, and take the location as a pointer.
	* src/complain.h, src/muscle-tab.c, src/reader.c, src/scan-code.l,
	src/symtab.c: Adjust.

2012-10-04  Akim Demaille  <akim@lrde.epita.fr>

	maint: word changes
	* README-hacking (Typical errors): Improve wording.

2012-10-04  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: fix test suite portability
	Reported by Rob Vermaas' Hydra build farm on x86_64-darwin 10.2.0 with
	G++ 4.6.3.

	* tests/headers.at (Several parsers): Include AT_DATA_SOURCE_PROLOGUE
	in the files to compile.
	* data/location.cc: Do not include twice string and iostream (once
	by position.hh, and then by location.hh).
	* README-hacking (Typical errors): Some hints for other maintainers.

2012-10-03  Theophile Ranquet  <theophile.ranquet@gmail.com>

	maint: fix an erroneous include
	This fixes test 130 (Several parsers).

	* data/location.cc: Include <iostream> rather than <iosfwd> since
	we really need << on strings for instance.
	* NEWS: Document this.

2012-10-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: check that headers are self contained
	Reported by Alexandre Duret-Lutz.

	* tests/headers.at (Several parsers): here.

2012-10-03  Akim Demaille  <akim@lrde.epita.fr>

	doc: add missing documentation for --report
	* doc/bison.texi (Bison Options): Document --report's "solved", "all",
	and "none".

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

	build: use gnulib's non-recursive-gnulib-prefix-hack
	Suggested by Jim Meyering.

	* etc/prefix-gnulib-mk: Remove, as it is now provided by...
	* bootstrap.conf (modules): the non-recursive-gnulib-prefix-hack module.
	* build-aux/.gitignore, configure.ac, m4/.gitignore: Adjust.

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

	warnings: simplify the m4 interface
	* data/bison.m4 (error_at): Replace...
	(error): this.
	(b4_warn, b4_complain, b4_fatal): Bounce to their _at equivalent,
	with empty location.
	* src/scan-skel.l (at_directive_perform): Simplify accordingly.

2012-10-01  Theophile Ranquet  <theophile.ranquet@gmail.com>

	warnings: separate flags_argmatch
	This function is now a mere iterator that calls flag_argmatch,
	a new function, that matches a single option parameter.

	* src/getargs.c (flag_argmatch): New, taken from...
	(flags_argmatch): Here.

2012-10-01  Theophile Ranquet  <theophile.ranquet@gmail.com>

	warnings: refactoring
	The code here was too confusing, this seems more natural.

	* src/complain.c (error_message): Move the indentation check and the category
	output to complains. Also, no longer take a 'warnings' argument.
	(complains): Factor calls to error_message.

2012-10-01  Theophile Ranquet  <theophile.ranquet@gmail.com>

	formatting changes
	* src/complain.c: Here.

2012-10-01  Theophile Ranquet  <theophile.ranquet@gmail.com>

	warnings: organize variadic complaints call
	Move the dispatch of variadic complains to complain.c, rather than do
	it in a scanner.

	* src/complain.h, src/complain.c (complain_args): New.
	* src/scan-skel.l (at_directive_perform): Use it.

2012-10-01  Theophile Ranquet  <theophile.ranquet@gmail.com>

	warnings: fusion of complain and complain_at
	These functions are very similar, and keeping them seperate makes
	future improvements difficult, so merge them.

	This impacts 89 calls.

	* src/bootstrap.conf: Adjust.
	* src/complain.c (complain, complain_at): Merge into...
	(complain): this.
	(complain_args): Adjust.
	* src/complain.h, src/conflicts.c, src/files.c, src/getargs.c,
	* src/gram.c, src/location.c, src/muscle-tab.c, src/parse-gram.y,
	* src/reader.c, src/reduce.c, src/scan-code.l, src/scan-gram.l,
	* src/scan-skel.l, src/symlist.c, src/symtab.c:
	Adjust.

2012-10-01  Theophile Ranquet  <theophile.ranquet@gmail.com>

	warnings: remove spurious suffixes on context
	Rectify a bug that introduced suffixes out of place.

	* src/complainc.c (complains): Handle all three special warning bits.
	* src/scan-code.l (show_sub_message): Remove useless argument.
	* tests/named-refs.at: Adjust.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  headers: move CPP guards into YY_*_INCLUDED to avoid collisions
	  minor changes.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  gnulib: update
	  errors: indent "user token number redeclaration" context

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

	headers: move CPP guards into YY_*_INCLUDED to avoid collisions
	See <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00016.html>.

	* data/c.m4 (b4_cpp_guard): Prepend YY_ and append _INCLUDED.
	* tests/headers.at: Adjust.
	* NEWS, doc/bison.texi: Document.

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

	minor changes.
	* NEWS: Word changes.
	* doc/bison.texi: Spell check.
	Fix minor issues.
	* tests/headers.at: Comment and formatting changes.

2012-09-28  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-09-28  Theophile Ranquet  <theophile.ranquet@gmail.com>

	errors: indent "user token number redeclaration" context
	This is the continuation of the work on the readability of errors
	context.

	* src/symtab.c (user_token_number_redeclaration): Use
	complain_at_indent to output with increased indentation level.
	* tests/input:at: Apply this change.

2012-09-27  Theophile Ranquet  <theophile.ranquet@gmail.com>

	errors: don't display "warnings treated as errors"
	This line doesn't add any meaningful information anymore, the appended
	[-Werror=CATEGORY] is enough.  It is actually more insightful, as it
	allows to distinguish warnings treated as errors from those that
	aren't.  This line is also removed by gcc 4.8.

	* src/complain.c (set_warnings_issued): The only action left was
	checking if the error bit corresponding to the warning issued was set,
	and that function was only called once. Therefore, remove it, and do
	its job directly in the caller...
	(complains): here.
	* src/complains.h: Adjust.
	* tests/input.at: Adjust.
	* NEWS: Document this change.

2012-09-27  Akim Demaille  <akim@lrde.epita.fr>

	errors: change output, and improve -y coherence
	The prefix of warnings treated as errors is now "error: ". Also, their
	suffix now reflects the changes in the Werror option format.

	An output for -Werror=other used to be:
	  bison: warnings being treated as errors
	  input.y:1.1: warning: stray ',' treated as white space [-Wother]

	It is now:
	  bison: warnings being treated as errors
	  input.y:1.1: error: stray ',' treated as white space [-Werror=other]

	The line "warnings being treated as errors" no longer adds any info,
	it will be removed in a forthcoming change.

	* NEWS: Add entry "Enhancement of the -Werror"
	* doc/bison.texi: Move the warnings-as-error to a new bullet.
	* src/complain.c (complains): Refactor, change the prefix of warnings
	that are treated as errors.
	(warnings_print_categories): Support for [-Werror=CATEGORY] display
	* src/getargc.c (getargs): -y implies -Werror=yacc
	* tests/input.at: Update expected --yacc output for coherence.

2012-09-27  Theophile Ranquet  <theophile.ranquet@gmail.com>

	errors: introduce the -Werror=CATEGORY option
	This new option is a lot more flexible than the previous one. Its
	details will be discussed in the NEWS and info file, in a forthcoming
	change.

	If no category is specified (ie: used as simply "-Werror"), the
	functionality is the same as before.

	* src/complain.c (errors_flag): New variable.
	(set_warning_issued): Accept warning categories as an argument.
	* src/complain.h (Wall): Better definition.
	* src/getargs.c (flags_argmatch): Support for the new format.
	(usage): Update -Werror to -Werror[=CATEGORY] format.

	* src/complain.c (errors_flag): New variable.
	(set_warning_issued): Accept warning categories as an argument.
	* src/complain.h (Wall): Better definition.
	* src/getargs.c (flags_argmatch): Support for the new format.
	(usage): Update -Werror to -Werror=[CATEGORY] format.

2012-09-26  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* maint:
	  warnings: introduce -Wdeprecated in the usage info
	  errors: prefix the output with "error: "
	  errors: indent "invalid value for %define" context
	  errors: indent "%define var" redefinition context
	  errors: indent "symbol redeclaration" context
	  errors: indent "result type clash" error context

2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	warnings: introduce -Wdeprecated in the usage info
	The deprecated warning, introduced some time ago, was not displayed in
	the usage message. This patch addresses the issue.

	* src/getargs.c (usage): Insert here.

2012-09-26  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-09-26  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  regen
	  yacc: fix handling of CPP guards when no header is generated
	  gnulib: update

2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: prefix the output with "error: "
	This improves readability. This is also what gcc does.

	* NEWS: Document this change.
	* src/complain.c (complain_at): Prefix all errors with "error: ".
	(complain_at_indent, warn_at_indent): Do not prefix the context
	information of errors, which are basically just indented errors.
	* tests/conflicts.at, tests/glr-regression.at, tests/input.at,
	tests/named-refs.at, tests/output.at, tests/push.at,
	tests/regression.at, tests/skeletons.at: Apply this change.

2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: indent "invalid value for %define" context
	This is the continuation of the work on the readability of errors
	    context.

	For example, what used to be:
	  input.y:1.9-29: invalid value for %define variable 'foo' : 'bar'
	  input.y:1.9-29: accepted value: 'most'

	is now:
	  input.y:1.9-29: invalid value for %define variable 'foo' : 'bar'
	  input.y:1.9-29:     accepted value: 'most'

	* src/muscle-tab.c (muscle_percent_define_check_values): Use
	complain_at_indent to output with increased indentation level.
	* tests/input:at: Apply this change.

2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: indent "%define var" redefinition context
	This is the continuation of the work on the readability of errors
	context.

	For example, what used to be:
	  input.y:2.9-11: %define variable 'var' redefined
	  input.y:1.9-11: previous definition

	is now:
	  input.y:2.9-11: %define variable 'var' redefined
	  input.y:1.9-11:     previous definition

	* src/muscle-tab.c (muscle_percent_define_insert): Use
	complain_at_indent to output with increased indentation level.
	* tests/input.at: Apply this change.

2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: indent "symbol redeclaration" context
	This is the continuation of the work on the readability of errors
	context.

	For example, what used to be:
	  input.y:5.10-24: %printer redeclaration for <field2>
	  input.y:3.11-25: previous declaration

	is now:
	  input.y:5.10-24: %printer redeclaration for <field2>
	  input.y:3.11-25:     previous declaration

	* NEWS: Document this change.
	* src/symtab.c (symbol_redeclaration, semantic_type_redeclaration,
	user_token_number_redeclaration, default_tagged_destructor_set,
	default_tagless_destructor_set, default_tagged_printer_set,
	default_tagless_printer_set): Use complain_at_indent to
	output with increased indentation level.
	* tests/input.at: Apply this change.

2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>

	errors: indent "result type clash" error context
	This used to be the format of the error report:

	  input.y:6.5-10: result type clash on merge function 'merge': [...]
	  input.y:2.4-9: previous declaration

	In order to distinguish the actual error from the context provided, we
	rather this new output:

	  input.y:6.5-10: result type clash on merge function 'merge': [...]
	  input.y:2.4-9:     previous declaration

	Another patch will introduce an "error: " prefix to all non-indented
	lines, giving yet better readability to the reports.

	* src/complain.h (SUB_INDENT): Move to here.
	* src/reader.c (record_merge_function_type): Use complain_at_indent to
	output with increased indentation level.
	* src/scan-code.l (SUB_INDENT): Remove from here.
	* tests/glr-regression.at: Apply this change.

2012-09-25  Akim Demaille  <akim@lrde.epita.fr>

	warnings: use the regular interface for s/r and r/r conflicts
	The current routines used to display s/r and r/r conflicts are both
	inconvenient from the programmer point of view (they do not use the
	warning infrastructure) and for the user (the messages are rather
	terse, not necessarily pleasant to read, and because they don't use
	the same routines, they look different).

	It was due to the belief (dating back to the initial checked-in
	version of Bison) that, at some point, POSIX Yacc mandated the format
	for these messages.  Today, the Open Group's manual page for Yacc,
	<http://pubs.opengroup.org/onlinepubs/009695399/utilities/yacc.html>,
	explicitly states that the format of these messages is unspecified.
	See commit be7280480c175bed203883f524c7dcd6cf37c13d and
	<http://lists.gnu.org/archive/html/bison-patches/2002-12/msg00027.html>.

	For a discussion on the chosen warning format, see
	http://lists.gnu.org/archive/html/bison-patches/2012-09/msg00039.html

	In an effort to factor the handling of errors and warnings, use the
	Bison warning routines to report these messages.

	* src/conflicts.c (conflicts_print): Rewrite with clearer sections
	about S/R and then R/R conflicts.
	(conflict_report): Remove, inlined in its sole
	caller...
	(conflicts_output): here.
	* tests/conflicts.at, tests/existing.at, tests/glr-regression.at,
	* tests/reduce.at, tests/regression.at: Adjust the expected results.
	* NEWS: Update.

2012-09-25  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-09-25  Akim Demaille  <akim@lrde.epita.fr>

	yacc: fix handling of CPP guards when no header is generated
	When no header was to be generated, Bison would issue:

	  /* In a future release of Bison, this section will be replaced
	     by #include "".  */
	  #ifndef YY_
	  # define YY_

	It now properly generates nothing.

	* data/c.m4 (b4_cpp_guard_open, b4_cpp_guard_close): Issue nothing when
	the file name is empty.
	* data/yacc.c: Do not generate the above comment when there is no header
	to generate.
	* NEWS: Update.

2012-09-25  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	conflicts: refactor the counting routines
	* src/conflicts.c (count_sr_conflicts, count_rr_conflicts): Rename as...
	(count_sr_conflicts, count_rr_conflicts): these.
	Use size_t for counts.
	(count_sr_conflicts, count_rr_conflicts): New.
	Use them.

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	%expect-rr is for GLR only
	* src/conflicts.c (conflicts_print): Complain about %expect-rr if not
	in GLR mode, regardless of the number of reduce/reduce conflicts.
	* tests/conflicts.at (%expect-rr non GLR): New test.
	* NEWS: Update.

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	TODO: lalr1.cc master vs maint
	* TODO: here.

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	c++: coding style fixes
	* data/lalr1.cc, tests/c++.at: Formatting changes.

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	Revert "introduced a GCC-like -Werror=type"
	This reverts commit 981c53e257f1974854edc4f6ad0e88c7f18e2bea.

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	Revert "made previous commit less hairy"
	This reverts commit fd01e1d05ea3e627033d148b5400b99a18ac7ba3.

2012-09-21  Akim Demaille  <akim@lrde.epita.fr>

	Revert "new Werror report format fixed in a test"
	This reverts commit 41511178a71ebaf81bde7ffc682c575537af45cb.

2012-09-21  Theophile Ranquet  <ranquet@lrde.epita.fr>

	new Werror report format fixed in a test
	* tests/input.at : replaced [-Wyacc] with [-Werror=yacc]

	todo: fix the other failed test of the suite, tests/conflicts.at:1554

2012-09-21  Theophile Ranquet  <ranquet@lrde.epita.fr>

	made previous commit less hairy
	* src/getargs.c : here

2012-09-20  Theophile Ranquet  <ranquet@lrde.epita.fr>

	introduced a GCC-like -Werror=type
	* src/complain.h : errors_flag variable
	* src/complain.c : actual stuff happens here
	* src/conflits.c : differentiated SR and RR conflicts
	* src/getargs.c : flags_argmatch recognizes the new -Werror format

2012-09-04  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-09-04  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: remove useless file
	  update files to ignore
	  remove useless include
	  use locale-indep. c_is* functions for parsing, not isspace, isprint etc
	  gnulib: update
	  --help: include a place to report translation issues
	  tests: style changes
	  tests: fix push-pull test
	  yacc.c: style changes

2012-09-04  Akim Demaille  <akim@lrde.epita.fr>

	maint: remove useless file
	* externals/bootstrap.cfg: Remove.
	This file was used by a specific build system.
	It was added to the master repository by accident.

2012-09-04  Akim Demaille  <akim@lrde.epita.fr>

	update files to ignore
	* doc/.gitignore: Don't ignore split info files as we don't split our
	info file.
	See <http://lists.gnu.org/archive/html/bug-bison/2012-08/msg00006.html>.

2012-09-04  Akim Demaille  <akim@lrde.epita.fr>

	remove useless include
	* src/system.h: Don't include sys/types.h.
	Reported by Eric Blake,
	<http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00002.html>.
	(FUNCTION_PRINT): Remove, unused.

2012-09-03  Jim Meyering  <meyering@redhat.com>

	use locale-indep. c_is* functions for parsing, not isspace, isprint etc
	* src/parse-gram.y: Include "c-ctype.h".
	(add_param): Parse with c_isspace, not isspace.
	* src/parse-gram.c: Likewise.
	* src/scan-gram.l: Include c-ctype.h, not ctype.h.
	(SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER): Use c_isspace and c_isprint,
	not ctype.h's locale-dependent functions.

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

	gnulib: update

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

	--help: include a place to report translation issues
	http://lists.gnu.org/archive/html/bug-bison/2012-08/msg00007.html
	shows that it is useful to help users report translation issues.
	While at it, include other informative bits that the coreutils shows.

	* src/getargs.c (usage): Report more URLs where the user can
	refer to.
	Mostly copied/pasted from coreutils' emit_ancillary_info function.

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

	news: style changes
	* NEWS: Minor improvements.

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

	use -Wdeprecated for obsolete %define variable names
	* src/muscle-tab.c (muscle_percent_variable_update): Here.
	* tests/input.at (%define backward compatibility): Update expectations.

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

	introduce -Wdeprecated
	GCC seems to be using "deprecated" consistently over "obsoleted", so
	use -Wdeprecated rather than -Wobsolete.

	* src/complain.h (warnings): Add Wdeprecated.
	* src/complain.c (warnings_print_categories): Adjust.
	* src/getargs.c: Likewise.
	* doc/bison.texi: Document it.

	* src/scan-code.l: Use this category for the trailing ';' support.
	* tests/actions.at: Adjust expected output.

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

	undefined but unused is a warning
	* src/symtab.c (symbol_check_defined): Undeclared symbols are only
	a warning.
	* tests/input.at (Undeclared symbols used for a printer or destructor):
	Rename as...
	(Undefined symbols): this, and check this case.
	* NEWS: Doc it.

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

	glr.cc: %defines is no longer mandatory
	* data/glr.cc: No longer require %defines.
	When it is not given, define the position and location classes instead
	of including their headers.
	(b4_shared_declarations): Use the original parse-params.
	* data/glr.c (b4_shared_declarations): Define only if undefined.
	* tests/actions.at, tests/calc.at: No longer force the use of %defines
	for glr.cc.
	* NEWS: Doc it.

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

	todo: check push parsers

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

	style: remove useless C++ provisio
	* src/complain.h: here.

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

	parser: style changes
	* src/parse-gram.y: Avoid deprecated directives.

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

	doc: address a fixme
	* doc/bison.texi (Calc++ Parser): Add a cross-reference.

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

	style changes
	* data/glr.cc, tests/actions.at: Fix comments.
	* src/symtab.h, src/symtab.c: Fix indentation/comments.
	* src/symlist.c: Fix indentation.

2012-08-31  Akim Demaille  <akim@lrde.epita.fr>

	tests: style changes
	* tests/torture.at (AT_DATA_STACK_TORTURE): M4 style changes to
	improve readability.
	Fix an assertion which, because of a <= instead of ==, did not check
	new_status as visibly meant.
	(get_args): New.

2012-08-31  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix push-pull test
	* tests/torture.at: %push-pull-parser is no longer supported.

2012-08-31  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: style changes
	* data/yacc.c: (yytoken): Define with initial value.

2012-08-12  Akim Demaille  <akim@lrde.epita.fr>

	refactoring: define variables with a value
	* src/muscle-tab.c: Where possible, fuse definition and initial assignment.

2012-08-12  Akim Demaille  <akim@lrde.epita.fr>

	minor refactoring: shorten variable names
	* src/scan-skel.l (at_directive_argc, at_directive_argv)
	(AT_DIRECTIVE_ARGC_MAX): Rename as...
	(argc, argv, ARGC_MAX): these, as there is no possible confusion.
	(flags): New.
	(QPUTS): Remove, inline its only use.

2012-08-12  Akim Demaille  <akim@lrde.epita.fr>

	obstacks: simplifications
	* src/system.h (obstack_finish0): New.
	Use it to simplify several uses.
	* src/muscle-tab.h (MUSCLE_INSERTF): New.
	* src/muscle-tab.c: Use obstack_printf where simpler.

2012-08-12  Akim Demaille  <akim@lrde.epita.fr>

	minor refactoring in user code scanning
	* src/scan-code.l (show_sub_message, show_sub_messages): Instead of a
	Boolean, take a "warnings" argument.
	Avoid storing printf-like format strings in a variable, so that GCC
	can check them.

2012-08-12  Akim Demaille  <akim@lrde.epita.fr>

	minor refactoring in user code scanning
	* src/scan-code.l (show_sub_message): New, extracted from...
	(show_sub_messages): here.

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	tests: strengthen the trailing spaces check
	* tests/calc.at: here.
	* data/glr.c: Fix accordingly.

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* origin/maint:
	  maint: post-release administrivia
	  version 2.6.2
	  NEWS: update.
	  yacc: remove trailing end of line at end of file
	  thanks: fix a contributor name
	  gnulib: update
	  tests: synch line -> syncline, for consistency
	  tests: synclines: style changes
	  tests: synclines: fix perl invocation
	  regen
	  c++: trailing end-of-lines in %parse-param
	  tests: simplify

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	remove support for lint
	Basically revert commit 12ce2df60d16961eaa03a5aa009eeaa645e4e1cb.
	http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00004.html

	* data/c.m4, data/glr.c, data/yacc.c (YYID): Remove.
	No longer use ARGSUSED.
	* src/getargs.c: Restore simpler inclusion of getopt.h (anyway, since
	then we now use gnulib which certainly protects us from such issues).

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: renamings after knr removal
	* data/c.m4 (b4_yydestruct_generate, b4_yy_symbol_print_generate):
	Rename as...
	(b4_yydestruct_define, b4_yy_symbol_print_define): these, for consistency.
	* data/glr.c, data/glr.cc, data/yacc.c: Adjust.

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-08-03  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6.2
	* NEWS: Record release date.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	c++: fix a comment
	* data/c++.m4: Be sure to attach a ';' to its declaration, otherwise
	it appears in the preceding comment.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: simplify after knr removal
	* data/c.m4 (b4_yydestruct_generate, b4_yy_symbol_print_generate):
	They no longer need an argument, it has a single possible value.
	* data/glr.c, data/yacc.c: Adjust.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: renamings after knr removal
	* data/c.m4 (b4_c_comment_, b4_c_args, b4_c_function_def)
	(b4_c_function_decl, b4_c_formals, b4_c_call, b4_c_arg): Rename as...
	(b4_comment, b4_args, b4_function_define, b4_function_declare,
	b4_formals, b4_function_call, b4_arg): these.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Adjust.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: b4_args -> b4_join to prepare forthcoming changes
	* data/bison.m4 (b4_args, _b4_args): Rename as...
	(b4_join, _b4_join): these.
	* data/c++.m4, data/lalr1.cc, data/variant.hh: Adjust.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	YYPARSE_PARAM: drop support
	* data/yacc.c: No longer support it.
	* doc/bison.texi, tests/headers.at: Adjust.
	* NEWS: Document.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: remove K&R C support
	* data/c.m4 (b4_c_modern, b4_c_knr_formal_names, b4_c_knr_formal_decls)
	(b4_c_knr_formal_decl, b4_c_formal_names, b4_c_formal_decls)
	(b4_c_formal_decl): Remove.
	(b4_c_ansi_formal_names, b4_c_ansi_formal_decls, b4_c_ansi_formal_decl):
	Rename as...
	(b4_c_formal_names, b4_c_formal_decls, b4_c_formal_decl):
	these.
	* data/glr.c, data/glr.cc, data/yacc.c: Adjust.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: update.
	* NEWS: Catch up with the other changes from 2.6.1.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	yacc: remove trailing end of line at end of file
	There are still spurious spaces at the end of some lines.  But this is
	addressed in the master branch, and I am reluctant to try to backport
	this.

	* data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: here.
	* tests/calc.at (AT_CHECK_SPACES): New.
	Use it.
	Be sure not to introduce trailing empty lines in the *.y files.
	* NEWS: Doc it.
	* cfg.mk (syntax-check): Remove the exception.

2012-08-02  Akim Demaille  <akim@lrde.epita.fr>

	thanks: fix a contributor name
	* THANKS: On his request.

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

	gnulib: update

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

	tests: synch line -> syncline, for consistency
	* tests/synclines.at: Do it, as "syncline" is used consistently
	everywhere else in Bison.

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

	tests: synclines: style changes
	* tests/synclines.at (AT_TEST_SYNCLINE): Rename as...
	(AT_TEST): this.
	Use pushdef/popdef.
	Formatting changes.
	Use '+' instead of '*' where appropriate.

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

	tests: synclines: fix perl invocation
	Reported by Summum Bonum.

	* tests/synclines.at: Fix Perl invocation: its -f is not like sed's.

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

	regen

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

	c++: trailing end-of-lines in %parse-param
	* src/parse-gram.y (add_param): No only skip ' ' and '\t', skip all
	leading and trailing spaces.
	* tests/regression.at (Lex and parse params): Check it.
	* NEWS: Document it.

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

	tests: simplify
	* tests/regression.at: Remove useless compilations: AT_FULL_COMPILE
	includes the compilation by bison.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	todo: more items
	* TODO: $ in the epilogue, and obstack_copy.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	Merge branch 'maint'
	* maint:
	  use obstack_printf
	  scanner: restore a missing start condition
	  gnulib: update
	  maint: post-release administrivia
	  version 2.6.1
	  gnulib: update
	  maint: fix some syntax-check issues
	  tests: do not depend on __cplusplus to decide for C++ or C output

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	tests: comment changes
	* tests/actions.at, tests/input.at: here.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	tests: really check the set of generated files
	* tests/output.at (AT_CHECK_OUTPUT): It used to check that the
	expected files are indeed generated, but it did not check that
	there are no additional ones.
	Do that, and adjust expectations (in particular alphabetical order).

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: do not create stack.hh without %defines
	* data/stack.hh (b4_stack_define): New.
	* data/lalr1.cc: Use it when %defines is not passed.
	* tests/output.at: Adjust expected output.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: location.hh and position.hh are not generated without %defines
	* data/location.cc (b4_position_define, b4_location_define): New.
	(location.hh, position.hh): Generate only if %defines.
	* data/lalr1.cc: therefore, define these classes when locations are
	needed, but headers are not generated.
	* tests/output.at: Check that these files are not generated.
	* NEWS: Document.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: no longer require %defines.
	* data/lalr1.cc: Generate the parser header only when %defines is
	passed.
	* tests/calc.at: Check it.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: style changes
	* data/glr.c, data/lalr1.cc: Use more consistent comments,
	and YY_NULL declaration.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc, lalr1.cc: define b4_shared_declarations
	* data/glr.cc, data/lalr1.cc: here.
	The name is no longer right, but at least it is consistent with
	the other skeletons.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: no longer require location support
	* data/glr.cc: Use b4_locations_if where appropriate.
	* data/lalr1.cc: M4 quotation changes to highlight code duplication
	with glr.cc.
	* tests/calc.at: Check glr.cc with and without %location.
	While at it, fuse multiple %parse-params into one.
	* tests/actions.at: Simplify.
	* NEWS: Doc this.
	Some other wording changes.

2012-07-31  Akim Demaille  <akim@lrde.epita.fr>

	use obstack_printf
	This is not just nicer, it is also much safer, since we were
	using sprintf...

	* bootstrap.conf: Require it.
	* src/system.h (obstack_fgrow1, obstack_fgrow2, obstack_fgrow3)
	(obstack_fgrow4): Remove.
	Adjust dependencies.

2012-07-30  Akim Demaille  <akim@lrde.epita.fr>

	scanner: restore a missing start condition
	$ flex src/scan-skel.l
	src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_ARGS
	src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_SKIP_WS
	This is warning, and it seems there are no means to make it an error.

	* src/scan-skel.l: Restore the start-condition INITIAL for an <<EOF>>
	clause.

2012-07-30  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-07-30  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-07-30  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6.1
	* NEWS: Record release date.

2012-07-30  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix some syntax-check issues
	* cfg.mk: Nuke the following warnings which are confused by our
	text reports (that state that the error token is number 256).
	  prohibit_magic_number_exit
	  ../../doc/bison.texi:8170:error (256)
	  ../../tests/conflicts.at:570:error (256)
	  ../../tests/conflicts.at:673:error (256)
	  ../../tests/conflicts.at:811:error (256)
	  ../../tests/conflicts.at:1154:error (256)
	  ../../tests/regression.at:281:error (256)
	  ../../tests/regression.at:582:error (256)
	  maint.mk: use EXIT_* values rather than magic number

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	tests: do not depend on __cplusplus to decide for C++ or C output
	Since we do support compiling C code with a C++ compiler.

	* tests/actions.at (Qualified $$ in actions): Use AT_SKEL_CC_IF.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint: (29 commits)
	  regen
	  synclines: remove spurious empty line
	  also support $<foo>$ in the %initial-action
	  skeletons: b4_dollar_pushdef and popdef to simpify complex definitions
	  regen
	  printer/destructor: translate only once
	  factor the handling of m4 escaping
	  news: schedule the removal of the ";" hack
	  style changes in the scanners
	  regen
	  support $<tag>$ in printers and destructors
	  scan-code: factor the handling of the type in $<TYPE>$
	  muscles: fix another occurrence of unescaped type name
	  glr.cc: fix the handling of yydebug
	  gnulib: update
	  formatting changes
	  tests: fix an assertion
	  tests: adjust to GCC 4.8, which displays caret errors
	  be sure to properly escape type names
	  obstack_quote: escape and quote for M4
	  muscles: shuffle responsabilities
	  muscles: make private functions static
	  muscles: rename private functions/macros
	  obstack_escape: escape M4 characters
	  remove dead macro
	  maint: style changes
	  doc: avoid problems with case insensitive file systems
	  configure: fix botched quoting
	  news: fix typo.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	synclines: remove spurious empty line
	* data/bison.m4 (b4_syncline): Do not start with an empty line.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	also support $<foo>$ in the %initial-action
	scan-code.l is already passing argument to b4_dollar_dollar for the
	initial acton, but its definition (of b4_dollar_dollar) does not use
	this argument.

	Generalize this definition, and use it for the %initial-action too.

	* data/c.m4 (b4_dollar_dollar_, b4_dollar_pushdef, b4_dollar_popdef):
	Instead of expecting a pointer, require a value, and use ".".
	Since they are now generic enough, move to...
	* data/c-like.m4: this new file.
	* data/c.m4, data/java.m4: Load it.
	* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Use
	b4_dollar_pushdef for the %initial-action.
	* tests/actions.at: Check that.
	* data/Makefile.am: Adjust.
	* NEWS, doc/bison.texi: Document.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: b4_dollar_pushdef and popdef to simpify complex definitions
	M4 is really making it uselessly hard to define macros that define
	macros.
	* data/c.m4 (b4_dollar_pushdef, b4_dollar_popdef): New.
	Use it.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	printer/destructor: translate only once
	Currently "%printer {...} a b c d e f" translates the {...} six times.
	Not only is this bad for time and space, it also issues six times the
	same warnings.

	* src/symlist.h, src/symlist.c (symbol_list_destructor_set)
	(symbol_list_printer_set): Take the action as code_props instead of
	const char *.
	* src/parse-gram.y: Translate these actions here.
	* src/scan-code.h: Comment change.
	* tests/input.at: Check that warnings are issued only once.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	factor the handling of m4 escaping
	The conversion from @ to @@ and so forth is coded is too many
	different places.  Factor, a bit.

	* src/scan-code.l: Instead of duplicating the logic of obstack_escape,
	use it.
	It sure is less efficient, but the cost is negligible.
	This allows to factor rules that are alike.
	And to factor some start-condition clauses.
	* tests/input.at (Stray $ or @): New.
	* NEWS: Document it.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	news: schedule the removal of the ";" hack
	scan-code.l is significantly more complex because of this.

	* NEWS: Doc it.

2012-07-27  Akim Demaille  <akim@lrde.epita.fr>

	style changes in the scanners
	* src/scan-code.l, src/scan-skel.l: Use a more traditional indentation
	style for start-conditions.
	Prefer "continue" to a comment, for empty actions.
	Strip useless {}.
	Remove useless start-condition clauses.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	support $<tag>$ in printers and destructors
	* src/scan-code.l (SC_SYMBOL_ACTION): Accept $<tag>$, not just $$.
	* data/c.m4 (b4_dollar_dollar_): New.
	(b4_symbol_actions): Let b4_dollar_dollar use b4_dollar_dollar_.
	* NEWS, doc/bison.texi: Document it.
	* tests/actions.at: Check this for C and C++.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	scan-code: factor the handling of the type in $<TYPE>$
	* src/scan-code.l (fetch_type_name): New.
	(handle_action_dollar): Use it.
	(gt_ptr): Remove, useless.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	muscles: fix another occurrence of unescaped type name
	* src/output.c (quoted_output): Split into...
	(quoted_output, string_output): these.
	Use the former when outputting a type_name.
	* tests/input.at: Check this case.
	* src/symtab.h: Comment changes.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: fix the handling of yydebug
	* data/glr.cc (yydebug_): Remove, unused.
	(set_debug_level, debug_level): Work on yydebug instead.
	* doc/bison.texi, NEWS: Document this.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	formatting changes
	* src/symtab.h: here.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix an assertion
	* tests/local.at (AT_YYLEX_DEFINE): Be sure to check the array
	against its length, not its size in bytes.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: adjust to GCC 4.8, which displays caret errors
	With GCC 4.8, the tests on synclines are skipped.  Transform

	  input.y:1:2: error: #error "1"
	   #error "1"
	    ^

	into

	  input.y:1: #error "1"

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Do it, using Perl instead of
	sed.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	be sure to properly escape type names
	* src/scan-code.l: Use obstack_quote when passing type_name to m4.
	* tests/input.at (Code injection): New.
	* NEWS: Document it.
	Thanks to Paul Eggert for the wording.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	obstack_quote: escape and quote for M4
	* src/system.h (obstack_quote): New.
	* src/muscle-tab.c: Use it instead of obstack_escape where applicable.
	* src/scan-code.l: Since obstack_quote supports NULL, leave type_name
	as NULL instead of defaulting to "".

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	muscles: shuffle responsabilities
	* src/muscle-tab.c (muscle_boundary_grow): Be in charge of quotation,
	instead of leaving this to the caller.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	muscles: make private functions static
	* src/muscle-tab.h, src/muscle-tab.c (muscle_boundary_grow)
	(muscle_location_grow): Now static.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	muscles: rename private functions/macros
	* src/muscle-tab.c (MUSCLE_COMMON_DECODE, muscle_string_decode)
	(muscle_location_decode): Not related to muscles, rename as...
	(COMMON_DECODE, string_decode, location_decode): these.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	obstack_escape: escape M4 characters
	* src/muscle-tab.h (MUSCLE_OBSTACK_SGROW): This is not related to
	muscles, so move to, and rename as...
	* src/system.h (obstack_escape): this.
	Adjust dependencies.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	remove dead macro
	* src/system.h (DEFAULT_TMPDIR): Remove, unused.

2012-07-26  Akim Demaille  <akim@lrde.epita.fr>

	maint: style changes
	* src/scan-code.l: Remove useless braces.
	Formatting changes.
	Prefer NULL to 0.
	* src/muscle-tab.c, src/system.h: Formatting changes.

2012-07-24  Akim Demaille  <akim@lrde.epita.fr>

	doc: avoid problems with case insensitive file systems
	makeinfo --html generates index.html, and the node "Index" will result
	in Index.html.  On case insensitive file systems, such as on Mac OS X
	by default, this results in a single, invalid, file (Texinfo 4.13).
	See http://lists.gnu.org/archive/html/bug-texinfo/2012-07/msg00032.html

	* doc/bison.texi (Index): Rename as...
	(Index of Terms): this.

2012-07-24  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)

	configure: fix botched quoting
	* configure.ac: In the AC_SUBST call on 'VALGRIND_PREBISON'.  Without
	this change, when running ./configure, I see:

	    ...
	    checking for valgrind... valgrind
	    ./configure: line 35221: -q: command not found
	    checking for Java compiler... gcj -C -fsource=1.3 -ftarget=1.4
	    ...

2012-07-24  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-07-24  Akim Demaille  <akim@lrde.epita.fr>

	yystype, yyltype: remove.
	* data/c.m4: here.
	* NEWS: Doc it.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	regen

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	YYFAIL: remove.
	* data/lalr1.java, data/yacc.c, src/scan-code.l: Remove YYFAIL support.
	* NEWS, TODO: Update.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	todo: update.
	* TODO: obsolete items.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	regen.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	space changes.
	* data/bison.m4 (b4_symbol_action): Remove spurious eol in the output.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	parser: fix %printer usage.
	* src/parse-gram.y: Instead of stderr, using yyo.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	parser: factor the handling of code_props
	* src/parse-gram.y: Now that %printer and %destructor are treated
	equally, let...
	(code_props_type): handle them.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	parser: factor handling of type tags
	* src/parse-gram.y: Now that <*> and <> are processed like regular
	tags, let...
	(tag): handle them.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	regen.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	simplify the handling of <> and <*>'s code_props.
	Currently they are treated in separated variables, contrary to other
	<TYPE> code_props.  This duplicates code (and messages for translators)
	uselessly, as demonstrated by the fact that thanks to this patch, now
	useless <*> and <> code_props are reported like the others.

	* src/parse-gram.y (generic_symlist_item): Treat "<*>" and "<>" as regular
	type tags.
	* src/symlist.h, src/symlist.c (symbol_list_default_tagged_new)
	(symbol_list_default_tagless_new,SYMLIST_DEFAULT_TAGGED)
	(SYMLIST_DEFAULT_TAGLESS): Remove.
	* src/symtab.h, src/symtab.c (default_tagged_code_props)
	(default_tagless_code_props, default_tagged_code_props_set)
	(default_tagless_code_props_set): Remove.
	(symbol_code_props_get): Default to <*> or <>'s code_props.

	* tests/actions.at: Complete expected errors: there are new warnings.
	* tests/input.at: Likewise.
	(Useless printers or destructors): Extend.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	allow modification on retrieved code_props.
	The logic to compute the %printer or %destructor to used (i.e., a
	code_props) is implemented twice: one, of course, in
	symbol_code_props_get, and another time in symbol_check_defined to
	record the fact that a code_props is used (so that we can reported
	unused ones).  Let the former use the latter.

	I would probably use "mutable" in C++ and keep these guys const,
	but this is C.  And casting away constness triggers warnings.

	* src/scan-code.h, src/scan-code.l (code_props_none): Is not const.
	* src/symtab.h, src/symtab.c (symbol_code_props_get): The symbol
	is not const.
	(symbol_check_defined): Use it.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	maint: regen.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix bison's own header guards.
	Because I'm using a VPATH build with an absolute srcdir, I have
	GRAM__USERS_AKIM_SRC_GNU_BISON_SRC_PARSE_GRAM_H.  Before, I was using
	a relative srcdir, and had GRAM_______SRC_PARSE_GRAM_H (coming from
	../../).  Let it be GRAM_SRC_PARSE_GRAM_H.

	* tests/bison.in: Do not depend on the value of $top_srcdir for
	Bison itself.
	If we were to use relative paths from .c to .y, we would not have
	this problem.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	maint: add missing const.
	* src/symtab.h, src/symtab.c (symbol_print): here.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	style changes.
	* src/parse-gram.y, src/symtab.c: Space changes.
	* src/symtab.h: Comment changes.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	autoconf: update.
	* submodules/autoconf: here.
	No significant changes for our use of m4sugar.m4.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	output: no longer use b4_tokens.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, data/yacc.c:
	Since the previous commit, b4_tokens_define and the like no longer need
	b4_tokens.
	* src/output.c (token_definitions_output): Remove.

2012-07-22  Akim Demaille  <akim@lrde.epita.fr>

	output: use the token list to define the yytokentype
	There are currently two systems used to pass information about tokens to
	m4: the original one, and another, which is used for instance for
	printers and destructors, variants etc.  Move to using only the latter.

	* data/bison.m4 (b4_symbol_map, b4_token_visible_if)
	(b4_token_has_definition, b4_any_token_visible_if, b4_token_format): New.
	* data/c++.m4, data/c.m4, data/glr.c, data/java.m4: Adjust to use them.

2012-07-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix VPATH issue
	* examples/test: With an absolute VPATH build, "../" is incorrect.

2012-07-20  Akim Demaille  <akim@lrde.epita.fr>

	news: fix typo.
	* NEWS: here.
	Reported by Ben Pfaff.

2012-07-19  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: update gnu-web-doc-update.
	  maint: post-release administrivia
	  version 2.6
	  maint: prepare for release 2.6
	  maint: post-release administrivia
	  version 2.5.91
	  maint: prepare NEWS.
	  maint: fix spaces.
	  tests: adjust to case where the C compiler is actually a C++ compiler
	  tests: fix dependencies
	  doc: fix Texinfo command
	  maint: Valgrind on OS X.
	  tests: be sure that backups are safe.
	  maint: dead comment.
	  tests: refactor for legibility.
	  tests: refactor the bison invocations.
	  maint: fix syntax-check ignore patterns.
	  gnulib: update
	  gnulib: update.
	  gnulib: update

2012-07-19  Akim Demaille  <akim@lrde.epita.fr>

	maint: update gnu-web-doc-update.
	* gnulib: here.

2012-07-19  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-07-19  Akim Demaille  <akim@lrde.epita.fr>

	version 2.6
	* NEWS: Record release date.

2012-07-19  Akim Demaille  <akim@lrde.epita.fr>

	maint: prepare for release 2.6
	* NEWS: here.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	version 2.5.91
	* NEWS: Record release date.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	maint: prepare NEWS.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix spaces.
	* build-aux/Makefile.am: here.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	tests: adjust to case where the C compiler is actually a C++ compiler
	* tests/atlocal.in (CC_IS_CXX): New.
	* tests/headers.at (Several parsers): Use it.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix dependencies
	* tests/Makefile.am: we need atconfig and atlocal to be up to date
	when calling testsuite.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix Texinfo command
	* doc/bison.texi: In parens, use @pxref.

2012-07-18  Akim Demaille  <akim@lrde.epita.fr>

	maint: Valgrind on OS X.
	* configure.ac (VALGRIND_PREBISON): New.
	* tests/Makefile.am (maintainer-check-valgrind): Use it.
	* etc/darwin11.4.0.supp: New.
	* configure.ac, etc/Makefile.am: Use it.
	* configure.ac: Disable Valgrind on Mac OS X.
	* README-hacking: Explain why.

2012-07-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: be sure that backups are safe.
	* tests/local.at (at_save_special_files): here.

2012-07-17  Akim Demaille  <akim@lrde.epita.fr>

	maint: dead comment.
	* etc/README: here.

2012-07-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: refactor for legibility.
	* tests/local.at (AT_BISON_CHECK_WARNINGS, AT_BISON_CHECK_WARNINGS_):
	New.

2012-07-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: refactor the bison invocations.
	* tests/local.at (m4_null_if, AT_BISON_CHECK_): New.

2012-07-17  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix syntax-check ignore patterns.
	* cfg.mk: here.

2012-07-17  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2012-07-16  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update.
	* gnulib: Update so that gitlog-to-changelog support --srcdir.
	* Makefile.am: Use it.

2012-07-10  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update
	* bootstrap, build-aux/.gitignore, gnulib, m4/.gitignore: update.

2012-07-06  Akim Demaille  <akim@lrde.epita.fr>

	maint: minor fixes
	* NEWS: restore missing entry.
	* cfg.mk: Adjust to *.texinfo -> *.texi.
	* src/symtab.c: Spaces fixes.

2012-07-06  Akim Demaille  <akim@lrde.epita.fr>

	tests: address g++-4.8 warnings.
	list.yy: In function 'yy::parser::symbol_type yylex()':
	list.yy:107:29: error: typedef 'token' locally defined but not used
	  [-Werror=unused-local-typedefs]
	   typedef yy::parser::token token;
	                             ^

	* tests/c++.at (AT_CHECK_VARIANTS): here.

2012-07-06  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: update release instructions
	  maint: post-release administrivia
	  version 2.5.90
	  build: fix gen-ChangeLog call.
	  gnulib: update.
	  tests: fix SKIP_IF for Java.
	  api.prefix: incompatible with %name-prefix.
	  api.prefix: strengthen the tests and fix push-parsers.
	  skeletons: style changes.
	  NEWS: minor changes.
	  api.prefix: improve the documentation for YYDEBUG.
	  gnulib: update.

2012-07-06  Akim Demaille  <akim@lrde.epita.fr>

	maint: update release instructions
	* README-hacking: here.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	version 2.5.90
	* NEWS: Record release date.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	build: fix gen-ChangeLog call.
	* Makefile.am: Be sure to catch errors, and fix option name

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update.
	* gnulib/build-aux/do-release-commit-and-tag: Fix.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix SKIP_IF for Java.
	* tests/local.at (AT_JAVA_COMPILE): here.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	api.prefix: incompatible with %name-prefix.
	* data/bison.m4: Make it incompatible.
	* tests/input.at: Check that it is.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	api.prefix: strengthen the tests and fix push-parsers.
	* tests/calc.at: Check api.prefix in addition to %name-prefix.
	* tests/headers.at: Check push parsers and pure interface.
	* tests/local.at: Use YYLTYPE renamed.
	* data/yacc.c (b4_declare_yyparse_push_): Handle api.prefix.
	* doc/bison.texi: Style changes.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: style changes.
	* data/bison.m4: Define default values after having defined
	the support macros.
	Kill a dead comment.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: minor changes.
	* NEWS: style changes.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	api.prefix: improve the documentation for YYDEBUG.
	* doc/bison.texi: Explain how api.prefix is applied to YYDEBUG.

2012-07-05  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update.
	* bootstrap, gnulib: Update.
	* cfg.mk (syntax-check): Don't check "error" usage in bison.texi.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  tests: headers.at: strengthen.
	  glr.cc: do not override C++ definitions by C macros.
	  YYLLOC_DEFAULT: factor, and don't export it in headers.
	  api.prefix: do not use #define to handle YYSTYPE_IS_TRIVIAL etc.
	  tests: portability fixes.
	  c++: fewer #includes in the headers.
	  glr.cc: formatting changes.
	  tests: more logs.
	  api.prefix: also rename YYDEBUG.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	tests: headers.at: strengthen.
	* tests/headers.at (Several headers): Be stricter when checking
	the exported macros.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: do not override C++ definitions by C macros.
	* data/glr.c: here.
	* data/glr.cc: Fix overquotation.
	* tests/headers.at: Comment changes.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	YYLLOC_DEFAULT: factor, and don't export it in headers.
	* data/c++.m4, data/c.m4 (b4_yylloc_default_define): New.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
	* data/glr.cc: Do not define YYLLOC_DEFAULT in the header file,
	but in the implementation one.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	api.prefix: do not use #define to handle YYSTYPE_IS_TRIVIAL etc.
	The following mixture is insane:

	  #define YYSTYPE_IS_TRIVIAL PREFIX_STYPE_IS_TRIVIAL
	  #if (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)

	since, of course YYSTYPE_IS_TRIVIAL is defined.  Instead we could
	define YYSTYPE_IS_TRIVIAL as PREFIX_STYPE_IS_TRIVIAL only when the
	later is defined, but let's avoid stacking CPP on top of M4: rather, use

	  #if (defined PREFIX_STYPE_IS_TRIVIAL && PREFIX_STYPE_IS_TRIVIAL)

	* data/glr.c, data/yacc.c: Use YYSTYPE_IS_TRIVIAL, YYSTYPE_IS_DECLARED,
	YYLTYPE_IS_TRIVIAL and YYLTYPE_IS_DECLARED under their api.prefix-renamed
	name.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	tests: portability fixes.
	Reported by Hydra.

	* tests/headers.at (Several headers): Be sure to include config.h
	in the files to compile.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	c++: fewer #includes in the headers.
	* data/lalr1.cc: Define YY_NULL in the *.cc file, it is not needed
	in the header.
	* data/location.cc: iosfwd suffices.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

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

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	tests: more logs.
	* tests/headers.at (Several parsers): Here.

2012-07-04  Akim Demaille  <akim@lrde.epita.fr>

	api.prefix: also rename YYDEBUG.
	The testsuite in master has shown weird errors for the "Mulitple
	Parsers" tests: the caller of p5.parse() received some apparently
	random value, while tracing p5.parse() showed that the function was
	consistently returning 0.

	It happens when mixing several parser headers, some generated without
	%debug, others with.  In particular the C++ parser was generated with
	%debug, i.e., with:

	  #ifndef YYDEBUG
	  # define YYDEBUG 1
	  #endif

	and compiled separatedly.  Yet, its header was included after the one
	of another parser, this time without %debug, i.e., with

	  #ifndef YYDEBUG
	  # define YYDEBUG 0
	  #endif

	in its header.  As a result, the parser was compiled with YYDEBUG set,
	but its header was used without.  Since the layout of the objects are
	then completely different, boom.

	Therefore, do not change the value of YYDEBUG.  Rather, use it as a
	default value for <API.PREFIX>DEBUG.

	* data/c.m4 (b4_YYDEBUG_define): New.
	(b4_declare_yydebug): Rename as...
	(b4_yydebug_declare): this, for consistency.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
	* NEWS: Document it.

2012-07-02  Akim Demaille  <akim@lrde.epita.fr>

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

2012-07-02  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: spell fixes.
	* NEWS: here.
	Reported by Stefano Lattarini.

2012-07-02  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  NEWS: spell check.
	  api.prefix.

2012-07-02  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: spell check.
	* NEWS: here.

2012-06-29  Akim Demaille  <akim@lrde.epita.fr>

	api.prefix.
	* data/c.m4 (b4_api_prefix, b4_api_PREFIX): New.
	(b4_prefix, b4_union_name, b4_token_enums, b4_declare_yylstype): Use them.
	* data/glr.c, data/yacc.c, data/glr.cc, data/lalr1.cc: Use them to change
	the prefix of exported preprocessor symbols.
	* src/getargs.c (usage): Ditto.
	* tests/headers.at (Several parsers): New.
	* tests/local.at (AT_API_PREFIX): New.
	AT_YYSTYPE, AT_YYLTYPE): Adjust.
	* doc/bison.texi (Multiple Parsers): Move documentation of %name-prefix to...
	(Table of Symbols): here.
	(Multiple Parsers): Document api.prefix.
	(%define Summary): Point to it.
	Use @code for variable names.
	(Bison Options): -p/--name-prefix are obsoleted.
	* NEWS: Announce api.prefix.

2012-06-29  Victor Santet  <victor.santet@epita.fr>

	warnings: display warnings categories
	* src/complain.c (error_message): Call 'warnings_print_categories'.
	* src/gram.c (grammar_rules_useless_report): Display itself warning
	category.
	* tests/actions.at, tests/conflicts.at, tests/existing.at,
	tests/input.at, tests/named-refs.at, tests/output.at, tests/reduce.at,
	tests/regression.at, tests/skeletons.at: Adjust.
	* NEWS: Document this.

2012-06-29  Victor Santet  <victor.santet@epita.fr>

	warnings: be ready to print warnings categories
	A function to print warnings categories, like -Wyacc, -Wother, etc.

	* src/complain.h, src/complain.c (print_warning_categories): New function.
	* src/output.c (ARRAY_CARDINALITY): Move it to file 'src/system.h'.
	* src/complain.h (enum warnings): New value, 'silent', "complain"
	must not display the warning type.

2012-06-29  Akim Demaille  <akim@lrde.epita.fr>

	maint: prepare forthcoming changes
	* src/gram.c (rule_rhs_print): Do not print new line anymore.
	(rule_print): Make it static.
	* src/closure.c, src/derives.c, src/gram.c: Adjust.

2012-06-29  Victor Santet  <victor.santet@epita.fr>

	style changes
	* src/complain.c, src/reader.c, src/reduce.c, src/main.c:
	Fix indentation.
	Simplify a bit.

2012-06-28  Akim Demaille  <akim@lrde.epita.fr>

	regen.

2012-06-28  Victor Santet  <victor.santet@epita.fr>

	warnings: factoring: complaints
	* src/complain.c (error_message): Accept warning categories (an integer) as
	argument.
	Location is a 'const location *' instead of 'location *'.
	(ERROR_MESSAGE): Delete it.
	* src/complain.c, src/complain.h (complains): New function.
	(complain, complain_at, complain_at_indent): Generic functions for
	complaints. Call 'complains'.
	(warn_at, warn_at_indent, warn, yacc_at, midrule_value_at)
	(fatal_at, fatal): Delete them. Adjust dependencies.
	* src/complain.h (enum warnings): New fields 'complaint' and 'fatal'.
	* bootstrap.conf (XGETTEXT_OPTIONS): Adjust.

2012-06-28  Victor Santet  <victor.santet@epita.fr>

	warnings: move them to complain.c.
	* src/getargs.h, src/getargs.c (warnings, warnings_flags): Move to...
	* src/complain.h, src/complain.c: Here.

2012-06-28  Victor Santet  <victor.santet@epita.fr>

	warnings: rename the categories
	Forthcoming changes will use the warning categories much more often,
	so shortening them will improve readability.

	* src/complain.c, src/complain.h, src/conflicts.c,
	* src/getargs.c, src/getargs.h, src/gram.c (enum warnings):
	s/warnings_/W/g.

2012-06-28  Akim Demaille  <akim@lrde.epita.fr>

	fix merge.
	* data/bison.m4: Use b4_error_verbose_if after it was defined.

2012-06-28  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  tests: use the generalized default yylex.
	  tests: AT_YYERROR_DEFINE: prepare for list of ints.
	  skeletons: no longer define YYLSP_NEEDED.
	  c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE.

2012-06-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: use the generalized default yylex.
	* tests/actions.at, tests/glr-regression.at, tests/regression.at: here.

2012-06-28  Akim Demaille  <akim@lrde.epita.fr>

	tests: AT_YYERROR_DEFINE: prepare for list of ints.
	* tests/local.at (AT_YYERROR_DEFINE): Don't add quotes, check their
	presence to detect char/int types.
	* tests/actions.at, tests/conflicts.at, tests/glr-regression.at,
	* tests/push.at, tests/regression.at: Adjust.

2012-06-27  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: no longer define YYLSP_NEEDED.
	* data/c.m4, data/glr.cc: here.
	* NEWS, TODO: Adjust.

2012-06-27  Akim Demaille  <akim@lrde.epita.fr>

	c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE.
	* src/output.c (prepare_symbols): Do not define b4_token_table.
	(prepare): Define b4_token_table_flag.
	* data/bison.m4 (b4_token_table_if): New.
	Arm it when error-verbose.
	* data/glr.c, data/yacc.c (YYTOKEN_TABLE): Remove.
	Use m4.
	* data/lalr1.cc: Likewise.
	(YYERROR_VERBOSE): Remove.
	* NEWS, doc/bison.texi: Document this.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: use *.texi.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	maint: use *.texi.
	This is more consistent with the other packages, and Automake-NG
	supports only *.texi.

	* doc/bison.texinfo: Rename as...
	* doc/bison.texi: this.
	* doc/Makefile.am, examples/calc++/Makefile.am: Adjust.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  tests: do not output m4 set up.
	  tests: use the generic yyerror function.
	  tests: use assert instead of plain abort.
	  tests: improve the generic yylex implementation.
	  tests: generalize the compilation macros.
	  tests: fix confusion between api.prefix and name-prefix.
	  maint: gitignores.
	  yacc: work around the ylwrap limitation.

2012-06-26  Victor Santet  <victor.santet@epita.fr>

	warnings: raise warning for useless printers or destructors
	* src/scan-code.h (code_props): Add field 'is_used'.
	(CODE_PROPS_NONE_INIT): Adjust.
	* src/scan-code.l (code_props_plain_init, code_props_symbol_action_init)
	(code_props_rule_action_init): Instead of implementing several
	times the initialization of the code_props structures,
	use code_props_none_init.
	* src/symtab.c (symbol_check_defined): If a symbol does not have a
	destructor (resp. printer) but has a type which has a destructor (resp.
	printer), then set field 'is_used' to true.
	(semantic_type_check_defined): If a type has a destructor (resp. printer)
	but all symbols of this type have already a destructor (resp. printer),
	then raise a warning.
	* tests/input.at (Useless printers or destructors): New.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: do not output m4 set up.
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	Use a diversion to avoid outputting comments etc.
	Removes 17k lines from testsuite (10% of the number of lines).

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: use the generic yyerror function.
	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Factor.
	Use AT_YYERROR_DEFINE.
	Therefore, instead of using stdout, use and check stderr.
	* tests/glr-regression.at (Uninitialized location when reporting ambiguity):
	Use AT_YYERROR_DEFINE.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: use assert instead of plain abort.
	* tests/actions.at, tests/calc.at, tests/conflicts.at,
	* tests/cxx-type.at, tests/glr-regression.at, tests/input.at,
	* tests/named-refs.at, tests/regression.at, tests/torture.at,
	* tests/local.at:
	Prefer assert to abort.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve the generic yylex implementation.
	* tests/local.at (AT_YYSTYPE, AT_YYLTYPE): New.
	(AT_YYLEX_FORMALS): Use them.
	(AT_YYLEX_DEFINE): Be independent of the location implementation.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: generalize the compilation macros.
	* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): If OUTPUT ends with ".o",
	then append the "natural" extension for the input file (.c or .cc).
	If there is no source, pass -c.
	* tests/headers.at, tests/input.at, tests/regression.at: Adjust.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix confusion between api.prefix and name-prefix.
	* tests/local.at (AT_NAME_PREFIX): Take api.prefix into account.
	(AT_API_PREFIX): Rename as...
	(AT_API_prefix): this.
	Do not take %name-prefix into account.
	Fix misuses.

2012-06-26  Akim Demaille  <akim@lrde.epita.fr>

	maint: gitignores.

2012-06-25  Victor Santet  <victor.santet@epita.fr>

	warnings: useless semantic types
	* src/symtab.h (symbol_list): Represent semantic types as structure
	'semantic_type'.
	* src/symlist.c (symbol_list_type_new): Allocate this structure.
	(symbol_list_code_props_set): Set this semantic type's status to used if it
	was not declared.
	* src/symtab.c (semantic_types_sorted): New.
	(semantic_type_new): Set the new semantic type's location appropriately.
	(symbol_check_defined): If a symbol has a type, then set this type's status
	to "declared".
	(semantic_type_check_defined, semantic_type_check_defined_processor): Same
	as symbol_check_defined and symbol_check_defined_processor, but for semantic
	types.
	(symbol_check_defined): Check semantic types usefulness.
	* src/symtab.h (semantic_type): New fields 'location' and 'status'.
	* src/symtab.h, src/symtab.c (semantic_type_new)
	(semantic_type_from_uniqstr, semantic_type_get): Accept a location as a
	supplementary argument.
	* tests/input.at (Unassociated types used for printer of destructor): New.
	* tests/c++.at (AT_CHECK_VARIANTS): Fix an error caught by this commit.

2012-06-25  Akim Demaille  <akim@lrde.epita.fr>

	yacc: work around the ylwrap limitation.
	* data/yacc.c (b4_shared_declarations): Include the header guards.
	Do not include the header in the *.c file, duplicate it.
	* NEWS (Future Changes): Extend, and announce the forthcoming change
	about the use of the parser header.

2012-06-25  Akim Demaille  <akim@lrde.epita.fr>

	fix for printers and destructors.
	The previous "code_props: factor more" patch sends has_%printer
	etc. to m4, instead of has_printer.

	* src/output.c (prepare_symbol_definitions): Fix value of pname.

2012-06-25  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  tests: more uniformity.
	  tests: handle locations in a more generic way.
	  tests: handle locations in the generic yyerror functions.
	  tests: fix AT_CHECK_CALC.
	  tests: improve infrastructure
	  tests: factor.
	  skeletons: minor style changes
	  tests: AT_LANG.
	  c skeletons: factor the declaration of yylloc and yylval.
	  news: condemn YYPARSE_PARAM and YYLEX_PARAM.
	  maint: regen.

2012-06-22  Akim Demaille  <akim@lrde.epita.fr>

	code_props: factor more.
	* src/symtab.h, src/symtab.c (code_props_type_string): No longer static.
	* src/output.c (CODE_PROPS): Remove, we can now iterate on both the
	destructor and the printer.
	(SET_KEY2): New.

2012-06-22  Victor Santet  <victor.santet@epita.fr>

	maint: factor the handling of %printer and %destructor
	There is too much code duplication between %printer and %destructor.
	We used to have two functions for each action: the first one for
	destructors, the second one for printers. Factor using a
	'code_props_type', and an array of code_props instead of two
	members.

	* src/symlist.h, src/symlist.c (symbol_list_destructor_set)
	(symbol_list_printer_set): Fuse into...
	(symbol_list_code_props_set): this.
	* src/symtab.h, src/symtab.c (default_tagged_destructor)
	(default_tagged_printer): Fuse into...
	(default_tagged_code_props): this.
	(default_tagless_destructor, default_tagless_printer)
	(default_tagless_code_props): Likewise.
	(code_props_type_string): new.
	(symbol_destructor_set, symbol_destructor_get, semantic_type_destructor_set)
	(default_tagged_destructor_set, default_tagless_destructor_set)
	(symbol_printer_set, symbol_printer_get, semantic_type_printer_set)
	(default_tagged_printer_set, default_tagless_printer_set): Replace by...
	(symbol_code_props_set, symbol_code_props_get, semantic_type_code_props_set)
	(default_tagged_code_props_set, default_tagless_code_props_set): these.
	* src/parse-gram.y (grammar_declaration): Adjust.
	* src/output.c (CODE_PROP, grammar_declaration): Ditto.
	* src/reader.c (symbol_should_be_used): Ditto.

2012-06-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: more uniformity.
	* tests/local.at (AT_LEX_FORMALS, AT_LEX_ARGS, AT_LEX_PRE_FORMALS)
	(AT_LEX_PRE_ARGS): Rename as...
	(AT_YYLEX_FORMALS, AT_YYLEX_ARGS, AT_YYLEX_PRE_FORMALS)
	(AT_YYLEX_PRE_ARGS): these, for consistency.
	(AT_API_PREFIX): Take %name-prefix into account.
	(AT_YYLEX_PROTOTYPE): New.
	Use it.
	* tests/actions.at, tests/calc.at, tests/cxx-type.at: Adjust to
	use them.

2012-06-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: handle locations in a more generic way.
	* tests/local.at (AT_YYERROR_PROTOTYPE): New.
	Use it.
	* tests/cxx-type.at: Extensive revamp to use a more traditional
	quotation scheme, and to use the generic yyerror implementation.
	Prefer Autotest macros to CPP macros.
	* tests/java.at: .

2012-06-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: handle locations in the generic yyerror functions.
	* tests/local.at (AT_YYERROR_DECLARE_EXTERN, AT_YYERROR_DECLARE)
	(AT_YYERROR_DEFINE): Handle locations for C and C++.
	* tests/calc.at: Use it for C++ (as C has extra arguments which
	are not yet handled by AT_BISON_OPTION_PUSHDEFS).
	* tests/actions.at: Adjust.

2012-06-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix AT_CHECK_CALC.
	* tests/calc.at (AT_CHECK_CALC): Contrary to its documentation,
	the test was skipped if given a second argument.
	Unused feature, remove it.

2012-06-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve infrastructure
	* tests/local.at (AT_LANG): Use c++ instead of cxx for C++.
	Adjust dependencies.
	(AT_YYERROR_DECLARE_EXTERN, AT_YYERROR_DECLARE): Issue nothing
	for C++/Java.
	(AT_YYERROR_DEFINE): Use m4_case.
	(AT_JAVA_COMPILE): Use AT_SKIP_IF.

2012-06-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: factor.
	* tests/glr-regression.at, tests/output.at, tests/push.at,
	* tests/regression.at, tests/torture.at, tests/actions.at:
	Use AT_YYLEX_* and AT_YYERROR_*.

2012-06-21  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: minor style changes
	* data/glr.c, data/yacc.c: here.

2012-06-21  Akim Demaille  <akim@lrde.epita.fr>

	tests: AT_LANG.
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	Define/undefine AT_LANGE
	(AT_LANG_COMPILE): New.
	(AT_FULL_COMPILE): Use AT_LANG.

2012-06-21  Victor Santet  <victor.santet@epita.fr>

	symtab: refactoring
	Prepares forthcoming changes.

	* src/symtab.c (symbols_do): Accept the hash table and the sorted
	list as arguments. Adjust dependencies.

2012-06-21  Akim Demaille  <akim@lrde.epita.fr>

	maint: address syntax-check issues.
	* examples/calc++/local.mk: Space changes.
	* src/files.c: Avoid unmarked_diagnostics.
	* src/output.c: Remove useless include.

2012-06-21  Akim Demaille  <akim@lrde.epita.fr>

	c skeletons: factor the declaration of yylloc and yylval.
	There is one difference: now, even without --defines, we generate
	extern declarations for these variables.  The factoring is worth it.
	* data/c.m4 (b4_declare_yylstype): Declare them.
	* data/glr.c, data/yacc.c: Adjust.

2012-06-21  Akim Demaille  <akim@lrde.epita.fr>

	news: condemn YYPARSE_PARAM and YYLEX_PARAM.
	* NEWS: here.
	(Bison 1.875): Add %parse-param and %lex-param.
	* doc/bison.texinfo: Spello.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	fix warnings for useless %printer/%destructor
	The previous commit, which turns into a warning what used to be an
	error:

	    %printer {} foo;
	    %%
	    exp: '0';

	has two shortcomings: the warning is way too long (foo is reported
	to be useless later), and besides, it also turns into a warning much
	more serious errors:

	   %printer {} foo;
	   %%
	   exp: foo;

	Reduce the amount to warnings in the first case, restore the error in
	the second.

	* src/symtab.h (status): Add a new inital state: undeclared.
	* src/symtab.c (symbol_new): Initialize to undeclared.
	(symbol_class_set): Simplify the logic of the code that neutralize
	the "redeclared" warning after the "redefined" one.
	(symbol_check_defined): "undeclared" is also an error.
	* src/reader.c (grammar_current_rule_symbol_append): Symbols appearing
	in a rule are "needed".
	* src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
	An unknown symbol appearing in a %printer/%destructor is "used".
	* src/reduce.c (nonterminals_reduce): Do not report as "useless" symbols
	that are not used (e.g., those that for instance appeared only in a
	%printer).
	* tests/input.at (Undeclared symbols used for a printer or destructor):
	Improve the cover the cases described above.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	gitignore: test-driver.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	maint: style changes.
	* src/reduce.c (reduce_grammar_tables): Define variables with their
	initial value.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	news: fixes.
	* NEWS: Fix spelling.

2012-06-20  Victor Santet  <victor.santet@epita.fr>

	warnings: used but undeclared symbols are warnings
	We used to raise an error if a symbol appears only in a %printer or
	%destructor.  Make it a warning.

	* src/symtab.h (status): New enum.
	(symbol): Replace the binary "declared" with the three-state "status".
	Adjust dependencies.
	* src/symtab.c (symbol_check_defined): Needed symbols are an error,
	whereas "used" are simply warnings.
	* src/symlist.c (symbol_list_destructor_set, symbol_list_printer): Set
	symbol status to 'used' when associated to destructors or printers.
	* input.at (Undeclared symbols used for a printer or destructor): New.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	maint: regen.
	* Makefile.am (regen): New target.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	regen.

2012-06-20  Akim Demaille  <akim@lrde.epita.fr>

	maint: regen.
	* Makefile.am (regen): New target.

2012-06-19  Akim Demaille  <akim@lrde.epita.fr>

	tests: enhance AT_YYERROR_DEFINE.
	* tests/local.at: Handle the fact that locations are no longer
	needed with lalr1.cc.

2012-06-19  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  maint: formatting changes.
	  tests: support api.prefix.
	  tests: pacify font-lock-mode.
	  tests: remove test covered elsewhere.
	  tests: factor the declaration/definition of yyerror and yylex.
	  regen.
	  tests: portability issues.
	  tests: call the parser from another compilation unit.
	  glr.c, yacc.c: declare yydebug in the header.
	  skeletons: use header guards.
	  tests: improve AT_FULL_COMPILE.
	  tests: reorder.
	  tests: strengthen the test on generated headers inclusion
	  yacc.c: instead of duplicating y.tab.h inside y.tac.c, include it.
	  yacc.c: factor.

2012-06-19  Akim Demaille  <akim@lrde.epita.fr>

	maint: formatting changes.
	* NEWS: Fix indentation of code snippets.
	Untabify.

2012-06-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: support api.prefix.
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
	Define AT_API_PREFIX.
	(AT_YYERROR_DEFINE, AT_YYERROR_DECLARE_EXTERN, AT_YYLEX_DECLARE_EXTERN)
	(AT_YYLEX_DEFINE): Use it.
	* tests/input.at, tests/regression.at, tests/torture.at: Add
	AT_BISON_OPTION_PUSHDEFS/POPDEFS.

2012-06-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: pacify font-lock-mode.
	* tests/local.at: here.

2012-06-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: remove test covered elsewhere.
	* tests/headers.at (%union and --defines): Remove, pretty useless and
	insignificant.

2012-06-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: factor the declaration/definition of yyerror and yylex.
	* tests/local.at (AT_YYERROR_DECLARE, AT_YYERROR_DECLARE_EXTERN)
	(AT_YYERROR_DEFINE, AT_YYLEX_DECLARE, AT_YYLEX_DECLARE_EXTERN)
	(AT_YYLEX_DEFINE): New.
	Must be used inside AT_BISON_OPTION_PUSHDEFS/POPDEFS pair.
	* tests/actions.at, tests/conflicts.at, tests/glr-regression.at,
	* tests/headers.at, tests/input.at, tests/named-refs.at,
	* tests/regression.at, tests/skeletons.at, tests/synclines.at,
	* tests/torture.at: Use them.

2012-06-17  Akim Demaille  <akim@lrde.epita.fr>

	regen.

2012-06-17  Akim Demaille  <akim@lrde.epita.fr>

	tests: portability issues.
	* tests/calc.at (AT_CALC_MAIN): Missing include reported by Hydra.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: call the parser from another compilation unit.
	In order to improve the testing of %defines, which exports the
	interface of the generated parser, change the calc.at tests so that
	when %defines is passed, main will be in another compilation unit.  It
	loads the generated header.

	* tests/calc.at (AT_CALC_MAIN): New.
	Includes the definition of the global variables.
	Therefore, now declare them from the %requires section of the parser.
	Adjust to yydebug and yyparse being renamed by %name-prefix.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	glr.c, yacc.c: declare yydebug in the header.
	* data/c.m4 (b4_declare_yydebug): New.
	* data/glr.c, data/yacc.c (b4_shared_declarations): Use it.
	Remove the corresponding code from the parser body.
	* NEWS: Doc this.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: use header guards.
	* data/glr.c, data/glr.cc, data/yacc.c: here.
	* NEWS: Document it.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: improve AT_FULL_COMPILE.
	* tests/local.at: Accept a third argument.
	Simplify quotation pattern.
	Calls for better refactoring, but will suffice for a while.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: reorder.
	* tests/calc.at (power): Move its definition, as a preparation for
	forthcoming changes.
	And space changes.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	tests: strengthen the test on generated headers inclusion
	* tests/headers.at (AT_TEST_CPP_GUARD_H): Accept Bison directives.
	(Invalid CPP headers): Check glr.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: instead of duplicating y.tab.h inside y.tac.c, include it.
	This is already what glr.c and lalr1.cc do.

	* data/yacc.c: here.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	maint: xfdopen, and scope reduction.
	* src/files.h, src/files.c (xfdopen): New.
	* src/output.c (output_skeleton): Use it.
	Reduce the scope of argv.

2012-06-15  Akim Demaille  <akim@lrde.epita.fr>

	maint: space changes
	* configure.ac, src/complain.c: space changes.

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

	yacc.c: factor.
	yacc.c used to include two almost identical sections: one for the *.h
	file, and another for the *.c file.  The main difference is that in
	the *.c file we used the yy* names (as %name-prefix is handled by
	"#define yy* <prefix>*" before), while the *.hh used <prefix>* names.
	Keep only the later.  If this is troublesome, b4_shared_declarations
	can easily take the desired prefix as argument.

	* data/yacc.c (b4_shared_declarations): New.
	Use it to factor duplicated declarations.

2012-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)

	cosmetics: prettify names for compiled object for bison
	* src/local.mk (src_bison_SHORTNAME): Define to "bison".

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

	lalr1.cc: spello.
	* data/lalr1.cc: Reported by Gilles Espinasse.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  skeletons: factor yacc.c and glr.c.
	  glr.c: minor refactoring.
	  tests: remove all the -On flags.
	  maint: fix spello.
	  maint: improve release procedure instructions.
	  gnulib: update readme-release.
	  maint: cfg.mk: manual title.
	  maint: cfg.mk: simplify
	  maint: post-release administrivia

2012-06-12  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: factor yacc.c and glr.c.
	yacc.c and glr.c share common declarations.  Their YYLTYPE are exactly
	equal, and their YYSTYPE are sufficiently alike to be fused (its
	declaration was protected by YYSTYPE_IS_DECLARED in yacc.c, but not in
	glr.c).  Besides, yacc.c duplicated the definitions of YYLTYPE and
	YYSTYPE (*.h/*.c).

	* data/c.m4 (b4_declare_yylstype): New.
	* data/yacc.c, data/glr.c: Use it.

2012-06-12  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: minor refactoring.
	* data/glr.c (b4_shared_declarations): Move from the generated file
	section, to the M4 prologue.

2012-06-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: remove all the -On flags.
	* tests/atlocal.in: Here.
	Reported by Gilles Espinasse.

2012-06-12  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix spello.
	* README-hacking: Here.
	* THANKS: Reported by Gilles Espinasse.

2012-06-12  Akim Demaille  <akim@lrde.epita.fr>

	maint: improve release procedure instructions.
	* gnulib: Update, in particular (README-release).
	* bootstrap.conf: don't require gendocs, provided by gnu-web-doc-update,
	provided by readme-release.
	* README-hacking: Update accordingly.

2012-06-07  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update readme-release.
	* gnulib (readme-release): Now includes the modules it promotes.
	* bootstrap.conf: Simplify accordingly.

2012-06-07  Akim Demaille  <akim@lrde.epita.fr>

	maint: cfg.mk: manual title.
	* cfg.mk (manuel_title): New.

2012-06-07  Akim Demaille  <akim@lrde.epita.fr>

	maint: cfg.mk: simplify
	* cfg.mk: Remove bits provided by maint.mk.

2012-06-07  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: an envvar equal to "00" is 0.
	* src/output.c (prepare): here.
	Reported by Paul Eggert.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: don't use mbsr?chr.
	Basically, revert ba60c39547a445dee3e07920931b4d7a81843868's move to
	mbs* functions, which was prompted by -DGNULIB_POSIXCHECK.  See
	<http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00052.html>
	and following.

	* bootstrap.conf: No longer ask for them.
	* src/files.c, src/getargs.c, src/location.c,
	* src/parse-gram.c, src/parse-gram.y, src/scan-gram.l,
	* src/symtab.c: s/mbs(r?chr)/str$1/g.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: use xconcat-filename.
	* bootstrap.conf (gnulib_modules): Request it.
	* src/output.h, src/output.c (compute_pkgdatadir): Rename as...
	(pkgdatadir): this.
	Adjust dependencies.
	* src/output.c (output_skeleton): Reduce the scope of "in".
	Use xconcatenated_filename to simplify the construction of the
	qualified paths to m4sugar.m4, bison.m4, and the selected skeleton.
	There are a few minor differences: the new code uses strchr instead of
	mbschr (but this was not really justified), and the new code does not
	garantee a single slash even if $BISON_PKGDATADIR ends with several
	(which was considered more accurate).  See the discussion at
	<http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00052.html>.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: minor simplification
	* src/output.c (prepare): Assign use_push_for_pull_flag's value at its
	declaration.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  version 2.5.1
	  NEWS: prepare for 2.5.1.
	  maint: update release procedure
	  maint: fix comment typos
	  maint: post-release administrivia

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	version 2.5.1
	* NEWS: Record release date.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: prepare for 2.5.1.
	* NEWS: Be compliant with do-release-commit-and-tag.

2012-06-05  Akim Demaille  <akim@lrde.epita.fr>

	maint: update release procedure
	* bootstrap.conf: Request do-release-commit-and-tag and readme-release.
	* README-hacking: Adjust.

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

	maint: fix comment typos
	Using http://github.com/lyda/misspell-check, massage its
	output into sed commands to perform the suggested changes.
	Initially, I filtered out the THRU->Through changes, because
	that failed to retain capitalization in the grammar token.
	Instead, do this manually, beforehand:

	sed -i s/THRU/THROUGH/ tests/existing.at
	git ls-files|misspellings -f -|perl -nl \
	  -e '/^(.*?)\[(\d+)\]: (\w+) -> "(.*?)"$/ or next;' \
	  -e '($file,$n,$l,$r)=($1,$2,$3,$4); $q="'\''"; $r=~s/$q/$q\\$q$q/g;'\
	  -e 'print "sed -i $q${n}s!$l!$r!$q $file"'|bash

2012-05-24  Akim Demaille  <akim@lrde.epita.fr>

	build: regen.

2012-05-24  Akim Demaille  <akim@lrde.epita.fr>

	Merge tag 'v2.5.1_rc2'
	Bison 2.5.1_rc2.

	* tag 'v2.5.1_rc2': (34 commits)
	  Bison 2.5.1_rc2.
	  doc: fixes.
	  build: fix ChangeLog generation.
	  c++: compute the header guards.
	  skeletons: remove support for unused directive.
	  lalr1.cc: improve Doxygen documentation.
	  lalr1.cc: extract stack.hh.
	  news: convert to double quotes.
	  space changes.
	  build: do not prototype flex-generated functions.
	  build: fix ChangeLog generation.
	  Bison 2.5.1_rc1.
	  tests: save/restore Autotest special files when checking XML support.
	  tests: AT_SAVE_SPECIAL_FILES / AT_RESTORE_SPECIAL_FILES.
	  tests: honor TESTSUITEFLAGS in all the check targets.
	  build: do not enable c++ warnings on 0 when nullptr is not supported.
	  maint: update gnulib.
	  build: config.in.h.
	  build: move silent rules.
	  glr.c: reduce variable scopes.
	  maint: maintainer-release-check.
	  maint: shush a syntax-check.
	  maint: prefer "commit message" to "log entry".
	  command line: fix minor leaks.
	  maint: we no longer maintain the ChangeLog.
	  maint: fix the generation of the synclines for bison's parser.
	  maint: regen.
	  maint: import the xmemdup0 gnulib module.
	  maint: remove left-over gnulib modules.
	  maint: ignore files imported by autopoint.
	  build: AC_PROG_LEX: use more readable variable names.
	  maint: regen src/parse-gram.[ch]
	  maint: simplify parse-gram.y
	  maint: s/strncpy/memcpy/, when equivalent

2012-05-23  Akim Demaille  <akim@lrde.epita.fr>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2012-05-23  Akim Demaille  <akim@lrde.epita.fr>

	Bison 2.5.1_rc2.
	* NEWS: Update.

2012-05-23  Akim Demaille  <akim@lrde.epita.fr>

	doc: fixes.
	* doc/bison.texinfo: Fix errors spotted by syntax-check.

2012-05-23  Akim Demaille  <akim@lrde.epita.fr>

	build: fix ChangeLog generation.
	* gnulib: Update to get newest gitlog-to-changelog.
	* bootstrap: Update.
	* Makefile.am (gen-ChangeLog): Fix for Bison's git log style.

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	c++: compute the header guards.
	This is a frequent request.  Recently pointed out by Wei Song,
	<http://lists.gnu.org/archive/html/help-bison/2012-05/msg00002.html>.

	* data/c.m4 (b4_tocpp, b4_cpp_guard, b4_cpp_guard_open)
	(b4_cpp_guard_close): New.
	* data/lalr1.cc, data/location.cc, data/stack.hh: Use them.
	* TODO (Header Guards): Move to...
	* NEWS: here.
	Formatting changes.

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	skeletons: remove support for unused directive.
	* src/scan-skel.l (@dir_prefix@): Remove support, has never been
	used, not even in the commit that introduced it,
	2b81e969ea04c1a6502928ba7e847ec8ff7dcb2f.

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: improve Doxygen documentation.
	* data/location.cc: Qualify file names with directory name.

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	lalr1.cc: extract stack.hh.
	See commit 51bacae6b58fd5c6cce861f00440dc917384625e.
	* data/stack.hh: New, extracted from...
	* data/lalr1.cc: here.
	* data/Makefile.am: Adjust.

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	news: convert to double quotes.
	* NEWS: Convert from `quoted' to "quoted".
	Reported by Stefano Lattarini.
	http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00039.html

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	space changes.
	* src/flex-scanner.h: Indent nested cpp directives.

2012-05-21  Akim Demaille  <akim@lrde.epita.fr>

	build: do not prototype flex-generated functions.
	Some versions of Flex, possibly modified by the distribution package
	maintainers, have incompatible signatures.  Since newer versions of
	Flex prototype their functions, avoid the conflicts in that case.
	Reported by Stefano Lattarini.
	<http://lists.gnu.org/archive/html/bug-bison/2012-05/msg00012.html>.

	* src/flex-scanner.h (FLEX_VERSION_GT): New.
	Use it to issue prototypes for flex-generated functions only for
	versions up to 2.5.31, in accordance with the comment.
	See commit dc9701e848f27ae64b6ddcf809580998667d60f2.
	Use it to define yylex_destroy when needed.

2012-05-16  Akim Demaille  <akim@lrde.epita.fr>

	build: fix ChangeLog generation.
	* Makefile.am (gen-ChangeLog): Fix for VPATH builds.

2012-05-14  Akim Demaille  <akim@lrde.epita.fr>

	Bison 2.5.1_rc1.
	* NEWS: Update.
	* src/parse-gram.c, src/parse-gram.h: Regen.

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

	tests: save/restore Autotest special files when checking XML support.
	Currently the test 248, "parse-gram.y: LALR = IELR", fails
	BISON_TEST_XML is set.

	* tests/local.at (AT_BISON_CHECK_XML): Belt: Save/restore files.
	* tests/regression.at (parse-gram.y: LALR = IELR): Suspenders: Don't
	rely on expout.
	Each one of these changes suffices.

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

	tests: AT_SAVE_SPECIAL_FILES / AT_RESTORE_SPECIAL_FILES.
	Some of our macros play with expout and other Autotest special files,
	which may break their callers (e.g., currently TESTSUITEFLAGS='248
	BISON_TEST_XML=1' fails).

	There is already some support for this.  Expand it to be ready to use
	it elsewhere.

	* tests/local.at (AT_RESTORE_SPECIAL_FILES, AT_SAVE_SPECIAL_FILES)
	(at_save_special_files, at_restore_special_files): New.
	(AT_BISON_CHECK_NO_XML): Use them.

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

	tests: honor TESTSUITEFLAGS in all the check targets.
	* tests/Makefile.am (installcheck-local): Simplify.
	(maintainer-check-posix, maintainer-check-valgrind): Honor
	$(TESTSUITEFLAGS).

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

	build: do not enable c++ warnings on 0 when nullptr is not supported.
	* configure.ac (WARN_CXXFLAGS): Enable -Wzero-as-null-pointer-constant
	only when nullptr is supported..

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

	maint: update gnulib.
	* bootstrap, gnulib: Update.

2012-05-09  Akim Demaille  <akim@lrde.epita.fr>

	build: config.in.h.
	Historically we used config.hin (where everybody else used
	config.h.in) to please DOS.  Now that we use gnulib, there are already
	tons of files with several dots, especially *.in.h.

	* configure.ac: Rename config.hin as config.in.h.

2012-05-09  Akim Demaille  <akim@lrde.epita.fr>

	build: move silent rules.
	* tests/Makefile.am: In the generation of the test suite.

2012-05-09  Akim Demaille  <demaille@gostai.com>

	glr.c: reduce variable scopes.
	* data/glr.c: Where appropriate, fuse variable declarations followed
	by assignments by variable declarations with a value.
	Where appropriate, introduce new scopes to limit variable spans.

2012-05-08  Akim Demaille  <akim@lrde.epita.fr>

	maint: maintainer-release-check.
	* tests/Makefile.am (maintainer-release-check): New.
	* Makefile.am (MAINTAINER_CHECKS): New.
	Support maintainer-release-check.
	* README-hacking: Document it, and syntax-check too.

2012-05-08  Akim Demaille  <akim@lrde.epita.fr>

	maint: shush a syntax-check.
	* cfg.mk: lib/timevar is not planned to be gnulib'ed, as it comes
	from GCC.

2012-05-08  Akim Demaille  <akim@lrde.epita.fr>

	maint: prefer "commit message" to "log entry".
	* README-hacking: here.
	Suggested by Stefano Lattarini.

2012-05-08  Akim Demaille  <akim@lrde.epita.fr>

	command line: fix minor leaks.
	* src/getargs.c (getargs): Free pointers before allocating them new
	content.

2012-05-08  Akim Demaille  <akim@lrde.epita.fr>

	maint: we no longer maintain the ChangeLog.
	* .gitattributes: No need to merge it.
	* README-hacking: Update release instructions.

2012-05-06  Akim Demaille  <akim@lrde.epita.fr>

	maint: fix the generation of the synclines for bison's parser.
	* tests/bison.in: Import from master the changes that make
	this script generate synclines that are independant of the
	builddir/srcdir user's set up.

2012-05-06  Akim Demaille  <akim@lrde.epita.fr>

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

2012-05-06  Akim Demaille  <akim@lrde.epita.fr>

	maint: import the xmemdup0 gnulib module.
	* bootstrap.conf: Require this module.
	* src/parse-gram.y: Include xmemdup0.h.

2012-05-06  Akim Demaille  <akim@lrde.epita.fr>

	maint: remove left-over gnulib modules.
	* bootstrap.conf (gnulib_modules): Remove pipe-posix.
	* lib/.gitignore, m4/.gitignore: Remove files that we no longer use.

2012-05-06  Akim Demaille  <akim@lrde.epita.fr>

	maint: ignore files imported by autopoint.
	* m4/.gitignore: here.

2012-05-06  Akim Demaille  <akim@lrde.epita.fr>

	build: AC_PROG_LEX: use more readable variable names.
	* m4/flex.m4 (AC_PROG_LEX): Prefer LEX_IS_FLEX to FLEX.
	Prefer true/false to yes/no for such variables.
	* configure.ac: Adjust.

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

	maint: regen src/parse-gram.[ch]

2012-05-06  Jim Meyering  <meyering@redhat.com>
	    Akim Demaille  <akim@lrde.epita.fr>

	maint: simplify parse-gram.y
	* src/parse-gram.y (add_param): Use xmemdup0 in place of
	xmalloc+memcpy, and strspn in place of an open-coded loop.

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

	maint: s/strncpy/memcpy/, when equivalent
	* src/output.c (output_skeleton): Use memcpy, not strncpy,
	since the source is known to fit in the destination buffer.
	* src/parse-gram.y (%skeleton): Likewise.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: formatting changes.
	* data/glr.c: Fix indentation.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/master'
	* origin/master:
	  glr.c: untabify.
	  glr.cc: untabify.
	  glr.cc: formatting changes.
	  glr.cc: remove unused signature.
	  glr.cc: properly declare locations are const where appropriate.
	  doc: fix @xref.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: untabify.
	* data/glr.c: here.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: untabify.
	* data/glr.cc: here.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: formatting changes.
	* data/glr.cc: Fit in 80 columns.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: remove unused signature.
	* data/glr.cc (yydestruct_): Not used, remove.
	It is yydestruct which is used.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	glr.cc: properly declare locations are const where appropriate.
	* data/glr.cc (yyerror): The location is const.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix @xref.
	* doc/bison.texinfo: here.

2012-05-04  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'origin/maint'
	* origin/maint: (22 commits)
	  tests: ignore code coverage/profiling failure messages
	  doc: fix some invalid @ref.
	  build: fix previous commit.
	  install-pdf: fix.
	  NEWS: Update.
	  %printer: support both yyo and yyoutput.
	  doc: mfcalc: demonstrate %printer.
	  tests: style changes.
	  build: require Flex.
	  build: flex.m4: check for Flex.
	  build: flex.m4: quote properly.
	  build: flex.m4.
	  build: autoconf: update.
	  glr: eliminate last bits of unwanted locations.
	  NEWS: 2.6 will drop K&R.
	  TODO: remove dead items.
	  TODO: import from master.
	  gnulib: update.
	  maint: update NEWS.
	  doc: fix index.
	  doc: fix documentation of YYERROR.
	  c++: more YY_NULL

2012-05-02  Akim Demaille  <akim@lrde.epita.fr>

	tests: ignore code coverage/profiling failure messages
	The Hydra buildfarm provides code coverage analysis.  For some reason,
	in some test cases, code coverage data seem to be incompatible, and
	generate error messages at parser run-time.  Ignore these messages so
	that (i) these tests do pass, (ii) coverage results be provided by
	Hydra.

	* tests/local.at (AT_PARSER_CHECK): Ignore messages for failed merges
	of code coverage/profiling results.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix some invalid @ref.
	* doc/bison.texinfo: Fix incorrect @ref uses.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	build: fix previous commit.
	* bootstrap: Update from gnulib.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	install-pdf: fix.
	* gnulib: Fix install-pdf in po/ and runtime-po/.
	Reported by Hans Aberg.
	Fixed by Joel E. Denny.
	http://lists.gnu.org/archive/html/bug-bison/2011-05/msg00008.html

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: Update.
	* NEWS: Spell check.
	(%printer): is now documented.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	%printer: support both yyo and yyoutput.
	lalr1.cc used to support yyo, but not yyoutput.  Support both,
	but document only yyoutput (at least until there is some consensus
	on this).

	* data/c.m4 (yy_symbol_value_print): Also support yyo.
	* data/glr.cc  (yy_symbol_value_print_): Support both yyo and yyoutput.
	* data/lalr1.cc: Also support yyoutput.
	* doc/bison.texinfo: Explicitly use yyoutput in the examples.
	* examples/mfcalc/mfcalc.test: Test the -p option.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	doc: mfcalc: demonstrate %printer.
	* doc/bison.texinfo (Printer Decl): New.
	Number mfcalc.y snippets so that they are output in
	the proper order.
	(The mfcalc Main): Use yydebug.
	(Debugging): Simplify the text.
	(Enabling Traces, Mfcalc Traces, The YYPRINT Macro): New.
	(Table of Symbols): Document YYPRINT and YYFPRINTF.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	tests: style changes.
	* tests/input.at: Use "print" in %printer instead of "destroy".
	It is unused, so we don't care, yet it is less surprising.
	* tests/actions.at: Comment changes.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	%printer: support both yyo and yyoutput.
	lalr1.cc used to support yyo, but not yyoutput.  Support both,
	but document only yyoutput (at least until there is some consensus
	on this).

	* data/c.m4 (yy_symbol_value_print): Also support yyo.
	* data/glr.cc  (yy_symbol_value_print_): Support both yyo and yyoutput.
	* data/lalr1.cc: Also support yyoutput.
	* doc/bison.texinfo: Explicitly use yyoutput in the examples.
	* examples/mfcalc/mfcalc.test: Test the -p option.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	doc: mfcalc: demonstrate %printer.
	* doc/bison.texinfo (Printer Decl): New.
	Number mfcalc.y snippets so that they are output in
	the proper order.
	(The mfcalc Main): Use yydebug.
	(Debugging): Simplify the text.
	(Enabling Traces, Mfcalc Traces, The YYPRINT Macro): New.
	(Table of Symbols): Document YYPRINT and YYFPRINTF.

2012-04-16  Akim Demaille  <akim@lrde.epita.fr>

	tests: style changes.
	* tests/input.at: Use "print" in %printer instead of "destroy".
	It is unused, so we don't care, yet it is less surprising.
	* tests/actions.at: Comment changes.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	build: require Flex.
	* configure.ac: Require Flex.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	build: flex.m4: check for Flex.
	* m4/flex.m4 (_AC_PROG_LEX_YYTEXT_DECL): Check that $LEX
	supports some of the Flex options, and exclusive start conditions.
	Define FLEX to 'yes'/'', as AC_PROG_CC does for GCC.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	build: flex.m4: quote properly.
	* m4/flex.m4: Use quotes more systematically.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	build: flex.m4.
	* m4/flex.m4: New.
	An exact copy of what is in Autoconf currently.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	build: autoconf: update.
	* submodules/autoconf: Update.
	There are no changes in data/m4sugar/foreach.m4, and the
	changes in data/m4sugar/m4sugar.m4 are minor.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	glr: eliminate last bits of unwanted locations.
	* data/glr.c (YYLTYPE): Do not define when locations are
	not demanded.
	Adjust all dependencies.

2012-04-10  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: 2.6 will drop K&R.
	* NEWS: here.
	(glr.c): Fix a spello.

2012-04-09  Akim Demaille  <akim@lrde.epita.fr>

	TODO: remove dead items.
	* TODO (Documentation, %printer, Java): Remove, already done (or just
	waiting for approval).
	(Fortran, BTYacc): Remove, there does not seem to be demand.

2012-04-09  Akim Demaille  <akim@lrde.epita.fr>

	TODO: import from master.
	* TODO: Copy the current version.

2012-04-08  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix bison wrapper.
	* tests/bison.in (PERL): Fix.

2012-04-08  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix some invalid @ref.
	* doc/bison.texinfo: Fix incorrect @ref uses.

2012-04-08  Akim Demaille  <akim@lrde.epita.fr>

	build: extexi: support out-of-order blocks.
	* examples/extexi (%file_output): Remove.
	(&process): Accept "FILE: BLOCK-NUM" requests.

2012-04-08  Akim Demaille  <akim@lrde.epita.fr>

	build: look for Perl in configure.
	Bison uses "/usr/bin/perl" or "perl" in several places, and it does
	not appear to be a problem.  But, at least to make it simpler to
	change PERL on the make command line, check for perl in configure.

	* configure.ac (PERL): New.
	* doc/Doxyfile.in, doc/local.mk, examples/local.mk,
	* tests/bison.in: Use it.

2012-04-08  Akim Demaille  <akim@lrde.epita.fr>

	maint: rewrite extexi in Perl.
	* examples/extexi: Rewrite in Perl.
	* examples/local.mk (extract): Adjust.

2012-04-07  Akim Demaille  <akim@lrde.epita.fr>

	build: simplify clean.
	* doc/local.mk (CLEANFILES): Since the previous commit,
	there a no longer such files.
	* Makefile.in (CLEANFILES): Initialize here.

2012-04-07  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update.
	* bootstrap.conf (bootstrap_sync): True again.
	It was disabled while waiting for changes to be integrated
	in gnulib's bootstrap, which was done long ago.
	* bootstrap, gnulib: Update.

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

	maint: update NEWS.
	* NEWS: Fix entry about __attribute__.
	Reorder by "decreasing" order of importance.

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

	doc: fix index.
	http://lists.gnu.org/archive/html/bison-patches/2012-04/msg00006.html

	* doc/bison.texinfo: Avoid using @def* variant with more
	than the defined entity as main entity, as it results in
	an incorrect index.  For instance, don't document
	{return YYERROR;}, which results in a single index entry
	"return YYERROR;", but rather as typed function whose
	return type is "type", and whose argument list is ";".

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

	doc: fix documentation of YYERROR.
	* doc/bison.texinfo (Table of Symbols): Fix the documentation
	of YYERROR by copying that from "Action Features".

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

	build: fix distcheck issues.
	For some reason it seems that texi2dvi -o no longer forces --clean
	mode, so we have stray TeX compilation files staying in top_builddir
	since TeX is run from there.

	While at it, upgrade the generation of the (completely obsolete)
	reference card.  Target PDF.

	* doc/local.mk (TEXI2DVI): Pass --build-dir.
	(CLEANDIRS): More accurate.
	(doc/refcard.dvi): Replace with...
	(doc/refcard.pdf): this.
	Adjust dependencies.

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

	build: don't rely on $< in non-pattern rules.
	* doc/local.mk, tests/local.mk: here.
	Reported by Stefano Lattarini.

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

	doc: upgrade Doxyfile.
	* doc/Doxyfile.in: Run doxygen -u.
	Prompted by Tim Landscheidt.

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

	doc: help Doxygen find our files.
	* doc/Doxyfile.in (INCLUDE_PATH): here.

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

	Fix Doxygen generation and clean-up.
	* doc/Doxyfile.in: Amend OUTPUT_DIRECTORY.
	* doc/local.mk (html-local): Amend working directory.
	(CLEANDIRS): Fix "html", remove "latex".

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

	Fix Doxygen comment.
	* src/InadequacyList.h: s#</t>#</tt>#.

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

	c++: more YY_NULL
	Caught by maintainer-check-g++.
	* data/glr.c, data/lalr1.cc, data/yacc.c, tests/cxx-type.at,
	* tests/glr-regression.at, tests/push.at:
	When simple to do, avoid expliciting the null ptr.
	Otherwise use YY_NULL.

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

	c++: more YY_NULL
	Caught by maintainer-check-g++.
	* data/glr.c, data/lalr1.cc, data/yacc.c, tests/cxx-type.at,
	* tests/glr-regression.at, tests/push.at:
	When simple to do, avoid expliciting the null ptr.
	Otherwise use YY_NULL.

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

	Merge remote-tracking branch 'origin/maint'
	* origin/maint:
	  bump to 2012 in skeletons.
	  build: remove ancient Autoconf tests.
	  doc: c++: complete the location documentation.
	  c++: locations: provide convenience constructors.
	  c++: locations: remove useless "inline".
	  glr: do not use locations when they are not requested
	  c++: use nullptr for C++11.
	  build: simplify and improve the compiler warnings for tests.
	  gnulib: update.
	  maint: formatting changes.
	  NEWS: update.
	  Java: Fix syntax error handling without error token.
	  tests: beware of -pedantic on large #line numbers.
	  tests: when using the C++ compiler, use its flags too.

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

	bump to 2012 in skeletons.
	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
	* data/location.cc, data/yacc.c: Bump copyright year ranges.

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

	build: remove ancient Autoconf tests.
	lib/subpipe.c was removed in 47fa574761319b0a422691223c9b8a9a72f36aa2.

	* m4/subpipe.m4: Remove.
	* configure.ac (BISON_PREREQ_SUBPIPE): Remove.

2012-03-31  Akim Demaille  <akim@lrde.epita.fr>

	doc: c++: complete the location documentation.
	* data/location.cc (position::initialize, location::initialize):
	Also accept line and column, with default values.
	* doc/bison.texinfo (C++ position, C++ location): New nodes.
	Describe more thoroughly these classes.
	Fix several Texinfo misuses.

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

	c++: locations: provide convenience constructors.
	* 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.

2012-03-31  Akim Demaille  <akim@lrde.epita.fr>

	c++: locations: remove useless "inline".
	* data/location.cc: "inline" is implicit when defining
	methods in the class definition.

2012-03-31  Akim Demaille  <akim@lrde.epita.fr>

	glr: do not use locations when they are not requested
	When the test suite runs with -O2 and warnings enabled, G++
	complains of locations being used, but not initialized.
	The simplest is to not use locations.

	* data/glr.c (b4_locuser_formals, b4_locuser_args): New.
	Use them when locations should not be used.
	Use b4_locations_if where appropriate.
	(yyuserAction): Modify the order to the arguments to make
	it more alike the other routines, and to make use of
	b4_locuser_args simpler.

2012-03-31  Akim Demaille  <akim@lrde.epita.fr>

	c++: use nullptr for C++11.
	C++11 introduces "nullptr" which plays the role of C's NULL, in
	replacement of "0".  Fix the C++ skeletons to avoid warnings about
	uses of "0" in place of "nullptr", and improve C skeletons to also use
	this "nullptr" when compiled with a C++11 compiler.

	* configure.ac: More C++ warnings.
	* NEWS (2.5.1): Document this.
	* data/c++.m4, data/c.m4 (b4_null_define): New.
	(b4_null): Use YY_NULL instead of 0.
	* data/glr.c, data/lalr1.cc, data/location.cc, data/yacc.c:
	Call b4_null_define/b4_null where appropriate.
	Use YY_NULL instead of NULL.
	* data/location.cc (initialize): Accept a default argument,
	YY_NULL.
	* tests/actions.at, tests/calc.at: Adjust.

	* data/glr.c, lib/libiberty.h, src/system.h (__attribute__):
	Do not disable it when __STRICT_ANSI__ is defined, as, for
	instance, it disables the __attribute__((unused)) which
	protects us from some compiler warnings.
	This was already done elsewhere in Bison, in 2001, see
	4a0d89369599a2cea01f4fbdf791f426a02cb5a3.
	* tests/regression.at: Adjust output.

2012-03-30  Akim Demaille  <akim@lrde.epita.fr>

	build: simplify and improve the compiler warnings for tests.
	* configure.ac (warn_common, warn_c, warn_cxx): New.
	Use them to compute independently the options supported
	by the C and C++ compilers.
	Don't AC_SUBST the variables passed to gl_WARN_ADD: it
	does it for us.
	(WARN_CFLAGS_TEST, WARN_CXXFLAGS_TEST): Don't aggregate
	$WARN_CFLAGS and $WARN_CXXFLAGS in them now, leave it
	to atlocal.in.
	(O0CFLAGS, O0CXXFLAGS): Move their definition to...
	* tests/atlocal.in: here.
	Be more systematic between C and C++.
	Reorder to factor between variables.
	Propagate all of the variables when --compile-c-with-cxx.

2012-03-30  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update.

2012-03-30  Akim Demaille  <akim@lrde.epita.fr>

	maint: formatting changes.
	* src/system.h: Indent CPP directives using cppi.

2012-03-27  Akim Demaille  <akim@lrde.epita.fr>

	NEWS: update.
	* NEWS: Java fixes, more about the doc changes, liby issues.

2012-03-27  Tim Landscheidt  <tim@tim-landscheidt.de>

	Java: Fix syntax error handling without error token.
	* data/lalr1.java (YYParser::parse): Here.
	* tests/java.at: Add test case.

2012-03-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware of -pedantic on large #line numbers.
	* tests/local.at (AT_TEST_TABLES_AND_PARSE): Don't pass -pedantic
	when compiling large canonical-LR parsers.
	Reported by Tys Lefering.
	http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00025.html

2012-03-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: when using the C++ compiler, use its flags too.
	* tests/local.at: Go for colors.
	(--compile-c-with-cxx): New option.
	We used to pass "CC=$CXX" as command line argument,
	but it was not possible to adjust CFLAGS accordingly
	in atlocal, since it is loaded before assignments on
	the command line are honored (so that the command line
	takes precedence).
	* tests/atlocal.in: Implement it.
	* tests/local.mk: Use it.

2012-03-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: style changes in the Makefile.
	* tests/local.mk: Prefer passing variable assignment by
	the command line, instead of the environment, so that it
	is reported in the logs.
	Prefer single quotes for shell literal strings.

2012-03-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware of -pedantic on large #line numbers.
	* tests/local.at (AT_TEST_TABLES_AND_PARSE): Don't pass -pedantic
	when compiling large canonical-LR parsers.
	Reported by Tys Lefering.
	http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00025.html

2012-03-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: when using the C++ compiler, use its flags too.
	* tests/local.at: Go for colors.
	(--compile-c-with-cxx): New option.
	We used to pass "CC=$CXX" as command line argument,
	but it was not possible to adjust CFLAGS accordingly
	in atlocal, since it is loaded before assignments on
	the command line are honored (so that the command line
	takes precedence).
	* tests/atlocal.in: Implement it.
	* tests/local.mk: Use it.

2012-03-24  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix dependencies.
	* tests/local.mk (check_SCRIPTS): Add atlocal and atconfig so
	that they are properly updated before running tests.
	(RUN_TESTSUITE_deps): New.
	Use it to factor the dependencies of "*-check" targets,
	especially those that don't bounce to the regular
	"check-local" target, since then they don't benefit from the
	proper dependencies (such as atlocal).

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	Merge remote-tracking branch 'fsf/maint'
	* fsf/maint: (404 commits)
	  doc: update the --verbose report format.
	  doc: spell check.
	  doc: stmt, not stmnt.
	  doc: save width.
	  doc: reformat grammar snippets.
	  doc: use only @example, not @smallexample.
	  doc: style changes.
	  doc: minor fixes to "Understanding" section
	  tests: minor fixes/simplifications
	  tests: be robust to quote style.
	  maint: update gnulib.
	  tests: be robust to POSIXLY_CORRECT being defined.
	  doc: fix environment issues.
	  regen.
	  tests: fix regressions.
	  glr: fix ambiguity reports.
	  doc: stylistic improvements.
	  maint: address sc_prohibit_doubled_word.
	  maint: address sc_prohibit_always-defined_macros.
	  maint: address sc_bindtextdomain, sc_program_name and sc_prohibit_HAVE_MBRTOWC.
	  ...

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: spell fix.
	* doc/bison.texinfo: here.
	Reported by Tim Landscheidt.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: update the --verbose report format.
	* doc/bison.texinfo (Understanding): Adjust to match the
	current format.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

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

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: stmt, not stmnt.
	* doc/bison.texinfo: s/stmnt/stmt/g.  This is a
	much more common abbreviation for "statement".

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: save width.
	* doc/bison.texinfo (Language and Grammar): Use the same
	layout for an example in all the versions, i.e., keep
	as general case what used to be used only for Info.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: reformat grammar snippets.
	* doc/bison.texinfo: Convert the grammar examples to
	use a narrower style.  This helps fitting into the
	@smallbook constraints.
	http://lists.gnu.org/archive/html/bison-patches/2012-03/msg00011.html

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: use only @example, not @smallexample.
	* doc/bison.texinfo: Convert all @smallexamples into @examples.
	Adjust layout where needed.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: style changes.
	* doc/bison.texinfo: Avoid line width issues with TeX.
	Upgrade ancient messages.
	Move some comments to better looking places.
	Add more @group.
	(Mfcalc Symbol Table): Reduce variable scopes.
	Prefer size_t for sizes.
	Prefer declarations with an initial value.
	Fix a @group environment.

2012-03-19  Paul Eggert  <eggert@cs.ucla.edu>

	doc: minor fixes to "Understanding" section
	* doc/bison.texinfo (Understanding): Minor wording fixes and
	improvements.  Fixes problems reported in
	<https://savannah.gnu.org/patch/?4306>.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: update the --verbose report format.
	* doc/bison.texinfo (Understanding): Adjust to match the
	current format.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

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

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: stmt, not stmnt.
	* doc/bison.texinfo: s/stmnt/stmt/g.  This is a
	much more common abbreviation for "statement".

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: save width.
	* doc/bison.texinfo (Language and Grammar): Use the same
	layout for an example in all the versions, i.e., keep
	as general case what used to be used only for Info.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: reformat grammar snippets.
	* doc/bison.texinfo: Convert the grammar examples to
	use a narrower style.  This helps fitting into the
	@smallbook constraints.
	http://lists.gnu.org/archive/html/bison-patches/2012-03/msg00011.html

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: use only @example, not @smallexample.
	* doc/bison.texinfo: Convert all @smallexamples into @examples.
	Adjust layout where needed.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	doc: style changes.
	* doc/bison.texinfo: Avoid line width issues with TeX.
	Upgrade ancient messages.
	Move some comments to better looking places.
	Add more @group.
	(Mfcalc Symbol Table): Reduce variable scopes.
	Prefer size_t for sizes.
	Prefer declarations with an initial value.
	Fix a @group environment.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	c.m4: better newline control with b4_parse_param_use.
	* data/c.m4: Use m4_ifvaln instead of m4_ifval where
	applicable.
	(b4_parse_param_use): Switch order between two nested
	"if"s to avoid useless empty lines.
	Adjust callers to avoid useless lines.

2012-03-19  Akim Demaille  <akim@lrde.epita.fr>

	glr.c: remove (broken) support for YYPRINT.
	YYPRINT uses yytoknum which glr does not define.  Since YYPRINT
	is considered obsolete, and did not work, don't fix its support,
	remove it from glr.c.

	* data/c.m4 (yy_symbol_value_print): Use YYPRINT only for yacc.c.
	* TODO: Done.

2012-03-17  Paul Eggert  <eggert@cs.ucla.edu>

	doc: minor fixes to "Understanding" section
	* doc/bison.texinfo (Understanding): Minor wording fixes and
	improvements.  Fixes problems reported in
	<https://savannah.gnu.org/patch/?4306>.

2012-03-15  Akim Demaille  <akim@lrde.epita.fr>

	TODO: update.

2012-03-15  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update.

2012-03-13  Akim Demaille  <demaille@gostai.com>

	tests: minor fixes/simplifications
	* tests/local.at (AT_BISON_CHECK_NO_XML): Simplify sed programs,
	quotation, and default value assignments.
	Ensure a proper value to the numeric variables.
	Reported by Lie Yan.
	http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html

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

	maint: fix distcheck.
	* examples/local.mk (MAINTAINERCLEANFILES): Complete, and rename as...
	(CLEANFILES): this,
	* examples/calc++/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk (CLEANFILES): Add the generated files.

2012-03-13  Akim Demaille  <demaille@gostai.com>

	tests: minor fixes/simplifications
	* tests/local.at (AT_BISON_CHECK_NO_XML): Simplify sed programs,
	quotation, and default value assignments.
	Ensure a proper value to the numeric variables.
	Reported by Lie Yan.
	http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html

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

	tests: be robust to POSIXLY_CORRECT being defined.
	* tests/local.at (AT_BISON_CHECK_NO_XML): Check if
	POSIXLY_CORRECT is defined, not if it is defined to 1.
	Reported by Lie Yan.
	http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html

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

	tests: be robust to quote style.
	See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>.

	* src/main.c (main): Define the quoting style we use.
	* tests/atlocal.in: Use ASCII style quotes during the tests.

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

	maint: update gnulib.
	* gnulib: update.
	* src/scan-gram.l: Don't use the (former version of) STREQ.

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

	tests: remove quote magic from the bison test wrapper.
	Basically, revert 4c4d35394d1bdb4dc3392482ab002bc111a3378f.

	* tests/bison.in: Leave bison's stderr as is.

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

	tests: be robust to quote style.
	See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>.

	* src/main.c (main): Define the quoting style we use.
	* tests/atlocal.in: Use ASCII style quotes during the tests.

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

	avoid direct strncmp calls.
	Before this change, bison would accept either .tab and _tab equivalently,
	whatever the current platform.  Besides, it was not obeying everywhere
	to the possible definition of TAB_EXT to something else than .tab.

	For consistency, handle only TAB_EXT (".tab" on non DJGPP platforms).
	Support for "_tab" is neither documented, nor tested.

	* src/system.h (STRNCMP_LIT): New.
	From Jim Meyering.
	(STRPREFIX_LIT): New.
	* src/files.c, src/getargs.c: Use it.

2012-03-06  Akim Demaille  <demaille@gostai.com>

	tests: be robust to POSIXLY_CORRECT being defined.
	* tests/local.at (AT_BISON_CHECK_NO_XML): Check if
	POSIXLY_CORRECT is defined, not if it is defined to 1.
	Reported by Lie Yan.
	http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html

2012-02-24  Akim Demaille  <demaille@gostai.com>

	build: comment changes.
	* Makefile.am, examples/calc++/local.mk, examples/local.mk,
	* examples/mfcalc/local.mk, examples/rpcalc/local.mk,
	* lib/local.mk, src/local.mk, tests/local.mk:
	Make the copyright licenses more uniform.

2012-02-24  Akim Demaille  <demaille@gostai.com>

	build: fix more example extraction issues.
	* Makefile.am (dist_TESTS): New.
	(TESTS, EXTRA_DIST): Run and ship them.
	* examples/calc++/local.mk: examples/calc++/calc++.stamp no longer
	        exists, don't try to ship it.
	(.yy.stamp): New recipe.
	Use it.
	* examples/calc++/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk:
	Don't ship the sources.
	Adjust the CPPFLAGS: there is nothing left in srcdir.
	(MAINTAINERCLEANFILES): Remove, now we are in builddir.
	(TESTS): Rename as...
	(dist_TESTS): this.

2012-02-24  Akim Demaille  <demaille@gostai.com>

	maint: fix example extraction issues.
	calc++: don't rely on Automake to compile a C++ parser.

	Basically, revert commit 609b3d8096fb0cc1fa4d908b6e1a860ced260bda,
	Automake 1.11.3 is not safe enough for C++ parser.

	* examples/calc++/calc++-parser.hh: Remove.
	* examples/calc++/local.mk (examples/calc++/calc++-parser.stamp):
	New.

	examples: factor the extractions into a single step

	extexi had to be run in the extraction directory.  Now, it can be
	given the files with expected output directory.  This allows to
	use $(*_extracted) variables (before we had to list again their
	members, but limited to their base names).  In turn, this also
	allows fusing the extraction recipes into a single one.

	Also, it is currently too hard (or requires too much duplication,
	since Make wants all the occurrences of the files to be prefixed with
	$(srcdir)/, which is something Automake cannot support for *_SOURCES)
	to work in the source tree.  So extract, and compile scanners and parsers
	in the build tree.

	* examples/extexi (basename): New.
	(BEGIN): Now "file_wanted" maps base name to extracted file name.
	* examples/calc++/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk: Fuse extraction rules into...
	* examples/local.mk: Here.
	(extract, extracted): New.

2012-02-23  Akim Demaille  <demaille@gostai.com>

	maint: use STREQ/STRNEQ.
	* doc/bison.texinfo: Space change.
	* src/system.h (STREQ, STRNEQ): New.
	* src/files.c, src/ielr.c, src/lalr.c, src/muscle-tab.c,
	* src/output.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/scan-skel.l, src/tables.c,
	* src/uniqstr.c:
	Use them.
	* src/scan-gram.l: Do not use streq.h, use system.h's STREQ.
	* cfg.mk: The documentation is an exception.

2012-02-23  Akim Demaille  <demaille@gostai.com>

	doc: fix environment issues.
	* doc/bison.texinfo: Do not use @verbatim, in particular when
	we use @group inside.
	Use @quotation instead of @display for frequently asked questions,
	it looks much nicer.

2012-02-23  Akim Demaille  <demaille@gostai.com>

	doc: fix environment issues.
	* doc/bison.texinfo: Do not use @verbatim, in particular when
	we use @group inside.
	Use @quotation instead of @display for frequently asked questions,
	it looks much nicer.

2012-02-23  Akim Demaille  <demaille@gostai.com>

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

2012-02-23  Akim Demaille  <demaille@gostai.com>

	tests: fix regressions.
	Exit status 63 is documented for version-mismatch.
	* bootstrap.conf (gnulib_modules): Remove sysexits.
	* src/system.h (EX_MISMATCH): Define.
	* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.

	Missing includes.
	* tests/calc.at, tests/named-refs.at: Include assert.h.

2012-02-22  Akim Demaille  <demaille@gostai.com>

	maint: gitignore.
	* examples/mfcalc/.gitignore, examples/rpcalc/.gitignore: Fix.

2012-02-21  Akim Demaille  <demaille@gostai.com>

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

2012-02-21  Akim Demaille  <demaille@gostai.com>

	tests: fix regressions.
	Exit status 63 is documented for version-mismatch.
	* bootstrap.conf (gnulib_modules): Remove sysexits.
	* src/system.h (EX_MISMATCH): Define.
	* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.

	Missing includes.
	* tests/calc.at, tests/named-refs.at: Include assert.h.

2012-02-21  Akim Demaille  <demaille@gostai.com>

	tests: post-process stderr to normalize quotes.
	* tests/bison.in: Save bison's stderr, and convert gettextized
	quotes to plain ASCII.

2012-02-21  Akim Demaille  <demaille@gostai.com>

	glr: fix ambiguity reports.
	* tests/glr-regression.at (Ambiguity reports): New.

2012-02-21  Akim Demaille  <demaille@gostai.com>

	glr: fix ambiguity reports.
	Fix a regression introduced in commit
	783aa653f4ca70a75919c8516b950494c612cbfe.

	* tests/glr-regression.at (Ambiguity reports): New.
	* data/glr.c (yyreportTree): Fix an offset error.

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

	doc: stylistic improvements.
	* doc/bison.texinfo: Prefer "continue" to empty loop bodies.
	Add some @group/@end group to avoid poor page breaks.

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

	maint: address sc_prohibit_doubled_word.
	* data/yacc.c, doc/bison.texinfo: Reword to avoid having to
	disable that check.
	* cfg.mk: No longer skip this test.

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

	maint: address sc_prohibit_always-defined_macros.
	* cfg.mk: No longer skip it, except where EXIT_SUCCESS is used
	as a witness for stdlib.h.
	Skip this test when appropriate.
	* data/yacc.c: Drop a note about why EXIT_SUCCESS is defined here.

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

	maint: address sc_bindtextdomain, sc_program_name and sc_prohibit_HAVE_MBRTOWC.
	* bootstrap.conf (gnulib_modules): Require progname.
	* src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it.
	* cfg.mk (exclude): New.
	Use it.
	Skip lib/main.c for bindtextdomain and set_program_name.

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

	maint: remove stray file.
	* config.hin: Remove.

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

	doc: stylistic improvements.
	* doc/bison.texinfo: Prefer "continue" to empty loop bodies.
	Add some @group/@end group to avoid poor page breaks.

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

	doc: check the rpcalc.
	* doc/bison.texinfo: Tag rpcalc.y snippets.
	Add missing includes.
	(Rpcalc Rules): Don't issue leading tabs.
	Complete an Info menu.
	Use @result.
	* examples/rpcalc/local.mk: New.
	* examples/rpcalc/rpcalc.test: New.
	* examples/local.mk: Use them.
	* examples/mfcalc/mfcalc.test: Remove dup test.
	* examples/test: Disable debug traces.

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

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

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

	maint: address sc_prohibit_doubled_word.
	* data/yacc.c, doc/bison.texinfo: Reword to avoid having to
	disable that check.
	* cfg.mk: No longer skip this test.

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

	maint: address sc_prohibit_always-defined_macros.
	* cfg.mk: No longer skip it, except where EXIT_SUCCESS is used
	as a witness for stdlib.h.
	Skip this test when appropriate.
	* data/yacc.c: Drop a note about why EXIT_SUCCESS is defined here.

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

	maint: address sc_bindtextdomain, sc_program_name and sc_prohibit_HAVE_MBRTOWC.
	* bootstrap.conf (gnulib_modules): Require progname.
	* src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it.
	* cfg.mk (exclude): New.
	Use it.
	Skip lib/main.c for bindtextdomain and set_program_name.

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

	maint: remove stray file.
	* config.hin: Remove.

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

	bitset: fix an incorrect error message.
	* lib/bitset_stats.c: here.
	Reported by Stefano Lattarini.

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

	maint: address some syntax-issues remaining after cherry-picking from master.
	* cfg.mk: Skip bison generated files, 2.5 is generating trailing
	blanks.  This is already fixed in master.
	* tests/conflicts.at, tests/java.at: Fix white space issues.

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

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

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

	bitset: fix an incorrect error message.
	* lib/bitset_stats.c: here.
	Reported by Stefano Lattarini.

2012-02-19  Jim Meyering  <meyering@redhat.com>

	maint: reenable sc_m4_quote_check
	* cfg.mk (local-checks-to-skip): Reenable sc_m4_quote_check.
	* m4/dmalloc.m4: Add quotes.

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

	maint: remove trailing empty lines.
	* cfg.mk: No longer skip sc_prohibit_empty_lines_at_EOF, except
	for parse-gram.h (generated).
	* examples/mfcalc/.gitignore, lib/.gitignore, m4/.gitignore,
	* po/.gitignore, runtime-po/.gitignore: Remove trailing/leading
	empty lines.

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

	maint: avoid "magic number exit".
	* cfg.mk (local-checks-to-skip): No longer skip it.
	* bootstrap.conf (gnulib_modules): Add sysexits.
	* doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y,
	* src/system.h, tests/calc.at, tests/named-refs.at: Use assert
	where appropriate instead of "if (...) exit".
	Use symbolic exit status elsewhere.

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

	maint: fix some syntax-check issues.
	* cfg.mk (local-checks-to-skip): Remove
	sc_prohibit_quotearg_without_use, sc_prohibit_strcmp,
	sc_unmarked_diagnostics, sc_useless_cpp_parens.
	(sc_unmarked_diagnostics): Skip DJGPP.
	* data/yacc.c, src/LR0.c, src/closure.c,
	* src/flex-scanner.h, src/gram.c, src/lalr.c,
	* src/print-xml.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/reduce.c, src/tables.c:
	Don't use parens with cpp's defined.
	Remove useless includes.

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

	maint: address a couple of syntax-check errors.
	* cfg.mk (local-checks-to-skip): Remove sc_error_message_period
	and sc_error_message_uppercase.
	Address the uncovered issues.
	* po/POTFILES.in: Add missing files.
	* src/symtab.c: Remove useless includes.
	* lib/bitset_stats.c, src/files.c, tests/glr-regression.at: Use
	conformant error messages.

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

	maint: gnulib: upgrade.

2012-02-18  Akim Demaille  <demaille@gostai.com>

	maint: remove trailing empty lines.
	* cfg.mk: No longer skip sc_prohibit_empty_lines_at_EOF, except
	for parse-gram.h (generated).
	* examples/mfcalc/.gitignore, lib/.gitignore, m4/.gitignore,
	* po/.gitignore, runtime-po/.gitignore: Remove trailing/leading
	empty lines.

2012-02-18  Akim Demaille  <demaille@gostai.com>

	maint: regen.
	* src/parse-gram.c, src/parse-gram.h: regen.

2012-02-18  Akim Demaille  <demaille@gostai.com>

	maint: avoid "magic number exit".
	* cfg.mk (local-checks-to-skip): No longer skip it.
	* bootstrap.conf (gnulib_modules): Add sysexits.
	* doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y,
	* src/system.h, tests/calc.at, tests/named-refs.at: Use assert
	where appropriate instead of "if (...) exit".
	Use symbolic exit status elsewhere.

2012-02-18  Akim Demaille  <demaille@gostai.com>

	maint: fix some syntax-check issues.
	* cfg.mk (local-checks-to-skip): Remove
	sc_prohibit_quotearg_without_use, sc_prohibit_strcmp,
	sc_unmarked_diagnostics, sc_useless_cpp_parens.
	(sc_unmarked_diagnostics): Skip DJGPP.
	* data/yacc.c, src/LR0.c, src/closure.c,
	* src/flex-scanner.h, src/gram.c, src/lalr.c,
	* src/print-xml.c, src/print.c, src/print_graph.c,
	* src/reader.c, src/reduce.c, src/tables.c:
	Don't use parens with cpp's defined.
	Remove useless includes.

2012-02-18  Akim Demaille  <demaille@gostai.com>

	maint: address a couple of syntax-check errors.
	* cfg.mk (local-checks-to-skip): Remove sc_error_message_period
	and sc_error_message_uppercase.
	Address the uncovered issues.
	* po/POTFILES.in: Add missing files.
	* src/symtab.c: Remove useless includes.
	* lib/bitset_stats.c, src/files.c, tests/glr-regression.at: Use
	conformant error messages.

2012-02-18  Akim Demaille  <demaille@gostai.com>

	maint: gnulib: upgrade.

2012-02-17  Akim Demaille  <demaille@gostai.com>

	doc: mfcalc: fix includes.
	* doc/bison.texinfo: math.h is needed early.

2012-02-17  Akim Demaille  <demaille@gostai.com>

	examples: factor the test suite.
	* examples/mfcalc/test, examples/calc++/test: Extract the
	common bits into...
	* examples/test: here.
	(cwd): New.
	Use it to avoid a race on the temporary directory.
	Reported by Jim Meyering.
	* examples/mfcalc/test, examples/calc++/test: Rename into...
	* examples/mfcalc/mfcalc.test, examples/calc++/calc++.test: these.
	* examples/calc++/local.mk, examples/mfcalc/local.mk,
	* examples/local.mk: Adjust.

2012-02-17  Akim Demaille  <demaille@gostai.com>

	examples: fix the test suites.
	* examples/calc++/test, examples/mfcalc/test (me): Be more
	meaningfull: include the example name.
	(prog): Factor.
	(run): Avoid printf, use echo.
	Add missing parens.
	(cleanup): New.
	Call it on trap.
	Remove the previous "rm" that did the cleanup.
	Move into a private directory to avoid concurrency issues.
	Reported by Jim Meyering.

2012-02-17  Jim Meyering  <meyering@redhat.com>

	examples: link mfcalc with -lm for uses of pow, cos, atan, etc.
	* examples/mfcalc/local.mk (examples_mfcalc_mfcalc_LDADD): Define.

2012-02-16  Akim Demaille  <demaille@gostai.com>

	mfcalc: extract and exercise.
	* examples/mfcalc/local.mk, examples/mfcalc/test: New,
	based on calc++'s ones.
	* examples/local.mk: Include mfcalc/local.mk.

2012-02-16  Akim Demaille  <demaille@gostai.com>

	calc++: factor for other extracted tests.
	* Makefile.am (TESTS, check_PROGRAMS): Initialize here.
	* examples/local.mk (doc, extexi): Define here.
	* examples/calc++/local.mk: Adjust accordingly.
	* configure.ac: Ask for parallel-tests (for the way the logs
	are handled).
	* examples/calc++/test: As a consequence, always be verbose.
	($prog): New.
	(run): Use it.
	Sort the tests in a more natural order (simplest first).

2012-02-16  Akim Demaille  <demaille@gostai.com>

	doc: mfcalc: send errors to stderr.
	* doc/bison.texinfo (Mfcalc Lexer): New.
	(Mfcalc Main): Move the definition of main and yyerror here, for
	clarity.
	Let yyerror report on stderr.

2012-02-16  Akim Demaille  <demaille@gostai.com>

	doc: fix mfcalc code.
	* doc/bison.texinfo (Multi-function Calc): Add missing includes.
	Fix the rendering of the result: use @result and remove the
	initial tabulation in the actual code.
	Fix stylistic issues: avoid the , operator.
	Add extexi mark-up.
	* examples/extexi: Also support @smallexample.

2012-02-16  Akim Demaille  <demaille@gostai.com>

	tests: c++: stylistic changes.
	* tests/c++.at: Don't use void for incoming arguments.
	Prefer cstdlib to stdlib.h.

2012-02-16  Jim Meyering  <meyering@redhat.com>

	tests: avoid c++ failure due to lack of getenv decl
	* tests/c++.at (Syntax error as exception): Avoid spurious failure
	at least when compiling with g++-4.7.x due to lack of declaration
	of getenv.  Include <stdlib.h>.

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

	maint: rely on Automake for parsers.
	* Makefile.am (AM_YFLAGS): Automake looks for "-d" alone.
	Move other options in here.
	(BISON): New.
	(YACC): Use it.
	(bison_SOURCES): Now that automake can see `-d' in AM_YFLAGS,
	we can rely on it to compile and ship the parser header
	files.

	Based on commit 737406a32c201471699bfa0843d1f432f3ec29ab and
	commit 3d6ca339083c278d907c9f030f4ba6bc5ecb07f2.

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

	maint: trust Automake for parser headers.
	* examples/calc++/local.mk, src/local.mk: Now that automake
	can see `-d' in AM_YFLAGS, we can rely on it to compile
	and ship the parser header files.

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

	maint: help Automake reading Yacc flags.
	* Makefile.am (AM_YFLAGS): Automake looks for "-d" alone.

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

	calc++: rely on Automake.
	Rely on $(YACC) being the bison being built, and let Automake do the
	rest.  It turned out to be much more difficult than anticipated, for
	various reasons, including some bad behavior from Automake 1.11.2
	which (i) generates calc++-parser.h instead of calc++-parser.hh, and
	(ii) leaves an #include "y.tab.h" in the generated parser instead
	of #include "calc++-parser.h".

	The authors of Automake appear to be aware of the problem,
	http://lists.gnu.org/archive/html/automake/2011-05/msg00008.html
	so a simple work around will suffice for the time being.

	* examples/calc++/y.tab.h, examples/calc++/calc++-parser.hh: New.
	To work around Automake 1.11.2 issues.
	* examples/calc++/local.mk: Remove all the rules for compilation
	with bison, leave them to Automake.
	So provide it with "calc++-parse.yy" as a source file.
	(calc_sources_generated, calc_sources_extracted): Rename as.
	(calc_generated, calc_extracted): these.
	(calc_sources): New.
	Fix them.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: tidy the Makefile a bit.
	* src/local.mk: Put yacc related variables together.
	(AUTOMAKE_OPTIONS): Move to...
	* Makefile.am: here.
	Remove an old Emacs mode request which disables Automake support.
	* src/local.mk (YACC, AM_YFLAGS): Move to...
	* Makefile.am: here, as they will be used by other local.mks.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: de-recurse the handling of examples
	The directory was still using a local Makefile.am because it provides
	"scoped" Make variables: these examples are not meant to use the same
	CPPFLAGS etc.  If we were to use the same -I set, we'd pick up
	gnulib's stdio.h for instance, which we do not want for these simple
	examples.

	Yet, as a result, the dependencies are less accurate, there is code
	duplication, etc.  This is especially perceptible when trying to
	extract more examples from the documentation, as will be done in
	forthcoming changes.

	In order to make the tuning of CPPFLAGS easier, discard the predefined
	-I from Automake.

	* examples/calc++/Makefile.am: Rename as...
	* examples/calc++/local.mk: this.
	Adjust the paths which are now rooted in top_srcdir/top_builddir.
	Handle BISON_CXX_WORKS here, instead of the too crude previous
	approach that completely discarded the whole directory.
	($(BISON)): Remove now useless bouncing recipe.
	(calc___CPPFLAGS): New.
	Stay away from -Ilib.
	* Makefile.am, configure.ac, examples/local.mk,
	* examples/calc++/test: Adjust.

	* configure.ac: Pass nostdinc to Automake.
	* src/local.mk, lib/local.mk (AM_CPPFLAGS): Move to...
	* Makefile.am: here.

	* src/local.mk, examples/calc++/Makefile.am (BISON, BISON_IN): Factor
	to...
	* Makefile.am: here.
	* tests/local.mk: Use it.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	variant: fix the example.
	* examples/variant.yy: Adjust to "assert" being now
	"parse.assert".

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: more authors.
	* AUTHORS: here.
	Suggested by Tys Lefering.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: add license headers.
	* examples/calc++/test, examples/variant.yy, AUTHORS, THANKS,
	* tests/atlocal.in, tests/bison.in: Add license headers.
	Reported by Tys Lefering.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: remove obsolete file.
	* etc/make-ChangeLogs: Remove (used for rcs to cvs migration!).
	Reported by Tys Lefering.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: more authors.
	* AUTHORS: here.
	Suggested by Tys Lefering.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: add license headers.
	* examples/calc++/test, examples/variant.yy, AUTHORS, THANKS,
	* tests/atlocal.in, tests/bison.in: Add license headers.
	Reported by Tys Lefering.

2012-02-14  Akim Demaille  <demaille@gostai.com>

	maint: remove obsolete file.
	* etc/make-ChangeLogs: Remove (used for rcs to cvs migration!).
	Reported by Tys Lefering.

2012-02-10  Akim Demaille  <demaille@gostai.com>

	lalr1.cc: also handle syntax_error when calling yylex.
	* data/lalr1.cc (parse): Catch syntax_error around yylex and
	forward them to errlab1.
	* tests/c++.at (Syntax error as exception): Check support for
	syntax exceptions raised by the scanner.
	* NEWS, doc/bison.texinfo: Document it.

2012-02-10  Akim Demaille  <demaille@gostai.com>

	tests: lalr1.cc: check syntax_error.
	* tests/c++.at (Syntax error as exception): New.

2012-02-10  Akim Demaille  <demaille@gostai.com>

	tests: don't require locations uselessly.
	* tests/c++.at (Syntax error discarding no lookahead): Contrary to
	2.5, C++ parsers can work without locations.

2012-02-10  Akim Demaille  <demaille@gostai.com>

	maint: more silent rules.
	* tests/local.mk (TESTSUITE_AT): Include plackage.m4.
	Adjust dependencies.
	Make testsuite.at its first argument.
	(package.m4): Be silent.
	(testsuite): Be silent.
	Use $<.

2012-02-10  Akim Demaille  <demaille@gostai.com>

	skeletons: simplify the protections against "unused" warnings.
	* data/c.m4 (b4_parse_param_use): Also accept optional arguments
	to "use".
	Simplify callers.
	* data/glr.c (yyuserAction): Simplify use of b4_parse_param_use.
	(yy_reduce_print): Don't use b4_parse_param_use, as all the arguments
	_are_ used.
	* data/lalr1.cc (YY_SYMBOL_PRINT): Even when disabled, "use" the
	symbol argument.
	This neutralizes a warning in yypush_ when there are no symbols
	with a semantic values.
	(yy_destroy_): Remove useless "use" of yymsg.

2012-02-10  Akim Demaille  <demaille@gostai.com>

	glr: formatting changes.
	* data/glr.c: Split long strings.

2012-02-08  Akim Demaille  <demaille@gostai.com>

	use a more consistent quoting style.
	See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>.
	Use quotearg as often as possible instead of leaving the choice of
	the quotes to the translators.  Use shorter messages.  Factor similar
	messages to a single format, to make localization easier.

	* src/files.c, src/getargs.c, src/muscle-tab.c, src/reader.c
	* src/scan-code.l, src/scan-gram.l, src/symtab.c:
	Use quote() or quotearg_colon() on printf arguments instead of
	quotes in the format string.
	* data/bison.m4: Keep sync with the changes in muscle-tab.c.

	* tests/skeletons.at, tests/input.at, tests/regression.at: Adjust
	expected messages.

2012-02-08  Akim Demaille  <demaille@gostai.com>

	use a more consistent quoting style.
	See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>.
	Use quotearg as often as possible instead of leaving the choice of
	the quotes to the translators.  Use shorter messages.  Factor similar
	messages to a single format, to make localization easier.

	* src/files.c, src/getargs.c, src/muscle-tab.c, src/reader.c
	* src/scan-code.l, src/scan-gram.l, src/symtab.c:
	Use quote() or quotearg_colon() on printf arguments instead of
	quotes in the format string.
	* data/bison.m4: Keep sync with the changes in muscle-tab.c.

	* tests/skeletons.at, tests/input.at, tests/regression.at: Adjust
	expected messages.

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

	maint: reenable sc_m4_quote_check
	* cfg.mk (local-checks-to-skip): Reenable sc_m4_quote_check.
	* m4/dmalloc.m4: Add quotes.

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

	maint: force "make syntax-check" to pass by skipping failing tests
	* cfg.mk (local-checks-to-skip): Skip all currently-failing tests.
	Remove changelog-check; it's long gone.

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

	maint: remove stray debug code.
	* src/Makefile.am (echo): Remove.

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

	maint: space changes.
	* src/Makefile.am: Use 2 leading spaces for variable definition
	spreading over several lines.

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

	maint: more silent-rules.
	* doc/local.mk, src/local.mk, examples/calc++/Makefile.am: Use
	$(AM_V_GEN) and $(AM_V_at) where appropriate.

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

	do not ignore errors like ENOSPC,EIO when writing to stdout
	Standard output was never explicitly closed, so we could not
	detect failure.  Thus, bison would ignore the errors of writing
	to a full file system and getting an I/O error on write, but only
	for standard output, e.g., for --print-localedir, --print-datadir,
	--help and some verbose output.
	Now, "bison --print-datadir > /dev/full" reports the write failure:
	bison: write error: No space left on device
	Before, it would exit 0 with no diagnostic, implying success.
	This is not an issue for "--output=-" or the other FILE-accepting
	command-line options, because unlike most other GNU programs,
	an output file argument of "-" is treated as the literal "./-",
	rather than standard output.
	* bootstrap.conf (gnulib_modules): Add closeout.
	* src/main.c: Include "closeout.h".
	Use atexit to ensure we close stdout.
	* .gitignore: Ignore new files pulled in via gnulib-tool.

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

	maint: more silent-rules.
	* doc/local.mk, src/local.mk, examples/calc++/Makefile.am: Use
	$(AM_V_GEN) and $(AM_V_at) where appropriate.

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

	do not ignore errors like ENOSPC,EIO when writing to stdout
	Standard output was never explicitly closed, so we could not
	detect failure.  Thus, bison would ignore the errors of writing
	to a full file system and getting an I/O error on write, but only
	for standard output, e.g., for --print-localedir, --print-datadir,
	--help and some verbose output.
	Now, "bison --print-datadir > /dev/full" reports the write failure:
	bison: write error: No space left on device
	Before, it would exit 0 with no diagnostic, implying success.
	This is not an issue for "--output=-" or the other FILE-accepting
	command-line options, because unlike most other GNU programs,
	an output file argument of "-" is treated as the literal "./-",
	rather than standard output.
	* bootstrap.conf (gnulib_modules): Add closeout.
	* src/main.c: Include "closeout.h".
	Use atexit to ensure we close stdout.
	* .gitignore: Ignore new files pulled in via gnulib-tool.

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

	tests: fix expected output.
	* tests/actions.at (YYBACKUP): here.

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

	tests: fix expected output.
	* tests/actions.at (YYBACKUP): here.

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

	maint: fix configure.ac
	Fix commit 1890a2a816dab86c23cc1d0af8fac3986335deb7.

	* configure.ac: Fix variable assignment.

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

	yacc: fix YYBACKUP.
	Reported by David Kastrup:
	https://lists.gnu.org/archive/html/bug-bison/2011-10/msg00002.html.

	* data/yacc.c (YYBACKUP): Accept rhs size.
	Restore the proper state value.
	* TODO (YYBACKUP): Make it...
	* tests/actions.at: a new test case.
	* NEWS, THANKS: Update.

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

	maint: update TODO.
	* TODO (Labeling the symbols): Remove, it's done ("Name references").

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

	maint: update THANKS.
	* THANKS: Update Tys's address, on his request.

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

	maint: fix --gcc-warnings support.
	* configure.ac: Use enable_gcc_warnings instead of enableval,
	which is valid only with AC_ARG_ENABLE.

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

	maint: silent-rules.
	* configure.ac: Ask for silent-rules support.
	Enable it by default.

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

	maint: remove trailing blanks.
	* src/scan-code.l: Here.

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

	yacc: fix YYBACKUP.
	Reported by David Kastrup:
	https://lists.gnu.org/archive/html/bug-bison/2011-10/msg00002.html.

	* data/yacc.c (YYBACKUP): Accept rhs size.
	Restore the proper state value.
	* TODO (YYBACKUP): Make it...
	* tests/actions.at: a new test case.
	* NEWS, THANKS: Update.

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

	maint: update TODO.
	* TODO (Labeling the symbols): Remove, it's done ("Name references").

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

	maint: update THANKS.
	* THANKS: Update Tys's address, on his request.

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

	maint: fix --gcc-warnings support.
	* configure.ac: Use enable_gcc_warnings instead of enableval,
	which is valid only with AC_ARG_ENABLE.

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

	maint: silent-rules.
	* configure.ac: Ask for silent-rules support.
	Enable it by default.

2012-01-25  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to Solaris 10 'diff -u'
	* tests/regression.at (parse-gram.y: LALR = IELR): Port to Solaris 10,
	where "diff -u X X" outputs "No differences encountered"
	instead of outputting nothing.  Reported by Tomohiro Suzuki in
	<http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00101.html>.

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

	build: avoid possibly-replaced fprintf in liby-source, yyerror.c
	* lib/yyerror.c (yyerror): Use fputs and fputc rather than fprintf
	with a mere "%s\n" format.  Always return 0 now, on the assumption
	that the return value was never used anyway.
	Don't include <config.h> after all.  This avoids a problem
	reported by Thiru Ramakrishnan in
	http://lists.gnu.org/archive/html/help-bison/2011-11/msg00000.html
	* cfg.mk: Exempt lib/yyerror.c from the sc_require_config_h_first test.
	* THANKS: Update.

2012-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to Solaris 10 'diff -u'
	* tests/regression.at (parse-gram.y: LALR = IELR): Port to Solaris 10,
	where "diff -u X X" outputs "No differences encountered"
	instead of outputting nothing.  Reported by Tomohiro Suzuki in
	<http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00101.html>.

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

	maint: generate ChangeLog from git log
	* Makefile.am (gen-ChangeLog): New rule.
	(dist-hook): Depend on it.
	(EXTRA_DIST): Distribute the two ChangeLog-* files.
	* bootstrap.conf (gnulib_modules): Add gitlog-to-changelog.
	(bootstrap_post_import_hook): Ensure that ChangeLog exists.
	* build-aux/git-log-fix: New file.
	* ChangeLog-2012: Renamed ...
	* ChangeLog: ... from this.
	* ChangeLog-1998: Renamed ...
	* OChangeLog: ...from this
	* .gitignore: Add ChangeLog.

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

	change more quotes in source, and adjust tests to match
	Run this command to change each `%s' to '%s' in source directories:
	  git grep -l '`%s'\' src djgpp data \
	    |xargs perl -pi -e '$q="'\''";s/`%s$q/$q%s$q/g'
	* data/bison.m4: Affected per the above.
	* djgpp/subpipe.c: Likewise.
	* src/files.c: Likewise.
	* src/getargs.c: Likewise.
	* src/muscle-tab.c: Likewise.
	* src/reader.c: Likewise.
	* tests/glr-regression.at: Adjust to match.
	* tests/input.at: Likewise.
	* tests/push.at: Likewise.
	* tests/skeletons.at: Likewise.

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

	quote consistently and make tests pass with new quoting from gnulib
	Updating to gnulib pulled in new quote and quotarg modules,
	by which quoting is now done like 'this' rather than `this'.
	That change induces many "make check" test failures.  This change
	adapts code and tests so that "make check" passes once again.
	* src/scan-code.l: Quote like 'this', not like `this'.
	* src/scan-gram.l: Likewise.
	* src/symtab.c: Likewise.
	* tests/actions.at: Adjust tests to match.
	* tests/input.at: Likewise.
	* tests/named-refs.at: Likewise.
	* tests/output.at: Likewise.
	* tests/regression.at: Likewise.
	* lib/.gitignore: Regenerate.
	* m4/.gitignore: Likewise.

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

	build: avoid possibly-replaced fprintf in liby-source, yyerror.c
	* lib/yyerror.c (yyerror): Use fputs and fputc rather than fprintf
	with a mere "%s\n" format.  Always return 0 now, on the assumption
	that the return value was never used anyway.
	Don't include <config.h> after all.  This avoids a problem
	reported by Thiru Ramakrishnan in
	http://lists.gnu.org/archive/html/help-bison/2011-11/msg00000.html
	* cfg.mk: Exempt lib/yyerror.c from the sc_require_config_h_first test.
	* THANKS: Update.

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

	build: update gnulib and autoconf submodules to latest (cherry picked from commit 728415f885e5cb8e518c8576fa6e1f541e384130)

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

	build: manually update bootstrap from gnulib, and adapt
	Updating to the latest bootstrap from gnulib involves more of a
	change than usual, and updating to the latest gnulib would involve
	its own set of challenges with the upcoming quoting changes, so
	we update bootstrap manually and separately.
	* bootstrap: Update from gnulib.
	* lib/Makefile.am: Initialize more variables to empty, so that gnulib.mk
	can append to them with "+=".
	* bootstrap.conf (gnulib_mk_hook): Remove.  No longer honored.
	(gnulib_tool_option_extras): Generate gnulib.mk.

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

	maint: include <config.h> first
	* cfg.mk (exclude_file_name_regexp--sc_require_config_h_first):
	Exempt data/glr.c and data/yacc.c from the include-config.h-first
	requirement.

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

	build: include <config.h> from lib/yyerror.c
	* lib/yyerror.c: Include <config.h>.

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

	maint: list djgpp/subpipe.c in po/POTFILES.in
	* po/POTFILES.in: Add djgpp/subpipe.c.

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

	maint: placate the space-TAB syntax-check
	* cfg.mk (exclude_file_name_regexp--sc_space_tab): Exempt
	tests/input.at and tests/c++.at, since they appear to use
	SP-TAB sequences deliberately.
	* OChangeLog: Remove space-before-TAB.

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

	doc: correct typo: s/can not/cannot/
	* doc/bison.texinfo (Bug Reports): s/can not/cannot/
	And remove trailing blanks.

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

	build: generalize etc/prefix-gnulib-mk
	This script hard-coded "libbison" and lib/gnulib.mk.
	Adjust the script to require a --lib-name=$gnulib_name option
	and a FILE argument like lib/$gnulib_mk.
	Also add support for --help and --version.
	* etc/prefix-gnulib-mk: Generalize.
	* bootstrap.conf (bootstrap_post_import_hook): Update its invocation.

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

	maint: get gpl-3.0 from gnulib
	* bootstrap.conf (gnulib_modules): Add gpl-3.0.
	* doc/gpl-3.0.texi: Remove from version control, now that
	we get it via gnulib.
	* doc/.gitignore: Ignore it.

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

	maint: be more robust to gnulib's FOO_H variables.
	* configure.ac: Instead of listing gnulib's variables, look for
	them among AC_SUBST variables.

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

	maint: generate ChangeLog from git log
	* Makefile.am (gen-ChangeLog): New rule.
	(dist-hook): Depend on it.
	(EXTRA_DIST): Distribute the two ChangeLog-* files.
	* bootstrap.conf (gnulib_modules): Add gitlog-to-changelog.
	(bootstrap_post_import_hook): Ensure that ChangeLog exists.
	* build-aux/git-log-fix: New file.
	* ChangeLog-2012: Renamed ...
	* ChangeLog: ... from this.
	* ChangeLog-1998: Renamed ...
	* OChangeLog: ...from this
	* .gitignore: Add ChangeLog.

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

	change more quotes in source, and adjust tests to match
	Run this command to change each `%s' to '%s' in source directories:
	  git grep -l '`%s'\' src djgpp data \
	    |xargs perl -pi -e '$q="'\''";s/`%s$q/$q%s$q/g'
	* data/bison.m4: Affected per the above.
	* djgpp/subpipe.c: Likewise.
	* src/files.c: Likewise.
	* src/getargs.c: Likewise.
	* src/muscle-tab.c: Likewise.
	* src/reader.c: Likewise.
	* tests/glr-regression.at: Adjust to match.
	* tests/input.at: Likewise.
	* tests/push.at: Likewise.
	* tests/skeletons.at: Likewise.

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

	quote consistently and make tests pass with new quoting from gnulib
	Updating to gnulib pulled in new quote and quotarg modules,
	by which quoting is now done like 'this' rather than `this'.
	That change induces many "make check" test failures.  This change
	adapts code and tests so that "make check" passes once again.
	* src/scan-code.l: Quote like 'this', not like `this'.
	* src/scan-gram.l: Likewise.
	* src/symtab.c: Likewise.
	* tests/actions.at: Adjust tests to match.
	* tests/input.at: Likewise.
	* tests/named-refs.at: Likewise.
	* tests/output.at: Likewise.
	* tests/regression.at: Likewise.
	* lib/.gitignore: Regenerate.
	* m4/.gitignore: Likewise.

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

	build: update gnulib and autoconf submodules to latest

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

	build: manually update bootstrap from gnulib, and adapt
	Updating to the latest bootstrap from gnulib involves more of a
	change than usual, and updating to the latest gnulib would involve
	its own set of challenges with the upcoming quoting changes, so
	we update bootstrap manually and separately.
	* bootstrap: Update from gnulib.
	* Makefile.am: Initialize more variables to empty, so that gnulib.mk
	can append to them with "+=".
	* bootstrap.conf (gnulib_mk_hook): Remove.  No longer honored.
	(bootstrap_post_import_hook): Instead, run the same command,
	etc/prefix-gnulib-mk lib/$gnulib_mk, via slightly different API.
	Temporarily disable "bootstrap_sync=true".
	* etc/prefix-gnulib-mk: Don't prepend "lib/" to tokens like -I$(...
	or "\".

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

	maint: include <config.h> first
	* cfg.mk (exclude_file_name_regexp--sc_require_config_h_first):
	Exempt data/glr.c and data/yacc.c from the include-config.h-first
	requirement.

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

	build: include <config.h> from lib/yyerror.c
	* lib/yyerror.c: Include <config.h>.

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

	maint: list djgpp/subpipe.c in po/POTFILES.in
	* po/POTFILES.in: Add djgpp/subpipe.c.

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

	maint: placate the space-TAB syntax-check
	* cfg.mk (exclude_file_name_regexp--sc_space_tab): Exempt
	tests/input.at and tests/c++.at, since they appear to use
	SP-TAB sequences deliberately.
	* OChangeLog: Remove space-before-TAB.

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

	maint: remove final trailing space
	* src/scan-gram.l (%): Remove single space at end of line.

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

	maint: get gpl-3.0 from gnulib
	* bootstrap.conf (gnulib_modules): Add gpl-3.0.
	* doc/gpl-3.0.texi: Remove from version control, now that
	we get it via gnulib.
	* doc/.gitignore: Ignore it.

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

	doc: correct typo: s/can not/cannot/
	* doc/bison.texinfo (Bug Reports): s/can not/cannot/
	And remove trailing blanks.
