2021-09-25  Akim Demaille  <akim.demaille@gmail.com>

	version 3.8.2
	* NEWS: Record release date.

2021-09-25  Akim Demaille  <akim.demaille@gmail.com>

	tests: Apple clang issues warning on C++11 features
	$ cat /tmp/foo.cc
	using foo = int;
	foo f;
	$ clang++ -Wc++11-extensions -c /tmp/foo.cc
	/tmp/foo.cc:1:13: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
	using foo = int;
	            ^
	1 warning generated.
	$ clang++ --version
	Apple clang version 11.0.0 (clang-1100.0.33.17)
	Target: x86_64-apple-darwin18.7.0
	Thread model: posix
	InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

	* tests/local.at (AT_COMPILE_CXX): Make sure -std=c++11 is passed when
	running glr2.cc.  It may be overridden by another flag in CXXFLAGS
	afterwards.

2021-09-25  Akim Demaille  <akim.demaille@gmail.com>

	avoid using atoi
	* cfg.mk: Disable sc_indent as auto indent is too invasive for now.
	Enable sc_prohibit_atoi_atof, except where we don't care.
	* src/location.c, src/muscle-tab.c: Use strtol instead of atoi.

2021-09-24  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2021-09-18  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	To get

	commit 7818455627c5e54813ac89924b8b67d0bc869146
	Author: Bruno Haible <bruno@clisp.org>
	Date:   Fri Sep 17 22:22:50 2021 +0200

	    threadlib: Avoid crashes in thread-related functions on Cygwin 3.2.0.

	    Reported by Brian Inglis via Akim Demaille in
	    <https://lists.gnu.org/archive/html/bug-gnulib/2021-09/msg00063.html>.

	    * m4/threadlib.m4 (gl_WEAK_SYMBOLS): Force a "guessing no" result on
	    Cygwin.

2021-09-18  Akim Demaille  <akim.demaille@gmail.com>

	c++: use YY_NOEXCEPT where it helps
	Suggested by Don Macpherson.
	<https://github.com/akimd/bison/issues/80>

	* data/skeletons/c++.m4, data/skeletons/glr2.cc,
	* data/skeletons/lalr1.cc, data/skeletons/stack.hh: Use YY_NOEXCEPT
	where it helps constructors.

2021-09-13  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-09-13  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: semantic_option: use a symbol
	* data/skeletons/c++.m4 (basic_symbol): Add assignment operators.
	* data/skeletons/glr2.cc (semantic_option): Replace yytoken, yyvalue
	and yylocation by yyla.

2021-09-13  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: don't publish move ctor to lalr1.cc
	These operators were introduced in "c++: add move assignments to the
	symbol type" (fdaedc780af0dd678a4f4fa3175a201a553be20a) for glr2.cc.

	* data/skeletons/c++.m4: Define them for glr2.cc only.

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

	glr2.cc: simplify semantic_option
	* data/skeletons/glr2.cc (semantic_option): Simplify the rule-based
	constructor.  This shows that it should be easy to use a symbol_kind,
	instead of the kind/value/location triple.

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

	glr2.cc: we require C++11
	* data/skeletons/glr2.cc: So no need for C++98 compatibility.

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

	glr2.cc: introduse b4_glr2_cc_if
	* data/skeletons/bison.m4 (b4_glr2_cc_if): Intro.
	* data/skeletons/c++.m4: use.

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

	glr2.cc: don't pass %parse-param to destroy
	I regret that %destructor and %printer give access to the %parse-param
	in lalr1.cc, since that prevents them from being implemented as a
	simple destructor and operator<<.  Let's not repeat the mistake in
	glr2.cc.  In addition, fixes a name conflict we have currently in
	tests 566 568 570 657:

	     calc.cc:1395:85: error: declaration shadows a field of 'calc::parser' [-Werror,-Wshadow]
	     void glr_state::destroy (char const* yymsg, calc::parser& yyparser, semantic_value *result, int *count, int *nerrs)
	                                                                                         ^
	     calc.hh:441:21: note: previous declaration is here
	         semantic_value *result;
	                         ^

	With this commit, the whole test suite passes for glr2.cc.

	* data/skeletons/glr2.cc (glr_state::destroy): Don't take the user
	arguments.

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

	glr2.cc: kill trailing white spaces
	Fixes several calc tests.

	Tests 566 568 570 657 still fail because of a name clash when using
	%parse-param:

	    calc.cc:1395:85: error: declaration shadows a field of 'calc::parser' [-Werror,-Wshadow]
	    void glr_state::destroy (char const* yymsg, calc::parser& yyparser, semantic_value *result, int *count, int *nerrs)
	                                                                                        ^
	    calc.hh:441:21: note: previous declaration is here
	        semantic_value *result;
	                        ^

	* data/skeletons/glr2.cc: Fix indentation/trailing spaces.

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

	glr2.cc: check linking conflicts
	* tests/headers.at (Several Headers): Link two glr2.cc parsers.

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

	glr2.cc: move strong_index_alias into the unnamed namespace
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: use only symbol_kind_type, not yysymbol_kind_t
	* data/skeletons/glr2.cc: here.
	And prefer the unnamed namespace to static.

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

	glr2.cc: prefer using, and remove useless type aliases
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: put glr_state_set and glr_stack_item in unnamed namespace
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: move state_stack into the unnamed namespace
	* data/skeletons/glr2.cc: here.
	Prefer `using` to `typedef`, this is C++11.
	Use the type alias we introduced.

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

	glr2.cc: style: clarify control flow
	* data/skeletons/glr2.cc (yypreference): Be more functional-style.

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

	glr2.cc: move glr_stack and glr_state into the parser class
	In order to be able to link several glr2.cc parser together, we cannot
	have glr_stack and glr_state be in no namespace.  Putting them in the
	unnamed namespace is not doable, since we need to fwd declare them in
	the parser.  Putting them in the specified namespace is not enough
	either, since some users would like to be able to put several parsers
	in the same name, only differing by the class name.

	* data/skeletons/glr2.cc (glr_state, glr_stack): Move into yy::parser.

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

	glr2.cc: put create_state_set_index in unnamed namespace
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: prefer unnamed namespace to 'static'
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: put semantic_option into an unnamed namespace
	If we link several glr2.cc parsers together, we get linking failures
	because of duplicate symbols.

	* data/skeletons/glr2.cc (semantic_option::indexIn)
	(semantic_option::next): Remove the useless overloads.

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

	glr2.cc: don't publish YY_EXCEPTIONS
	We don't need them in the header file.

	* data/skeletons/glr2.cc (YY_EXCEPTIONS): Define only in the
	implementation file.
	* tests/headers.at (Several Parsers): Also check glr2.cc.

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

	c++: demonstrate custom error messages in the examples
	Let's use c++/glr to demonstrate custom error messages in C++ (not
	just in glr2.cc).

	* examples/c++/glr/c++-types.yy (report_syntax_error): New.
	* examples/c++/glr/c++-types.test: Adjust.
	* examples/c/bistromathic/parse.y: Comment changes.
	* tests/local.at (AT_YYERROR_DEFINE(c++)): Use a nicer way to print
	the lookakead's name.

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

	glr2.cc: custom error messages
	Reported by Tom Shields <thomas.evans.shields@icloud.com>.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00003.html>

	* data/skeletons/glr2.cc (context): New.
	Use it to generate the error messages.
	Add support for custom error messages.
	* tests/calc.at: Check support for custom error messages.

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

	glr2.cc: start the transition to using symbol_type
	Currently glr2.cc uses three variables/struct members to denote the
	symbols' kind (or state), value and location.  lalr1.cc has two types
	for "complete" symbols: symbol_type and stack_symbol_type.  Let's use
	that model in glr2.cc too.

	For a start use yyla (a symbol_type) to denote the lookahead, instead
	of the triple yytoken, yylval and yylloc.  This will make easier the
	introduction of the "context" subclass, used in parse.error=custom.

	It simplifies the code in several places.  For instance from:

	    symbol_kind_type yytoken_current = this->yytoken;]b4_variant_if([[
	    value_type yylval_current;
	    ]b4_symbol_variant([this->yytoken],
	                       [yylval_current], [move], [this->yylval])], [[
	    value_type yylval_current = this->yylval;]])[]b4_locations_if([
	    location_type yylloc_current = this->yylloc;])[

	to:

	    symbol_type yyla_current = std::move (this->yyla);

	* data/skeletons/glr2.cc (yytoken, yylval, yylloc): Replace by...
	(yyla): this.
	Adjust all dependencies.
	(yyloc_default): Remove, unused.
	* tests/c++.at, tests/glr-regression.at, tests/types.at: C++11 is
	required for glr2.cc.
	Adjust to changes in glr2.cc.

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

	c++: add move assignments to the symbol type
	This will be used in glr2.cc, which requires C++11.

	* data/skeletons/c++.m4 (basic_symbol, by_kind): Add move assignment.

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

	c++: avoid using the obsolete names
	* data/skeletons/c++.m4: Don't define obsolete identifiers in the case
	of glr2.cc.  Let's not start with technical debt.
	* data/skeletons/glr2.cc, data/skeletons/lalr1.cc,
	* data/skeletons/variant.hh: Use token_kind_type, not token_type.
	* tests/c++.at, tests/local.at: Use value_type, not semantic_type.

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

	regen

2021-09-11  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.

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

	version 3.8.1
	* NEWS: Record release date.

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

	portability: don't use strtof
	It is not available on HP-UX 11i.
	Reported by Larkin Nickle <me@larbob.org>.
	<https://lists.gnu.org/r/bug-bison/2021-09/msg00012.html>

	Gnulib provides no replacement, but anyway we should be using doubles,
	since difftime uses doubles.

	* bootstrap.conf: We want portability on stdtod.
	* src/counterexample.c: Use double, not float, for time measurements.

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

	yacc: declare yyerror/yylex only when POSIXLY_CORRECT
	The recent changes to comply with POSIX are breaking Automake's test
	suite.
	Reported by Kiyoshi Kanazawa.
	<https://lists.gnu.org/r/bug-bison/2021-09/msg00005.html>

	To limit the impact of POSIX changes, bind them to $POSIXLY_CORRECT.
	Suggested by Karl Berry.
	<https://lists.gnu.org/r/bug-bison/2021-09/msg00009.html>

	The existing `maintainer-check-posix` Make target checks these
	changes.

	* src/getargs.h, src/getargs.c (set_yacc): New.
	Use it.
	* data/skeletons/bison.m4 (b4_posix_if): New.
	* data/skeletons/yacc.c (b4_declare_yyerror_and_yylex): Use it.
	* doc/bison.texi, tests/local.at: Adjust.

2021-09-07  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.

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

	version 3.8
	* NEWS: Record release date.

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

	news: update

2021-09-02  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.

2021-09-02  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.91
	* NEWS: Record release date.

2021-09-02  Akim Demaille  <akim.demaille@gmail.com>

	tests: disable "Multistart reports"
	For some reason this test fails on Solaris/x86.  But multistart is not
	part of 3.8, so we can postpone the debugging of this issue.
	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00027.html>

	* tests/report.at (Multistart reports): Comment out.

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

	style: c++: formatting changes
	* data/skeletons/variant.hh, data/skeletons/glr2.cc: Fix space before
	paren issue.

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

	style: rename stmtMerge as stmt_merge
	Follow the GNU Coding Style.

	* doc/bison.texi, examples/c++/glr/c++-types.yy,
	* examples/c/glr/c++-types.y, tests/cxx-type.at: s/stmtMerge/stmt_merge/g.

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

	c++: beware of Visual C++ limitations
	Contrary to what commit d8cc6b073e2802d871a16dc62418a7eb62ed2216 "c++:
	shorten the assertions that check whether tokens are correct"
	believed, MS Visual C++'s preprocessor limitation is not on the input
	line length, but on the size of the line holding the full C++
	statement.

	Reported by Vince Huffaker <vince@vincejulie.com>
	<https://lists.gnu.org/r/help-bison/2021-08/msg00003.html>

	* data/skeletons/variant.hh (_b4_symbol_constructor_define): Hide the
	assertion from Visual C++.

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

	tests: don't postprocess stderr with sed
	On Solaris, sed throws away the NUL bytes from the stream, even in C
	locale.  So instead of postprocessing bison's stderr to neutralize
	changes in value of `argv[0]`, use an envvar to actually neutralize
	variations of `argv[0]` during tests.

	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00025.html>

	* src/main.c (main): Change `argv[0]` if BISON_PROGRAM_NAME is
	defined.
	* tests/bison.in: No longer mess with stderr, just pass
	the expected BISON_PROGRAM_NAME value.

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	CI: don't require Autoconf 2.71

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: don't demonstrate multistart, which is not part of 3.8
	Besides, for mysterious reasons, this fails on some environment.
	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/archive/html/bug-bison/2021-08/msg00008.html>

	* examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/parse.y,
	* examples/c/lexcalc/scan.l: Revert to a single-start example.

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	tests: grep -E is not portable
	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00008.html>

	* tests/calc.at: Use $EGREP.

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: require C++11
	Reported by Dagobert Michelsen.
	https://lists.gnu.org/r/bug-bison/2021-08/msg00006.html

	* m4/bison-cxx-std.m4 (_BISON_CXXSTD_98_snippet): We don't need
	vector::data, it was only for glr2.cc, which is C++11 anyway.
	(_BISON_CXXSTD_11_snippet): We need vector::data and std::swap on
	arrays.
	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): We don't need
	vector::data.
	* tests/local.at (AT_COMPILE_CXX): Skip when glr2.cc and no support
	for C++11.

2021-08-13  Akim Demaille  <akim.demaille@gmail.com>

	readme: add D

2021-08-13  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.

2021-08-13  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.90
	* NEWS: Record release date.

2021-08-13  Akim Demaille  <akim.demaille@gmail.com>

	build: ignore syntax-check's file_system check on Doxyfile
	* cfg.mk: Here.

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

	tests: fix incorrect test case
	In c2ba260487927a4cdf061fae10fdd1b387ca3d95 ("glr.c: fix signature
	when using custom error messages"), I meant to add a test case for C,
	not C++.  It does not work in C++.

	* tests/calc.at: Run for glr.c, not glr.cc.

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

	gnulib: update

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

	news: be clear that glr2.cc is C++11

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

	build: modernize to newer Autoconf releases
	* configure.ac: here.

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

	build: reject C++ compilers that don't support std::vector::data
	GCC 4.2 on macOS claims to support C++98, but does not feature it.

	input.cc: In member function 'void state_stack::yycompressStack()':
	input.cc:1774: error: 'class std::vector<glr_stack_item, std::allocator<glr_stack_item> >' has no member named 'data'

	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz>.

	* m4/bison-cxx-std.m4 (_BISON_CXXSTD_98_snippet): Check for it.
	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Ditto.

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

	build: check for C++ 20 and 2b
	C++20 is released.

	* configure.ac, m4/bison-cxx-std.m4, tests/atlocal.in,
	* tests/local.at: Replace 2a with 20, and add support for 2b.

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

	tests: remove obsolete checks
	* tests/atlocal.in: It was an error for tests to depend on gnulib:
	they must not, as gnulib would hide portability issues that we want to
	catch.  So this piece of code is no longer useful, and must not be
	useful.

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

	tests: be robust to old versions of xlstproc
	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz>

	* tests/report.at (AT_CHECK_HTML): New.
	Use it.

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

	c: fix _Noreturn support detection
	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/ticket/59927#comment:59> and
	<https://trac.macports.org/ticket/59927#comment:62>.

	* data/skeletons/c.m4: Fix typo.

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

	lalr1.cc: style changes
	* data/skeletons/lalr1.cc: Formatting changes.
	Use more `const`, as in glr2.cc.

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

	glr.c: fix signature when using custom error messages
	Reported by Tom Shields <thomas.evans.shields@icloud.com>.

	* data/skeletons/glr.c (yypcontext_location): Fix return type.
	* tests/calc.at: Check the case pure, location, custom error messages.

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

	tests: check symbol/token renumbering
	In some extreme situations, with lots of useless tokens, Bison was
	numbering them incorrectly, which resulted in a broken grammar.
	<https://lists.gnu.org/r/bison-patches/2021-03/msg00001.html>
	commit a774839ca873d1082f79ba3c4eecc1e242a28ce1.

	* tests/regression.at (Useless Tokens): New.

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

	style: rename b4_lex as b4_yylex
	For consistency with b4_yyerror_formals, etc.

	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/d.m4,
	* data/skeletons/glr.c, data/skeletons/glr2.cc,
	* data/skeletons/java.m4, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
	* data/skeletons/yacc.c
	(b4_lex, b4_lex_formals): Rename as...
	(b4_yylex, b4_yylex_formals): these.

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

	yacc: comply with recent POSIX updates: declare yyerror and yylex
	In POSIX Yacc mode, declare yyerror and yylex unless already #defined,
	or if YYERROR_IS_DECLARED/YYLEX_IS_DECLARED are defined (for
	consistency with Bison's YYSTYPE_IS_DECLARED/YYLTYPE_IS_DECLARED).
	See <https://austingroupbugs.net/view.php?id=1388#c5220>.

	* data/skeletons/c.m4 (b4_function_declare): Resurect.
	(b4_lex_formals): Since we will possibly expose this prototype
	in the header, take the prefix into account.
	* data/skeletons/yacc.c (b4_declare_yyerror_and_yylex): New.
	(b4_shared_declarations): Use it.

	* tests/local.at (AT_YACC_IF): New.
	When in Yacc mode, set the `yacc` Autotest keyword.
	(AT_YYERROR_DECLARE(c)): Don't declare in Yacc mode,
	to avoid clashes (since this signature is static).
	(AT_YYERROR_DEFINE(c)): Don't define as static in Yacc mode.
	* tests/regression.at (Early token definitions with --yacc): Specify
	that we are in Yacc mode.

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

	build: enable -Wmismatched-dealloc
	* configure.ac (warn_common): Here.

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

	gnulib: update

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

	bistromathic: beware of portability issues with readline
	In some cases readline emits a trailing spaces after the last
	suggestion, which results in errors such as:

	```
	-(       -       atan    cos     exp     ln      number  sin     sqrt$
	+(       -       atan    cos     exp     ln      number  sin     sqrt    $
	```

	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/ticket/59927#comment:48>
	<https://trac.macports.org/attachment/ticket/59927/bison-3.7.6-test-10.13.test-suite.log>

	* examples/test (run): Add support for -t.
	* examples/c/bistromathic/bistromathic.test: Use it.

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

	d: prepare to be able to run LAC tests
	Unfortunately it seems to be quite difficult to have "LAC: Exploratory
	stack" run for D.

	* data/skeletons/lalr1.d: We need File when traces are enabled.
	* tests/local.at (AT_YYLEX_DEFINE(d)): New.
	* tests/regression.at: Prepare for D, but don't run it, it does not
	work.

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

	tests: factor iterating over skeletons
	* tests/local.at (AT_FOR_EACH_SKEL): New.
	Use where appropriate.
	* data/skeletons/lalr1.d: Reject -d.
	* tests/input.at, tests/scanner.at: Also check D.

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

	m4: catch suspicions of unevaluated macros
	Check in m4's output if there are sequences such as m4_foo or b4_foo,
	which are probably resulting from incorrect m4 processing.

	It actually already is useful:

	- it caught a leaking b4_lac_if leaking from glr.c, where LAC is not
	  supported, hence b4_lac_if is not defined.

	- it also caught references to location.hh in position.hh when
	  location.hh does not exist.

	- while making "Code injection" robust to these new warnings (it is
	  its very purpose to let b4_canary pass unevaluated), I saw that it
	  did not check lalr1.d, and when adding lalr1.d, it revealed it did
	  underquote ocurrences of token value types.

	* src/scan-skel.l (macro): New abbreviation.
	Use it.
	* data/skeletons/glr.c: Don't use b4_lac_if, we don't have it.
	* data/skeletons/location.cc: Don't generate position.hh when we don't
	generate location.hh.
	* data/skeletons/d.m4 (b4_basic_symbol_constructor_define): Fix
	underquotation.
	* data/skeletons/bison.m4 (b4_canary): New.
	* tests/input.at (Code injection): Use it, and check lalr1.d too.

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

	style: formatting changes in scan-code.l
	* src/scan-code.l: Fix indentation.

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

	doc: avoid #define YYDEBUG in C++
	* doc/bison.texi (Enabling Traces): here.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: extract AT_LOCATION_PRINT_DECLARE and AT_LOCATION_PRINT_DEFINE
	* tests/local.at (AT_LOCATION_PRINT_DECLARE)
	(AT_LOCATION_PRINT_DEFINE): New.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: rename AT_YACC_IF as AT_YACC_C_IF
	In data/, b4_yacc_if refers to %yacc, not yacc.c.

	* tests/local.at (AT_YACC_IF): Rename as...
	(AT_YACC_C_IF): this.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	doc: more pointers to the examples
	* doc/bison.texi (Infix Calc): Here.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	git: add diff patterns for Autotest and Texinfo

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	CI: fix the GCC 9 build

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	todo: d: push and token ctors are done

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	doc: refer to the examples
	* doc/bison.texi: Point to rpcalc, mfcalc, simple.y, calc++, c/glr and
	c++/glr.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	examples: modernize the example Makefiles
	* examples/c++/Makefile, examples/c++/calc++/Makefile,
	* examples/c++/glr/Makefile, examples/c/bistromathic/Makefile,
	* examples/c/calc/Makefile, examples/c/glr/Makefile,
	* examples/c/lexcalc/Makefile, examples/c/mfcalc/Makefile,
	* examples/c/pushcalc/Makefile, examples/c/reccalc/Makefile,
	* examples/c/rpcalc/Makefile, examples/d/calc/Makefile,
	* examples/d/simple/Makefile, examples/java/calc/Makefile,
	* examples/java/simple/Makefile:
	Use --html to generate *.html directly.
	No longer demonstrate --xml.
	No longer show rules for xml to html.
	Use --header, not --defines.
	Use --graph without specifying the output file now that we
	generate *.gv by default.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	doc: glr: document typed mergers
	See <https://lists.gnu.org/r/help-bison/2020-12/msg00016.html>.

	* doc/bison.texi (Merging GLR Parses): document typed mergers.
	And avoid #define YYSTYPE.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	style: tests: rebox comments
	* tests/glr-regression.at: here.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	news: update
	In particular, announce lalr1.d.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix spello
	* doc/bison.texi (Multiple start-symbols): here.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	scan: fix typo in UTF-8 escape
	We had:

	```
	-mbchar    ...|\xF0[\x\90-\xBF]([\x80-\xBF]{2})|...
	+mbchar    ...|\xF0[\x90-\xBF]([\x80-\xBF]{2})|...
	```

	so a precise sequence that matches the incorrect regex can let NUL
	bytes pass through, which triggers an assertion violation downstream.
	It is a pity that Flex does not report an error for such input.

	Reported by Ahcheong Lee <ahcheong.lee@gmail.com>.
	<https://lists.gnu.org/r/bug-bison/2021-04/msg00003.html>

	* src/scan-gram.l (mbchar): Fix the bad regex.
	* tests/input.at (Invalid inputs): Check that case.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	todo: POSIX yacc and prototypes

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: update Doxygen template file
	* doc/Doxyfile.in: here.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: a bit of editing
	* doc/bison.texi: Use @samp{...}, not "..." for pieces of code.
	Use @samp{...}, not @command{...} for command lines.
	Promote %header/--header over %defines/--defines.
	Spellcheck.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-08-01  Alyssa Ross  <hi@alyssa.is>

	getargs: don't translate first line of --version
	<https://lists.gnu.org/r/bison-patches/2021-06/msg00002.html>

	* src/getargs.c (version): here.

2021-08-01  Akim Demaille  <akim.demaille@gmail.com>

	all: fix confusion between token ctor and symbol ctor
	The symbol constructors are genuine constructors.  Token constructors
	are plain functions that construct tokens.

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

	d: minor clean up
	* doc/bison.texi: Use @samp, not "...", around pieces of code.
	* examples/d/calc/calc.y: Don't promote %union.

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

	gnulib: update

2021-06-06  Adela Vais  <adela.vais99@gmail.com>

	d: demonstrate the token constructors
	* examples/d/calc/calc.y: Use the token constructors in the 'calc' example.

2021-04-11  Adela Vais  <adela.vais99@gmail.com>

	d: update documentation
	* doc/bison.texi: Various fixes.
	(D Push Parser Interface, D Complete Symbols): New sections.

2021-04-11  Adela Vais  <adela.vais99@gmail.com>

	d: demonstrate the push parser
	* examples/d/calc/calc.y: Use a parser of type 'push' in the calc
	example.

2021-04-11  Adela Vais  <adela.vais99@gmail.com>

	d: add push parser support
	Support the push-pull directive with the options pull, push and both.
	Pull remains the default option.

	* data/skeletons/d.m4: Add user aliases for the push parser's return
	values: PUSH_MORE, ABORT, ACCEPT.
	* data/skeletons/lalr1.d: Add push parser support.
	* tests/calc.at: Test it.

2021-03-26  Adela Vais  <adela.vais99@gmail.com>

	d: add token constructors support
	The user can return from yylex() by calling the Symbol method of the
	same name as the TokenKind reported, and adding the parameters for
	value and location if necessary.  These methods generate compile-time
	errors if the parameters are not correlated.  Token constructors work
	with both %union and api.value.type union.

	* data/skeletons/d.m4: Here.
	* tests/calc.at: Test it.

2021-03-26  Akim Demaille  <akim.demaille@gmail.com>

	d: add api.value.type union support
	The union of the values is handled by the backend.
	In D, unions can hold classes, structs, etc., so this is more similar
	to the C++ api.value.type variant.

	* data/skeletons/d.m4, data/skeletons/lalr1.d: Here.
	* tests/calc.at, tests/local.at: Test it.

2021-03-26  Adela Vais  <adela.vais99@gmail.com>

	d: rewrite Symbol's constructors in M4
	The D code was becoming too complex.
	M4 is easier to maintain in the long run.

	* data/skeletons/d.m4: Here.

2021-03-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

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

	files: please syntax-check
	* src/files.c (string_free): syntax-check does not want us to cast
	arguments to free.

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

	Merge 3.7.6 into master
	* maint:
	  maint: post-release administrivia
	  version 3.7.6
	  yacc: fix push parser
	  tables: fix again the handling of useless tokens

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

2021-03-08  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.6
	* NEWS: Record release date.

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

	doc: don't mention YY_LOCATION_PRINT
	* doc/bison.texi (Syntax Error Reporting Function): Don't refer to
	YY_LOCATION_PRINT, it is a private internal detail.

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

	yacc: fix push parser
	When a pstate is used for multiple successive parses, some state may
	leak from one run into the following one.  That was introduced in
	330552ea499ca474f65967160e9d4e50265f9631 "yacc.c: push: don't clear
	the parser state when accepting/rejecting".

	Reported by Ryan <dev@splintermail.com>
	https://lists.gnu.org/r/bug-bison/2021-03/msg00000.html

	* data/skeletons/yacc.c (yypush_parse): We reusing a pstate from a
	previous run, do behave as if it were the first run.
	* tests/push.at (Pstate reuse): Check this.

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

	tables: fix again the handling of useless tokens
	The right-shift added in c22902e360e0fbbe9fd5657dcf107e03166da309
	("tables: fix handling for useless tokens") is incorrect.  In
	particular, we need to reset the "new" bits.

	Reported by Balázs Scheidler.
	https://github.com/akimd/bison/issues/74

	* src/tables.c (pos_set_set): Fix the right-shift.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	html: fix memory leak
	* src/print-xml.c (print_html): Free allocated memory.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	output: cache the mapped file names
	Don't repeatedly call malloc/free for each call to map_file_name.

	* bootstrap.conf: We need hash-map.
	* src/files.h, src/files.c (map_file_name): The caller must not free
	the result.
	Adjust callers.
	(mapped_dir_prefix, spec_mapped_header_file): Remove.
	* src/files.c
	(map_file_name): Rename as...
	(map_file_name_alloc): this.
	(mapped_files, map_file_name, string_equals, string_hash, string_free):
	New.

2021-02-26  Joshua Watt  <jpewhacker@gmail.com>

	output: use mapped file name for symbols
	Applies the file name mapping before exporting it as a symbol. This
	allows the symbols to correctly respect the --file-prefix-map command
	line option.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* src/files.c, src/files.h: Save horizontal space.
	Prefer `res` for returned values.
	Put the doc into the header.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-02-25  Joshua Watt  <jpewhacker@gmail.com>

	doc: fix documented function name
	* data/README.md: Fix the name of a referenced function to match the
	name in code.

2021-02-25  Akim Demaille  <akim.demaille@gmail.com>

	regen

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: printing locations
	Document YYLOCATION_PRINT.

	* doc/bison.texi (Printing Locations): New node.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: improve some function prototypes
	* examples/c/bistromathic/parse.y, examples/c/glr/c++-types.y,
	* examples/c/lexcalc/parse.y: Use const where appropriate.
	Avoid `yy` prefixes where it does not make sense.
	Avoid the `p` prefix for pointers.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: use YYLOCATION_PRINT
	* examples/c/bistromathic/parse.y, examples/c/glr/c++-types.y,
	* examples/c/lexcalc/parse.y: Don't use the private internal detail
	`YY_LOCATION_PRINT`, use `YYLOCATION_PRINT`.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	c: rename YY_LOCATION_PRINT as YYLOCATION_PRINT and make it public
	It is very helpful to be able to look at the locations in the debug
	traces, let's provide the users with (i) a means to do that for their
	location types, and (ii) a public macro to print locations when debug
	traces are enabled.

	* data/skeletons/c.m4 (b4_yy_location_print_define): Rename as...
	(b4_yylocation_print_define): this.
	Define YYLOCATION_PRINT instead of YY_LOCATION_PRINT.
	Ensure backward compatibility for those who might have defined/used
	YY_LOCATION_PRINT in spite the warnings.
	Adjust dependencies.
	* data/skeletons/glr2.cc: We don't use YYLOCATION_PRINT here.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: do not rely on YY_LOCATION_PRINT
	* examples/c/bistromathic/parse.y (location_print): New.
	Use it.

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

	c: stop defining YY_LOCATION_PRINT when locations are not enabled
	* data/skeletons/c.m4 (b4_yy_location_print_define): here.

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

	graph: output foo.gv by default, instead of *.dot
	That change was started in Bison 3.4.  The announcement for 3.7 stated
	that in Bison 3.8 we would use *.gv by default.

	* src/files.c (compute_output_file_names): spec_graph_file defaults
	too *.gv.
	* doc/bison.texi, examples/c++/calc++/local.mk, tests/output.at:
	Adjust.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	tests: adjust to the removal of YYPRINT
	* tests/regression.at: here.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc: remove support for YYPRINT
	Its removal was annonced several times in NEWS (for Bison 3.5, 3.6, 3.7).

	* data/skeletons/c.m4, data/skeletons/yacc.c: Remove support for YYPRINT.
	* NEWS: Fix the mess introduced by the merge.
	Document the removal of YYPRINT.
	* doc/bison.texi (The YYPRINT Macro): Remove.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: issue a compile-time warning when #define YYSTYPE is used
	Using #define YYSTYPE has always been strongly discouraged in C++.
	Macros are dangerous and can result in subtle bugs.
	https://lists.gnu.org/r/bug-bison/2020-12/msg00007.html

	Maybe some people are currently using #define YYSTYPE.  Instead of
	dropping support right now, first issue a warning.  Bison can "see" if
	YYDEBUG is defined (it could even be on the command line), only the
	compiler knows.  Unfortunately `#warning` is non-portable, and
	actually GCC even dies on it when `-pedantic` is enabled.  So we need
	to use `#pragma message`.  We must make it conditional as some
	compilers might not support it, but it doesn't matter if only _some_
	compilers emit the warning: it should be enough to catch the attention
	of the developers.

	* data/skeletons/c++.m4: Issue a warning when the user defined
	YYSTYPE.
	* tests/actions.at: Don't #define YYSTYPE.
	* tests/headers.at (Several parsers): Ignore the YYSTYPE in the
	warning.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: make it clear that #define YYSTYPE is not supported
	We have been accepting this for years, but it is deprecated: people
	are expecting to define api.value.type instead.

	* doc/bison.texi: Make it clear that YYSTYPE and YYLTYPE are for C
	only.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: stop referring to YYSTYPE in yylex
	* data/skeletons/glr2.cc, data/skeletons/lalr1.cc (b4_lex): Don't
	refer to YYSTYPE, but to value_type.
	Note that this is "symbolic" in the sense that these values are never
	used by b4_function_call.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	CI: try GCC 11 and Clang 11

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-01-31  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: no longer be part of b4_glr_cc_if
	We are fully independant of glr.c/glr.cc, we no longer need to pretend
	we are glr.cc.

	* data/skeletons/bison.m4: here.

2021-01-31  Akim Demaille  <akim.demaille@gmail.com>

	m4: provide macros for api.value.type=union
	* data/skeletons/bison.m4 (b4_union_if): New.
	Remove support for "%define variant", which was deprecated long ago.
	* tests/local.at (AT_UNION_IF): New.

2021-01-30  Akim Demaille  <akim.demaille@gmail.com>

	traces: display the Bison version
	* src/main.c (main): When traces are enabled, display the Bison
	version.
	* tests/conflicts.at, tests/report.at, tests/sets.at:
	Use AT_PACKAGE_VERSION (for package.m4) instead of post-processing the
	output.

2021-01-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: run the main test suite on "make check"
	Automake appears to not recognize "check-local" when it is not a
	isolated target.  Fixes 77a8b84fc8bbe39dc231a1f657fd56a50fac5855.

	* tests/local.mk (check-local): Make it visible to Automake.

2021-01-30  Adela Vais  <adela.vais99@gmail.com>

	d: tests: various style fixes
	* tests/calc.at, tests/scanner.at: Here.
	(yylex): Report values directly, without storing them to the union
	first.

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

	Update URLs to prefer https: to http:
	Also, fix a few http: URLs that were no longer working.

2021-01-29  Paul Eggert  <eggert@cs.ucla.edu>

	Update URLs to prefer https: to http:
	Also, fix a few http: URLs that were no longer working.

2021-01-27  Akim Demaille  <akim.demaille@gmail.com>

	tests: provide check-examples and check-tests
	* examples/local.mk (check-examples): New.
	* tests/local.mk (check-tests): New.
	* README-hacking.md: Document them.

2021-01-27  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: use gettext for all the messages
	* examples/c/bistromathic/parse.y: Add missing calls to _.

2021-01-24  Adela Vais  <adela.vais99@gmail.com>

	d: tests: avoid mixing output from reportSyntaxError and getExpectedTokens
	Function reportSyntaxError buffers and prints the message at the end.

	* tests/local.at: Here.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix destructor support
	Currently glr2.cc does not use 'symbol's everywhere, in various places
	it also uses yykind, yyval and yyloc "by hand".  So we need two
	different calls for user-defined constructors: once for ~symbol,
	another for yy_destroy_.  Both need to call the user destructors with
	different calling conventions.

	* data/skeletons/glr2.cc (b4_symbol_action): Rename as...
	(b4_symbol_action_for_yyval): this.
	(b4_symbol_action): New, taken from lalr1.cc.
	(yy_destroy_, yy_symbol_value_print_): Use b4_symbol_action_for_yyval.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: beware of types with angle brackets
	For C++98, avoid "yyval.as<std::list<int>>".

	* data/skeletons/glr2.cc (b4_call_merger): Add spaces within "<...>".

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	package: fix details after merge with 3.7.5
	* TODO, cfg.mk: Update.
	* src/parse-gram.c, src/parse-gram.h: Regen.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	Merge tag 'v3.7.5'
	Three new commits:

	commit 8358090292e21c61a583da542bad9099ad65f355
	Author: Paul Eggert <eggert@cs.ucla.edu>
	Date:   Wed Jan 20 18:30:16 2021 -0800

	    c: port to HP-UX 11.23

	commit 2c294c132528ede23d8ae4959783a67e9ff05ac5
	Author: Vincent Imbimbo <vmi6@cornell.edu>
	Date:   Sat Jan 23 13:25:18 2021 -0500

	    cex: fix state-item pruning

	commit c22902e360e0fbbe9fd5657dcf107e03166da309
	Author: Akim Demaille <akim.demaille@gmail.com>
	Date:   Sat Jan 23 18:40:15 2021 +0100

	    tables: fix handling for useless tokens

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix typo
	Reported by Kaz Kylheku.
	https://lists.gnu.org/r/bison-patches/2020-11/msg00019.html

	* doc/bison.texi (Versioning): here.

2021-01-24  Kaz Kylheku  <kaz@kylheku.com>

	doc: document best deployment practices.
	* doc/bison.texi (Versioning): New node about practices
	regarding dealing with multiple versions of Bison.

2021-01-24  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.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.5
	* NEWS: Record release date.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	tables: fix handling for useless tokens
	In some rare conditions, the generated parser can be wrong when there
	are useless tokens.

	Reported by Balázs Scheidler.
	https://github.com/akimd/bison/issues/72

	Balázs managed to prove that the bug was introduced in

	    commit af1c6f973a60a51c609903713ff8f7fce0887025
	    Author: Theophile Ranquet <ranquet@lrde.epita.fr>
	    Date:   Tue Nov 13 10:38:49 2012 +0000

	    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 of integers with...
	    (pos_set): this bitset.

	which was implemented long ago, but that I installed only recently
	(March 2019), first published in v3.3.90.

	That patch introduces a bitset to represent a set of integers.  It
	managed negative integers by using a (fixed) base (the smallest
	integer to represent).  It avoided negative accesses into the bitset
	by ignoring integers smaller than the base, under the asumption that
	these cases correspond to useless tokens that are ignored anyway.
	While it turns out to be true for all the test cases in the test suite
	(!), Balázs' use case demonstrates that it is not always the case.

	So we need to be able to accept negative integers that are smaller
	than the current base.

	"Amusingly" enough, the aforementioned patch was visibly unsure about
	itself:

	    /* Store PLACE into POS_SET.  PLACE might not belong to the set
	       of possible values for instance with useless tokens.  It
	       would be more satisfying to eliminate the need for this
	       'if'.  */

	This commit needs several improvements in the future:
	- support from bitset for bit assignment and shifts
	- amortized resizing of pos_set
	- test cases

	* src/tables.c (pos_set_base, pos_set_dump, pos_set_set, pos_set_test):
	New.
	Use them instead of using bitset_set and bitset_test directly.

2021-01-24  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix state-item pruning
	There were several bugs in pruning that would leave the state-item
	graph in an inconsistent state which could cause crashes later on:

	- Pruning now happens in one pass instead of two.

	- Disabled state-items no longer prune the state-items they transition
	  to if that state-item has other states that transition to it.

	- State-items that transition to disabled state-items are always
	  pruned even if they have productions.

	Reported by Michal Bartkowiak <michal.bartkowiak@nokia.com>
	https://lists.gnu.org/r/bug-bison/2021-01/msg00000.html
	and Zartaj Majeed
	https://github.com/akimd/bison/issues/71

	* src/state-item.c (prune_forward, prune_backward): Fuse into...
	(prune_state_item): this.
	Adjust callers.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	package: pacify syntax-check
	* cfg.mk: Currently we cannot update gnulib because of portability
	issues with ancient versions of clang
	(https://lists.gnu.org/r/bug-gnulib/2021-01/msg00241.html).  So skip
	the check about copyright date for gnulib.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	package: bump copyrights to 2021
	Run 'make update-copyright'.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	%merge: associate it to its first definition, not the latest
	Currently each time we meet %merge we record this location as the
	defining location (and symbol).  Instead, record the first definition.

	In the generated code we go from

	    yy0->A = merge (*yy0, *yy1);

	to

	    yy0->S = merge (*yy0, *yy1);

	where S was indeed the first symbol, and in the diagnostics we go from

	    glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
	       30 | sym2: sym3 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:29.18-24: note: previous declaration
	       29 | sym1: sym2 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
	       31 | sym3: %merge<merge> { $$ = 0; } ;
	          |             ^~~~~~~
	    glr-regr18.y:30.18-24: note: previous declaration
	       30 | sym2: sym3 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~

	to

	    glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
	       30 | sym2: sym3 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:29.18-24: note: previous declaration
	       29 | sym1: sym2 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type1>
	       31 | sym3: %merge<merge> { $$ = 0; } ;
	          |             ^~~~~~~
	    glr-regr18.y:29.18-24: note: previous declaration
	       29 | sym1: sym2 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~

	where both duplicates are reported against definition 1, rather than
	using definition 1 as a reference when diagnosing about definition 2,
	and then 2 as a reference for 3.

	* src/reader.c (record_merge_function_type): Keep the first definition.
	* tests/glr-regression.at: Adjust.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	%merge: fix compatibility with api.value.type=union
	Reported by Jot Dot.
	https://lists.gnu.org/r/help-bison/2020-12/msg00014.html

	* data/skeletons/glr.c, data/skeletons/glr2.cc (b4_call_merger): Use
	the symbol's slot, not its type.
	* examples/c/glr/c++-types.y: Use explicit per-symbol typing together
	with api.value.type=union.
	(yylex): Use yytoken_kind_t.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	%merge: delegate the generation of calls to mergers to m4
	Don't generate C code from bison, leave that to the skeletons.

	* src/output.c (merger_output): Emit invocations to b4_call_merger.
	* data/skeletons/glr.c (b4_call_merger): New.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	%merge: let mergers record a typing-symbol, rather than a type
	Symbols are richer than types, and in M4 it is my simpler (and more
	common) to deal with symbols rather than types.  So let's associate
	mergers to a symbol rather than a type name.

	* src/reader.h (merger_list): Replace the 'type' member by a symbol
	member.
	* src/reader.c (record_merge_function_type): Take a symbol as
	argument, rather than a type name.
	* src/output.c (merger_output): Adjust.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	%merge: clearer tests on diagnostics
	* tests/glr-regression.at: Use caret errors.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: introduce "slot"s for symbols
	Extracted from d9cf99b6a5cb0345e91dfb90fe6d6473024ea97a, in the master
	branch.

	* data/skeletons/bison.m4 (b4_symbol_slot): New, with safer semantics
	than type and type_tag.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	style: YYUSE is private, make it YY_USE
	This macro is not exposed to users, make start it with 'YY_'.

	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.c,
	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
	* src/parse-gram.c, tests/actions.at, tests/c++.at, tests/headers.at,
	* tests/local.at (YYUSE): Rename as...
	(YY_USE): this.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	package: codespell
	* src/parse-gram.y: Fix spelling.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	cex: fix traces: fix display of disabled items
	The display of disabled state items is incorrect.  The item is
	stuttered, and lacks on end-of-line.

	From

	    State 7:
	        1 exp: exp • "⊕" exp
	        ->     1 exp: exp "⊕" • exp
	        <-     1 exp: • exp "⊕" exp

	        2 exp: exp • "+" exp    2 exp: exp • "+" exp DISABLED
	        2 exp: exp "+" exp •
	        <-     2 exp: exp "+" • exp

	        3 exp: exp • "+" exp    3 exp: exp • "+" exp DISABLED
	        3 exp: exp "+" exp •
	        <-     3 exp: exp "+" • exp

	to

	    State 7:
	        1 exp: exp • "⊕" exp
	        ->     1 exp: exp "⊕" • exp
	        <-     1 exp: • exp "⊕" exp

	        2 exp: exp • "+" exp  DISABLED

	        2 exp: exp "+" exp •
	        <-     2 exp: exp "+" • exp

	        3 exp: exp • "+" exp  DISABLED

	        3 exp: exp "+" exp •
	        <-     3 exp: exp "+" • exp

	* src/state-item.c (state_items_report): Don't issue disabled items
	twice, and issue two '\n' at their end.
	* tests/conflicts.at: Check it.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	cex: fix traces: add missing end-of-lines
	In 430ca0fc632f5e8072fe468b8a99c640985f6926, I completely forgot that
	`puts` adds a `\n`.

	* src/lssi.c, src/state-item.c: Restore missing end-of-lines in the
	output.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	cex: add support for $TIME_LIMIT
	* src/counterexample.c (TIME_LIMIT): Replace with...
	(time_limit): this.
	(counterexample_init): Check $TIME_LIMIT.
	* src/scan-gram.l: Reorder includes.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	cex: send traces to stderr, not stdout
	When comparing traces from different machines, the mixture of
	stdout/stderr in the output are making things uselessly difficult.

	* src/lssi.c, src/state-item.c: Output debug traces on stderr.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	c++: I'm tired of Flex's warnings
	* doc/bison.texi: Disable another warning I'm tired to see.
	New releases would be most welcome.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: don't "leak" yyparse
	When using glr.cc, the C function yyparse is an internal detail that
	should not be exposed.  Users might call it by accident (I did).

	* data/skeletons/glr.c (yyparse): When used for glr.cc, rename as yy_parse_impl.
	* data/skeletons/glr.cc: Adjust.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	tables: avoid warnings and save bits
	The yydefgoto table uses -1 as an invalid for an impossible case (we
	never use yydefgoto[0], since it corresponds to the reduction to
	$accept, which never happens).  Since yydefgoto is a table of state
	numbers, this -1 forces a signed type uselessly, which (1) might
	trigger compiler warnings when storing a value from yydefgoto into a
	state number (nonnegative), and (2) wastes bits which might result in
	using a int16 where a uint8 suffices.

	Reported by Jot Dot <jotdot@shaw.ca>.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00027.html

	* src/tables.c (default_goto): Use 0 rather than -1 as invalid value.
	* tests/regression.at: Adjust.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	c++: use noexcept where appropriate
	Reported by Don Macpherson.
	https://github.com/akimd/bison/issues/63
	https://github.com/akimd/bison/issues/64

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

2021-01-23  Martin Rehak  <martin.rehak@oracle.com>

	examples: avoid "unbound variable" errors
	When the shell option `nounset` is set, we may get "unbound variable"
	errors.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00013.html

	* examples/test (diff_opts): Be sure to initialize it.

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	autoconf: update

2021-01-23  Akim Demaille  <akim.demaille@gmail.com>

	c: adjust _Noreturn to pedantic clang
	Reported by Joe Nelson <joe@begriffs.com>.
	https://lists.gnu.org/r/help-bison/2021-01/msg00004.html
	Fixed by Paul Eggert in gnulib.
	https://lists.gnu.org/r/bug-gnulib/2021-01/msg00156.html

	* data/skeletons/c.m4 (b4_attribute_define): Adjust _Noreturn to
	pedantic clang.

2021-01-21  Paul Eggert  <eggert@cs.ucla.edu>

	c: port to HP-UX 11.23
	Problem reported by Albert Chin in:
	https://lists.gnu.org/r/bug-bison/2021-01/msg00029.html
	* data/skeletons/c.m4 (b4_c99_int_type_define):
	Work around HP-UX bug.

2021-01-17  Akim Demaille  <akim.demaille@gmail.com>

	d: examples: reduce scopes
	* data/skeletons/lalr1.d (YYLocation.step): New.
	* examples/d/calc/calc.y (Lexer): Reduce scopes to avoid uninitialized
	varibles.
	Factor the handling of locations.
	We don't need lenChars.

2021-01-17  Adela Vais  <adela.vais99@gmail.com>

	d: examples: calc: remove Value from Lexer
	The Symbol constructor does not use it, so it is easier to not use
	Value at all.

	* examples/d/calc/calc.y: Here.

2021-01-17  Adela Vais  <adela.vais99@gmail.com>

	d: examples: calc: use of std.conv.parse for location
	From Dlang v2.095.0 onwards, std.conv.parse reports the number of
	consumed characters.

	* examples/d/calc/calc.y: Here.

2021-01-17  Adela Vais  <adela.vais99@gmail.com>

	d: examples: simple: fix style
	* examples/d/simple/calc.y: Formatting changes.

2021-01-17  Akim Demaille  <akim.demaille@gmail.com>

	CI: run D tests
	* .travis.yml: here.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	package: codespell
	* data/skeletons/glr2.cc, src/parse-gram.y: Fix spelling.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	package: fixes
	* examples/c++/glr/local.mk, examples/c/glr/local.mk (CLEANFILES):
	Complete to fix distcheck.
	* src/output.c (merger_output): Obfuscate to pacify syntax-check's
	sc_space_before_open_paren.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	package: bump copyrights to 2021
	Run 'make update-copyright'.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update
	* src/output.c, src/print-xml.c: Adjust.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	autoconf: update

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: fix traces
	The display of disabled state items is incorrect.  The item is
	stuttered, and lacks on end-of-line.

	From

	    State 7:
	        1 exp: exp • "⊕" exp
	        ->     1 exp: exp "⊕" • exp
	        <-     1 exp: • exp "⊕" exp

	        2 exp: exp • "+" exp    2 exp: exp • "+" exp DISABLED
	        2 exp: exp "+" exp •
	        <-     2 exp: exp "+" • exp

	        3 exp: exp • "+" exp    3 exp: exp • "+" exp DISABLED
	        3 exp: exp "+" exp •
	        <-     3 exp: exp "+" • exp

	to

	    State 7:
	        1 exp: exp • "⊕" exp
	        ->     1 exp: exp "⊕" • exp
	        <-     1 exp: • exp "⊕" exp

	        2 exp: exp • "+" exp  DISABLED

	        2 exp: exp "+" exp •
	        <-     2 exp: exp "+" • exp

	        3 exp: exp • "+" exp  DISABLED

	        3 exp: exp "+" exp •
	        <-     3 exp: exp "+" • exp

	* src/state-item.c (state_items_report): Don't issue disabled items
	twice, and issue two '\n' at their end.
	* tests/conflicts.at: Check it.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: fix traces
	In 430ca0fc632f5e8072fe468b8a99c640985f6926, I completely forgot that
	`puts` adds a `\n`.

	* src/lssi.c, src/state-item.c: Restore missing end-of-lines in the
	output.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	c: add support for YYNOMEM
	Suggested by Joe Nelson <joe@begriffs.com>.
	https://lists.gnu.org/r/help-bison/2020-12/msg00020.html

	* data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): New.
	Use it.
	(yyexhaustedlab): Rename as...
	(yynomemlab): this.
	* tests/calc.at: Check it.
	* doc/bison.texi: Document it.
	Fix incorrect statements about non-existing constants for YYERROR etc.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: spell check
	Gettext uses "catalog", not "catalogue".

	* doc/bison.texi, examples/c/README.md,
	* examples/c/bistromathic/Makefile,
	* examples/c/bistromathic/README.md,
	* examples/c/bistromathic/parse.y:
	Spell check.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c, glr.c: style: rename yyreturn and yyreturnlab
	* data/skeletons/glr.c, data/skeletons/yacc.c: here.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: style: formatting changes
	* data/skeletons/glr.c (YYCHK1): here.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	tests: check YYACCEPT and YYABORT
	There are some tests that cover them, but nothing for all the
	skeletons.  Let's do that in the calculator tests.

	* tests/calc.at: Check YYACCEPT and YYABORT.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: don't prepare for subclassing
	I am not aware of people subclassing the parser class, and I fail to
	see how this could be useful.  Rather than leaving a badly baked
	feature (as in glr.cc currently), let's not support it at all, until
	someone comes and explains why and how it would be useful.

	* data/skeletons/glr2.cc (parser): We need no virtual function members.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: formatting changes
	* data/skeletons/glr2.cc: here.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: move strong_index_alias into implementation file
	* data/skeletons/glr2.cc: here.
	Fix coding style issues.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: remove some useless qualifications
	* data/skeletons/glr2.cc: Rely on the type-aliases provided by
	glr_stack.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: more free functions about the automaton into glr_stack
	* data/skeletons/glr2.cc (yypact_value_is_default)
	(yytable_value_is_error, yyisShiftAction, yyisErrorAction)
	(yyisDefaultedState, yydefaultAction):
	Move into...
	(glr_stack): here.
	Fix naming conventions.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: move free-functions into glr_stack
	* data/skeletons/glr2.cc (yypreference, yyLRgotoState): Move into...
	(glr_stack): here.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: make yygetToken a member of glr_stack
	It's on purpose that I keep the `this->` now.  We'll see later if we
	want to remove them.

	* data/skeletons/glr2.cc (yygetToken): Move into...
	(glr_stack::yyget_token): this.
	(b4_lex): Adjust.

2021-01-16  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: move parser::parse into glr_stack
	Currently we have two classes that actually should be fused together:
	parser and glr_stack.  Both carry part of the parsing: (i) parser
	contains `parse`, which is the top-level of the parsing process, it
	uses yygetToken, etc., and (ii) glr_stack takes care of all the
	details (dealing with the stack), and also calls yygetToken.

	However if we fuse them together, we would get a large parser class,
	in the header file.  So it is probably better to split this large
	class using the pimpl idiom.  But then it appears that glr_stack is
	very close from being the impl of parser.

	Let's improve this.

	For a start...

	* data/skeletons/glr2.cc (parser::parse): Move to...
	(glr_stack::parse): here.
	(parser::parse): Use it.

2021-01-14  Akim Demaille  <akim.demaille@gmail.com>

	cex: add support for $TIME_LIMIT
	* src/counterexample.c (TIME_LIMIT): Replace with...
	(time_limit): this.
	(counterexample_init): Check $TIME_LIMIT.
	* src/scan-gram.l: Reorder includes.

2021-01-13  Akim Demaille  <akim.demaille@gmail.com>

	c: adjust _Noreturn to pedantic clang
	Reported by Joe Nelson <joe@begriffs.com>.
	https://lists.gnu.org/r/help-bison/2021-01/msg00004.html
	Fixed by Paul Eggert in gnulib.
	https://lists.gnu.org/r/bug-gnulib/2021-01/msg00156.html

	* data/skeletons/c.m4 (b4_attribute_define): Adjust _Noreturn to
	pedantic clang.

2021-01-13  Akim Demaille  <akim.demaille@gmail.com>

	cex: send traces to stderr, not stdout
	When comparing traces from different machines, the mixture of
	stdout/stderr in the output are making things uselessly difficult.

	* src/lssi.c, src/state-item.c: Output debug traces on stderr.

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

	glr2.cc: remove remains from glr.cc
	* data/skeletons/glr2.cc: We no longer play dirty tricks with
	parse-params, remove the now useless dance around them.
	We now have genuine objects for locations, leave the initial action
	alone.

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

	glr2.cc: add support for api.token.constructor
	* data/skeletons/glr2.cc: Add support for api.token.constructor.
	* examples/c++/glr/c++-types.yy: Use it.
	* examples/c++/glr/c++-types.test: Adjust expectations for error
	messages.

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

	glr2.cc: introduce the yytranslate_ member function
	* data/skeletons/c++.m4 (b4_yytranslate_define): Use static_cast
	rather than the YY_CAST macro.
	Avoids the need to define YY_CAST in the header.
	* data/skeletons/glr2.cc: Fix calls to b4_shared_declarations: pass
	the type of file we are in.
	Don't define YYTRANSLATE.
	(parser::yytranslate_): New, as in lalr1.cc.
	Adjust to use it.

	* tests/glr-regression.at: Adjust.

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

	glr2.cc: tests: simplify
	* tests/glr-regression.at: Remove useless qualification for tokens.

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

	glr2.cc: rely on symbol kinds rather than token kinds
	Instead of tracking the lookahead with yychar, use yytoken.  This is
	consistent with lalr1.cc, saves us from calls to YYTRANSLATE (except
	when calling yylex), and makes it easier to migrate to using
	symbol_type.

	* data/skeletons/glr2.cc: Replace all uses of `int yychar` with
	`symbol_kind_type yytoken`.
	(yygetToken): Don't take/return the lookahead's token-kind and
	symbol-kind, just work directly on yystack's `yytoken` member.

	* tests/glr-regression.at (AT_PRINT_LOOKAHEAD_DECLARE)
	(AT_PRINT_LOOKAHEAD_DEFINE): New.
	Adjust to the fact that we have yytoken, not yychar, in glr2.cc.

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

	glr2.cc: example: style changes
	* examples/c++/glr/c++-types.yy: We need C++ 11 (we use shared_ptr).

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

	glr2.cc: use references to print symbols
	* data/skeletons/glr2.cc (b4_symbol_action): New, so that we use
	`yyval` and `yyloc` rather than the `yyvaluep` and `yylocationp`
	pointers.
	(yy_symbol_value_print_, yy_symbol_print_, yy_destroy_): Use
	references rather than pointers.
	Drop support for the undocumented, obsolete, `yyoutput` variable.
	Adjust callers.
	(glr_state::destroy): Don't use yy_symbol_print_ when we don't have a
	symbol.  Rather, write dedicated code.

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

	glr2.cc: fix memory leak
	* data/skeletons/glr2.cc (glr_stack_item::setState): Free the previous
	state before installing the new one.

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

	glr: examples: fix locations
	The locations are actually false: they should include the location of
	the semicolon (we print statements), but they don't.

	* examples/c++/glr/c++-types.test, examples/c++/glr/c++-types.yy,
	* examples/c/glr/c++-types.test, examples/c/glr/c++-types.y,
	* tests/cxx-type.at:
	Fix locations and adjust expectations.

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

	glr: tests: more macros
	This will be useful to support changes in glr2.cc.

	tests/glr-regression.at
	(Incorrect lookahead during deterministic GLR)
	(Incorrect lookahead during nondeterministc GLR):
	Introduce and use PRINT_LOOKAHEAD.

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

	glr: tests: formatting changes
	* tests/glr-regression.at: here.
	Use %empty where applicable.

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

	tests: fix definition for parser class name
	* tests/local.at (AT_PARSER_CLASS): Fix it.
	And use it.

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

	CI: disable the installation of dmd
	Currently all the builds fail:

	    $ mkdir -p ~/dlang && wget https://dlang.org/install.sh -O ~/dlang/install.sh
	    --2021-01-10 06:05:39--  https://dlang.org/install.sh
	    Resolving dlang.org (dlang.org)... 162.217.114.56, 2607:fc50:1:ff02::5:0
	    Connecting to dlang.org (dlang.org)|162.217.114.56|:443... connected.
	    ERROR: cannot verify dlang.org's certificate, issued by ‘CN=R3,O=Let's Encrypt,C=US’:
	      Unable to locally verify the issuer's authority.
	    To connect to dlang.org insecurely, use `--no-check-certificate'.

	* .travis.yml: Disable dmd.

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

	tests: remove some redundant tests
	* tests/calc.at: Cut the CI some slack.

2021-01-07  Adela Vais  <adela.vais99@gmail.com>

	d: create getter for the number of errors from the parser
	* data/skeletons/lalr1.d: Here.

2021-01-07  Adela Vais  <adela.vais99@gmail.com>

	d: remove support for parse.error verbose
	Without the history, D should not support this option. Before the
	removal, 'detailed' and 'verbose' options generated the same code.

	* data/skeletons/lalr1.d: Here.
	* doc/bison.texi: Adapt tests to use 'detailed' instead of 'verbose'.
	* tests/calc.at: Document it.

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

	d: add support for %printer
	Currently we display the addresses of the semantic values.  Instead,
	print the values.

	Add support for YY_USE across languages.

	* data/skeletons/c.m4, data/skeletons/d.m4 (b4_use): New.
	* data/skeletons/bison.m4 (b4_symbol_actions): Use b4_use to be
	portable to D.

	Add support for %printer, and use it.

	* data/skeletons/d.m4: Instead of duplicating what's already in
	c-like.m4, include it.
	(b4_symbol_action): New.
	Differs from the one in bison.m4 in that it uses yyval/yyloc instead
	of *yyvaluep and *yylocationp.

	* data/skeletons/lalr1.d (yy_symbol_print): Avoid calls to formatting,
	just call write directly.
	Use the %printer.
	* examples/d/calc/calc.y: Specify a printer.
	Enable traces when $YYDEBUG is set.
	* tests/calc.at: Fix the use of %printer with D.

2021-01-06  Adela Vais  <adela.vais99@gmail.com>

	d: remove unnecessary imports
	* data/skeletons/lalr1.d: Here.

2021-01-06  Adela Vais  <adela.vais99@gmail.com>

	d: remove yytnamerr usage
	It is a backwards-compatible feature for the other parsers.
	D should not support this option.

	* data/skeletons/d.m4: Here.

2021-01-06  Adela Vais  <adela.vais99@gmail.com>

	d: add internationalisation support
	The D parser implements this feature similarly to the C parser,
	by using Gettext. Functions gettext() and dgettext() are
	imported using extern(C). The internationalisation uses yysymbol_name
	to report the name of the SymbolKinds.

	* data/skeletons/d.m4 (SymbolKind.toString.yytranslatable,
	SymbolKind.toString.yysymbol_name: New), data/skeletons/lalr1.d: Here.
	* doc/bison.texi: Document it.
	* tests/calc.at: Test it.

2021-01-05  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: add support for variants
	(Bison) Variants are extremely picky, which makes them both
	annoying (lots of micro-details must be taken care of) and
	precious (all the micro-details must be taken care of, in particular
	object lifetime).

	So (i) each time a semantic value is stored, it must be stored in a
	place that exists, and (ii) each time a semantic value is discarded,
	its place must have been emptied.

	Example of (i)

	    - new (&yys.value ()) value_type (s->value ());
	    + {]b4_variant_if([[
	    +   new (&yys.value ()) value_type ();
	    +   ]b4_symbol_variant([yy_accessing_symbol (s->yylrState)],
	    +                      [yys.value ()], [copy], [s->value ()])], [[
	    +   new (&yys.value ()) value_type (s->value ());]])[
	    + }

	Example of (ii)

	      yyparser.yy_destroy_ ("Error: discarding",
	    -                       yytoken, &yylval]b4_locations_if([, &yylloc])[);
	    +                       yytoken, &yylval]b4_locations_if([, &yylloc])[);]b4_variant_if([[
	    + // Value type destructor.
	    + ]b4_symbol_variant([[YYTRANSLATE (this->yychar)]], [[yylval]], [[template destroy]])])[
	      this->yychar = ]b4_namespace_ref[::]b4_parser_class[::token::]b4_symbol(empty, id)[;

	However, in some places we must not be "pure".  In particular:

	    glr_stack_item (const glr_stack_item& other) YY_NOEXCEPT YY_NOTHROW
	      : is_state_ (other.is_state_)
	    {
	      std::memcpy (raw_, other.raw_, union_size);
	    }

	still must use memcpy, because the constructor would change pred, and
	it must not.  This constructor is used only when resizing the stack,
	in which case pred (which is relative) must not be "adjusted".

	The result works, but is messy.  Its verbosity comes from at least two
	factors:

	- we don't have support for complete symbols (binding kind, value and
	  location), and we should at least try to have it.  That simplified
	  lalr1.cc a lot.

	- I have not tried to be smart and use 'move' when possible.  As a
	  consequence many places have 'copy' and then 'destroy'.  That kind
	  of clean up can be done once everything appears to be solid.

	* data/skeletons/glr2.cc: Be more rigorous in object lifetime.
	In particular, don't forget to discard the lookahead when we're done
	with it.
	Call variant routines where needed.
	Deal with plenty of details.
	(b4_call_merger): Add support for variants.
	Use references in mergers, rather than pointers.

	* examples/c++/glr/c++-types.yy: Exercise variants.

2021-01-05  Akim Demaille  <akim.demaille@gmail.com>

	glr: strengthen the tests
	On some experimentation I was running, the test suite was passing, yet
	the example crashed when run in verbose mode.  Let's add this case to
	the test suite.

	* tests/cxx-type.at: Run all these tests in verbose mode too.

2021-01-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: I'm tired of Flex's warnings
	* doc/bison.texi: Disable another warning I'm tired to see.
	New releases would be most welcome.

2021-01-03  Akim Demaille  <akim.demaille@gmail.com>

	glr: example: flush the output
	* examples/c/glr/c++-types.y: Flush stdout so that the logs (on
	stderr) and the effective output (on stdout) mix correctly.
	While at it, be a bit more const-correct.

2021-01-03  Akim Demaille  <akim.demaille@gmail.com>

	style: YYUSE is private, make it YY_USE
	This macro is not exposed to users, make start it with 'YY_'.

	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.c,
	* data/skeletons/glr.cc, data/skeletons/glr2.cc, data/skeletons/lalr1.cc,
	* src/parse-gram.c, tests/actions.at, tests/c++.at, tests/headers.at,
	* tests/local.at (YYUSE): Rename as...
	(YY_USE): this.

2021-01-03  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: example: use a printer
	* examples/c++/glr/c++-types.yy: Here.

2021-01-03  Akim Demaille  <akim.demaille@gmail.com>

	glr: consistently use the same wording in traces
	* data/skeletons/glr.c, data/skeletons/glr2.cc (yyglrReduce): Traces
	refer to "state 42", not to "state #42".

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: also equip semantic_option with self check
	* data/skeletons/glr2.cc (semantic_option): Add MAGIC_, magic_ and
	check_ members.
	Use it.

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: log the execution of deferred actions
	See "glr.c: log the execution of deferred actions".

	* data/skeletons/glr2.cc (yyuserAction): Take yyk as a new argument.
	Rename argument yyn as yyrule for clarity.
	Log before and after the user action.
	Adjust callers to not call YY_REDUCE_PRINT and YY_SYMBOL_PRINT.

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: minor clean up
	* data/skeletons/glr2.cc (YYUNDEFTOK): Now useless.
	Formatting/coding style changes.

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: log the execution of deferred actions
	Currently deferred reductions are not "verbose" at all: only immediate
	reductions are displayed in the YYDEBUG traces.  I don't understand
	why.  Besides it seems actually simpler the install the reduction
	traces right around the user action inside yyuserAction rather that
	around calls to yyuserAction.

	This only trouble is that yyuserAction does not know the stack number
	it works on, so we have to pass it.  And pass -1 when we are actually
	running on a temporary stack.

	The glr example, on "T(x) + y;" as input, adds these logs, which
	allow to see when the `<cast>` is built:

	     Stack 0 Entering state 26
	     Reduced stack 0 by rule 7 (line 108); action deferred.  Now in state 7.
	     Stack 0 Entering state 7
	     Reading a token
	     Next token is token '+' (1.6: )
	     Stack 1 Entering state 27
	     Reduced stack 1 by rule 13 (line 123); action deferred.  Now in state 12.
	     Stack 1 Entering state 12
	     Next token is token '+' (1.6: )
	     Stack 1 dies.
	     Removing dead stacks.
	     On stack 0, shifting token '+' (1.6: )
	     Stack 0 now in state #14
	    +Reducing stack -1 by rule 6 (line 107):
	    +   $1 = token identifier (1.3: x)
	    +-> $$ = nterm expr (1.3: x)
	    +Reducing stack -1 by rule 7 (line 108):
	    +   $1 = token typename (1.0: T)
	    +   $2 = token '(' (1.2: )
	    +   $3 = nterm expr (1.3: x)
	    +   $4 = token ')' (1.4: )
	    +-> $$ = nterm expr (1.0-3: <cast>(x,T))
	     Returning to deterministic operation.

	* data/skeletons/glr.c (yyuserAction): Take yyk as a new argument.
	Rename argument yyn as yyrule for clarity.
	Log before and after the user action.
	Adjust callers to not call YY_REDUCE_PRINT and YY_SYMBOL_PRINT.

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: reorder routines
	The next commit wants to use YY_REDUCE_PRINT above its current
	definition.  Move it higher.

	* data/skeletons/glr.c (yylhsNonterm, YY_REDUCE_PRINT): Make available
	earlier.

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: example: use the exact same display as in the C++ example
	* examples/c/glr/c++-types.y: Add a space after the commas.
	* examples/c/glr/c++-types.test: Adjust expectations.

2021-01-02  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: example: several improvements
	* examples/c/glr/c++-types.y (node_print): New.
	Use YY_LOCATION_PRINT instead of duplicating it.
	And actually use it in the action instead of badly duplicating it.
	(main): Add proper option support.
	* examples/c/glr/c++-types.test: Adjust expectations on locations.
	* examples/c++/glr/c++-types.yy: Fix bad iteration.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: the example requires Bison 3.8
	This will save us from generating the position.hh file.

	* src/parse-gram.y: Claim we are 3.8.
	* examples/c++/glr/c++-types.yy: Require 3.8.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	%merge: associate it to its first definition, not the latest
	Currently each time we meet %merge we record this location as the
	defining location (and symbol).  Instead, record the first definition.

	In the generated code we go from

	    yy0->A = merge (*yy0, *yy1);

	to

	    yy0->S = merge (*yy0, *yy1);

	where S was indeed the first symbol, and in the diagnostics we go from

	    glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
	       30 | sym2: sym3 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:29.18-24: note: previous declaration
	       29 | sym1: sym2 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
	       31 | sym3: %merge<merge> { $$ = 0; } ;
	          |             ^~~~~~~
	    glr-regr18.y:30.18-24: note: previous declaration
	       30 | sym2: sym3 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~

	to

	    glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
	       30 | sym2: sym3 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:29.18-24: note: previous declaration
	       29 | sym1: sym2 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~
	    glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type1>
	       31 | sym3: %merge<merge> { $$ = 0; } ;
	          |             ^~~~~~~
	    glr-regr18.y:29.18-24: note: previous declaration
	       29 | sym1: sym2 %merge<merge> { $$ = $1; } ;
	          |                  ^~~~~~~

	where both duplicates are reported against definition 1, rather than
	using definition 1 as a reference when diagnosing about definition 2,
	and then 2 as a reference for 3.

	* src/reader.c (record_merge_function_type): Keep the first definition.
	* tests/glr-regression.at: Adjust.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	%merge: test support for api.value.type=union
	* tests/glr-regression.at: here.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	%merge: fix compatibility with api.value.type=union
	Reported by Jot Dot.
	https://lists.gnu.org/r/help-bison/2020-12/msg00014.html

	* data/skeletons/glr.c, data/skeletons/glr2.cc (b4_call_merger): Use
	the symbol's slot, not its type.
	* examples/c/glr/c++-types.y: Use explicit per-symbol typing together
	with api.value.type=union.
	(yylex): Use yytoken_kind_t.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	%merge: delegate the generation of calls to mergers to m4
	Don't generate C code from bison, leave that to the skeletons.

	* src/output.c (merger_output): Emit invocations to b4_call_merger.
	* data/skeletons/glr.c, data/skeletons/glr2.cc (b4_call_merger): New.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	%merge: let mergers record a typing-symbol, rather than a type
	Symbols are richer than types, and in M4 it is my simpler (and more
	common) to deal with symbols rather than types.  So let's associate
	mergers to a symbol rather than a type name.

	* src/reader.h (merger_list): Replace the 'type' member by a symbol
	member.
	* src/reader.c (record_merge_function_type): Take a symbol as
	argument, rather than a type name.
	* src/output.c (merger_output): Adjust.

2020-12-31  Akim Demaille  <akim.demaille@gmail.com>

	%merge: clearer tests on diagnostics
	* tests/glr-regression.at: Use caret errors.

2020-12-28  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: style: quoting changes
	* data/skeletons/glr2.cc: Use stricter quoting rules.

2020-12-28  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: style: quoting changes
	* data/skeletons/lalr1.cc: here.

2020-12-27  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: use references to the stack rather than pointers
	Now that the lookahead macros (that used yystackp) are out of the way,
	there is no reason to continue using a pointer.

	* data/skeletons/glr2.cc: Use yystack, a reference, rather that
	yystackp, a pointer.
	Fix tons of const-correctness issues.

2020-12-27  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: simplify names
	Now that we no longer play dangerous games with macros, we can give
	the lookahead's token kind its proper name.  The content of yychar
	_is_ raw (as opposed to yytoken), there's no reason to pleonasmicate
	it (and thus to neologize).

	* data/skeletons/glr2.cc (glr_stack::yyrawchar): Rename as...
	(glr_stack::yychar): this.

2020-12-27  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: get rid of the macros wrapping the lookahead
	In glr.c, the macros yychar, yylval and yylloc allow to deal with
	api.pure: sometimes they point to global variables (impure), sometimes
	they point to the member variables (pure).

	There's no room for globals in glr2.cc.  Besides, they map yychar to
	yyrawchar, yylval to yyval, etc. which obfuscates what is actually
	going on.

	* data/skeletons/glr2.cc (glr_stack::yyval, glr_stack::yyloc): Rename
	as...
	(glr_stack::yylval, glr_stack::yylloc): these, for clarity.
	(yynerrs, yychar, yylval, yylloc, yystackp): Remove these macros.
	(b4_yygetToken_call): Remove.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: reorganize the skeleton
	Restore a more natural order: first define the macros and then use
	them.  Currently, some macros were defined between the moment the
	header is issued, and then the implementation file.  As a result, it
	was possible for the header and the implementation to not use the same
	versions of the macros.

	* data/skeletons/glr2.cc: Define the macros first, then use them.
	* data/skeletons/lalr1.cc: Minor comment and quoting changes.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: example: simplify
	* examples/c++/glr/c++-types.yy: Formatting changes.
	Remove unused support for '@'.
	* examples/c/glr/c++-types.y: Ditto.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: make yyreportTree a member function of semantic_option
	* data/skeletons/glr2.cc (yy_accessing_symbol, yylhsNonterm): Define
	ealier.
	(state_stack::yyreportTree): Move to...
	(semantic_option::yyreportTree): here.
	Adjust dependencies.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: pass references to yyreportAmbiguity
	* data/skeletons/glr2.cc (yyreportAmbiguity): Use references.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	style: use yyval only, not yysval
	* data/skeletons/glr.c, data/skeletons/glr2.cc: Use yyval, as in
	the other skeletons.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: pass location by const ref to yyglrShift
	* data/skeletons/glr2.cc (glr_state.yyglrShift): Take the location by
	const&.
	Remove useless `inline`.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	style: rename semanticVal as value
	* data/skeletons/README-D.txt: Remove, now useless and obsolete.
	* data/skeletons/glr2.cc, examples/d/calc/calc.y,
	* tests/calc.at, tests/d.at, tests/scanner.at (semanticVal): Replace
	with...
	(value): this.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: remove dead comments
	* data/skeletons/glr2.cc: We no longer wrap glr.c here.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: use YYCDEBUG, not YY_DEBUG_STREAM
	* data/skeletons/glr2.cc (YY_DEBUG_STREAM): Rename as...
	(YYCDEBUG): this, as in lalr1.cc.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: formatting changes
	* data/skeletons/glr2.cc: here.
	Remove useless `inline`.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: don't use YYSTYPE/YYLTYPE at all
	* data/skeletons/glr2.cc: Define value_type and location_type where
	needed, and use them only.
	(yyuserMerge): Make it a member function of the glr_state class.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't require YYSTYPE/YYLTYPE to be defined in C++
	* tests/glr-regression.at: Use AT_YYSTYPE/AT_YYLTYPE to generate
	yy::parser::value_type and yy::parser::location_type in C++.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: rename semantic_type as value_type
	We always refer to the triplet "kind, value, location".  All of them
	are nouns, and we support api.value.type and api.location.type.  On
	this regard, "semantic_type" was a poor choice.  Make it "value_type".

	The test suite was not updated to use value_type, on purpose, to
	enforce backward compatibility.

	* data/skeletons/c++.m4, data/skeletons/glr.cc, data/skeletons/glr2.cc,
	* data/skeletons/variant.hh, doc/bison.texi: Define value_type rather
	than semantic_type.
	Add a backward compatibility typedef.
	* examples/c++/glr/c++-types.yy: Migrate.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	doc: more about sanitizers
	* README-hacking.md: here.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: simplify
	* data/skeletons/glr2.cc (glr_state_set::yyremoveDeletes): Use
	vector::resize rather than vector::erase.
	(glr_state::copyFrom): Merge into...
	(glr_state::operator=): here.
	Valentin wanted each assignment to be explicit, hence copyFrom rather
	that operator=.  But in 0a82316e54fead8c3f1cf41d2213c868ab88f508
	(glr2.cc: example: use objects (not pointers) to represent the AST),
	in order to get real objects to be processed correctly, we had to
	introduce the assignment operator.  Afterward, we also introduced a
	full implementation of the copy-ctor, independent of copyFrom.  As a
	result, today the only invocation of copyFrom is from the assignment
	operator.  Simplify this.

2020-12-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix warnings about uninitialized locations
	With GCC10, the CI shows tons of warnings such as
	(327. actions.at:374: testing Initial location: glr2.cc):

	    input.cc: In member function 'YYRESULTTAG glr_stack::yyglrReduce(state_set_index, rule_num, bool)':
	    input.cc:1357:11: error: '<anonymous>.glr_state::yyloc' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     1357 |     yyloc = other.yyloc;
	          |     ~~~~~~^~~~~~~~~~~~~

	This is because we don't have the constructors for locations.  But we
	should have them!  That's only because of glr.cc that ctors were not
	enabled by default.  In glr2.cc, they should.

	That fixes all the warnings when Bison's locations are used.  However,
	when user-defined locations without constructor are used, we still
	have:

	    550. calc.at:1409: testing Calculator glr2.cc %locations api.location.type={Span}  ...
	    calc.cc: In member function 'YYRESULTTAG glr_stack::yyglrReduce(state_set_index, rule_num, bool)':
	    calc.cc:1261:11: error: '<anonymous>.glr_state::yyloc' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     1261 |     yyloc = other.yyloc;
	          |     ~~~~~~^~~~~~~~~~~~~

	To address this case, we need glr_state to explicily initialize its
	yyloc member.

	* data/skeletons/glr2.cc: Use genuine objects, with ctors, for position
	and location.
	(glr_state): Explicitly initialize yyloc in the constructors.

2020-12-25  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: provide glr_state with a genuine copy-constructor
	The copy constructor was (lazily) implemented by a call to copyFrom.
	Unfortunately copyFrom reads yyresolved from the destination (and
	source), and in the case of the copy-ctor this is random garbagge,
	which UBSAN catches:

	    glr-regr2a.cc:1072:10: runtime error: load of value 7, which is not a valid value for type 'bool'

	Rather than defining yyresolved before calling copyFrom, let's just
	provide a genuine cpy-ctor for glr_state.

	* data/skeletons/glr2.cc (glr_state::glr_state): Implement properly.

2020-12-25  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: beware of self-assignment
	In yycompressStack:

	    while (yyr != YY_NULLPTR)
	      {
	        nextFreeItem->check_ ();
	        yyr->check_();
	        nextFreeItem->setState(*yyr);
	        glr_state& nextFreeState = nextFreeItem->getState();
	        yyr = yyr->pred();
	        nextFreeState.setPred(&(nextFreeItem - 1)->getState());
	        setFirstTop(&nextFreeState);
	        ++nextFreeItem;
	      }

	it is possible that nextFreeItem and yyr are actually the same state.
	In which case `nextFreeItem->setState(*yyr)` does really bad things.

	* data/skeletons/glr2.cc (glr_stack_item::setState): Beware of
	self-assignment.

2020-12-25  Akim Demaille  <akim.demaille@gmail.com>

	glr: comment changes
	* data/skeletons/glr.c: A bit more doc.
	(yypstates): Rename yyst (only occurrence) to yys (commonly used for
	yyGLRState).
	* data/skeletons/glr2.cc: Ditto.
	Prefer '\n' to "\n".

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: remove unnecessary methods from the Lexer interface
	The complete symbol approach in yylex removes the need for the methods
	semanticVal, startPos and endPos, which were used when the values were
	reported separately.

	* data/skeletons/lalr1.d: Here.
	* doc/bison.texi: Remove sections about the three methods.
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Remove the unused methods.
	* tests/calc.at, tests/d.at, tests/scanner.at: Test it.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: use Location and Position aliases in the backend
	* data/skeletons/lalr1.d: Here.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: remove unnecessary comparison from YYParser.parse()
	* data/skeletons/lalr1.d: Here.

2020-12-21  Akim Demaille  <akim.demaille@gmail.com>

	style: address syntax-check diagnostics
	* examples/c/glr/c++-types.y: Formatting changes.
	* po/POTFILES.in: Add missing files.
	* src/reader.c: Remove useless include.
	* tests/calc.at: Avoid magic values for exit.
	Obfuscate calls to error.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: create alias Position for YYPosition
	* data/skeletons/d.m4 (b4_public_types_declare): Here.
	* data/skeletons/lalr1.d: Adjust.
	* doc/bison.texi: Document it.
	* examples/d/calc/calc.y: Use it.
	* tests/calc.at: Test it.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: create alias Value for YYSemanticType
	* data/skeletons/d.m4: Here.
	* data/skeletons/lalr1.d, examples/d/calc/calc.y, examples/d/simple/calc.y: Adjust.
	* tests/calc.at, tests/d.at, tests/scanner.at: Test it.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: create alias Location for YYLocation
	* data/skeletons/d.m4: Here.
	* doc/bison.texi: Document it.
	* examples/d/calc/calc.y: Adjust.
	* tests/calc.at: Test it.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: remove yychar from YYParse.parse()
	The yychar variable was keeping the external form of the token (the
	TokenKind).  As the D parser translates the token to its internal
	form (the SymbolKind) inside the struct Symbol, there is no need for
	yychar anymore.

	* data/examples/lalr1.d (yychar): Remove.
	Use only yytoken.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: reduce verbosity for returning the location from yylex()
	* examples/d/calc/calc.y (start, end): Replace by this...
	(location): new member variable in the Lexer class.
	Use it.
	* tests/calc.at: Use the defined location variable.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: m4 style consistency fix
	* data/skeletons/lalr1.d: Here.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: create alias Symbol for YYParse.Symbol
	* data/skeletons/lalr1.d: Here.
	* doc/bison.texi: Document it.
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Adjust.
	* tests/calc.at, tests/d.at, tests/scanner.at: Test it.

2020-12-21  Adela Vais  <adela.vais99@gmail.com>

	d: change name of YYParser.Symbol's semanticValue() to value()
	Member value was renamed to value_ to avoid the name clash.

	* data/skeletons/d.m4: Change member names.
	* data/skeletons/lalr1.d: Adjust.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: formatting changes
	* data/skeletons/glr2.cc (glr_state): here.
	(glr_state::MAGIC): Make it easier to recognize in decimal.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: call the destructor in a way that complies with clang
	    examples/c++/glr/c++-types.cc:721:24: error:
	      expected the class name after '~' to name a destructor
	    yysval.YYSTYPE::~semantic_type ();
	                    ^

	Using a local typedef, for some reaon, result in clang complaining
	about a useless local typedef.  Since anyway we don't want to keep on
	using YYSTYPE and YYLTYPE, it is time to introduce proper typedefs to
	reach these guys.  And to be slightly in advance of the other
	skeletons: use value_type, not semantic_type.  This is much more
	consistent with our use of the (kind, value, location) triplet.

	* data/skeletons/glr2.cc (glr_state::value_type)
	(glr_state::location_type): New.
	(glr_state::~glr_state): Use value_type to name the dtor.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: example: use objects (not pointers) to represent the AST
	Currently we are using pointers.  The whole point of
	glr2.cc (vs. glr.cc) is precisely to allow genuine C++ objects to be
	semantic values.  Let's make that work.

	* data/skeletons/glr2.cc (glr_state::glr_state): Be sure to initialize
	yysval.
	(glr_state): Add copy-ctor, assignment and dtor.
	(glr_state::copyFrom): Be sure to initialize the destination if it was
	not.
	(glr_state::~glr_state): Destroy the semantic value.
	* examples/c++/glr/ast.hh: Rewrite so that we use genuine objects,
	rather than a traditional OOP hierarchy that requires to deal with
	pointers.
	With help from Bruno Belanyi <bruno.belanyi@epita.fr>.
	* examples/c++/glr/c++-types.yy: Remove memory management.
	Use true objects.
	(main): Don't reach yydebug directly.

	* examples/c++/glr/local.mk: We need C++11.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: more checks
	* data/skeletons/glr2.cc: Clarify use of magic numbers.
	(glr_stack_item::getState): Check the returned state.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix GLR stack expansion
	When expanding the GLR stack, none of the pointers were updated to
	reflect the new location of the displaced objects.

	This fixes

	    748: Incorrect lookahead during nondeterministic GLR: glr2.cc

	* data/skeletons/glr2.cc (yyexpandGLRStack): Update the split point
	and the stack tops.
	(reduceToOneStack): Factor a bit.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: factor the computation of the accessing symbol
	* data/skeletons/glr2.cc (yy_accessing_symbol): New, as in glr.c.
	Use it.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix calling conventions for yyexpandGLRStackIfNeeded
	This test fails:

	748: Incorrect lookahead during nondeterministic GLR: glr2.cc

	It consumes lots of stack space, so at some point we need to expand
	it.  Because of Boolean logic mistakes, we then claim
	memory-exhausted (first error).  Hence we jump to cleaning the
	stack (popall_), calling all the destructors, and at some point we
	crash with heap-use-after-free (second error).

	This commit fixes the first error.  Unfortunately, even though we now
	do expand the stack, we crash again with (another)
	heap-use-after-free, not addressed here.

	Eventually, we should make sure popall_() properly works.

	* data/skeletons/glr2.cc (yyexpandGLRStackIfNeeded): Return true iff
	success (i.e., memory not exhausted).

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: example: use streams and accept arguments
	From a debugger, it is easier to pass a file name than working on
	stdin.

	* examples/c++/glr/c++-types.yy: Reduce scopes.
	Avoid YYSTYPE/YYLTYPE: use the C++ types.
	(input, process): New.
	(main): Use them.

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	glr: formatting changes
	* data/skeletons/glr.c: Formatting changes.
	* data/skeletons/glr2.cc: Ditto.
	(glr_state_set::INITIAL_NUMBER_STATES): Remove, unused (and useless:
	let std::vector deal with that).

2020-12-20  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: better comments for some tables
	And also, remove the incorrect indentation of these comments:

	    -  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
	    +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
	     static const yytype_int8 yyr2[] =
	     {
	            0,     2,     4,     0,     2,     1,     1,     1,     3,     2,

	I don't remember why this indentation was added (in
	0991e29b75f192570b6fac1ba23657ab4f3509ee), but it seems wrong,
	at least for yacc.c.  I suspect this was done with lalr1.cc (where
	this is embeded in the class definition, so it should be indented),
	but today lalr1.cc uses other routines to output these comments.

	* data/skeletons/bison.m4 (b4_integral_parser_tables_map): Improve the
	wording of the comments of some tables.
	* data/skeletons/c.m4 (b4_integral_parser_table_define): Remove
	indentation.

2020-12-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix glr_stack_item::setState
	A glr_stack_item has "raw" memory to store either a glr_state or a
	semantic_option.  glr_stack_item::setState stores a state using a copy
	assignment.  However, this is more like a construction: we are
	starting from "raw" memory, so use the placement new operator instead.
	While it probably makes no difference when parse.assert is disabled,
	it does make one when it is: the constructor properly initialize the
	magic number, the assignment does not.  So without these changes, the
	next commit (which stores genuine objects in semantic values) fails
	tests 712 and 730 because of incorrect magic numbers.

	* data/skeletons/glr2.cc (glr_stack_item::setState): Build the state,
	don't just copy it.

2020-12-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: more self checks
	* data/skeletons/glr2.cc: here.

2020-12-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: style: s/Type/Kind/g
	* data/skeletons/glr2.cc (YY_SYMBOL_PRINT): Use Kind, not Type.
	As in the other skeletons.

2020-12-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: example: style: add missing copyright headers
	* examples/c++/glr/ast.hh, examples/c++/glr/c++-types.yy: here.
	* examples/c++/glr/local.mk: Fix distribution of ast.hh.

2020-12-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: example: address Clang warnings
	    ast.hh:24:7: error: 'Node' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Werror,-Wweak-vtables]
	    class Node
	          ^
	    ast.hh:57:7: error: 'Nterm' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Werror,-Wweak-vtables]
	    class Nterm : public Node
	          ^
	    ast.hh:102:7: error: 'Term' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Werror,-Wweak-vtables]
	    class Term : public Node
	          ^

	* examples/c++/glr/ast.hh: Define the destructors out of the class
	definition.
	This does not change anything, it is still in the header, but that
	does pacify clang.

2020-12-16  Akim Demaille  <akim.demaille@gmail.com>

	glr: tests: add support for the YYDEBUG envvar
	When debugging these parsers, we really need debug traces.
	Enable them, and bind them to $YYDEBUG.

	* tests/glr-regression.at: Support the YYDEBUG envvar.
	As a consequence, now that syntactic ambiguities are reported, adjust
	the expected output.
	(No users destructors if stack 0 deleted): Don't return 0 on memory
	exhaustion, really return the parser's status, and adust expectations.

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: comment changes
	* data/skeletons/glr.c (yycompressStack): Reduce scope, and import some
	nice comments from glr2.cc.

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: make the example more C++
	Currently the example really looks like C.  Instead of a union of
	structs to implement the AST, use a hierarchy.  It would be nice to
	feature a C++17 version with std variants.

	* examples/c++/glr/c++-types.yy (Node, free_node, new_nterm)
	(new_term): Move into...
	* examples/c++/glr/ast.hh: here, a proper C++ hierarchy.

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: make yyparse a member function
	Amusingly enough, glr2.cc still had its core function, yyparse, being
	a free function instead of a member function.

	* data/skeletons/glr2.cc (yyparse): Remove this free function called
	from yyparser::parse.  Inline its body into...
	(yyparser::parse): this member function.
	This requires moving a bit the yychar, etc. macros.
	Access to token can be simplified (the
	b4_namespace_ref::b4_parser_class prefix is no longer needed).

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: being pure is not an option
	Remove the useless conditional b4_pure_if: the skeleton is, of course,
	pure (no global variables).  Make glr2.cc intrinsically pure.

	* data/skeletons/glr2.cc (b4_pure_if): Remove definition and uses.
	(b4_lex): New.
	Stolen from lalr1.cc to avoid needing to use the one from c.m4.

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix yycompressStack
	Currently, yycompressStack expects the free items to be states only.
	That's not the case.

	Fixes 712 and 730 pass.  748 still fails, but later and
	differently (heap-use-after-free).

	* data/skeletons/glr2.cc (glr_stack_item::setState): New.
	(glr_stack_item::yycompressStack): Use it.
	* tests/glr-regression.at: Adjust.

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix pointer arithmethics
	A glr_state keeps tracks of its predecessor using an offset relative
	to itself (i.e., pointer subtraction).  Unfortunately we sometimes
	have to compute offsets for pointers that live in different
	containers, in particular in yyfillin.  In that case there is no
	reason for the distance between the two objects to be a multiple of
	the object size (0x40 on my machine), and the resulting ptrdiff_t may
	be "wrong", i.e., it does allow to recover one from the other.  We
	cannot use "typed" pointer arithmetics here, the Euclidean division
	has it wrong.  So use "plain" char* pointers.

	Fixes 718 (Duplicate representation of merged trees: glr2.cc) and
	examples/c++/glr/c++-types.

	Still XFAIL:

	    712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc
	    730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc
	    748: Incorrect lookahead during nondeterministic GLR: glr2.cc

	* data/skeletons/glr2.cc (glr_state::as_pointer_): New.
	(glr_state::pred): Use it.
	* examples/c++/glr/c++-types.test: The test passes.
	* tests/glr-regression.at (Duplicate representation of merged trees:
	glr2.cc): Passes.

2020-12-14  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: style fixes
	* data/skeletons/glr2.cc: Formatting changes.

2020-12-13  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: add sanity check in glr_state
	The use of YY_IGNORE_NULL_DEREFERENCE_BEGIN/END in `check_` is to
	please GCC 10:

	    glr-regr8.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state&)':
	    glr-regr8.cc:1433:21: error: potential null pointer dereference [-Werror=null-dereference]
	     1433 |     YYASSERT (this->magic_ == MAGIC);
	          |               ~~~~~~^~~~~~
	    glr-regr8.cc:905:40: note: in definition of macro 'YYASSERT'
	      905 | # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))
	          |                                        ^~~~~~~~~

	* data/skeletons/glr2.cc (glr_state::check_): New.
	Use it in the member functions.

2020-12-13  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: add sanity checks in glr_stack_item
	We obviously have broken pointer arithmetics that hands us
	glr_stack_items that are not glr_stack_items.  Have a simple check for
	this, to have earlier failures.

	* data/skeletons/glr2.cc (glr_stack_item::check_): New.
	Use it.
	(glr_stack_item::contents): Avoid the useless struct.
	Fix minor stylistic issues.

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

	glr2.cc: run the glr-regression tests
	When installed on master as of 2020-12-05 (on top of "glr2.cc: fix
	when the stack is not expandable", almost all the GLR regression tests
	fail (with a SEGV):

	    709: Badly Collapsed GLR States: glr2.cc             FAILED (glr-regression.at:130)
	    712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc FAILED (glr-regression.at:275)
	    715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:404)
	    718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:502)
	    721: User destructor for unresolved GLR semantic value: glr2.cc FAILED (glr-regression.at:566)
	    724: User destructor after an error during a split parse: glr2.cc FAILED (glr-regression.at:624)
	    727: Duplicated user destructor for lookahead: glr2.cc FAILED (glr-regression.at:724)
	    730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc FAILED (glr-regression.at:823)
	    733: No users destructors if stack 0 deleted: glr2.cc FAILED (glr-regression.at:911)
	    736: Corrupted semantic options if user action cuts parse: glr2.cc FAILED (glr-regression.at:974)
	    739: Undesirable destructors if user action cuts parse: glr2.cc FAILED (glr-regression.at:1042)
	    742: Leaked semantic values if user action cuts parse: glr2.cc FAILED (glr-regression.at:1173)
	    748: Incorrect lookahead during nondeterministic GLR: glr2.cc FAILED (glr-regression.at:1546)
	    751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1639)
	    754: Leaked lookahead after nondeterministic parse syntax error: glr2.cc FAILED (glr-regression.at:1710)
	    757: Uninitialized location when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1794)
	    766: Predicates: glr2.cc                             FAILED (glr-regression.at:2045)

	These pass:

	    745: Incorrect lookahead during deterministic GLR: glr2.cc ok
	    760: Missed %merge type warnings when LHS type is declared later: glr2.cc ok
	    763: Ambiguity reports: glr2.cc ok

	With Valentin Tolmer's "glr2.cc: Fix memory corruption bug" commit,
	these test fail "gracefully":

	    712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc FAILED (glr-regression.at:268)
	    730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc FAILED (glr-regression.at:816)
	    748: Incorrect lookahead during nondeterministic GLR: glr2.cc FAILED (glr-regression.at:1539)

	And these do not end:

	    709: Badly Collapsed GLR States: glr2.cc             FAILED (glr-regression.at:123)
	    715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:397)
	    718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:495)
	    751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1632)

	With "tests: glr2.cc: run the glr-regression tests", none loop, and
	709, 715, and 751 pass.  Only 718 still fails.

	* tests/glr-regression.at: Run all the tests with glr2.cc.
	* tests/local.at (AT_GLR2_CC_IF): New.

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

	glr2.cc: use the same format for traces as glr.c
	* data/skeletons/glr2.cc: here.
	This allows to share the same expected output.

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

	glr2.cc: add support for parse.assert
	* data/skeletons/glr2.cc: Fake support of parse.assert, so that the
	tests can use it without failing.

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

	glr2.cc: fix yyresolveValue
	When "tests: glr2.cc: run the glr-regression tests" tests are run,
	before this commit the following tests used to loop endlessly:

	    709: Badly Collapsed GLR States: glr2.cc             FAILED (glr-regression.at:123)
	    715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:397)
	    718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:495)
	    751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1632)

	After this commit, no test loops and 709, 715, and 751 pass.  Only 718
	still fails.

	* data/skeletons/glr2.cc (yyresolveValue): Add missing incrementation
	of the iteration variable.

2020-12-06  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: misc cleanups
	* data/skeletons/glr2.cc: Use 'const' on variables and applicable
	member functions.
	Improve comments.
	Use references where applicable.
	Enforce names_like_this, notLikeThis.
	Reduce scopes.

2020-12-06  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: fix memory corruption bug
	* data/skeletons/glr2.cc (yyremoveDeletes): Remove double-increment in
	the loop.
	(glr_state::copyFrom): Handle gracefully when other is resolved.

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

	glr2.cc: turn some pointers into references
	* data/skeletons/glr2.cc: Prefer references to pointers.
	Add a few more const.

2020-12-06  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: use 'const' for some constant local variables
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: fix when the stack is not expandable
	* data/skeletons/glr2.cc (yyexpandGLRStackIfNeeded): Fix the
	implementation when !YYSTACKEXPANDABLE.

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

	glr.c: fix line numbers in logs
	* data/skeletons/glr.c (yyglrReduce): Fix line numbers.
	* tests/glr-regression.at: Fix expectations.

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: glr: run the glr regression tests with glr.cc
	* tests/glr-regression.at: Adjust the tests to be more independent of
	the language, and run them with glr.cc.
	Some tests relied on yychar, yylval and yylloc being global variables:
	pass arguments instead.

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: glr: prepare for more languages
	* tests/glr-regression.at: Wrap each test in an AT_TEST.
	Call it with glr.c.

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: glr: use AT_FULL_COMPILE
	* tests/glr-regression.at: Instead of using AT_BISON_CHECK and
	AT_COMPILE, use AT_FULL_COMPILE.  This is shorter, and makes it easier
	to add support for other programming languages.

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: glr: prefer directives to warnings
	* tests/glr-regression.at: Use %expect and %expect-rr in the grammar
	files, rather than accepting diagnostics.
	This will make it easier to support other programming languages.

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

	tests: factor the access to token kinds
	* tests/local.at (AT_BISON_OPTION_PUSHDEFS): Define AT_TOKEN.
	(AT_BISON_OPTION_POPDEFS): Undefine it.
	* tests/actions.at, tests/c++.at, tests/calc.at: Use AT_TOKEN.

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

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

2020-12-05  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: don't "leak" yyparse
	When using glr.cc, the C function yyparse is an internal detail that
	should not be exposed.  Users might call it by accident (I did).

	* data/skeletons/glr.c (yyparse): When used for glr.cc, rename as yy_parse_impl.
	* data/skeletons/glr.cc: Adjust.

2020-12-03  Akim Demaille  <akim.demaille@gmail.com>

	portability: beware of GCC 4.6
	    src/reader.c: In function 'grammar_start_symbols_add':
	    src/reader.c:67:24: error: declaration of 'dup' shadows a global declaration [-Werror=shadow]

	* src/reader.c (grammar_start_symbols_add): Rename dup as dupl.

2020-12-03  Akim Demaille  <akim.demaille@gmail.com>

	tables: avoid warnings and save bits
	The yydefgoto table uses -1 as an invalid for an impossible case (we
	never use yydefgoto[0], since it corresponds to the reduction to
	$accept, which never happens).  Since yydefgoto is a table of state
	numbers, this -1 forces a signed type uselessly, which (1) might
	trigger compiler warnings when storing a value from yydefgoto into a
	state number (nonnegative), and (2) wastes bits which might result in
	using a int16 where a uint8 suffices.

	Reported by Jot Dot <jotdot@shaw.ca>.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00027.html

	* src/tables.c (default_goto): Use 0 rather than -1 as invalid value.
	* tests/regression.at: Adjust.

2020-12-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: use noexcept where appropriate
	Reported by Don Macpherson.
	https://github.com/akimd/bison/issues/63
	https://github.com/akimd/bison/issues/64

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

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

	gnulib: update

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

	multistart: check duplicates
	* src/symlist.h, src/symlist.c (symbol_list_find_symbol)
	(symbol_list_last): New.
	(symbol_list_append): Use symbol_list_last.
	* src/reader.c (grammar_start_symbols_add): Check and discard duplicates.
	* tests/input.at (Duplicate %start symbol): New.
	* tests/reduce.at (Bad start symbols): Add the multistart keyword.

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

	style: change the format of a debugging function
	* src/symlist.c (symbol_list_syms_print): Use braces to make traces
	easier to read.

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

	style: rename grammar_start_symbols_set as grammar_start_symbols_add
	* src/reader.h, src/reader.c (grammar_start_symbols_set): Rename as...
	(grammar_start_symbols_add): this.
	Adjust dependencies.

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

	TODO: update

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

	multistart: also use the api.prefix in the implementation
	We were declaring foo_parse_expr but implementing yyparse_expr.

	* data/skeletons/yacc.c (_b4_define_sub_yyparse): Use api.prefix for
	the parse function name.

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

	doc: using stow to set up a bison herd
	* README-hacking.md (Stow): New.

2020-11-20  Adela Vais  <adela.vais99@gmail.com>

	d: change YYLocation's type from class to struct
	This avoids heap allocation and gives minimal costs for the
	creation and destruction of the YYParser.Symbol struct if
	the location tracking is active.

	Suggested by H. S. Teoh.

	* data/skeletons/lalr1.d: Here.
	* doc/bison.texi: Document it.
	* examples/d/calc/calc.y: Adjust.
	* tests/calc.at: Test it.

2020-11-20  Adela Vais  <adela.vais99@gmail.com>

	d: change the return value of yylex from TokenKind to YYParser.Symbol
	The complete symbol approach was deemed to be the right approach for Dlang.
	Now, the user can return from yylex() an instance of YYParser.Symbol structure,
	which binds together the TokenKind, the semantic value and the location. Before,
	the last two were reported separately to the parser.
	Only the user API is changed, Bisons's internal structure is kept the same.

	* data/skeletons/d.m4 (struct YYParser.Symbol): New.
	* data/skeletons/lalr1.d: Change the return value.
	* doc/bison.texi: Document it.
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Demonstrate it.
	* tests/calc.at, tests/scanner.at: Test it.

2020-11-20  Martin Rehak  <martin.rehak@oracle.com>

	examples: avoid "unbound variable" errors
	When the shell option `nounset` is set, we may get "unbound variable"
	errors.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00013.html

	* examples/test (diff_opts): Be sure to initialize it.

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

	gnulib: update
	* Makefile.am (gitsort): New.
	Use it.

2020-11-18  Adela Vais  <adela.vais@yahoo.com>

	d: add support for lookahead correction
	When using lookahead correction, the method YYParser.Context.getExpectedTokens
	is not annotated with const, because the method calls yylacCheck, which is not
	const. Also, because of yylacStack and yylacEstablished, yylacCheck needs to
	be called from the context of the parser class, which is sent as parameter to
	the Context's constructor.

	* data/skeletons/lalr1.d (yylacCheck, yylacEstablish, yylacDiscard,
	yylacStack, yylacEstablished): New.
	(Context): Use it.
	* doc/bison.texi: Document it.
	* tests/calc.at: Check it.

2020-11-18  Adela Vais  <adela.vais@yahoo.com>

	d: change the name of the custom error message function to reportSyntaxError
	Changed from syntax_error to reportSyntaxError to be similar to the Java parser.

	* data/skeletons/lalr1.d: Change the function name.
	* doc/bison.texi: Document it.
	* tests/local.at: Adjust.

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

	Merge branch 'maint'
	* upstream/maint:
	  maint: post-release administrivia
	  version 3.7.4

2020-11-14  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.

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

	version 3.7.4
	* NEWS: Record release date.

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

	style: prefer b4_symbol(empty, ...) to b4_symbol(-2, ...)
	* data/skeletons/c.m4: here.

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

	Merge branch 'maint'
	* maint:
	  c++: shorten the assertions that check whether tokens are correct
	  c++: don't glue functions together
	  lalr1.cc: YY_ASSERT should use api.prefix
	  c++: don't use YY_ASSERT at all if parse.assert is disabled
	  c++: style: follow the Bison m4 quoting pattern
	  yacc.c: provide the Bison version as an integral macro
	  regen
	  style: make conversion of version string to int public
	  %require: accept version numbers with three parts ("3.7.4")
	  yacc.c: fix #definition of YYEMPTY
	  gnulib: update
	  doc: fix incorrect section title
	  doc: minor grammar fixes in counterexamples section

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

	c++: shorten the assertions that check whether tokens are correct
	Before:

	    YY_ASSERT (tok == token::YYEOF || tok == token::YYerror || tok == token::YYUNDEF || tok == 120 || tok == 49 || tok == 50 || tok == 51 || tok == 52 || tok == 53 || tok == 54 || tok == 55 || tok == 56 || tok == 57 || tok == 97 || tok == 98);

	After:

	    YY_ASSERT (tok == token::YYEOF
	               || (token::YYerror <= tok && tok <= token::YYUNDEF)
	               || tok == 120
	               || (49 <= tok && tok <= 57)
	               || (97 <= tok && tok <= 98));

	Clauses are now also wrapped on several lines.  This is nicer to read
	and diff, but also avoids pushing Visual C++ to its arbitrary
	limits (640K and lines of 16380 bytes ought to be enough for anybody,
	otherwise make an C2026 error).

	The useless parens are there for the dummy warnings about
	precedence (in the future, will we also have to put parens in
	`1+2*3`?).

	* data/skeletons/variant.hh (_b4_filter_tokens, b4_tok_in, b4_tok_in):
	New.
	(_b4_token_constructor_define): Use them.

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

	c++: don't glue functions together
	* data/skeletons/bison.m4 (b4_type_foreach): Accept a separator.
	* data/skeletons/c++.m4: Use it.
	And fix an incorrect comment.

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

	lalr1.cc: YY_ASSERT should use api.prefix
	Working on the previous commit I realized that YY_ASSERT was used in
	the generated headers, so must follow api.prefix to avoid clashes when
	multiple C++ parser with variants are used.

	Actually many more macros should obey api.prefix (YY_CPLUSPLUS,
	YY_COPY, etc.).  There was no complaint so far, so it's not urgent
	enough for 3.7.4, but it should be addressed in 3.8.

	* data/skeletons/variant.hh (b4_assert): New.
	Use it.
	* tests/local.at (AT_YYLEX_RETURN): Fix.
	* tests/headers.at: Make sure variant-based C++ parsers are checked
	too.
	This test did find that YY_ASSERT escaped renaming (before the fix in
	this commit).

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

	c++: don't use YY_ASSERT at all if parse.assert is disabled
	In some extreme situations (about 800 tokens), we generate a
	single-line assertion long enough for Visual C++ to discard the end of
	the line, thus falling into parse ends for the missing `);`.  On a
	shorter example:

	    YY_ASSERT (tok == token::TOK_YYEOF || tok == token::TOK_YYerror || tok == token::TOK_YYUNDEF || tok == token::TOK_ASSIGN || tok == token::TOK_MINUS || tok == token::TOK_PLUS || tok == token::TOK_STAR || tok == token::TOK_SLASH || tok == token::TOK_LPAREN || tok == token::TOK_RPAREN);

	Whether NDEBUG is used or not is irrelevant, the parser dies anyway.

	Reported by Jot Dot <jotdot@shaw.ca>.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00002.html

	We should avoid emitting lines so long.

	We probably should also use a range-based assertion (with extraneous
	parens to pacify fascist compilers):

	    YY_ASSERT ((token::TOK_YYEOF <= tok && tok <= token::TOK_YYUNDEF)
	               || (token::TOK_ASSIGN <= tok && ...)

	But anyway, we should simply not emit this assertion at all when not
	asked for.

	* data/skeletons/variant.hh: Do not define, nor use, YY_ASSERT when it
	is not enabled.

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

	c++: style: follow the Bison m4 quoting pattern
	* data/skeletons/variant.hh: here.

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

	todo: more

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

	yacc.c: provide the Bison version as an integral macro
	Suggested by Balazs Scheidler.
	https://github.com/akimd/bison/issues/55

	* src/muscle-tab.c (muscle_init): Move/rename `b4_version` to/as...
	* src/output.c (prepare): `b4_version_string`.
	Also define `b4_version`.
	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/d.m4,
	* data/skeletons/java.m4: Adjust.
	* doc/bison.texi: Document it.

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

	regen

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

	style: make conversion of version string to int public
	* src/parse-gram.y (str_to_version): Rename as/move to...
	* src/strversion.h, src/strversion.c (strversion_to_int): these new
	files.

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

	%require: accept version numbers with three parts ("3.7.4")
	* src/parse-gram.y (str_to_version): Support three parts.
	* data/skeletons/location.cc, data/skeletons/stack.hh:
	Adjust.

2020-11-11  Todd C. Miller  <Todd.Miller@sudo.ws>

	yacc.c: fix #definition of YYEMPTY
	When generating a C parser, YYEMPTY is present in enum yytokentype but
	there is no corresponding #define like there is for the other values.
	There is a special case for YYEMPTY in b4_token_enums but no
	corresponding case in b4_token_defines.

	* data/skeletons/c.m4 (b4_token_defines): Do define YYEMPTY.

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

	gnulib: update

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

	style: enforce java coding style
	* tests/scanner.at: here.

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

	ielr: fix incorrect function call
	* src/ielr.c: s/rule_is_accepting/rule_is_initial/.

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

	ielr: more comments and logs
	* src/ielr.c: More comments.
	(state_list_print): New.

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

	multistart: fix IELR computations
	IELR needs to rule out the successors of the kernel items of the
	initial state (`$accept: input • $end`).  In the case of multistart,
	this condition must be expressed differently: the mere item index does
	not suffice.

	* src/ielr.c (ielr_item_has_lookahead, ielr_compute_lookaheads): Don't
	rely on the item index to check whether is_successor_of_initial_item.
	It is certainly more costly than just checking the item index, but (i)
	we need to compute the rule anyway, so it's not very much more costly,
	and (ii) in ielr_item_has_lookahead, this situation is actually
	impossible, so an optimizing compiler reading the assertions should
	actually avoid this computation.

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

	ielr: make some conditions about items easier to understand
	Checking that an item index is > 1 means ruling out `$accept: • input
	$end` and `$accept: input • $end`.  But actually only the latter is
	possible there, i.e., we're checking whether this item is about a
	successor of a (kernel) item of the initial state ($accept: input •
	$end).

	* src/ielr.c (is_successor_of_initial_item): Use a variable to name
	this condition.

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

	multistart: introduce and use rule_is_initial
	* src/gram.h (rule_is_initial): New.
	* src/graphviz.c, src/print-xml.c, src/print.c, src/lalr.c: Use it.
	Some of these occurrences were incorrect (checking whether this is
	rule 0), and not behaving properly in the case of multistart.

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

	style: comment and formatting changes, and fixes
	* examples/c/lexcalc/parse.y: Fix option handling.
	* src/gram.h: Clarify comments.
	* src/ielr.c: Fix indentation.
	* src/print.c, src/state.h: More comments.

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

	lalr: add assertions
	* src/lalr.c: Remove incorrect comment (subsumed anyway by the
	(correct) one in the header.
	(set_goto_map): More debug traces.
	(map_goto): Add an assertion.

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

	glr2.cc: remove scaffolding for glr.c
	* data/skeletons/glr2.cc (b4_glr_cc_setup, b4_glr_cc_cleanup): Remove.

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

	d: remove dead comment
	* data/skeletons/lalr1.d (reportSyntaxError): here.

2020-11-07  Adela Vais  <adela.vais@yahoo.com>

	d: add the custom error message feature
	Parser.Context class returns a const YYLocation, so Lexer's method
	yyerror() needs to receive the location as a const parameter.

	Internal error reporting flow is changed to be similar to that of
	the other skeletons. Before, case YYERRLAB was calling yyerror()
	with the result of yysyntax_error() as the string parameter. As the
	custom error message lets the user decide if they want to use
	yyerror() or not, this flow needed to be changed. Now, case YYERRLAB
	calls yyreportSyntaxError(), that builds the error message using
	yysyntaxErrorArguments(). Then yyreportSyntaxError() passes the
	error message to the user defined syntax_error() in case of a custom
	message, or to yyerror() otherwise.

	In the tests in tests/calc.at, the order of the tokens needs to be
	changed in order of precedence, so that the D program outputs the
	expected tokens in the same order as the other parsers.

	* data/skeletons/lalr1.d: Add the custom error message feature.
	* doc/bison.texi: Document it.
	* examples/d/calc/calc.y: Adjust.
	* tests/calc.at, tests/local.at: Test it.

2020-11-07  Adela Vais  <adela.vais@yahoo.com>

	d: examples: fix coding style
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Fix whitespace issues
	and remove the @property attribute.

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

	style: avoid explicit symbol numbers
	This should have been part of commit "symbols: stop dealing with YYEMPTY
	as b4_symbol(-2, ...)" (cd40ec9526df27d0e3e1c2d41e82a3e6a47254d1).
	Give names to all the special symbols: "eof", "error" and "undef".

	* data/skeletons/bison.m4 (b4_symbol): Let `b4_symbol(eof, ...)` mean
	`b4_symbol(0, ...)`, `b4_symbol(error, ...)` mean `b4_symbol(1, ...)`,
	and , `b4_symbol(undef, ...)` mean `b4_symbol(2, ...)`..

	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/glr.cc,
	* data/skeletons/glr2.cc, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
	* data/skeletons/yacc.c:
	Prefer symbols to numbers.

2020-11-07  Adela Vais  <adela.vais@yahoo.com>

	d: fix Context class
	All methods are now declared as const. Method getExpectedTokens() has now the
	functionality of reporting only the number of expected tokens.

	* data/skeletons/lalr1.d: Fix Context class.

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

	doc: fix typo
	Reported by Kaz Kylheku.
	https://lists.gnu.org/r/bison-patches/2020-11/msg00019.html

	* doc/bison.texi (Versioning): here.

2020-11-07  Adela Vais  <adela.vais99@gmail.com>

	d: doc: add D Action Features section
	* doc/bison.texi (D Action Features section): New.

2020-11-07  Adela Vais  <adela.vais99@gmail.com>

	d: add yyerrok
	In D's case, yyerrok() is a private method of the Parser class.
	It can be called directly as `yyerrok()` from the grammar rules section.

	* data/skeletons/lalr1.d: Add yyerrok().
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Demonstrate yyerrok().
	* tests/calc.at: Update D tests to use yyerrok().

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

	java: lac: a stronger test for the exploratory stack
	* tests/local.at (AT_YYLEX_DEFINE(java)): Fix overquoting issue.
	Style changes.
	* tests/regression.at (LAC: Exploratory stack): Run for lalr1.java too.

2020-11-05  Kaz Kylheku  <kaz@kylheku.com>

	doc: document best deployment practices.
	* doc/bison.texi (Versioning): New node about practices
	regarding dealing with multiple versions of Bison.

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

	java: lac: more tests, and some doc
	* doc/bison.texi: C++ and Java support LAC.
	* tests/input.at (LAC: Errors for %define): Generalize the test, and
	apply it to Java.

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

	java: avoid Integer(String), use parseInt
	    examples/java/calc/Calc.java:1531: warning: [deprecation] Integer(String) in Integer has been deprecated
	          yylval = new Integer(st.sval);
	                   ^

	* examples/java/calc/Calc.y, examples/java/simple/Calc.y,
	* tests/calc.at, tests/scanner.at: Use Integer.parseInt.

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

	java: prefer ArrayList to Vector
	Vector is synchronized, which is completely useless in our case (and
	not even relevant when concurrency matters).  No seasoned Java
	programmer would use it.
	Reported by Uxio Prego.

	* data/skeletons/lalr1.java: Replace Vector with ArrayList.
	Unfortunately its API is not as rich, and lacks lastElement and
	setSize.

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

	java: lac: check it
	* tests/calc.at: Add tests for LAC in pull and push parsers.
	Skip LAC: line from the logs.
	* tests/local.at (reportSyntaxError): Output the error message in a
	single call, to avoid having the error message on stderr be
	interrupted by the debug traces of LAC in getExpectedTokens.

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

	java: add support for lookahead correction
	Shamelessly stolen from Adrian Vogelsgesang's implementation in
	lalr1.cc.

	* data/skeletons/lalr1.java (yycdebugNnl, yyLacCheck, yyLacEstablish)
	(yyLacDiscard, yylacStack, yylacEstablished): New.
	(Context): Use it.
	* examples/java/calc/Calc.y: Enable LAC.

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

	style: java: more style fixes
	* data/skeletons/lalr1.java, tests/java.at: Avoid space before paren.
	And use braces as is customary in the Java.

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

	style: comment changes in the skeletons
	* data/skeletons/lalr1.cc: Prepare for Java's LAC.
	* data/skeletons/lalr1.java: Style fixes.

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

	doc: fix incorrect section title
	Reported by Gaurav Singh <gaurav.singh199709@yahoo.com>.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00000.html

	* doc/bison.texi (Rpcalc Expr): Rename as...
	(Rpcalc Exp): this, as the nterm is named 'exp'.

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

	doc: fix incorrect section title
	Reported by Gaurav Singh <gaurav.singh199709@yahoo.com>.
	https://lists.gnu.org/r/bug-bison/2020-11/msg00000.html

	* doc/bison.texi (Rpcalc Expr): Rename as...
	(Rpcalc Exp): this, as the nterm is named 'exp'.

2020-10-28  Nick Gasson  <nick@nickg.me.uk>

	doc: minor grammar fixes in counterexamples section
	* doc/bison.texi: Minor fixes in counterexamples section.

2020-10-28  Nick Gasson  <nick@nickg.me.uk>

	doc: minor grammar fixes in counterexamples section
	* doc/bison.texi: Minor fixes in counterexamples section.

2020-10-27  Adela Vais  <adela.vais99@gmail.com>

	d: create the Parser.Context class
	This will provide the user an interface for creating custom error messages.

	* data/skeletons/lalr1.d: Add the Context class.
	* doc/bison.texi: Document it.

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

	Merge branch 'maint'
	* upstream/maint:
	  doc: fix typo
	  maint: post-release administrivia
	  version 3.7.3
	  build: don't link bison against libreadline
	  gnulib: update
	  glr.cc: fix: use symbol_name
	  build: fix a concurrent build issue in examples

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

	doc: fix typo
	* README: here.

2020-10-13  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.

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

	version 3.7.3
	* NEWS: Record release date.

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

	build: don't link bison against libreadline
	Reported by Paul Smith <psmith@gnu.org>.
	https://lists.gnu.org/r/bug-bison/2020-10/msg00001.html

	* src/local.mk (src_bison_LDADD): here.

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

	gnulib: update

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

	doc: D comes before Java in alphabetical order
	* doc/bison.texi: Keep languages sorted.

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

	report: put the dot after %empty in items
	When printing items, it is clearer to put the dot after %emtpy rather
	than before:

	     0 $accept: . unit "end of file"
	     1 unit: . assignments exp
	-    2 assignments: . %empty
	+    2 assignments: %empty .
	     3            | . assignments assignment

	Also, use the Unicode characters if they are supported.

	* src/gram.c (item_print): Put the dot after %emtpy.
	* tests/conflicts.at, tests/reduce.at, tests/report.at: Adjust.

2020-10-03  Adela Vais  <adela.vais99@gmail.com>

	d: change api.token.raw default value to true
	Generate consecutive values for enum TokenKind, as D's yylex()
	returns TokenKind and collisions can't happen.

	* data/skeletons/d.m4: Change default value.
	* tests/scanner.at, tests/d.at: Check it.

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

	m4: have b4_percent_define_if_define apply default values lazily
	Currently `b4_percent_define_ifdef([foo])` assigns a default value to
	`foo` when invoked.  As a consequence, skeletons such as lalr1.d
	cannot specify their specific default values: `foo` was defined in
	bison.m4.

	Instead, provide `foo` with a default value when `b4_foo_if` is
	invoked.

	I could not measure a runtime difference between both cases.

	* data/skeletons/bison.m4 (_b4_percent_define_define): New.
	Helps getting rid of spurious indentation that resulted in spurious
	white space in the output.
	(b4_percent_define_if_define): Move the definition to...
	(_b4_percent_define_if_define): when the defined macros is called.

2020-10-02  Adela Vais  <adela.vais99@gmail.com>

	d: don't trigger GC in void toString
	* data/skeletons/d.m4 (b4_declare_symbol_enum): Here.

2020-10-02  Adela Vais  <adela.vais@yahoo.com>

	d: document support
	* doc/bison.texi: Various fixes.
	(D Parsers): New section.

2020-10-02  Adela Vais  <adela.vais@yahoo.com>

	d: remove the default prefix for SymbolKind's enum elements
	This is not needed in D, since the kinds are "scoped".

	* data/skeletons/d.m4: Remove the default prefix.
	* doc/bison.text: Document it.

2020-10-02  Adela Vais  <adela.vais@yahoo.com>

	d: remove the @property attribute from interface Lexer
	D best practices is to not use it.

	* data/skeletons/lalr1.d: Remove attribute.

2020-09-29  Akim Demaille  <akim.demaille@gmail.com>

	symbols: stop dealing with YYEMPTY as b4_symbol(-2, ...)
	* data/skeletons/bison.m4 (b4_symbol): Redirect `b4_symbol(empty,
	...)` to `b4_symbol(-2, ...)`.
	Change all uses of the latter to the former.

2020-09-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: remove useless prefix for EOF in D
	* tests/calc.at (CALC_EOF): Rename as...
	(EOF): this.
	Since there is no risk of a clash with #define EOF here...

2020-09-28  Adela Vais  <adela.vais99@gmail.com>

	d: support api.symbol.prefix and api.token.prefix
	The D skeleton was not properly supporting them.

	* data/skeletons/d.m4, data/skeletons/lalr1.d: Fix it.
	* tests/calc.at: Check it.

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

	multistart: start more thorough testing
	* tests/local.at (AT_MULTISTART_IF): New.
	* tests/calc.at: Adjust to check multiple start symbols.
	* data/skeletons/yacc.c (yy_parse_impl): Fix.

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

	tests: style: reorder the calculator test macros
	* tests/local.at (AT_TOKEN_TRANSLATE_IF): New, moved from...
	* tests/calc.at: here.
	Instead of sorting per feature (main, yylex, calc.y) and then by
	language, do the converse, so that C bits are together, etc.

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

	tests: shorten the generated file
	* tests/synclines.at (_AT_SYNCLINES_COMPILE): Pull the comments out.

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

	gnulib: update

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

	multistart: also give access to yynerrs
	This is something that has always bothered me: with pure parsers (and
	they all should be) the user does not have an (easy) access to yynerrs
	at the end of the parse.  In the case of error recovery, that's the
	only direct means to know if there were errors.  The usual approach
	being having the user maintain a counter incremented each time yyerror
	is called.

	So here, also capture yynerrs in the return value of the start-symbol
	parsing functions.

	* data/skeletons/yacc.c (yy_parse_impl_t): New.
	(yy_parse_impl): Use it.
	(b4_accept): Fill it.
	* examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l: No longer
	pass nerrs as lex- and parse-param, just use the resulting yynerrs.
	bistromathic and reccalc both demonstrate %param.

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

	yacc.c: also count calls to YYERROR in yynerrs
	* data/skeletons/yacc.c: here.

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

	multistart: allow tokens as start symbols
	After all, why not?

	* src/reader.c (switching_token): Use symbol_id_get.
	(check_start_symbols): Require that the start symbol is a token only
	if it's the only one.
	* examples/c/lexcalc/parse.y: Let NUM be a start symbol.

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

	multistart: use b4_accept instead of action post-processing
	For each start symbol, generate a parsing function with a richer
	return value than the usual of yyparse.  Reserve a place for the
	returned semantic value, in order to avoid having to pass a pointer as
	argument to "return" that value.  This also makes the call to the
	parsing function independent of whether a given start-symbol is typed.

	For instance, if the grammar file contains:

	    %type <int> expression
	    %start input expression

	(so "input" is valueless) we get

	    typedef struct
	    {
	      int yystatus;
	    } yyparse_input_t;

	    yyparse_input_t yyparse_input (void);

	    typedef struct
	    {
	      int yyvalue;
	      int yystatus;
	    } yyparse_expression_t;

	    yyparse_expression_t yyparse_expression (void);

	This commit also changes the implementation of the parser termination:
	when there are multiple start symbols, it is the initial rules that
	explicitly YYACCEPT.  They do that after having exported the
	start-symbol's value (if it is typed):

	  switch (yyn)
	    {
	  case 1: /* $accept: YY_EXPRESSION expression $end  */
	  { ((*yyvalue).TOK_expression) = (yyvsp[-1].TOK_expression); YYACCEPT; }
	    break;

	  case 2: /* $accept: YY_INPUT input $end  */
	  { YYACCEPT; }
	    break;

	I have tried several ways to deal with termination, and this is the
	one that appears the best one to me.  It is also the most natural.

	* src/scan-code.h, src/scan-code.l (obstack_for_actions): New.
	* src/reader.c (grammar_rule_check_and_complete): Generate the actions
	of the rules for each start symbol.

	* data/skeletons/bison.m4 (b4_symbol_slot): New, with safer semantics
	than type and type_tag.
	* data/skeletons/yacc.c (b4_accept): New.
	Generates the body of the action of the start rules.
	(_b4_declare_sub_yyparse): For each start symbol define a dedicated
	return type for its parsing function.
	Adjust the declaration of its parsing function.
	(_b4_define_sub_yyparse): Adjust the definition of the function.

	* examples/c/lexcalc/parse.y: Check the case of valueless symbols.
	* examples/c/lexcalc/lexcalc.test: Check start symbols.

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

	multistart: adjust reader checks for generated rules
	So far we were not checking the generated rule 0 at all.  Now there
	can be several of them.  Instead of not checking at all, let's be more
	selective on the check to run on them.

	* src/reader.c (grammar_rule_check_and_complete): Don't check for
	value usage for generated rules, it is ok to have a valued start
	symbol, in which case it is ok for the generated rule ("accept: start
	$end {}") to not use $1.
	(packgram): Call grammar_rule_check_and_complete for all the rules.

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

	todo: more

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

	multistart: toy with it in lexcalc
	* examples/c/lexcalc/parse.y: Define several start symbols.
	* examples/c/lexcalc/lexcalc.test: Check support.

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

	multistart: equip yacc.c
	* data/skeletons/yacc.c: Add support for multiple start symbols.

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

	multistart: pass the list of start symbols to the backend
	* src/output.c (start_symbols_output): New.
	(muscles_output): Use it.

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

	multistart: also check the HTML report
	We don't actually have checks for HTML, so let's do it for multistart.

	* tests/report.at: here.

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

	multistart: adjust computation of initial core and adjust reports
	Currently the core of the initial state is limited to the single rule
	on $accept.

	* src/lr0.c (generate_states): There may now be several rules on
	$accept.

	* src/graphviz.c (conclude_red): Recognize "final" transitions by the
	fact that we reduce to "$accept".
	* src/print.c (print_reduction): Likewise.
	* src/print-xml.c (print_reduction): Likewise.

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

	regen

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

	multistart: turn start symbols into rules on $accept
	Now that the parser can read several start symbols, let's process
	them, and create the corresponding rules.

	* src/parse-gram.y (grammar_declaration): Accept a list of start symbols.
	* src/reader.h, src/reader.c (grammar_start_symbol_set): Rename as...
	(grammar_start_symbols_set): this.

	* src/reader.h, src/reader.c (start_flag): Replace with...
	(start_symbols): this.
	* src/reader.c (grammar_start_symbols_set): Build a list of start
	symbols.
	(switching_token, create_start_rules): New.
	(check_and_convert_grammar): Use them to turn the list of start
	symbols into a set of rules.
	* src/reduce.c (nonterminals_reduce): Don't complain about $accept,
	it's an internal detail.
	(reduce_grammar): Complain about all the start symbols that don't
	derive sentences.

	* src/symtab.c (startsymbol, startsymbol_loc): Remove, replaced by
	start_symbols.
	symbols_pack): Move the check about the start symbols
	to...
	* src/symlist.c (check_start_symbols): here.
	Adjust to multiple start symbols.
	* tests/reduce.at (Empty Language): Generalize into...
	(Bad start symbols): this.

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

	regen

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

	parser: expose a list of symbols
	* src/parse-gram.y (%type): Also use current_class.
	(symbol_decl.1): Rename as...
	(symbols.1): this.

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

	reader: get ready to create several initial rules
	* src/reader.c (create_start_rule): New.
	Use it.

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

	gram: more debugging information
	* src/gram.c (ritem_print): Show indices in ritem.

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

	glr.cc: fix: use symbol_name
	* data/skeletons/glr.cc: here.

2020-09-26  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: add an example
	Currently this example crashes on input such as "T (x) + y;".
	The same example with glr.c works properly.

	* examples/c++/glr/Makefile, examples/c++/glr/README.md,
	* examples/c++/glr/c++-types.test, examples/c++/glr/c++-types.yy,
	* examples/c++/glr/local.mk, examples/c++/local.mk: New.
	Based on examples/c/glr/c++-types.y.

2020-09-26  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: fix: use symbol_name
	* data/skeletons/glr.cc: here.

2020-09-26  Adela Vais  <adela.vais99@gmail.com>

	d: change the return value of yylex from int to TokenKind
	* data/skeletons/lalr1.d: Change the return value.
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Adjust.
	* tests/scanner.at: Adjust.
	* tests/calc.at (_AT_DATA_CALC_Y(d)): New, extracted from...
	(_AT_DATA_CALC_Y(c)): here.
	The two grammars have been sufficiently different to be separated.
	Still trying to be them together results in a maintenance burden.  For
	the same reason, instead of specifying the results for D and for the
	rest, compute the expected results with D from the regular case.

2020-09-24  Adela Vais  <adela.vais99@gmail.com>

	d: support api.parser.extends and api.parser.implements
	The D skeleton was not properly supporting them.

	* data/skeletons/d.m4: Fix it.
	* tests/d.at: Check it.
	* tests/local.mk, tests/testsuite.at: Adjust.

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

	glr2.cc: also run all the calculator tests
	This revealed issues with yy_symbol_print and yy_reduce_print.
	These changes, in turn, reactivated GCC10 warnings:

	    559. calc.at:1258: testing Calculator glr2.cc %locations %header parse.error=verbose %debug api.prefix={calc} %verbose %parse-param {semantic_value *result}{int *count}{int *nerrs}  ...
	    tests/calc.at:1258: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS;  bison --color=no -fno-caret -Wno-deprecated -o calc.cc calc.y
	    tests/calc.at:1258: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
	    stderr:
	    calc.cc: In function 'void glr_stack::yyresolveLocations(glr_state*, int)':
	    calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference]
	     2623 |                 yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference]
	     2623 |                 yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference]
	     2623 |                 yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    calc.cc:1177:10: error: potential null pointer dereference [-Werror=null-dereference]
	     1177 |   return yypred ? &(asItem (this) - yypred)->getState () : YY_NULLPTR;
	          |          ^~~~~~
	    calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference]
	     2623 |                 yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference]
	     2623 |                 yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    calc.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)':
	    calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference]
	     2623 |                 yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~

	* tests/calc.at (AT_CHECK_CALC_GLR_CC): Also check glr2.cc.
	* data/skeletons/glr2.cc: Don't pass the user arguments to
	yy_symbol_print and yy_reduce_print, since they have it in the parser
	object.
	(b4_user_formals_no_comma, b4_pure_args, b4_lpure_args)
	(b4_locuser_formals, b4_locuser_args): Remove, useless.
	(YY_IGNORE_NULL_DEREFERENCE_BEGIN): Enable for GCC >= 10 too.

2020-09-20  Akim Demaille  <akim.demaille@gmail.com>

	tests: check the location of the right-hand side symbols
	The D skeleton was not properly supporting @1 etc.
	Reported by Adela Vais.
	https://lists.gnu.org/r/bison-patches/2020-09/msg00049.html

	* data/skeletons/d.m4 (b4_rhs_location): Fix it.
	* tests/calc.at: Check the support of @n for all the skeletons.

2020-09-20  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* src/scan-code.l: here.

2020-09-20  Akim Demaille  <akim.demaille@gmail.com>

	style: introduce parse_positional_ref
	* src/scan-code.l: here.

2020-09-20  Akim Demaille  <akim.demaille@gmail.com>

	style: clarify the way state kernels (aka cores) are built
	Use state_list_append in a more natural way.

	* src/lr0.c (generate_states): Here.

2020-09-20  Akim Demaille  <akim.demaille@gmail.com>

	style: reorder and comment
	* src/reader.h: here.

2020-09-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: add a demonstration of GLR parsers in C
	Based on the test case 668 (cxx-type.at:437) "GLR: Merge conflicting
	parses, pure, locations".

	* examples/c/glr/Makefile, examples/c/glr/README.md,
	* examples/c/glr/c++-types.test, examples/c/glr/c++-types.y,
	* examples/c/glr/local.mk: New.

2020-09-19  Akim Demaille  <akim.demaille@gmail.com>

	glr: support api.header.include
	* data/skeletons/glr.c: here.

2020-09-19  Akim Demaille  <akim.demaille@gmail.com>

	add support for --html
	* bootstrap.conf: We need the "execute" module.
	* src/files.h, src/files.c (spec_html_file, html_flag): New.
	* src/getargs.h, src/getargs.c (--html): New.
	* src/print-xml.h, src/print-xml.c (print_html): New.
	* src/main.c: Use them.
	* tests/output.at, tests/report.at: Check --html.

2020-09-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-09-19  Akim Demaille  <akim.demaille@gmail.com>

	deprecate %defines in favor of %header
	This is consistent with --defines being deprecated in favor of
	--header.  The directive %defines is also too similar to %define.
	And %header matches nicely with api.header.name.

	* src/scan-gram.l (%defines): Deprecate to %header.
	(%header): Scan it.
	* src/parse-gram.y (PERCENT_DEFINES): Replace with...
	(PERCENT_HEADER): this.
	* data/skeletons/lalr1.java
	* doc/bison.texi
	* tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at,
	* tests/input.at, tests/java.at, tests/local.at, tests/output.at,
	* tests/synclines.at, tests/types.at:
	Convert most tests to check %header instead of %defines.

2020-09-19  Akim Demaille  <akim.demaille@gmail.com>

	options: rename --defines as --header
	The name "defines" is incorrect, the generated file contains far more
	than just #defines.

	* src/getargs.h, src/getargs.c (-H, --header): New option.
	With optional argument, just like --defines, --xml, etc.
	(defines_flag): Rename as...
	(header_flag): this.
	Adjust dependencies.
	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.c,
	* data/skeletons/glr.cc, data/skeletons/glr2.cc, data/skeletons/lalr1.cc,
	* data/skeletons/yacc.c:
	Adjust.
	* examples, doc/bison.texi: Adjust.
	* tests/headers.at, tests/local.at, tests/output.at: Convert most
	tests from using --defines to using --header.

2020-09-17  Akim Demaille  <akim.demaille@gmail.com>

	CI: beware of time limits
	* .travis.yml (GCC 8): Run only the part 1 of the tests.

2020-09-17  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: replace refs to parser::symbol_kind_type with yysymbol_kind_t
	* data/skeletons/glr2.cc: here.

2020-09-17  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: fix container out-of-bounds access
	Clang 10 with ASAN enabled reported errors in glr2.cc.

	* data/skeletons/glr2.cc: here.

2020-09-15  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: disable GCC 4.6 warning
	    231. conflicts.at:1096: testing Syntax error in consistent error state: glr2.cc ...
	    tests/conflicts.at:1096: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o input input.cc $LIBS
	    input.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)':
	    input.cc:2674:36: error: 'yysval' may be used uninitialized in this function [-Werror=uninitialized]

	Do not initialize the variable: this way ASAN can really make sure we
	do set it to a proper value.
	If we initialize it, ASAN would report nothing.

	* data/skeletons/c.m4 (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): Disable
	GCC 4.6's -Wuninitialized.
	* data/skeletons/glr2.cc: Disable the warning locally.

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

	glr2.cc: fix warning with GCC 4.7 and 4.8
	    231. conflicts.at:1096: testing Syntax error in consistent error state: glr2.cc ...
	    tests/conflicts.at:1096: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o input input.cc $LIBS
	    input.cc: In function 'int yyparse(yy::parser&)':
	    input.cc:3147:41: error: 'yyarg' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	         return yytnamerr_ (yytname_[yysymbol]);
	                                             ^
	    input.cc:2058:34: note: 'yyarg' was declared here
	         yy::parser::symbol_kind_type yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
	                                      ^

	* data/skeletons/glr2.cc (yyreportSyntaxError): Initialize yyarg.

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

	glr2.cc: simplify symbol kinds
	We emit code like

	    if (yytoken != yy::parser::symbol_kind::symbol_kind::S_YYEMPTY)

	* data/skeletons/glr2.cc: Use b4_symbol correctly.

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

	glr2.cc: fix warning about local variable vs. member
	Fix a warning triggered in GCC (at least from 4.6 to 4.9):

	    input.cc: In constructor 'glr_stack_item::glr_stack_item(bool)':
	    input.cc:1371:5: error: declaration of 'is_state' shadows a member of 'this' [-Werror=shadow]
	         : is_state_(is_state)
	         ^

	* data/skeletons/glr2.cc (glr_stack_item): Alpha-convert.

2020-09-13  Akim Demaille  <akim.demaille@gmail.com>

	c++: variants: minor simplification
	Do as Valentin Tolmer did in glr2.cc.

	* data/skeletons/variant.hh: The union does not need to be named.

2020-09-13  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: avoid type-punning issues
	On the CI, tests fail with GCC 4.6 to GCC 6 as follows:

	    tests/synclines.at:440: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS;  bison --color=no -fno-caret  -o \"\\\"\".cc \"\\\"\".y
	    tests/synclines.at:440: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o \"\\\"\" \"\\\"\".cc $LIBS
	    stderr:
	    "\"".cc: In member function 'glr_state& glr_stack_item::getState()':
	    "\"".cc:1404:47: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
	         return *reinterpret_cast<glr_state*>(&raw_);
	                                                   ^
	    "\"".cc: In member function 'const glr_state& glr_stack_item::getState() const':
	    "\"".cc:1408:53: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
	         return *reinterpret_cast<const glr_state*>(&raw_);
	                                                         ^
	    "\"".cc: In member function 'semantic_option& glr_stack_item::getOption()':
	    "\"".cc:1413:53: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
	         return *reinterpret_cast<semantic_option*>(&raw_);
	                                                         ^
	    "\"".cc: In member function 'const semantic_option& glr_stack_item::getOption() const':
	    "\"".cc:1417:59: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
	         return *reinterpret_cast<const semantic_option*>(&raw_);
	                                                           ^

	See also be6fa942acae21a4a025bac5e339451be6ad136d.

	* data/skeletons/glr2.cc (glr_stack_item): Use a temporary void*
	variable to avoid type-punning issues with reinterpret_cast.

2020-09-13  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc, glr2.cc: don't publish compiler pragmas
	Currently the compiler attributes are defined in
	b4_shared_declarations (that can in the header if it exists, otherwise
	in the implementation file).  This is not needed, only the
	implementation file needs them.

	Besides, glr2.cc was also defining these macros in the implementation
	file, so we had two definitions.

	* data/skeletons/glr.cc, data/skeletons/glr2.cc: Define the compiler
	attribute macros only in the implementation files.
	* tests/regression.at (Lex and parse params): Generate a header, to
	make it easy to check that the header is self-sufficient.

2020-09-13  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: disable incorrect warnings from GCC6 to 9
	For instance with GCC8:

	    616. regression.at:1560: testing Lex and parse params: glr2.cc ...
	    tests/regression.at:1560: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS;  bison --color=no -fno-caret  -o input.cc input.y
	    tests/regression.at:1560: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o input input.cc $LIBS
	    stderr:
	    input.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)':
	    input.cc:1796:10: error: potential null pointer dereference [-Werror=null-dereference]
	       return yypred ? &(asItem(this) - yypred)->getState() : YY_NULLPTR;
	              ^~~~~~
	    input.cc:1796:10: error: potential null pointer dereference [-Werror=null-dereference]
	       return yypred ? &(asItem(this) - yypred)->getState() : YY_NULLPTR;
	              ^~~~~~
	    cc1plus: all warnings being treated as errors

	It complains that the implicit this in yypred might be null.  It fears
	it because of loops such as

	    for (glr_state* yys = firstTopState();
	         yys != yystateStack.yysplitPoint;
	         yys = yys->pred())
	      yyn += 1;

	that could possibly set yys to null, since yys->pred might return
	null.  However, the warning is incorrect, since in C++ `this` cannot
	be null.  GCC 10 no longer emits this warning.

	GCC 7 also complains many times about glr_stack::yyresolveLocations
	when NDEBUG is enabled (when it is not, YYASSERT (yyoption !=
	YY_NULLPTR) is probably enough to pacify GCC):

	    616. regression.at:1560: testing Lex and parse params: glr2.cc ...
	    tests/regression.at:1560: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS;  bison --color=no -fno-caret  -o input.cc input.y
	    tests/regression.at:1560: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o input input.cc $LIBS
	    stderr:
	    input.cc: In member function 'void glr_stack::yyresolveLocations(glr_state*, int)':
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)':
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference]
	                     yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
	                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~

	* data/skeletons/glr2.cc (YY_IGNORE_NULL_DEREFERENCE_BEGIN)
	(YY_IGNORE_NULL_DEREFERENCE_BEGIN): New.
	(glr_state::pred, glr_stack::yyresolveLocations): Use them.

2020-09-12  Adela Vais  <adela.vais99@gmail.com>

	d: make enum SymbolKind idiomatic D
	Taking into account comments from H. S. Teoh.
	https://lists.gnu.org/r/bison-patches/2020-09/msg00021.html

	* data/skeletons/d.m4, data/skeletons/lalr1.d (SymbolKind): Wrap the
	enum in a structure that contains its string representation.

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

	glr2.cc: address warnings with G++ 4.8
	input.cc: In constructor 'glr_stack_item::glr_stack_item(bool)':
	input.cc:1423:5: error: declaration of 'isState' shadows a member of 'this' [-Werror=shadow]
	     : isState_(isState) {
	     ^
	test.cc:1165:45: error: declaration of 'begin' shadows a member of 'this' [-Werror=shadow]
	test.cc:1167:45: error: declaration of 'end' shadows a member of 'this' [-Werror=shadow]

	* data/skeletons/glr2.cc (isState): Rename as...
	(is_state): this.
	Formatting changes.
	(reduceToOneStack): Rename variables to avoid name clashes.

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

	glr2.cc: get rid of the C indirection for yy_symbol_print
	* data/skeletons/glr2.cc (yy_symbol_print): Remove.
	Just use yyparser.yy_symbol_print_ directly.

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

	glr2.cc: formatting changes
	* data/skeletons/glr2.cc: here.

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

	glr2.cc: fix GCC10 warning
	For instance on test 433: "glr2.cc api.value.type={double}"

	    tests/types.at:138: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
	    stderr:
	    In file included from /opt/local/include/gcc10/c++/bits/stl_tempbuf.h:60,
	                     from /opt/local/include/gcc10/c++/bits/stl_algo.h:62,
	                     from /opt/local/include/gcc10/c++/algorithm:62,
	                     from test.cc:82:
	    /opt/local/include/gcc10/c++/bits/stl_construct.h: In instantiation of 'constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...) [with _Tp = glr_stack_item; _Args = {glr_stack_item}; decltype (::new(void*(0)) _Tp) = glr_stack_item*]':
	    /opt/local/include/gcc10/c++/bits/alloc_traits.h:514:21:   required from 'static constexpr void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = glr_stack_item; _Args = {glr_stack_item}; _Tp = glr_stack_item; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<glr_stack_item>]'
	    /opt/local/include/gcc10/c++/bits/vector.tcc:115:30:   required from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {glr_stack_item}; _Tp = glr_stack_item; _Alloc = std::allocator<glr_stack_item>; std::vector<_Tp, _Alloc>::reference = glr_stack_item&]'
	    /opt/local/include/gcc10/c++/bits/stl_vector.h:1204:21:   required from 'void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = glr_stack_item; _Alloc = std::allocator<glr_stack_item>; std::vector<_Tp, _Alloc>::value_type = glr_stack_item]'
	    test.cc:1949:48:   required from here
	    /opt/local/include/gcc10/c++/bits/stl_construct.h:95:14: error: noexcept-expression evaluates to 'false' because of a call to 'glr_stack_item::glr_stack_item(const glr_stack_item&)' [-Werror=noexcept]
	       95 |     noexcept(noexcept(::new((void*)0) _Tp(std::declval<_Args>()...)))
	          |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    test.cc:1436:3: note: but 'glr_stack_item::glr_stack_item(const glr_stack_item&)' does not throw; perhaps it should be declared 'noexcept'
	     1436 |   glr_stack_item(const glr_stack_item& other)
	          |   ^~~~~~~~~~~~~~
	    cc1plus: all warnings being treated as errors
	    stdout:
	    tests/types.at:138: exit code was 1, expected 0
	    433. types.at:138: 433. glr2.cc api.value.type={double} (types.at:138): FAILED (types.at:138)

	* data/skeletons/glr2.cc (glr_stack_item): Use YY_NOEXCEPT/YY_NOTHROW.

2020-09-12  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: coding style changes
	* data/skeletons/glr2.cc: Change some CamlCase to snake_case, and
	remove some yy prefixes for classes inside the namespace.

2020-09-12  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: move StrongIndexAlias into the namespace
	* data/skeletons/glr2.cc: here.

2020-09-12  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: remove usage of PTRDIFF_MAX
	* data/skeletons/glr2.cc: Use std::ptrdiff_t and numeric_limits.

2020-09-12  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: remove C-style casts
	* data/skeletons/glr2.cc: here.

2020-09-12  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: add copy constructor to yyGLRStackItem
	This silences the clang warning -Wdeprecated-copy.

	* data/skeletons/glr2.cc: here.

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

	examples: d: remove unused token
	* examples/d/calc/calc.y, examples/d/simple/calc.y: Remove "=".

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

	Merge branch 'maint' (i.e., Bison 3.7.2)
	* upstream/maint:
	  maint: post-release administrivia
	  version 3.7.2
	  build: disable syntax-check warning
	  gnulib: update
	  build: fix incorrect dependencies
	  doc: updates
	  gnulib: update
	  tests: beware of sed portability issues

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

	build: fix a concurrent build issue in examples
	Reported by Thomas Deutschmann <whissi@gentoo.org>.
	https://lists.gnu.org/r/bug-bison/2020-09/msg00010.html

	* examples/c/lexcalc/local.mk: scan.o depends on parse.[ch].

2020-09-05  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.

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.2
	* NEWS: Record release date.

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	build: disable syntax-check warning
	error_message_uppercase
	etc/bench.pl.in-419-static int yylex (@{[is_pure (@directive) ? "YYSTYPE *yylvalp" : "void"]});

	* cfg.mk: here.

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	build: fix incorrect dependencies
	Commit af000bab111768a04021bf5ffa4bbe91d44e231c ("doc: work around
	Texinfo 6.7 bug"), published in 3.4.91, added a dependency on the
	"all" target.

	This is a super bad idea, since "make all" will run this
	target *before* "all", which builds bison.  It turns out that this new
	dependency actually needed bison to be built.  So all the regular
	process (i) build $(BUILT_SOURCES) and then (ii) build bison, was
	wrecked since some of the $(BUILT_SOURCES) depended on bison...

	It was "easy" to see in the logs of "make V=1" because we were
	building bison files (such as src/files.o) *before* displaying the
	banner for "all-recursive".  With this fix, we finally get again the
	proper sequence:

	    rm -f examples/c/reccalc/scan.stamp examples/c/reccalc/scan.stamp.tmp
	    /opt/local/libexec/gnubin/mkdir -p examples/c/reccalc
	    touch examples/c/reccalc/scan.stamp.tmp
	    flex   -oexamples/c/reccalc/scan.c --header=examples/c/reccalc/scan.h ./examples/c/reccalc/scan.l
	    mv examples/c/reccalc/scan.stamp.tmp examples/c/reccalc/scan.stamp
	    rm -f lib/fcntl.h-t lib/fcntl.h && \
	    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
	      ...
	    } > lib/fcntl.h-t && \
	    mv lib/fcntl.h-t lib/fcntl.h
	    ...
	    mv -f lib/alloca.h-t lib/alloca.h
	    make  all-recursive

	Reported by Mingli Yu <mingli.yu@windriver.com>.
	https://github.com/akimd/bison/issues/31
	https://lists.gnu.org/r/bison-patches/2020-05/msg00055.html

	Reported by Claudio Calvelli <bugb@w42.org>.
	https://lists.gnu.org/r/bug-bison/2020-09/msg00001.html
	https://bugs.gentoo.org/716516

	* doc/local.mk (all): Rename as...
	(all-local): this.
	So that we don't compete with BUILT_SOURCES.

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	doc: simplify the extraction of example snippets
	* doc/bison.texi: Use qualified paths.
	* examples/extexi: Comment changes.

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: style changes
	* data/skeletons/glr2.cc: Remove stray comment.

2020-09-05  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: get rid of the yyerror scaffolding
	The yyerror stand-alone function was used to bounce from glr.c's call
	to yyerror to glr.cc's parser.error.  Now that glr.c is out of the
	way, just directly use parser.error.

	* data/skeletons/glr2.cc (yyerror): Remove.
	Adjust callers.
	(b4_yyerror_args, b4_lyyerror_args, b4_pure_formals): Remove.
	Now unused.

2020-09-04  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: avoid warnings about printf and shadowing
	* data/skeletons/glr2.cc: Migrate from using printf to std::cerr & co.
	Since the yyGLRStack has the user params, no need to pass them around.

2020-09-03  Adela Vais  <adela.vais99@gmail.com>

	examples: d: demonstrate location tracking
	* examples/d/calc/calc.y: Track locations.
	* examples/d/calc/calc.test: Check locations.

2020-09-03  Adela Vais  <adela.vais99@gmail.com>

	examples: d: duplicate the example as "simple" and "calc"
	* examples/d/Makefile, examples/d/calc.d, examples/d/calc.test,
	examples/d/calc/local.mk: Move into...
	* examples/d/calc, examples/d/simple: these new directories.

2020-09-02  Akim Demaille  <akim.demaille@gmail.com>

	doc: updates
	* NEWS, TODO: here.

2020-09-02  Adela Vais  <adela.vais99@gmail.com>

	examples: d: fix the handling of unary +
	It was interpreting "+exp" as "-exp".

	* examples/d/calc.y: Fix.
	* examples/d/calc.test: Check it.

2020-09-02  Akim Demaille  <akim.demaille@gmail.com>

	cex: always show ε/%empty in counterexamples
	On a case such as
	    %%
	    exp
	    : empty "a"
	    | "a" empty

	    empty
	    : %empty

	we used to display

	    warning: shift/reduce conflict on token "a" [-Wcounterexamples]
	    Example: • "a"
	    Shift derivation
	      exp
	      ↳ 2: • "a" empty
	                 ↳ 2: ε
	    Example: • "a"
	    Reduce derivation
	      exp
	      ↳ 1: empty  "a"
	           ↳ 3: •

	where the shift derivation shows an item "2: empty → ε", with an
	explicit "ε", but the reduce derivation shows "3: empty → •", without
	"ε".

	For consistency, let's always show ε/%empty in rules with an empty
	rhs:

	    Reduce derivation
	      exp
	      ↳ 1: empty    "a"
	           ↳ 3: ε •

	* src/derivation.c (derivation_width, derivation_print_tree_impl):
	Always show ε/%empty in counterexamples.
	* tests/diagnostics.at: Check that case.
	* tests/conflicts.at, tests/counterexample.at: Adjust.

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

	glr2.cc: avoid warnings about long long
	* data/skeletons/glr2.cc: Disable the warning before triggering it.

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

	cex: display the rule numbers
	From

	    Example: "if" expr "then" "if" expr "then" stmt • "else" stmt
	    Shift derivation
	      if_stmt
	      ↳ "if" expr "then" stmt
	                         ↳ if_stmt
	                           ↳ "if" expr "then" stmt • "else" stmt
	    Reduce derivation
	      if_stmt
	      ↳ "if" expr "then" stmt                        "else" stmt
	                         ↳ if_stmt
	                           ↳ "if" expr "then" stmt •

	to

	    Example: "if" expr "then" "if" expr "then" stmt • "else" stmt
	    Shift derivation
	      if_stmt
	      ↳ 3: "if" expr "then" stmt
	                            ↳ 2: if_stmt
	                                 ↳ 4: "if" expr "then" stmt • "else" stmt
	    Example: "if" expr "then" "if" expr "then" stmt • "else" stmt
	    Reduce derivation
	      if_stmt
	      ↳ 4: "if" expr "then" stmt                              "else" stmt
	                            ↳ 2: if_stmt
	                                 ↳ 3: "if" expr "then" stmt •

	* src/state-item.h, src/state-item.c (state_item_rule): New.
	* src/derivation.h, src/derivation.c (struct derivation): Add a rule
	member.
	Adjust dependencies.
	* src/counterexample.c, src/parse-simulation.c: Pass the rule to
	derivation_new.
	* src/derivation.c (fprintf_if): New.
	(derivation_width, derivation_print_tree_impl): Take the rule number
	into account.

	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
	* tests/report.at: Adjust.

	* doc/bison.texi: Adjust.

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

	gnulib: update

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

	tests: beware of sed portability issues
	Reported by David Laxer <davidl@softintel.com>.
	https://lists.gnu.org/r/bug-bison/2020-08/msg00027.html

	* tests/output.at: Don't use + with sed.
	While at it, fix a quotation problem hidden by the use of '#'.

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

	gnulib: update

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

	tests: beware of sed portability issues
	Reported by David Laxer <davidl@softintel.com>.
	https://lists.gnu.org/r/bug-bison/2020-08/msg00027.html

	* tests/output.at: Don't use + with sed.
	While at it, fix a quotation problem hidden by the use of '#'.

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

	glr2.cc: fix a few warnings
	* data/skeletons/glr2.cc: Fix some documentation.
	Be consistent between class/struct.
	(yydoAction, yyresolveAction): Avoid passing yyparser where useless.

2020-08-30  Valentin Tolmer  <valentin.tolmer@gmail.com>

	glr2.cc: fork glr.cc to a c++ version
	This is a fork of glr.cc to be c++-first instead of a wrapper around
	glr.c.

	* data/skeletons/glr2.cc: New.
	* data/skeletons/bison.m4, data/skeletons/c++.m4: Adjust.
	* data/skeletons/c.m4 (b4_user_args_no_comma): New.
	* src/reader.c (grammar_rule_check_and_complete): glr2.cc is C++.
	* tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at,
	* tests/input.at, tests/local.at, tests/regression.at, tests/scanner.at,
	* tests/synclines.at, tests/types.at: Also check glr2.cc.

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

	c: always use YYMALLOC/YYFREE
	Reported by Kovalex <kovalex.pro@gmail.com>.
	https://lists.gnu.org/r/bug-bison/2020-08/msg00015.html

	* data/skeletons/yacc.c: Don't make direct calls to malloc/free.
	* tests/calc.at: Check it.

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

	build: beware of POSIX mode
	Reported by Dennis Clarke.
	https://lists.gnu.org/r/bug-bison/2020-08/msg00013.html

	* examples/d/local.mk, examples/java/calc/local.mk,
	* examples/java/simple/local.mk: Pass bison's options before its
	argument, in case we're in POSIX mode.

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

	doc: history of api.prefix
	Reported by Matthew Fernandez <matthew.fernandez@gmail.com>.
	https://lists.gnu.org/r/help-bison/2020-08/msg00015.html

	* doc/bison.texi (api.prefix): We move to {} in 3.0.

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

	CI: intel moved the script for ICC
	* .travis.yml: Adjust.

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

	fix: unterminated \-escape
	An assertion failed when the last character is a '\' and we're in a
	character or a string.
	Reported by Agency for Defense Development.
	https://lists.gnu.org/r/bug-bison/2020-08/msg00009.html

	* src/scan-gram.l: Catch unterminated escapes.
	* tests/input.at (Unexpected end of file): New.

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

	fix: crash when redefining the EOF token
	Reported by Agency for Defense Development.
	https://lists.gnu.org/r/bug-bison/2020-08/msg00008.html

	On an empty such as

	    %token FOO
	           BAR
	           FOO 0
	    %%
	    input: %empty

	we crash because when we find FOO 0, we decrement ntokens (since FOO
	was discovered to be EOF, which is already known to be a token, so we
	increment ntokens for it, and need to cancel this).  This "works well"
	when EOF is properly defined in one go, but here it is first defined
	and later only assign token code 0.  In the meanwhile BAR was given
	the token number that we just decremented.

	To fix this, assign symbol numbers after parsing, not during parsing,
	so that we also saw all the explicit token codes.  To maintain the
	current numbers (I'd like to keep no difference in the output, not
	just equivalence), we need to make sure the symbols are numbered in
	the same order: that of appearance in the source file.  So we need the
	locations to be correct, which was almost the case, except for nterms
	that appeared several times as LHS (i.e., several times as "foo:
	...").  Fixing the use of location_of_lhs sufficed (it appears it was
	intended for this use, but its implementation was unfinished: it was
	always set to "false" only).

	* src/symtab.c (symbol_location_as_lhs_set): Update location_of_lhs.
	(symbol_code_set): Remove broken hack that decremented ntokens.
	(symbol_class_set, dummy_symbol_get): Don't set number, ntokens and
	nnterms.
	(symbol_check_defined): Do it.
	(symbols): Don't count nsyms here.
	Actually, don't count nsyms at all: let it be done in...
	* src/reader.c (check_and_convert_grammar): here.  Define nsyms from
	ntokens and nnterms after parsing.
	* tests/input.at (EOF redeclared): New.

	* examples/c/bistromathic/bistromathic.test: Adjust the traces: in
	"%nterm <double> exp %% input: ...", exp used to be numbered before
	input.

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

	style: fix missing space before paren
	* cfg.mk (_space_before_paren_exempt): Be less laxist.
	* src/output.c, src/reader.c: Fix space before paren issues.
	Pacify the warnings where applicable.

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

	style: fix comments and more debug trace
	* src/location.c, src/symtab.h, src/symtab.c: here.

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

	style: more uses of const
	* src/symtab.c: here.

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

	bench: fix support for pure parser
	* etc/bench.pl.in (is_pure): New.
	(generate_grammar_calc): Use code provides where needed.
	Use is_pure to call yylex properly.
	Coding style fixes.

2020-08-03  Akim Demaille  <akim.demaille@gmail.com>

	portability: multiple typedefs
	Older versions of GCC (4.1.2 here) don't like repeated typedefs.

	      CC       src/bison-parse-simulation.o
	    src/parse-simulation.c:61: error: redefinition of typedef 'parse_state'
	    src/parse-simulation.h:74: error: previous declaration of 'parse_state' was here
	    make: *** [Makefile:7876: src/bison-parse-simulation.o] Error 1

	Reported by Nelson H. F. Beebe.

	* src/parse-simulation.c (parse_state): Don't typedef,
	parse-simulation.h did it already.

2020-08-02  Akim Demaille  <akim.demaille@gmail.com>

	style: revert "avoid warnings with GCC 4.6"
	This reverts commit d0bec3175ff5cf6582ffbf584b73ea6aaea838d0 (which
	should have read "We have a clash...", not "With have a clash...").
	Now that `max()` was renamed `max_int()`, we can use `max` again, as
	elsewhere in the code.

	* src/counterexample.c (visited_hasher): Alpha reconversion.

2020-08-02  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.

2020-08-02  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.1
	* NEWS: Record release date.

2020-08-02  Akim Demaille  <akim.demaille@gmail.com>

	portability: we use termios.h and sys/ioctl.h
	Reported by Maarten De Braekeleer.
	https://lists.gnu.org/r/bison-patches/2020-07/msg00079.html

	* bootstrap.conf (gnulib_modules): Add termios and sys_ioctl.

2020-08-02  Maarten De Braekeleer  <maarten.debraekeleer@gmail.com>

	portability: rename accept to acceptsymbol because of MSVC
	MSVC already defines this symbol.

	* src/symtab.h, src/symtab.c (accept): Rename as...
	(acceptsymbol): this.
	Adjust dependencies.

2020-08-02  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-08-02  Maarten De Braekeleer  <maarten.debraekeleer@gmail.com>

	portability: use CHAR_LITERAL instead of CHAR because MSVC defines CHAR
	* src/parse-gram.y, src/scan-gram.l: here.

2020-08-02  Maarten De Braekeleer  <maarten.debraekeleer@gmail.com>

	portability: use INT_LITERAL instead of INT because MSVC defines INT
	It is defined as a typedef, not a macro.
	https://lists.gnu.org/r/bison-patches/2020-08/msg00001.html

	* src/parse-gram.y, src/scan-gram.l: here.

2020-08-02  Akim Demaille  <akim.demaille@gmail.com>

	portability: beware of max () with MSVC
	Reported by Maarten De Braekeleer.
	https://lists.gnu.org/r/bison-patches/2020-07/msg00080.html

	We don't want to use gnulib's min and max macros, since we use
	function calls in min/max arguments.

	* src/location.c (max_int, min_int): Move to...
	* src/system.h: here.
	* src/counterexample.c, src/derivation.c: Use max_int instead of max.

2020-08-02  Akim Demaille  <akim.demaille@gmail.com>

	libtextstyle: be sure to have ostream_printf and hyperlink support
	Older versions of libtextstyle do not support them, rule them out.

	Reported by Lars Wendler
	https://lists.gnu.org/r/bug-bison/2020-07/msg00030.html

	and by Arnold Robbins
	https://lists.gnu.org/r/bug-bison/2020-07/msg00041.html and
	https://lists.gnu.org/mailman/private/gawk-devel/2020-July/003988.html

	and by Nelson H. F. Beebe
	https://lists.gnu.org/mailman/private/gawk-devel/2020-July/003993.html

	With support from Bruno Haible in gnulib
	https://lists.gnu.org/r/bug-gnulib/2020-08/msg00000.html
	thread starting at
	https://lists.gnu.org/r/bug-gnulib/2020-07/msg00148.html

	* configure.ac: Require libtextstyle 0.20.5.
	* gnulib: Update.

2020-08-01  Akim Demaille  <akim.demaille@gmail.com>

	CI: comment changes

2020-08-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-08-01  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: better location for type redeclarations
	From

	    foo.y:1.7-11: error: %type redeclaration for bar
	        1 | %type <foo> bar bar
	          |       ^~~~~
	    foo.y:1.7-11: note: previous declaration
	        1 | %type <foo> bar bar
	          |       ^~~~~

	to

	    foo.y:1.17-19: error: %type redeclaration for bar
	        1 | %type <foo> bar bar
	          |                 ^~~
	    foo.y:1.13-15: note: previous declaration
	        1 | %type <foo> bar bar
	          |             ^~~

	* src/symlist.h, src/symlist.c (symbol_list_type_set): There's no need
	for the tag's location, use that of the symbol.
	* src/parse-gram.y: Adjust.
	* tests/input.at: Adjust.

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

	todo: updates for D

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

	cex: style: comment changes
	* src/parse-simulation.c: here.

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

	cex: style: prefer "res" for the returned value
	* src/derivation.c (derivation_new): here.

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

	cex: style: prefer FOO_print to print_FOO
	* src/state-item.h, src/state-item.c (print_state_item): Rename as...
	(state_item_print): this.
	* src/counterexample.c (print_counterexample): Rename as...
	(counterexample_print): this.

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

	scanner: don't crash on strings containing a NUL byte
	We crash if the input contains a string containing a NUL byte.
	Reported by Suhwan Song.
	https://lists.gnu.org/r/bug-bison/2020-07/msg00051.html

	* src/flex-scanner.h (STRING_FREE): Avoid accidental use of
	last_string.
	* src/scan-gram.l: Don't call STRING_FREE without calling
	STRING_FINISH first.
	* tests/input.at (Invalid inputs): Check that case.

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

	doc: refer to cex from sections dealing with conflicts
	The documentation about -Wcex should be put forward.

	* doc/bison.texi: Refer to -Wcex from the sections about conflicts.

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

	doc: factor ifnottex/iftex examples
	* doc/bison.texi: Factor the common bits out of ifnottex/iftex.

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

	doc: fix colors
	The original Texinfo macros introducing colors were made for
	diagnostics, which are printed in bold.  So by copy-paste accident the
	styles we introduced for counterexamples were also in bold.  They
	should not.

	* doc/bison.texi: Separate the styling of diagnostics from the styling
	for counterexamples.
	Don't use bold in the latter case.

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

	doc: fixes
	* doc/bison.texi: Fix spello.
	Fix missing colors, and factor.

2020-07-23  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.

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

	version 3.7
	* NEWS: Record release date.

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

	style: avoid warnings with GCC 4.6
	With have a clash with the "max" function.

	    src/counterexample.c: In function 'visited_hasher':
	    src/counterexample.c:720:48: error: declaration of 'max' shadows a global declaration [-Werror=shadow]
	    src/counterexample.c:116:12: error: shadowed declaration is here [-Werror=shadow]

	* src/counterexample.c (visited_hasher): Alpha conversion.

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

	doc: fix definition of -Wall
	* doc/bison.texi (Diagnostics): here.

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

	gnulib: update
	* bootstrap.conf: We need stpncpy.

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

	tests: fixes
	Fix 6b78e50cef3c2cd8e6f4e7938be987e8769f8eef, "cex: make "rerun with
	'-Wcex'" a note instead of a warning"

	* tests/conflicts.at (-W versus %expect and %expect-rr): Fix
	expectations.

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

	cex: update NEWS for 3.7
	* NEWS: Update to the current style of cex display.

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

	doc: catch up with the current display of cex
	Unfortunately I found no way to use the ↳ glyph in Texinfo, so I used
	@arrow{} instead, which has a different width, so we have to have all
	the examples doubled, once for TeX, another for the rest of the world.

	* doc/bison.texi: Use the current display in the examples.
	* doc/calc.y, doc/ids.y, doc/if-then-else.y, doc/sequence.y: New.

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

	cex: make "rerun with '-Wcex'" a note instead of a warning
	Currently the suggestion to rerun is a -Wother warning:

	    warning: 2 shift/reduce conflicts [-Wconflicts-sr]
	    warning: rerun with option '-Wcounterexamples' to generate conflict counterexamples [-Wother]

	Instead, let's attach it as a subnote of the diagnostic (in the
	current case, -Wconflicts-sr):

	    warning: 2 shift/reduce conflicts [-Wconflicts-sr]
	    note: rerun with option '-Wcounterexamples' to generate conflict counterexamples

	* src/conflicts.c (conflicts_print): Do that.
	Adjust the test suite.

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

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

	version 3.6.93
	* NEWS: Record release date.

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

	cex: label all the derivations by their initial action
	From

	    input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
	      Example: A b .
	      First derivation
	        a
	        `-> A b .
	      Second derivation
	        a
	        `-> A b
	              `-> b .

	to

	    input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
	      Example: A b .
	      First reduce derivation
	        a
	        `-> A b .
	      Second reduce derivation
	        a
	        `-> A b
	              `-> b .

	* src/counterexample.c (print_counterexample): here.
	Compute the width of the labels to properly align the values.
	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
	* tests/report.at: Adjust.

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

	cex: improve readability of the subsections
	Now that the derivation is no longer printed on one line, aligning the
	example and the derivation is no longer useful.  It can actually be
	harmful, as it makes the overall structure less clear.

	* src/derivation.h, src/derivation.c (derivation_print_leaves): Remove
	the `prefix` argument.
	* src/counterexample.c (print_counterexample): Put the example next to
	its label.
	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
	* tests/report.at: Adjust.

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

	cex: don't issue an empty line between counterexamples
	Now that we use complain, the "sections" are clearer.

	* src/counterexample.c (print_counterexample): Use the empty line only
	in reports.
	* tests/counterexample.at, tests/diagnostics.at, tests/report.at: Adjust.

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

	cex: use usual routines for diagnostics about S/R conflicts
	See previous commit.  We go from

	    input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
	    Shift/reduce conflict on token "⊕":
	      Example              exp "+" exp • "⊕" exp
	      Shift derivation
	        exp
	        ↳ exp "+" exp
	                  ↳ exp • "⊕" exp

	to

	    input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
	    input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
	      Example              exp "+" exp • "⊕" exp
	      Shift derivation
	        exp
	        ↳ exp "+" exp
	                  ↳ exp • "⊕" exp

	with an hyperlink on -Wcounterexamples.

	* src/counterexample.c (counterexample_report_shift_reduce):
	Use complain.
	* tests/counterexample.at, tests/diagnostics.at, tests/report.at:
	Adjust.

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

	cex: use usual routines for diagnostics about R/R conflicts
	This is more consistent, and brings benefits: users know that these
	diagnostics are attached to -Wcounterexamples, and they can also click
	on the hyperlink if permitted by their terminal.

	We go from

	    warning: 1 reduce/reduce conflict [-Wconflicts-rr]
	    Reduce/reduce conflict on token $end:
	      Example              A b .
	      First derivation     a -> [ A b . ]
	      Second derivation    a -> [ A b -> [ b . ] ]

	to

	    warning: 1 reduce/reduce conflict [-Wconflicts-rr]
	    input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
	      Example              A b .
	      First derivation     a -> [ A b . ]
	      Second derivation    a -> [ A b -> [ b . ] ]

	with an hyperlink on -Wcounterexamples.

	* src/counterexample.c (counterexample_report_reduce_reduce):
	Use complain.
	* tests/counterexample.at, tests/diagnostics.at, tests/report.at:
	Adjust.

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

	diagnostics: use hyperlinks to point to the only documentation
	* src/complain.c (begin_hyperlink, end_hyperlink): New.
	(warnings_print_categories): Use them.
	* tests/local.at (AT_SET_ENV): Disable hyperlinks in the tests, they
	contain random id's, and brackets (which is not so nice for M4).

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

	doc: add anchors for warnings
	Unfortunately Texinfo somewhat mangles anchors such as `-Werror` into
	`g_t_002dWerror`, so let's not include the dash.

	* doc/bison.texi (Diagnostics): here.

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

	glyphs: fix types
	The code was written on top of buffers of `char[26]`, and then was
	changed to use `char *`, yet was still using `sizeof buf`, which
	became `sizeof (char *)` instead of `sizeof (char[26])`.

	Reported by Dagobert Michelsen.
	https://lists.gnu.org/r/bug-bison/2020-07/msg00023.html

	* src/glyphs.h, src/glyphs.c: Get rid of uses of `char *`, use only
	glyph_buffer_t.

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

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

	version 3.6.92
	* NEWS: Record release date.

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

	style: avoid strncpy
	syntax-check seems to dislike strncpy.  The GNU Coreutils replaced
	their uses of strncpy with stpncpy.

	strlcpy is not an option.
	  http://sources.redhat.com/ml/libc-alpha/2002-01/msg00159.html
	  http://sources.redhat.com/ml/libc-alpha/2002-01/msg00011.html
	  http://lists.gnu.org/archive/html/bug-gnulib/2004-09/msg00181.html

	* src/glyphs.c: Use stpncpy.

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

	cex: display derivations as trees
	Sometimes, understanding the derivations is difficult, because they
	are serialized to fit in one line.  For instance, the example taken
	from the NEWS file:

	    %token ID
	    %%
	    s: a ID
	    a: expr
	    expr: expr ID ',' | "expr"

	gave

	    First example        expr • ID ',' ID $end
	    Shift derivation     $accept → [ s → [ a → [ expr → [ expr • ID ',' ] ] ID ] $end ]
	    Second example       expr • ID $end
	    Reduce derivation    $accept → [ s → [ a → [ expr • ] ID ] $end ]

	Printing as trees, it gives:

	    First example        expr • ID ',' ID $end
	    Shift derivation
	      $accept
	      ↳ s                      $end
	        ↳ a                 ID
	          ↳ expr
	            ↳ expr • ID ','
	    Second example       expr • ID $end
	    Reduce derivation
	      $accept
	      ↳ s             $end
	        ↳ a        ID
	          ↳ expr •

	* src/glyphs.h, src/glyphs.c (down_arrow, empty, derivation_separator):
	New.
	* src/derivation.c (derivation_print, derivation_print_impl): Rename
	as...
	(derivation_print_flat, derivation_print_flat_impl): These.
	(fputs_if, derivation_depth, derivation_width, derivation_print_tree)
	(derivation_print_tree_impl, derivation_print): New.
	* src/counterexample.c (print_counterexample): Adjust.
	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
	* tests/report.at: Adjust.

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

	cex: use the glyphs
	* src/derivation.c: here.
	* src/gram.h, src/gram.c (print_arrow, print_dot, print_fallback):
	Remove.

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

	cex: factor the handling of graphical symbols
	* src/glyphs.h, src/glyphs.c: New.

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

	cex: style changes
	* src/counterexample.c: here.

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

	cex: simplify tests
	* tests/counterexample.at (AT_BISON_CHECK_CEX): Handle the keyword.
	Simplify the signature.

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

	cex: more colors
	Provided by Daniela Becker.

	* data/bison-default.css: More colors.

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

	style: comments changes
	* src/print.c: here.

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

	doc: update GLR sections
	Reported by Christian Schoenebeck.

	* doc/bison.texi (GLR Parsers): Minor fixes.
	(Compiler Requirements for GLR): Remove, quite useless today.

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

	cex: display shifts before reductions
	When reporting counterexamples for s/r conflicts, put the shift first.
	This is more natural, and displays the default resolution first, which
	is also what happens for r/r conflicts where the smallest rule number
	is displayed first, and "wins".

	* src/counterexample.c (counterexample): Add a shift_reduce member.
	(new_counterexample): Adjust.
	Swap the derivations when this is a s/r conflict.
	(print_counterexample): For s/r conflicts, prefer "Shift derivation"
	and "Reduce derivation" rather than "First/Second derivation".

	* tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust.
	* NEWS, doc/bison.texi: Ditto.

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

	style: s/lookahead_tokens/lookaheads/g
	Currently we use both names.  Let's stick to the short one.

	* src/AnnotationList.c, src/conflicts.c, src/counterexample.c,
	* src/getargs.c, src/getargs.h, src/graphviz.c, src/ielr.c,
	* src/lalr.c, src/print-graph.c, src/print-xml.c, src/print.c,
	* src/state-item.c, src/state.c, src/state.h, src/tables.c:
	s/lookahead_token/lookahead/gi.

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

	cex: factor memory allocation
	* src/counterexample.c (counterexample_report_state): Allocate once
	per conflicted state, instead of once per r/r conflict.

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

	cex: use state_item_number consistently
	* src/counterexample.c, src/state-item.c: here.
	(counterexample_report_state): While at it, prefer c2 to j/k, to match
	c1.

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

	cex: more consistent memory allocation/copy
	* src/counterexample.c, src/parse-simulation.c: It is more usual in
	Bison to use sizeof on expressions than on types, especially for
	allocation.
	Let the compiler do it's job instead of calling memcpy ourselves.

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

	cex: minor renaming
	* src/counterexample.c (has_common_prefix): Rename as...
	(have_common_prefix): this.

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

	cex: use better type names
	There are too many gl_list_t in there, it's hard to understand what is
	going on.  Introduce and use more precise types.  I sure can be wrong
	in some places, it's hard to tell without proper tool support.

	* src/counterexample.c, src/lssi.c, src/lssi.h, src/parse-simulation.c,
	* src/parse-simulation.h, src/state-item.c, src/state-item.h
	(si_bfs_node_list, search_state_list, ssb_list, lssi_list)
	(state_item_list): New.

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

	cex: minor style changes
	* src/counterexample.h, src/derivation.h, src/derivation.c:
	More comments.
	Use `out` for FILE*, as elsewhere.

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

	tests: beware of version numbers from git describe
	* tests/report.at: Be robust to version numbers such as
	3.6.4.133-fbac-dirty.

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

	tests: fix expectations
	Broken in ee86ea88399ed02243fbceb2704c9ea322a12bf9.

	* tests/diagnostics.at: here.

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

	doc: makeinfo wants @arrow{}, not @arrow
	* doc/bison.texi: here.

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

	gnulib: update

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

	cex: prefer → to ::=
	It does not make a lot of sense to use ::= in our counterexamples,
	that's not something that belongs to the Bison "vocabulary".  Using
	the colon makes sense, but it's too discreet.  Let's use the arrow,
	which we already use in some reports (HTML and Dot).

	* src/gram.h (print_dot_fallback): Generalize into...
	(print_fallback): this.
	(print_arrow): New.
	* src/derivation.c: Use it.

	* NEWS, tests/conflicts.at, tests/counterexample.at,
	* tests/diagnostics.at, tests/report.at: Adjust.
	* doc/bison.texi: Ditto.
	Unfortunately the literal `→` is output as `↦`.  So we need to use
	@arrow.

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

	style: cex: prefer the array notation
	Prefer `&foos[i]` to `foos + i` when `foos` is an array.  IMHO, it
	makes the semantics clearer.

	* src/counterexample.c, src/lssi.c, src/parse-simulation.c,
	* src/state-item.c: With arrays, prefer the array notation rather than
	the pointer one.

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

	style: cex: remove variables that don't make it simpler to read
	* src/counterexample.c: With arrays, prefer the array notation rather
	than the pointer one.

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

	bistromathic: demonstrate caret-diagnostics
	* examples/c/bistromathic/parse.y (user_context): We need the current
	line.
	(yyreport_syntax_error): Quote the guilty line, with squiggles.
	* examples/c/bistromathic/bistromathic.test: Adjust.

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

	bistromathic: do not display parse errors on completion
	Currently autocompletion on a line with errors leaks the error
	messages.  It can be useful to let the user know, but GNU Readline
	does not provide us with an nice way to display the error.  So we
	actually break into the current line of the user.

	So instead, do not show these errors.

	* examples/c/bistromathic/parse.y (user_context): New.
	Use %param to pass it to the parser and scanner.
	Keep quiet when in computing autocompletion.

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

	bistromathic: don't stupidly reset the location for each token
	That quite defeats the whole point of locations...  But anyway, we
	should not see these messages at all.

	* examples/c/bistromathic/parse.y (expected_tokens): Fix (useless)
	location tracking.

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

	bistromathic: promote yytoken_kind_t
	* examples/c/bistromathic/parse.y: Use yytoken_kind_t rather than int.

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

	html: capitalize titles
	* data/xslt/xml2xhtml.xsl: Use "State 0", not "state 0".
	As we do in text reports.

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

	html: don't define several times the same anchors
	Currently when we output useless rules, they appear before the
	grammar, but using the same invocation.  As a result, the anchor is
	defined twice, and the wrong one, being first, is honored.

	* data/xslt/xml2xhtml.xsl (rule): Take a new 'anchor' parameter to
	decide whether being an anchor, or a target.
	Let it be true when output the grammar.
	* tests/report.at: Adjust.

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

	html: simplify
	* data/xslt/xml2xhtml.xsl: Merge two identical when-clauses.

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

	reports: let html reports catch up with --report and --graph
	* data/xslt/xml2xhtml.xsl: Show the symbol types.
	* tests/report.at: Adjust.

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

	reports: let xml reports catch up with --report and --graph
	The text and Dot reports are expected to be identical when generated
	directly (--report, --graph) or indirectly (via XML).  The xml
	testsuite had not be run for ages, let it catch up a bit.

	* src/print-xml.c: Pass the type of the symbols.
	* data/xslt/xml2text.xsl
	Catch up with the new layout.
	Display the symbol types.
	Use '•', not '.'
	* tests/local.at: Smash '•' to '.' when matching against the direct
	text report.
	* tests/report.at: Adjust XML expectations.

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

	reports: update html ouput
	* data/xslt/xml2xhtml.xsl: Improve indentation.
	Use ul/li rather that pre.

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

	tests: check html
	* tests/report.at: here.

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

	style: factor complex expressions
	* src/print-xml.c, src/print.c: Introduce a variable pointing to the
	current symbol.

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

	maint: make it easier to update expectations
	* tests/local.mk (update-tests): New.

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

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

	version 3.6.91
	* NEWS: Record release date.

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

	news: update

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

	gnulib: update

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

	examples: add license headers
	Prompted by Rici Lake.
	https://stackoverflow.com/questions/62658368/#comment110853985_62661621
	Discussed with Paul Eggert.

	* doc/bison.texi, examples/c/bistromathic/parse.y,
	* examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l,
	* examples/c/pushcalc/calc.y, examples/c/reccalc/parse.y,
	* examples/c/reccalc/scan.l, examples/d/calc.y,
	* examples/java/calc/Calc.y, examples/java/simple/Calc.y:
	Install the GPL3+ header.

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

	style: update comments
	* src/reader.c: action_obstack was removed in 2002...
	* src/parse-gram.y: Better names.
	* src/scan-code.h: More comments.

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

	style: update comments in the skeletons
	* data/skeletons/c++.m4, data/skeletons/glr.c, data/skeletons/lalr1.d,
	* data/skeletons/lalr1.java, data/skeletons/yacc.c:
	Be more accurate about yychar and yytoken.
	Don't name local variables as if they were members.

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

	doc: more details about symbols in m4
	* data/README.md: here.
	* README-hacking.md (Vocabulary): More.

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

	regen

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

	examples: include the generated header
	* examples/c/bistromathic/parse.y, examples/c/lexcalc/parse.y,
	* examples/c/reccalc/parse.y: here.
	Add some comments.

	* src/parse-gram.y (api_version): Pull out of handle_require.
	Bump to 3.7.

2020-07-04  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.

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

	version 3.6.90
	* NEWS: Record release date.

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

	news: update

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

	package: fix syntax-check errors
	* examples/c/bistromathic/bistromathic.test, po/POTFILES.in: here.

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

	gnulib: update

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

	cex: give more details about -Wcex and -rcex
	* data/bison-default.css: Cobalt does not seem to be supported.
	* doc/bison.texi (Counterexamples): A new section.
	(Understanding): Show the counterexamples as it shows in the report:
	with its items.
	(Bison Options): Document -Wcex and -rcex.

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

	news: update

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

	dot: also use a dot in the output
	* src/print-graph.c (print_core): Use a dot instead of a point.
	* doc/figs/example-reduce.gv, doc/figs/example-reduce.txt,
	* doc/figs/example-shift.gv, doc/figs/example-shift.txt,
	* doc/figs/example.gv: Update.
	* tests/output.at, tests/report.at: Adjust.

2020-07-02  Akim Demaille  <akim@lrde.epita.fr>

	doc: improve a sentence
	* doc/bison.texi: here.

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

	news: formatting changes

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

	news, todo: update

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

	doc: clarify that the pcontext interface is *.c only
	Reported by Rici Lake.
	https://lists.gnu.org/r/bug-bison/2020-06/msg00054.html

	* doc/bison.texi (Syntax Error Reporting Function): Make it clear that
	this is not exported.
	Remove C++ details that landed in the C doc.

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

	doc: use color in the cex examples
	* doc/bison.texi: here.
	And use smallexample when it no longer fits in PDF.

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

	doc: repair the references to the Bibliography
	In commit c80cdf2db2b302db4137fabd4ae11e578fa51fca ("doc: simplify
	uses of @ref", Jan 27 2020, released in Bison 3.6), I broke the
	references to the Bibliography.  For instance:

	     For a more detailed exposition of the mysterious behavior in LALR parsers
	    -and the benefits of IELR, @pxref{Bibliography,,Denny 2008 March}, and
	    -@ref{Bibliography,,Denny 2010 November}.
	    +and the benefits of IELR, @pxref{Bibliography}, and
	    +@ref{Bibliography}.

	which results in "see Bibliography" twice, instead of the more precise
	reference.

	* doc/bison.texi (@pcite, @tcite): New.
	Use them instead of @ref to Bibliography.
	Cite only the first author (that's what we did for the other entries).

2020-06-30  Vincent Imbimbo  <vmi6@cornell.edu>

	doc: cex documentation
	* NEWS, doc/bison.texi: Add documentation for conflict counterexample
	generation.

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

	doc: update Doxygen template file
	* doc/Doxyfile.in: here.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: push: don't clear the parser state when accepting/rejecting
	Currently when a push parser finishes its parsing (i.e., it did not
	return YYPUSH_MORE), it also clears its state.  It is therefore
	impossible to see if it had parse errors.

	In the context of autocompletion, because error recovery might have
	fired, the parser is actually already in a different state.  For
	instance on `(1 + + <TAB>` in the bistromathic, because there's a
	`exp: "(" error ")"` recovery rule, `1 + +` tokens have already been
	popped, replaced by `error`, and autocompletions think we are ready
	for the closing ")".  So here, we would like to see if there was a
	syntax error, yet `yynerrs` was cleared.

	In the case of a successful parse, we still have a problem: if error
	recovery succeeded, we won't know it, since, again, `yynerrs` is
	clearer.

	It seems much more natural to leave the parser state available for
	analysis when there is a failure.

	To reuse the parser, we should either:

	1. provide an explicit means to reinitialize a parser state for future
	   parses.

	2. automatically reset the parser state when it is used in a new
	   parse.

	Option 2 requires to check whether we need to reinitialize the parser
	each time we call `yypush_parse`, i.e., each time we give a new token.
	This seems expensive compared to Option 1, but benchmarks revealed no
	difference.  Option 1 is incompatible with the documentation
	("After `yypush_parse` returns a status other than `YYPUSH_MORE`, the
	parser instance `yyps` may be reused for a new parse.").

	So Option 2 wins, reusing the private `yynew` member to record that a
	parse was finished, and therefore that the state must reset in the
	next call to `yypull_parse`.

	While at it, this implementation now reuses the previously enlarged
	stacks from one parse to another.

	* data/skeletons/yacc.c (yypstate_new): Set up the stacks in their
	initial configurations (setting their bottom to the stack array), and
	use yypstate_clear to reset them (moving their top to their bottom).
	(yypstate_delete): Adjust.
	(yypush_parse): At the beginning, clear yypstate if needed, and at the
	end, record when yypstate needs to be clearer.

	* examples/c/bistromathic/parse.y (expected_tokens): Do not propose
	autocompletion when there are parse errors.
	* examples/c/bistromathic/bistromathic.test: Check that case.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: don't display undefined locations
	Currently, completion when there is a syntax error shows broken
	locations.

	* examples/c/bistromathic/parse.y (expected_tokens): Initialize the
	location.
	* examples/c/bistromathic/bistromathic.test: Check that.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: simplify initialization of push parsers
	The previous commit ("yacc.c: declare and initialize and the same
	time") made b4_initialize_parser_state_variables useless.

	* data/skeletons/yacc.c (b4_initialize_parser_state_variables): Inline
	into...
	(yypstate_clear): here.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: declare and initialize and the same time
	In order to factor the code of push and pull parsers, the declaration
	of the parser's state variable was common (being local variable in
	pull parsers, and struct members in push parsers).  This result in
	rather poor style in pull parser, with first variable declarations,
	and then their initializations.

	The initialization is about to differ between push and pull parsers,
	so it is no longer worth keeping both cases together.

	* data/skeletons/yacc.c (b4_declare_parser_state_variables): Accept an
	argument, and when it is set, initialize the variables.
	Adjust dependencies.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: style changes in push mode
	* data/skeletons/yacc.c: here.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: simplify yypull_parse
	Currently yypull_parse takes a yypstate* as argument, and accepts it
	to be NULL.  This does not seem to make a lot of sense: rather it is
	its callers that should do that.

	I believe this is historical: yypull_parse was introduced
	first (c3d503425f8014b432601a33b3398446d63b5963), with yyparse being a
	macro.  So yyparse could hardly deal with memory allocation properly.
	In 7172e23e8ffb95b8cafee24c4f36c46ca709507f that yyparse was turned
	into a genuine function.  At that point, it should have allocated its
	own yypstate*, which would have left yypull_parse deal with only one
	single non-null ypstate* argument.

	Fortunately, it is nowhere documented that it is valid to pass NULL to
	yypull_parse.  It is now forbidden.

	* data/skeletons/yacc.c (yypull_parse): Don't allocate a yypstate.
	Needs a location to issue the error message.
	(yyparse): Allocate the yypstate.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	doc: tidy the text files
	* etc/README: Rename/reformat as...
	* etc/README.md: this.
	And ship it.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	bench: simplify the `rand` target
	* etc/bench.pl.in: There is no need to recompile the bench cases
	themselves.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	bench: make it easy to edit the generated files
	* etc/bench.pl.in (&compile): Generate rules that compile the
	generated files independently of the source files.

2020-06-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't use $VERBOSE
	It is used by the test suite itself, which results in this test
	failing.

	* tests/c++.at: Use $DEBUG, not $VERBOSE.

2020-06-28  Akim Demaille  <akim.demaille@gmail.com>

	doc: overhaul of the readmes
	* README-hacking.md (Working from the Repository): Make it first to
	make it easier to find the instructions to build from the repo.
	(Implementation Notes): New.
	* README: Provide more links.

2020-06-28  Akim Demaille  <akim.demaille@gmail.com>

	java: rename package as api.package
	* data/skeletons/lalr1.java: here.
	* doc/bison.texi: Update.
	* src/muscle-tab.c: Ensure backward compat.
	* tests/java.at: Check it.

2020-06-28  Akim Demaille  <akim.demaille@gmail.com>

	style: shift/reduce, not shift-reduce
	* src/reader.c: here.

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

	style: rename endtoken as eoftoken
	* src/symtab.h, src/symtab.c (endtoken): Rename as...
	(eoftoken): this.
	Adjust dependencies.

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

	news: fixes
	Reported by Jacob L. Mandelson.

	* NEWS: here.

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

	style: use 'nonterminal' consistently
	* doc/bison.texi: Formatting changes.
	* src/gram.h, src/gram.c (nvars): Rename as...
	(nnterms): this.
	Adjust dependencies.
	(section): New.  Use it.
	Replace "non terminal" and "non-terminal" by "nonterminal".

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

	doc: parse.assert in C++ requires RTTI
	* doc/bison.texi (%define Summary): Say it.

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

	c++: by default, use const std::string for file names
	Reported by Martin Blais and Yuriy Solodkyy.
	https://lists.gnu.org/r/help-bison/2020-05/msg00011.html
	https://lists.gnu.org/r/bug-bison/2020-06/msg00038.html

	While at it, modernize filename_type as api.filename.type and document
	it properly.

	* data/skeletons/c++.m4 (filename_type): Rename as...
	(api.filename.type): this.
	Default to const std::string.
	* data/skeletons/location.cc (position, location): Expose the
	filename_type type.
	Use api.filename.type.
	* doc/bison.texi (%define Summary): Document api.filename.type.
	(C++ Location Values): Document position::filename_type.
	* src/muscle-tab.c (muscle_percent_variable_update): Ensure backward
	compatibility.
	* tests/c++.at: Check that using const file names is ok.
	tests/input.at: Check backward compat.

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

	ielr: fix crash on memory management
	Reported by Dwight Guth.
	https://lists.gnu.org/r/bug-bison/2020-06/msg00037.html

	* src/AnnotationList.c (AnnotationList__computePredecessorAnnotations):
	Beware that SBITSET__FOR_EACH nests _two_ for-loops, so "break" does
	not actually break out of it.
	That was the only occurrence in the code.
	* src/Sbitset.h (SBITSET__FOR_EACH): Warn passersby.

2020-06-25  Akim Demaille  <akim.demaille@gmail.com>

	style: factor the access to a rule from its items
	* src/counterexample.c (item_rule): Move to...
	* src/counterexample.h: here.
	* src/AnnotationList.c, src/counterexample.c, src/ielr.c: Use it.

2020-06-25  Akim Demaille  <akim.demaille@gmail.com>

	style: clean up nullable
	* src/nullable.c: Reduce scopes.
	Prefer `r` to `rules_ruleno`, which is truly an ugly name.

2020-06-25  Akim Demaille  <akim.demaille@gmail.com>

	style: clean up ielr
	* src/AnnotationList.c, src/ielr.c: Fix include order.
	Prefer `res` to `result`.
	Reduce scopes.
	Be free of the oldish 76 cols limitation when it clutters too much the
	code.
	Denest when possible (we're starving for horizontal width).

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

	don't use strlen to compute visual width
	* src/output.c (prepare_symbol_names): Use mbswidth.

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

	doc: use dot/'•' rather than point/'.'
	AFAICT, "dotted rule" is a more frequent synonym of "item" than
	"pointed rule".  So let's migrate to using "dot" only.

	* doc/bison.texi: Use dot/'•' rather than point/'.'.

	* src/print-xml.c (print_core): Use dot rather than point.  This is
	not backward compatible, but AFAICT, we don't have actual user of the
	XML output (but ourselves).  So...
	* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl,
	* data/xslt/xml2xhtml.xsl, tests/report.at: ... adjust.

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

	cex: display all the S/R conflicts, not just one per (state, rule)
	Before this commit, on

	    %%
	    exp
	    : "if" exp "then" exp
	    | "if" exp "then" exp "else" exp
	    | exp "+" exp
	    | "num"

	we used to not display the third counterexample below:

	    Shift/reduce conflict on token "+":
	      Example              exp "+" exp . "+" exp
	      First derivation     exp ::=[ exp ::=[ exp "+" exp . ] "+" exp ]
	      Second derivation    exp ::=[ exp "+" exp ::=[ exp . "+" exp ] ]

	    Shift/reduce conflict on token "else":
	      Example              "if" exp "then" "if" exp "then" exp . "else" exp
	      First derivation     exp ::=[ "if" exp "then" exp ::=[ "if" exp "then" exp . ] "else" exp ]
	      Second derivation    exp ::=[ "if" exp "then" exp ::=[ "if" exp "then" exp . "else" exp ] ]

	    Shift/reduce conflict on token "+":
	      Example              "if" exp "then" exp . "+" exp
	      First derivation     exp ::=[ exp ::=[ "if" exp "then" exp . ] "+" exp ]
	      Second derivation    exp ::=[ "if" exp "then" exp ::=[ exp . "+" exp ] ]

	    Shift/reduce conflict on token "+":
	      Example              "if" exp "then" exp "else" exp . "+" exp
	      First derivation     exp ::=[ exp ::=[ "if" exp "then" exp "else" exp . ] "+" exp ]
	      Second derivation    exp ::=[ "if" exp "then" exp "else" exp ::=[ exp . "+" exp ] ]

	* src/counterexample.c (counterexample_report_state): Don't stop of
	the first conflicts.
	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
	* tests/report.at: Adjust.

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

	cex: don't display twice unifying examples if there is no color
	It makes no sense, and is actually confusing, to display twice the
	same example with no visible difference.

	* src/complain.h, src/complain.c (is_styled): New.
	* src/counterexample.c (print_counterexample): Display the unified
	example a second time only if it makes a difference.
	* tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust.
	* tests/diagnostics.at: Make sure we do display the unifying examples
	twice when colors are enabled.  And check those colors.

2020-06-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix reporting of null nonterminals
	I implemented this to print A ::= [ ], but A ::= [ %empty ] might be
	clearer.

	* src/parse-simulation.c (nullable_closure): Don't generate null
	nonterminal derivations as leaves.
	* src/derivation.c (derivation_print_impl): Don't print seperator
	spaces for null nonterminal.
	* tests/counterexample.at: Update test results.

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

	cex: use the bullet in HTML
	* data/xslt/xml2xhtml.xsl: here.

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

	cex: style changes
	* src/counterexample.c: Simplify a bit.
	* src/parse-simulation.c, src/parse-simulation.h: Enforce coding style.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	c++: get rid of global_tokens_and_yystype
	This was a hack to make it easier for people to migrate from yacc.c to
	lalr1.cc and from glr.c to glr.cc: when set, YYSTYPE and YYLTYPE were
	`#defined`.  It was never documented (just mentioned in NEWS for Bison
	2.2, 2006-05-19), but was used to simplify the test suite.  Stop that:
	adjust the test suite to the skeletons, not the converse.

	In C++ use yy::parser::semantic_type, yy::parser::location_type, and
	yy::parser::token::MY_TOKEN, instead of YYSTYPE, YYLTYPE and MY_TOKEN.

	* data/skeletons/glr.cc, data/skeletons/lalr1.cc: Remove its support.
	* tests/actions.at, tests/c++.at, tests/calc.at: Adjust.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: don't assume the terminal supports "•"
	Use of print_unicode_char suggested by Bruno Haible.
	https://lists.gnu.org/r/bug-gettext/2020-06/msg00012.html

	* src/gram.h (print_dot_fallback, print_dot): New.
	* src/gram.c, src/derivation.c: Use it.
	* tests/counterexample.at, tests/report.at: Adjust the test suite.
	* .travis.yml, README-hacking.md: Adjust.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: also include in the report on --report=counterexamples
	And let --report=all include the counterexamples.

	* src/getargs.h, src/getargs.c (report_cex): New.
	* src/main.c: Compute counterexamples when -rcex is specified.
	* src/print.c: Include the counterexamples when -rcex is specified.

	* tests/conflicts.at, tests/existing.at, tests/local.at: Adjust.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: also include the counterexamples in the report
	The report is the best place to show the details about
	counterexamples, since we have the state right under the nose.

	For instance:

	State 7

	    1 exp: exp . "⊕" exp
	    2    | exp . "+" exp
	    2    | exp "+" exp .  [$end, "+", "⊕"]
	    3    | exp . "+" exp
	    3    | exp "+" exp .  [$end, "+", "⊕"]

	    "⊕"  shift, and go to state 6

	    $end      reduce using rule 2 (exp)
	    $end      [reduce using rule 3 (exp)]
	    "+"       reduce using rule 2 (exp)
	    "+"       [reduce using rule 3 (exp)]
	    "⊕"       [reduce using rule 2 (exp)]
	    "⊕"       [reduce using rule 3 (exp)]
	    $default  reduce using rule 2 (exp)

	    Conflict between rule 2 and token "+" resolved as reduce (%left "+").

	    Shift/reduce conflict on token "⊕":
	        2 exp: exp "+" exp .
	        1 exp: exp . "⊕" exp
	      Example                  exp "+" exp • "⊕" exp
	      First derivation         exp ::=[ exp ::=[ exp "+" exp • ] "⊕" exp ]
	      Example                  exp "+" exp • "⊕" exp
	      Second derivation        exp ::=[ exp "+" exp ::=[ exp • "⊕" exp ] ]

	    Reduce/reduce conflict on tokens $end, "+", "⊕":
	        2 exp: exp "+" exp .
	        3 exp: exp "+" exp .
	      Example                  exp "+" exp •
	      First derivation         exp ::=[ exp "+" exp • ]
	      Example                  exp "+" exp •
	      Second derivation        exp ::=[ exp "+" exp • ]

	    Shift/reduce conflict on token "⊕":
	        3 exp: exp "+" exp .
	        1 exp: exp . "⊕" exp
	      Example                  exp "+" exp • "⊕" exp
	      First derivation         exp ::=[ exp ::=[ exp "+" exp • ] "⊕" exp ]
	      Example                  exp "+" exp • "⊕" exp
	      Second derivation        exp ::=[ exp "+" exp ::=[ exp • "⊕" exp ] ]

	* src/conflicts.h, src/conflicts.c (has_conflicts): New.
	* src/counterexample.h, src/counterexample.c (print_counterexample):
	Add a `prefix` argument.
	(counterexample_report_shift_reduce)
	(counterexample_report_reduce_reduce): Show the items when there's a
	prefix.
	* src/state-item.h, src/state-item.c (print_state_item):
	Add a `prefix` argument.
	* src/derivation.h, src/derivation.c (derivation_print)
	(derivation_print_leaves): Add a prefix argument.
	* src/print.c (print_state): When -Wcex is enabled, show the
	conflicts.
	* tests/report.at: Adjust.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: indent the diagnostics to highlight the structure
	Instead of

	    Shift/reduce conflict on token D:
	    Example              A a • D
	    First derivation     s ::=[ A a a ::=[ b ::=[ c ::=[ • ] ] ] d ::=[ D ] ]
	    Example              A a • D
	    Second derivation    s ::=[ A a d ::=[ • D ] ]

	display

	    Shift/reduce conflict on token D:
	      Example              A a • D
	      First derivation     s ::=[ A a a ::=[ b ::=[ c ::=[ • ] ] ] d ::=[ D ] ]
	      Example              A a • D
	      Second derivation    s ::=[ A a d ::=[ • D ] ]

	* src/counterexample.c (print_counterexample): Indent.
	* tests/counterexample.at: Adjust.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: don't report the items
	Showing the items (with the state numbers) is really something we
	should restrict to the report.

	* src/counterexample.c (counterexample_report_shift_reduce)
	(counterexample_report_reduce_reduce): Don't show the pointed rules,
	we will do that in the report.
	* tests/counterexample.at: Adjust.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: make sure traces go to stderr
	* src/parse-simulation.h, src/parse-simulation.c (print_parse_state):
	here.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	cex: add an argument to the reporting functions to specify the stream
	* src/conflicts.c (find_state_item_number, report_state_counterexamples):
	Move to...
	* src/counterexample.h, src/counterexample.c (find_state_item_number)
	(counterexample_report_state): this.
	Add support for `out` as an argument.
	(counterexample_report_reduce_reduce, counterexample_report_shift_reduce):
	Accept an `out` argument, and be static.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	style: more uses of const
	* src/print.c, src/state.h, src/state.c: here.

2020-06-16  Akim Demaille  <akim.demaille@gmail.com>

	Merge 'maint'
	* upstream/maint:
	  maint: post-release administrivia
	  version 3.6.4
	  glr.cc: don't leak glr.c/glr.cc scaffolding to the user

	Some fixes were needed to adjust to recent changes in glr.cc and
	glr.c.

	* data/skeletons/glr.cc: Stop messing with the user's epilogue to
	insert glr.cc code.  We need that code to be inserted _before_ the
	user's epilogue, not after.  So define b4_glr_cc_pre_epilogue.
	* data/skeletons/glr.c: Use it.

2020-06-15  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.

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

	version 3.6.4
	* NEWS: Record release date.

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

	glr.cc: don't leak glr.c/glr.cc scaffolding to the user
	Until we have a decent reimplementation of glr.cc, we have to use
	tricks to shoehorn C++ symbols to the C engine of glr.c.  Some of them
	are done via #define.  Unfortunately in Bison 3.6 some of these we
	done in the header file, which broke valid user code.

	Reported by Egor Pugin.
	https://lists.gnu.org/r/bug-bison/2020-06/msg00003.html

	* data/skeletons/glr.cc: Stop playing tricks with b4_pre_epilogue.
	(b4_glr_cc_setup, b4_glr_cc_cleanup): New.
	Much cleaner way to instal glr.cc's scaffolding around glr.c.
	* data/skeletons/glr.c: Adjust to use them.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	reports: the column width differs from the byte count
	From

	    "number"          shift, and go to state 1
	    "Ñùṃéℝô"  shift, and go to state 2

	to

	    "number"  shift, and go to state 1
	    "Ñùṃéℝô"  shift, and go to state 2

	* src/print.c: Use mbswidth, not strlen, to compute visual columns.
	* tests/report.at: Adjust.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	reports: don't escape the labels
	Currently we use "quotearg" to escape the strings output in Dot.  As a
	result, if the user's locale is C for instance, all the non-ASCII are
	escaped.  Unfortunately graphviz does not interpret this style of
	escaping.

	For instance:

	    5 -> 2 [style=solid label="\"\303\221\303\271\341\271\203\303\251\342\204\235\303\264\""]

	was displayed as a sequence of numbers.  We now output:

	    5 -> 2 [style=solid label="\"Ñùṃéℝô\""]

	independently of the user's locale.

	* src/system.h (obstack_backslash): New.
	* src/graphviz.h, src/graphviz.c (escape): Remove, use
	obstack_backslash instead.
	* src/print-graph.c: Likewise.
	* tests/report.at: Adjust.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	parser: keep string aliases as the user wrote it
	Currently our scanner decodes all the escapes in the strings, and we
	later reescape the strings when we emit them.

	This is troublesome, as we do not respect the user input.  For
	instance, when the user writes in UTF-8, we destroy her string when we
	write it back.  And this shows everywhere: in the reports we show the
	escaped string instead of the actual alias:

	    0 $accept: . exp $end
	    1 exp: . exp "\342\212\225" exp
	    2    | . exp "+" exp
	    3    | . exp "+" exp
	    4    | . "number"
	    5    | . "\303\221\303\271\341\271\203\303\251\342\204\235\303\264"

	    "number"                                                    shift, and go to state 1
	    "\303\221\303\271\341\271\203\303\251\342\204\235\303\264"  shift, and go to state 2

	This commit preserves the user's exact spelling of the string aliases,
	instead of interpreting the escapes and then reescaping.  The report
	now shows:

	    0 $accept: . exp $end
	    1 exp: . exp "⊕" exp
	    2    | . exp "+" exp
	    3    | . exp "+" exp
	    4    | . "number"
	    5    | . "Ñùṃéℝô"

	    "number"          shift, and go to state 1
	    "Ñùṃéℝô"  shift, and go to state 2

	Likewise, the XML (and therefore HTML) outputs are fixed.

	* src/scan-gram.l (STRING, TSTRING): Do not interpret the escapes in
	the resulting string.
	* src/parse-gram.y (unquote, parser_init, parser_free, unquote_free)
	(handle_defines, handle_language, obstack_for_unquote): New.
	Use them to unquote where needed.
	* tests/regression.at, tests/report.at: Update.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: check reports with conflicts and UTF-8
	This is to record the current state of the report, which escapes the
	UTF-8 characters (as parse.error="verbose" does), but shouldn't (as
	parse.error="detailed" does).

	* tests/report.at: here.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	style: factor common bits about string scanning
	* src/scan-gram.l: here.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	style: introduce & use STRING_1GROW
	* src/flex-scanner.h (STRING_1GROW): New.
	* src/scan-gram.l, src/scan-skel.l: Use it.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce scopes
	* src/scan-gram.l (STRING_GROW_ESCAPE): Move the static_assert about
	type sizes here.

2020-06-13  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer 'FOO ()' to 'FOO' for function-like macros
	* src/flex-scanner.h (STRING_GROW, STRING_FINISH, STRING_FREE):
	Make them function-like macros.
	Adjust dependencies.

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

	regen

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

	cex: suggest -Wcounterexamples when there are unexpected conflicts
	Suggesting -Wcounterexamples when there are conflicts is probably not
	what the user wants.  If she knows her conflicts and has set
	%expect/%expect-rr appropriately, we shouldn't warn.

	The commit also swaps the counterexamples and the report of conflicts,
	into, IMHO, a more natural order: from

	    Shift/reduce conflict on token B:
	    1:    3 a: A .
	    1:    8 y: A . B
	    Example              A • B C
	    First derivation     s ::=[ a ::=[ A • ] x ::=[ B C ] ]
	    Example              A • B C
	    Second derivation    s ::=[ y ::=[ A • B ] c ::=[ C ] ]

	    input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
	    input.y:4.4: warning: rule useless in parser due to conflicts [-Wother]

	to

	    input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
	    Shift/reduce conflict on token B:
	    1:    3 a: A .
	    1:    8 y: A . B
	    Example              A • B C
	    First derivation     s ::=[ a ::=[ A • ] x ::=[ B C ] ]
	    Example              A • B C
	    Second derivation    s ::=[ y ::=[ A • B ] c ::=[ C ] ]

	    input.y:4.4: warning: rule useless in parser due to conflicts [-Wother]

	* src/conflicts.c (rule_conflicts_print): Rename as...
	(report_rule_expectation_mismatches): this.
	Move the handling of report_counterexamples to...
	(conflicts_print): Here.
	Display this warning when applicable.

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

	cex: rename -Wcounterexample as -Wcounterexamples, and support -Wcex
	Plural vs. singular is always a problem...

	But we already have conflicts-sr and conflicts-rr, so counterexamples
	makes more sense than counterexample.  Besides, -Wcounterexample will
	still be accepted as an unambiguous prefix of -Wcounterexamples.

	Add -Wcex as a convenient alias.

	While at it, use only "counterexample", never "counter example".

	* src/complain.h, src/complain.c
	(Wcounterexample, warning_counterexample): Rename as...
	(Wcounterexamples, warning_counterexamples): these.
	(argmatch_warning_docs): Rename -Wcounterexample as -Wcounterexamples.
	(argmatch_warning_args): Likewise.
	Add support for -Wcex.
	Adjust dependencies.

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

	api.header.include: document it, and fix its default value
	While defining api.header.include worked as expected, its default
	value was incorrectly defined.  As a result, by default, the generated
	parsers still duplicated the content of the generated header instead
	of including it.

	* data/skeletons/yacc.c (api.header.include): Fix its default value.
	* tests/output.at: Check it.
	* doc/bison.texi (%define Summary): Document api.header.include.
	While at it, move the definition of api.namespace at the proper
	place.

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

	cex: color the counterexamples
	Use colors to show the counterexamples and the derivations in color,
	to highlight their structure.  Align the outputs, and add i18n
	support. Reduce width by using a one-space separator instead of
	two-space.

	From

	    Example  A  •  B  C
	    First  derivation  s ::=[ a ::=[ A  • ]  x ::=[ B  C ] ]
	    Second derivation  s ::=[ y ::=[ A  •  B ]  c ::=[ C ] ]

	to

	    Example              A • B C
	    First derivation     s ::=[ a ::=[ A • ] x ::=[ B C ] ]
	    Example              A • B C
	    Second derivation    s ::=[ y ::=[ A • B ] c ::=[ C ] ]

	with colors.

	* data/bison-default.css (cex-dot, cex-0, cex-1, cex-2, cex-3, cex-4)
	(cex-5, cex-6, cex-7, cex-step, cex-leaf): New.
	* src/derivation.c (derivation_print_styled_impl): New.
	(derivation_print, derivation_print_leaves): Use it.
	* src/counterexample.c: Reformat the output.
	* tests/counterexample.at: Adjust.

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

	cex: enforce case for tokens/nonterminals
	It's unfortunate that the traditions between formal language theory
	and Yacc differs, but here, tokens should be upper case, and
	nonterminals should be lower case.

	* tests/counterexample.at: Comply with this.

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

	cex: reformat the s/r and r/r reports
	In Bison we refer to "shift/reduce" conflicts, not "shift-reduce" (in
	Bison 3.6.3 186 occurrences vs 15).  Enforce consistency on this.

	Instead of "spending" a second line for each conflict to report the
	lookaheads, put that on the same line as the type of conflict.  Also,
	prefer "token" to "symbol".  Maybe we should even prefer "lookahead".
	While at it, enable internationalization, with plurals where
	appropriate.

	As a consequence, instead of

	    Shift-Reduce Conflict:
	    6:    3 b: . %empty
	    6:    6 d: c . A
	    On Symbol: A

	display

	    Shift/reduce conflict on token A:
	    6:    3 b: . %empty
	    6:    6 d: c . A

	* NEWS, doc/bison.texi, src/conflicts.c: Spell it "shift/reduce", not
	"shift-reduce".
	* src/counterexample.c (counterexample_report_shift_reduce)
	(counterexample_report_reduce_reduce): Reformat and internationalize
	output.
	* tests/counterexample.at: Adjust expectations.

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

	style: fix syntax-check issues
	* src/counterexample.c, src/files.c, src/files.h, src/lssi.c,
	* src/state-item.c: here.

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

	all: show the rules in comments before the user actions
	For instance, in the case of Bison's own parser:

	    -  case 40:
	    +  case 40:  /* grammar_declaration: "%code" "identifier" "{...}"  */
	         {
	           muscle_percent_code_grow ((yyvsp[-1].ID), (yylsp[-1]),
	                                     translate_code_braceless ((yyvsp[0].BRACED_CODE), (yylsp[0])),
	                                     (yylsp[0]));
	           code_scanner_last_string_free ();
	         }
	         break;

	* data/skeletons/c.m4: Modified.
	* data/skeletons/d.m4: Modified.
	* data/skeletons/java.m4: Modified.
	* src/output.c (output_escaped): New.
	(quoted_output): Use it, and rename as...
	(output_quoted): this.
	Adjust dependencies.
	(rule_output): New.
	(user_actions_output): Use it.
	* data/skeletons/c.m4, data/skeletons/d.m4, data/skeletons/java.m4
	(b4_case): Add support for $3, an optional comment.

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

	CI: use GCC10 on ppc too
	We were still using GCC9, because GCC10 was failing.

	* .travis.yml (PPC64le): Use GCC10.
	While at it, use -O2 instead of -O3: it's certainly nicer for the
	CPUs, and allows to test different sets of compiler flags (we use -O3
	in several other configurations).

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

	examples: fix missing includes
	* examples/c/bistromathic/parse.y: Use abort rather than assert so
	that the "unused result" warning is silenced even with -DNDEBUG.

2020-06-03  Akim Demaille  <akim.demaille@gmail.com>

	warnings: fix -Wmissing-prototypes issues
	* src/counterexample.c, src/lssi.c, src/parse-simulation.c,
	* src/state-item.c:
	Here.

2020-06-03  Akim Demaille  <akim.demaille@gmail.com>

	Merge maint into HEAD
	* upstream/maint:
	  maint: post-release administrivia
	  version 3.6.3
	  build: check -Wmissing-prototypes
	  tests: show logs
	  c++: fix printing of state number on streams

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

2020-06-03  Akim Demaille  <akim.demaille@gmail.com>

	version 3.6.3
	* NEWS: Record release date.

2020-06-01  Akim Demaille  <akim.demaille@gmail.com>

	build: check -Wstrict-aliasing
	* configure.ac (warn_common): Add -Wstrict-aliasing.

2020-06-01  Akim Demaille  <akim.demaille@gmail.com>

	doc: using asan
	* README-hacking.md: here.

2020-06-01  Akim Demaille  <akim.demaille@gmail.com>

	style: fix includes
	* src/fixits.c: Follow our usual pattern.
	* src/scan-code.l, src/scan-gram.l, src/scan-skel.l: Prefer "" to
	include src/ headers.
	* README-hacking.md: Document the pattern.

2020-06-01  Akim Demaille  <akim.demaille@gmail.com>

	lists: fix various issues with the use of gnulib's list
	First, we should avoid code such as

	    gl_list_iterator_t it = gl_list_iterator (deriv->children);
	    derivation *child = NULL;
	    while (gl_list_iterator_next (&it, (const void **) &child, NULL))
	      {
	        derivation_print (child, f);

	because of -Wstrict-aliasing (whose job is to catch type-punning
	issues).  See https://lists.gnu.org/r/bug-bison/2020-05/msg00039.html.

	Rather we need

	    gl_list_iterator_t it = gl_list_iterator (deriv->children);
	    const void **p = NULL;
	    while (gl_list_iterator_next (&it, &p, NULL))
	      {
	        derivation *child = (derivation *) p;
	        derivation_print (child, f);

	Second, list iterators actually have destructors.  Even though they
	are noop in the case of linked-lists, we should use them.

	Let's address both issues with typed wrappers (such as
	derivation_list_next) that take care of both issues, and besides allow
	to scope the iterators within the loop:

	    derivation *child;
	    for (gl_list_iterator_t it = gl_list_iterator (deriv->children);
	         derivation_list_next (&it, &child);
	         )
	      {
	        derivation_print (child, f);

	* src/derivation.h, src/derivation.c (derivation_list_next): New.
	Use it where appropriate.
	* src/counterexample.c (search_state_list_next): New.
	Use it where appropriate.
	* src/parse-simulation.h, src/parse-simulation.c
	* src/state-item.h (state_item_list_next): New.
	Use it where appropriate.

2020-06-01  Akim Demaille  <akim.demaille@gmail.com>

	build: check -Wmissing-prototypes
	pstate_clear is lacking a prototype.
	Reported by Ryan
	https://lists.gnu.org/r/bug-bison/2020-05/msg00101.html

	Besides, none of the C examples were compiled with the warning flags.

	* configure.ac (warn_c): Add -Wmissing-prototypes.
	* data/skeletons/yacc.c (pstate_clear): Make it static.
	* examples/local.mk (TEST_CFLAGS): New.
	* examples/c/bistromathic/local.mk, examples/c/calc/local.mk,
	* examples/c/lexcalc/local.mk, examples/c/mfcalc/local.mk,
	* examples/c/pushcalc/local.mk, examples/c/reccalc/local.mk,
	* examples/c/rpcalc/local.mk:
	Use it.

	GCC's warn_unused_result is not silenced by a cast to void, so we have
	to "use" scanf's result.
	https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509
	https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425

	Flex generated code produces too many warnings, including things such
	as, with ICC:

	    examples/c/lexcalc/scan.c(1088): error #1682: implicit conversion
	              of a 64-bit integral type to a smaller integral type (potential portability problem)
	    2259                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
	    2260                ^
	    2261
	    2262

	I am tired of trying to fix Flex's output.  The project does not seem
	maintained.  We ought to avoid it.  So, for the time being, don't try
	to enable warnings with Flex.

	* examples/c/bistromathic/parse.y, examples/c/reccalc/scan.l: Fix
	warnings.
	* doc/bison.texi: Discard scanf's return value to defeat
	-Werror=unused-result.

2020-05-31  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

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

	style: make item_index a truly different type from item_number
	See previous commit.

	* src/gram.h (item_index): Make it unsigned.
	Fix remaiming issues.

2020-05-25  Vincent Imbimbo  <vmi6@cornell.edu>

	style: decouple different uses of item_number
	item_number is used for elements of ritem as well as indices into
	ritem which is fairly confusing.  Introduce item_index to represent
	indices into ritem.

	* src/gram.h (item_index): Introduce it for ritem indices.
	* src/closure.h, src/closure.c, src/ielr.c, src/lr0.c,
	* src/print-graph.c, src/state.h, src/state.h:
	Replace uses of item_number with item_index where appropriate.

2020-05-24  Joshua Watt  <jpewhacker@gmail.com>

	bison: add command line option to map file prefixes
	Teaches bison about a new command line option, --file-prefix-map OLD=NEW
	(based on the -ffile-prefix-map option from GCC) which causes it to
	replace and file path of OLD in the text of the output file with NEW,
	mainly for header guards and comments. The primary use of this is to
	make builds reproducible with different input paths, and in particular
	the debugging information produced when the source code is compiled. For
	example, a distro may know that the bison source code will be located at
	"/usr/src/bison" and thus can generate bison files that are reproducible
	with the following command:

	    bison --output=/build/bison/parse.c -d --file-prefix-map=/build/bison/=/usr/src/bison/ parse.y

	Importantly, this will change the header guards and #line directives
	from:

	    #ifndef YY_BUILD_BISON_PARSE_H
	    #line 100 "/build/bison/parse.h"

	to

	    #ifndef YY_USR_SRC_BISON_PARSE_H
	    #line 100 "/usr/src/bison/parse.h"

	which is reproducible.

	See https://lists.gnu.org/r/bison-patches/2020-05/msg00016.html

	* src/files.h, src/files.c (spec_mapped_header_file)
	(mapped_dir_prefix, map_file_name, add_prefix_map): New.
	* src/getargs.c (-M, --file-prefix-map): New option.
	* src/output.c (prepare): Define b4_mapped_dir_prefix and
	b4_spec_header_file.
	* src/scan-skel.l (@ofile@): Output the mapped file name.
	* data/skeletons/glr.c, data/skeletons/glr.cc,
	* data/skeletons/lalr1.cc, data/skeletons/location.cc,
	* data/skeletons/yacc.c:
	Adjust.
	* doc/bison.texi: Document.
	* tests/input.at, tests/output.at: Check.

2020-05-24  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix expectations
	Should have been part of 1ec93ca2a2b4718b5d94871475520a2688b4c5c8.

	* tests/counterexample.at: here.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	cex: clean the display of conflicted symbols
	Instead of `On Symbols: {b,c,}`, display `On Symbols: b, c`.

	* src/counterexample.c (counterexample_report_reduce_reduce): We don't
	need braces.
	Use commas as a separator, not a terminator.
	* tests/counterexample.at: Adjust.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: show logs
	* examples/c/bistromathic/bistromathic.test, examples/test: here.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix printing of state number on streams
	Avoid this kind of display:

	    LAC: checking lookahead identifier: R4 R3 G^B S5

	* data/skeletons/lalr1.cc: Convert state_t to int before printing it.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix printing of state number on streams
	Avoid this kind of display:

	    LAC: checking lookahead identifier: R4 R3 G^B S5

	* data/skeletons/lalr1.cc: Convert state_t to int before printing it.

2020-05-23  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix pruning crash
	Fixes a crash on Cim's grammar.
	https://lists.gnu.org/r/bison-patches/2020-05/msg00107.html

	* src/state-item.c (prune_disabled_paths): Prune forward and backwards
	paths in seperate passes.
	(prune_forward, prune_backward): New.
	(disable_state_item): Change function argument from state_item_number
	to state_item.
	(state_items_report): Add disabling to graph print-out.
	* src/conflicts.c (find_state_item_number,
	report_state_counterexamples): Add SI_DISABLED checks.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	kinds: use the symbol kinds where applicable
	Instead of generating switch statements with numbers, let's use the
	symbol kinds.  Not only is this more readable, it also makes reading
	diff easier, as a change in symbol numbers won't have such a large
	effect on the implementation of symbol actions.

	* data/skeletons/bison.m4 (_b4_symbol_case): Use the symbol kind
	rather than its number.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	kinds: also define the possibly qualified symbol kinds
	* data/skeletons/bison.m4 (b4_symbol_kind): Rename as...
	(b4_symbol_kind_base): this.
	(b4_symbol_kind): New, for fully qualified kind name.
	* data/skeletons/lalr1.cc (b4_symbol_kind): New.
	Adjust to use b4_symbol_kind where appropriate.
	* src/parse-gram.h, src/parse-gram.c: regen.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	m4: simplify useless quotation
	* data/skeletons/bison.m4: The result of b4_symbol is "quoted"
	already, no need for m4_expand.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	m4: use m4_shift2 etc.
	* data/skeletons/bison.m4 (m4_shift4): New.
	Use them where applicable.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	tests: show logs
	* examples/c/bistromathic/bistromathic.test, examples/test: here.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	style: spell fixes
	* Makefile.am (codespell): New.
	* doc/bison.texi: Fixes.
	Use @option for options.
	* src/lssi.c, src/lssi.h, src/parse-simulation.h, src/state-item.c:
	Fix spellos.

2020-05-23  Akim Demaille  <akim.demaille@gmail.com>

	style: rename user_token_number as code
	This should have been done in 3.6, but I wanted to avoid introducing
	conflicts into Vincent's work on counterexamples.  It turns out it's
	completely orthogonal.

	* data/README.md, data/skeletons/bison.m4, data/skeletons/c++.m4,
	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/java.m4,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
	* data/skeletons/variant.hh, data/skeletons/yacc.c, src/conflicts.c,
	* src/derives.c, src/gram.c, src/gram.h, src/output.c,
	* src/parse-gram.c, src/parse-gram.y, src/print-xml.c, src/print.c,
	* src/reader.c, src/symtab.c, src/symtab.h, tests/input.at,
	* tests/types.at:
	s/user_token_number/code/g.
	Plus minor changes.

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

	Merge maint into master
	* upstream/maint:
	  fix generated comments
	  traces: provide a means to get short m4 traces
	  traces: show the full m4 invocation

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: replace state-item data structures
	* src/state-item.h: Add trans, prods, and revs edges to state-item
	struct.
	(si_trans, si_revs, si_prods_lookup): Remove.
	* src/state-item.c, src/lssi.c, src/parse-simulation.c,
	* src/counterexample.c: Update state-item API usage accordingly.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix bad reference counting
	* src/counterexample.c (si_bfs_free): Fix reference_count
	decrementing.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix miscellaneous leaks
	* src/counterexample.c (unifying_counterexample): Always free
	stage3result when it exists.
	* src/conflicts.c (report_state_counterexamples): free leaked bitset.
	* src/state-item.c (prune_disabled_paths): free leaked queue.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix counterexample leak
	* src/counterexample.c (free_counterexample): New.
	Free counterexamples after printing.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix lssi leaks
	* src/lssi.c (shortest_path_from_start): Free the root of
	shortest_path_from_start search.
	Free eligible bitset.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix parse state leaks
	* src/parse_simulation.c: Fix bug in parse_state_free.
	Free new_root when simulate_reduction generates zero states.

	* src/parse-simulation.c, src/parse-simulation.h
	(parse_state_list, parse_state_list_append): New.
	* src/parse-simulation.c, src/parse-simulation.h,
	* src/counterexample.c: Replace all uses of lists of parse states and
	appends to parse_state_lists with the new API.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: derivation reference counting
	* src/derivation.h, src/derivation.c: Make derivation struct opaque.
	Add derivation_list type for clarity.
	(derivation_list_new): New.
	(derivation_list_append): New.
	(derivation_list_prepend): New.
	(derivation_new_leaf): New constructor for derivations with no
	children.
	* src/counterexample.c, src/parse-simulation.c,
	* src/parse-simulation.h: Replace uses of gl_list_t containing
	derivations with derivation_list and its API.
	Replace calls of dervation_new using null children with
	derivation_new_leaf.
	* src/parse-simulation.c: replace ps_chunk and its API with typed
	versions si_chunk and deriv_chunk.
	* src/parse-simlation.h, src/parse-simulation.c: Remove
	parse_state_retain_deriv in favor of derivation reference counting.
	* src/counterexample.c: Remove search_state_retain_deriv.

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

	cex: style changes in parse-simulation
	* src/parse-simulation.c: Formatting changes.
	(parse_state_list_new): New.
	Use it.

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

	cex: style: prefer res for returned value
	* src/lssi.c, src/parse-simulation.c: here.

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

	cex: fix memory leaks when there are conflicts
	* src/counterexample.c (production_step, reduction_step): Release
	memory of temporary objects.

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

	cex: be sure to always reclaim memory put in hashes
	One call to hash_initialize did not provide a function to free memory.

	* src/state-item.c (hash_pair_table_create): New.
	Use it.

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

	cex: properly reclaim hash's allocated memory
	* src/state-item.c: Use hash_free where appropriate.

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

	cex: avoid gratuitous heap allocations
	There's no need to go for the heap when using gnulib's hash module.

	* src/state-item.c (hash_pair_lookup, hash_pair_remove,
	state_sym_lookup): Use the heap Luke.
	That removes a leak from hash_pair_lookup.
	(init_prods): Use hash_pair_insert instead of duplicating it.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix leaks
	* src/state-item.c: Various functions were using heap allocated locals
	and not freeing them.

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

	style: use hash_xinsert
	* gnulib: Update to get hash_xinsert.
	Use it where appropriate.

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

	cex: style changes in state-item
	* src/state-item.h, src/state-item.c (state_item): Make the state
	const.
	(state_item_set): Make it clearer that it works in the state_items
	global array.

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

	cex: stylistic changes
	* src/counterexample.c: Use 'res' as a variable name for returned
	value, as elsewhere.
	Avoid uninitialized variables, especially pointers.
	Avoid assignment where possible.

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

	cex: avoid uninitialized variables
	* src/counterexample.c (item_rule_bounds): Split into...
	(item_rule_start, item_rule_end): these.
	Adjust dependencies.
	* src/conflicts.c (find_state_item_number): New.
	Use it to avoid uninitialized variables.

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

	cex: isolate missing API from gl_list
	* src/counterexample.c (list_get_end): New.
	Use it.
	Reduce scopes.

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

	cex: tests: be robust to variations in time limit reports
	The CI has "failures" such as (253, "Null nonterminals"):

	    @@ -21,7 +21,7 @@
	     3:    3 b: . %empty
	     3:    4 c: . %empty
	     On Symbols: {A,}
	    -time limit exceeded: 6.000000
	    +time limit exceeded: 11.000000
	     First  Example c  •  c  A  A  $end
	     First  derivation  $accept ::=[ a ::=[ c  d ::=[ a ::=[ b ::=[ • ]  d ::=[ c  A  A ] ] ] ]  $end ]
	     Second Example c  •  A  $end

	* tests/counterexample.at (AT_BISON_CHECK_CEX): New.
	Use it to neutralize differences in timeout values.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix stack overflow
	* src/parse-simulation.c: Replace reference counting with
	parse_state_retain everywhere.
	(free_parse_state): Make this function iterative instead of
	recursive. Long parse_state chains were causing stack exhaustion.

	* tests/counterexample.at: Fix expectations.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix crash from zombie result
	Fixes the SEGV in test 247 (counterexample.at:195): "S/R after first
	token".

	* src/counterexample.c: here.
	* tests/counterexample.at: Fix expectations.

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

	cex: fixes, and enable tests
	* src/counterexample.c, src/derivation.c:
	Do not output diagnostics on stdout, that's the job of stderr, and the
	testsuite heavily depend on this.
	Do not leave trailing spaces in the output.
	* tests/counterexample.at: Use AT_KEYWORDS.
	Specify the expected outputs.
	* tests/local.mk: Add counterexample.at.

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

	cex: fix a crash
	* src/state-item.c (init_state_items): If the rule has no reductions
	at all, don't read at all in its list of reduced rules.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: add tests
	* tests/counterexample.at: New.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: bind counterexample generation
	* src/complain.h, src/complain.c: Add support for -Wcounterexample.
	* src/conflicts.c (report_counterexamples): New.
	(rule_conflicts_print): Use it when -Wcounterexample is given.
	* src/getargs.h, src/getargs.c: Add support for --trace=cex.
	* src/main.c (main): Init and deinit counterexample generation.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: introduce counterexample search
	* src/counterexample.h, src/counterexample.c: New.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: introduce the parse simulator
	* src/derivation.h, src/derivation.c,
	* src/parse-simulation.h, src/parse-simulation.c: New.

2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: add support for state-item pair graph generation
	* src/lssi.h, src/lssi.c, src/state-item.h, src/state-item.c: New.

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

	cex: add gnulib dependencies
	* bootstrap.conf (gnulib_modules): Add linked-list.

2020-05-21  Akim Demaille  <akim.demaille@gmail.com>

	fix generated comments
	In Bison 3.6.2, the comments with brackets lose their brackets, for
	improper m4 quotation.

	* data/skeletons/bison.m4 (b4_gsub): New.
	* data/skeletons/c-like.m4 (_b4_comment): Use it.
	* tests/m4.at: Check b4_gsub.

2020-05-21  Akim Demaille  <akim.demaille@gmail.com>

	traces: provide a means to get short m4 traces
	Let --trace=m4-early dump all the logs from the start (as --trace=m4
	used to do), and have --trace=m4 now start traces only when actually
	working of the user's grammar.

	Can make a big difference in the case of small inputs.  E.g.

	    $ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4 |& wc
	       3952   19446  251068
	    $ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4-early |& wc
	      19491  131904 1830495

	* data/skeletons/traceon.m4: New.
	* src/getargs.h, src/getargs.c: Introduce --trace=m4-early.
	* src/output.c (output_skeleton): Adjust for --trace=m4 and --trace=m4-early.

2020-05-21  Akim Demaille  <akim.demaille@gmail.com>

	traces: show the full m4 invocation
	Unfortunately the effect of -dV is still position independent.

	* src/output.c (output_skeleton): here.

2020-05-20  Thomas Petazzoni  <thomas.petazzoni@bootlin.com>

	src: make path to m4 relocatable
	Commit a4ede8f85b0c9a254fcb01e5888cee1983095669 ("package: make bison
	a relocatable package") made Bison relocatable, but in fact it still
	contains one absolute reference: the M4 variable, which points to the
	M4 program. Let's fix that by using relocate(), see if an M4 binary is
	available at the relocated location, and otherwise fallback to the
	original M4 location.

	See https://lists.gnu.org/r/bison-patches/2020-05/msg00078.html,
	and https://lists.gnu.org/r/bison-patches/2020-05/msg00087.html.

	* src/files.h, src/files.c (m4path): New.
	* src/output.c: Use it.

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	CI: fix PPC recipe

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	Merge branch 'maint'
	* upstream/maint:
	  maint: post-release administrivia
	  version 3.6.2
	  tests: improve update-test
	  CI: add GCC 10 and Clang 10
	  fix: do not emit nested comments
	  todo: update
	  examples: use markdown hyperlinks
	  tests: don't use == to compare const char *...
	  gnulib: update

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	c: more fixes for _Noreturn
	The previous fix was insufficient.

	    tests/types.at:366: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
	    ++ ccache clang++-mp-9.0 -Qunused-arguments -ggdb -Wall -Wextra -Wcast-align -Wchar-subscripts -fparse-all-comments -Wdocumentation -Wformat -Wimplicit-fallthrough -Wnull-dereference -Wno-sign-compare -Wno-tautological-constant-out-of-range-compare -Wpointer-arith -Wshadow -Wwrite-strings -Wextra-semi -Wold-style-cast -Wundefined-func-template -Wweak-vtables -Wunreachable-code -Wundef -pedantic -Wconversion -Wdeprecated -Wsign-compare -Wsign-conversion -Wtautological-constant-out-of-range-compare -fno-color-diagnostics -Wno-keyword-macro -Werror -std=c++98 -I/Users/akim/src/gnu/bison/tests -isystem /opt/gostai/include -isystem /opt/local/include -L/opt/gostai/lib -L/opt/local/lib -o test test.cc /Users/akim/src/gnu/bison/_build/c9d/lib/libbison.a -lintl -Wl,-framework -Wl,CoreFoundation
	    stderr:
	    test.cc:955:1: error: _Noreturn functions are a C11-specific feature [-Werror,-Wc11-extensions]
	    _Noreturn static void
	    ^
	    test.cc:963:1: error: _Noreturn functions are a C11-specific feature [-Werror,-Wc11-extensions]
	    _Noreturn static void
	    ^
	    2 errors generated.

	* data/skeletons/c.m4 (b4_attribute_define): Do not use _Noreturn at
	all in C++, clang or not.

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

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	version 3.6.2
	* NEWS: Record release date.

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	tests: improve update-test
	* build-aux/update-test: When given a directory, use the testsuite.log
	which it contains.
	Do not accept empty "from"s, as substituting the empty string with
	something is rarely a good idea.

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	CI: add GCC 10 and Clang 10
	* .travis.yml: Here.
	* tests/input.at, tests/regression.at: Beware of clang's -Wdocumentation.

2020-05-17  Akim Demaille  <akim.demaille@gmail.com>

	fix: do not emit nested comments
	With input such as

	    %token<fl> yVL_CLOCK "/*verilator sc_clock*/"

	we generate

	    yVL_CLOCK = 610,      /* "/*verilator sc_clock*/"  */

	which is invalid since the comment will actually be closed on the
	first "*/".  Let's turn "*/" into "*\/" to avoid this.  But GCC will
	also warn about "/*" inside a comment, so let's "escape" it too.

	Reported by Huang Rui.
	https://github.com/akimd/bison/issues/38

	* data/skeletons/c-like.m4 (_b4_comment): Escape comment delimiters in
	comments.
	* tests/input.at (Torturing the Scanner): Check thes cases.
	* tests/m4.at: New.

2020-05-16  Akim Demaille  <akim.demaille@gmail.com>

	c: restore definition of _Noreturn as [[noreturn]] in C++
	c.m4 contains a definition of _Noreturn which is modeled after
	gnulib's lib/_Noreturn.h.  The latter was recently
	changed (b61bf2f0e8bdc1e522ae8e97d57d5625163b42ea) to not using
	[[noreturn]] at all, because the uses of _Noreturn in gnulib are
	sometimes incompatible with the rules of [[noreturn]].

	As a result glr.cc started to use _Noreturn in C++, which clang
	refuses (all the glr.cc tests currently fail with Clang++).

	* data/skeletons/c.m4 (b4_attribute_define): Restore the definition of
	_Noreturn as [[noreturn]] in modern C++.
	The generated code uses _Noreturn in places where [[noreturn]] is
	valid.

2020-05-16  Akim Demaille  <akim.demaille@gmail.com>

	examples: don't promote unchecked function calls
	* etc/bench.pl.in, examples/c/bistromathic/parse.y,
	* examples/c/calc/calc.y, examples/c/pushcalc/calc.y: Check scanf's
	return value.
	* doc/bison.texi: Likewise, but only for the second example, to avoid
	cluttering the very simple case.

2020-05-16  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-05-15  Akim Demaille  <akim.demaille@gmail.com>

	todo: update

2020-05-14  Akim Demaille  <akim.demaille@gmail.com>

	examples: use markdown hyperlinks
	* examples/c++/README.md, examples/c++/calc++/README.md,
	* examples/c/README.md: here.

2020-05-14  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't use == to compare const char *...
	Reported by Dagobert Michelsen.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00091.html

	* tests/c++.at: here.

2020-05-14  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-05-13  Akim Demaille  <akim.demaille@gmail.com>

	tests: improve update-test
	* build-aux/update-test: When given a directory, use the testsuite.log
	which it contains.
	Do not accept empty "from"s, as substituting the empty string with
	something is rarely a good idea.

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

	Merge branch maint
	* maint:
	  news: update
	  maint: post-release administrivia
	  version 3.6.1
	  c++: style: reorder generated code
	  c++: provide yy::parser::symbol_type::name
	  c++: make parser::symbol_name public
	  examples: beware of ~/.inputrc
	  build: also provide lzip compressed tarballs
	  style: minor fixes
	  yacc.c: restore ansi-c compatibility

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

	news: update

2020-05-10  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.

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

	version 3.6.1
	* NEWS: Record release date.

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

	bench: add support to randomize the order of execution
	It's amazing how much the order matters.  To a point that many of
	these benches are meaningless.  For instance (some of the benches
	where run with `make -C benches/latest rand
	BENCHFLAGS=--benchmark_min_time=3`):

	    compiler: g++ -std=c++11 -O2
	      0. %define nofinal
	      1.
	    --------------------------------------------------
	    Benchmark           Time           CPU Iterations
	    --------------------------------------------------
	    BM_y0            1543 ns       1541 ns     441660
	    BM_y1            1521 ns       1520 ns     456535
	    --------------------------------------------------
	    BM_y0            1531 ns       1530 ns     440584
	    BM_y1            1512 ns       1511 ns     457591
	    --------------------------------------------------
	    BM_y0            1539 ns       1538 ns    2749330
	    BM_y1            1516 ns       1515 ns    2771500
	    --------------------------------------------------
	    BM_y0            1571 ns       1570 ns    2600782
	    BM_y1            1542 ns       1541 ns    2708349
	    --------------------------------------------------
	    BM_y0            1530 ns       1529 ns    2670363
	    BM_y1            1519 ns       1518 ns    2764096

	    --------------------------------------------------
	    Benchmark           Time           CPU Iterations
	    --------------------------------------------------
	    BM_y1            1529 ns       1528 ns     451937
	    BM_y0            1508 ns       1507 ns     453944
	    --------------------------------------------------
	    BM_y1            1525 ns       1524 ns    2750684
	    BM_y0            1516 ns       1515 ns    2794034
	    --------------------------------------------------
	    BM_y1            1526 ns       1525 ns    2749620
	    BM_y0            1515 ns       1514 ns    2808112
	    --------------------------------------------------
	    BM_y1            1524 ns       1523 ns    4475844
	    BM_y0            1502 ns       1501 ns    4611665

	* etc/bench.pl.in: here.

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

	bench: use a Makefile
	This makes it much easier to toy with the benchs.

	* etc/bench.pl.in: Generate a Makefile instead of directly compiling
	the files.

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

	examples: use markdown hyperlinks
	* examples/c++/README.md, examples/c++/calc++/README.md,
	* examples/c/README.md: here.

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

	don't use stdnoreturn
	Reported by Paul Eggert.

	* src/getargs.c: We don't need it anyway, since we use _Noreturn.
	* data/skeletons/c.m4: While at it, update the definition of _Noreturn
	stolen from gnulib.

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

	c++: style: reorder generated code
	The implementation of yy::parser::symbol_name is emitted even before
	the implementation of yy::parser::parser.  This makes little sense.

	* data/skeletons/lalr1.cc (symbol_name): Move its implementation in
	the same place as in the class definition: after "error" and before
	"context".

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

	c++: provide yy::parser::symbol_type::name
	* data/skeletons/c++.m4 (yy::parser::basic_symbol::name): New.
	* data/skeletons/lalr1.cc (yy_print_): Use it.
	* doc/bison.texi: Document.
	* tests/c++.at: Check.

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

	c++: make parser::symbol_name public
	Reported by Martin Blais <blais@furius.ca>.
	https://lists.gnu.org/r/help-bison/2020-05/msg00005.html

	* data/skeletons/lalr1.cc (symbol_name): Make it public.
	Add a private hidden hook to enable testing of private parts.
	* tests/local.at (AT_DATA_GRAMMAR_PROLOGUE): Help Emacs find the right
	language mode.
	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Check that we
	can read symbol_name.

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

	examples: beware of ~/.inputrc
	* examples/c/bistromathic/bistromathic.test: here.

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

	build: also provide lzip compressed tarballs
	Suggested by Matias Fonzo <selk@dragora.org>.

	* cfg.mk: Post announcements to bison-announce.
	* configure.ac: Build lzip packages.
	* .travis.yml: Build only xz, we don't care about the other formats
	here.

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

	style: minor fixes
	* examples/c/README.md: here.

2020-05-09  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: restore ansi-c compatibility
	Reported by neok-m4700.
	https://github.com/akimd/bison/issues/37

	* data/skeletons/yacc.c: Don't use // comments.

2020-05-09  Akim Demaille  <akim.demaille@gmail.com>

	bench: use *.cc for C++
	Using *.c is simpler, but triggers annoying warnings with Clang++.

	* etc/bench.pl.in: Please the dictator.

2020-05-09  Akim Demaille  <akim.demaille@gmail.com>

	style: minor fixes
	* examples/c/README.md: here.

2020-05-09  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update, and use the attribute module
	* gnulib: Update.
	* bootstrap.conf: Use attribute.
	* src/system.h: Remove macros for attributes.
	Adjust dependencies.
	* src/scan-gram.l (DEPRECATED): Rename as...
	(DEPRECATED_DIRECTIVE): this, to avoid the clash with the DEPRECATED macro.

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	build: also provide lzip compressed tarballs
	Suggested by Matias Fonzo <selk@dragora.org>.

	* cfg.mk: Post announcements to bison-announce.
	* configure.ac: Build lzip packages.
	* .travis.yml: Build only xz, we don't care about the other formats
	here.

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

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	version 3.6
	* NEWS: Record release date.

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of portability issue on Windows
	Reported by Jannick.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00040.html
	https://lists.gnu.org/r/bug-bison/2020-05/msg00066.html

	* examples/test (diff_opts): Use --strip-trailing-cr if supported, to
	avoid \n vs. \r\n issues.
	* examples/c/bistromathic/bistromathic.test: When on MSYS, don't try
	to check autocompletion.

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix the generation of the man page
	When there is no bison.1 at all, the procedure fails.

	* doc/local.mk (bison.1): Be robust to cold starts.

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	news: prepare for 3.6

2020-05-08  Akim Demaille  <akim.demaille@gmail.com>

	doc: complete the table of symbols
	* doc/bison.texi: Add YYEMPTY, YYEOF and YYUNDEF.

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

	doc: clarify the glossary item about kinds
	* doc/bison.texi (Glossary): here.

2020-05-06  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.

2020-05-06  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.94
	* NEWS: Record release date.

2020-05-06  Akim Demaille  <akim.demaille@gmail.com>

	doc: document yypstate_expected_tokens
	* doc/bison.texi (Push Parser Interface): Here.

2020-05-06  Akim Demaille  <akim.demaille@gmail.com>

	doc: restructure the push parser documentation
	I don't think it's fair to have yypstate_new, yypstate_delete,
	yypush_parse and yypull_parse to have their own section, on par with
	yyparse and yylex.  Let them be in a single section about push
	parsers.  And show new/delete first.

	* doc/bison.texi (Push Parser Interface): New.
	Fuse the aforementioned sections into it.

2020-05-06  Akim Demaille  <akim@lrde.epita.fr>

	all: fix the interface of yyexpected_tokens
	The user gives yyexpected_tokens a limit: the max number of tokens she
	wants to hear about.  That's because an error message that reports a
	bazillion of possible tokens is useless.

	In that case yyexpected_tokens returned 0, so the user would not know
	if there are too many expected tokens or none (yes, that's possible).

	There are several ways to tell the user in which situation she's in:

	- return some E2MANY, a negative value.  Then it makes the pattern

	    int argsize = yypcontext_expected_tokens (ctx, arg, ARGS_MAX);
	    if (argsize < 0)
	      return argsize;

	  no longer valid, as for E2MANY (i) the user must generate the error
	  message anyway, and (ii) she should not return E2MANY

	- return ARGS_MAX + 1.  Then it makes it dangerous for the user, as
	  she has to iterate update `min (ARGS_MAX, argsize)`.

	Returning 0 is definitely simpler and safer for the user, as it tells
	her "this is not an error, just generate your message without a list
	of expecting tokens".  So let's still return 0, but set arg[0] to the
	empty token when the list is really empty.

	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.java
	* data/skeletons/yacc.c (yyexpected_tokens): Put the empty symbol
	first if there are no possible tokens at all.
	* examples/c/bistromathic/parse.y: Demonstrate how to use that.

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

	examples: fix handling of syntax errors
	The shell grammar does not allow empty statements in then/else part of
	an if, but examples/test failed to catch the syntax errors from the
	script it ran.  So exited with success anyway.

	You would expect 'set -e' to suffice, but with bash 3.2 actually it
	does not.  As a matter of fact, I could find a way to have this behave
	properly:

	    $ cat test.sh
	    set -e
	    cleanup ()
	    {
	      status=$?
	      echo "cleanup: $status"
	      exit $status
	    }
	    trap cleanup 0 1 2 13 15
	    . $1
	    s=$?
	    echo "test.sh: $s"
	    exit $s

	    $ cat bistro.test
	    if true; then
	    fi

	    $ /bin/sh ./test.sh ./bistro.test
	    ./bistro.test: line 2: syntax error near unexpected token `fi'
	    cleanup: 0
	    $ echo $?
	    0

	Remove the set -e (or the trap), and tada, it works...  So we have to
	deal with the error by hand.

	* examples/test ($exit): Replace with...
	($status): this.
	Preserve the exit status of the test case.
	* examples/c/bistromathic/bistromathic.test: Fix syntax error.

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	doc: beware of timestamp issues on Haiku
	On Haiku, help2man is fired on a freshly extracted tarball.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00055.html

	* doc/local.mk (bison.1): Be robust to a missing help2man.

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of wchar_t portability issues on AIX
	https://lists.gnu.org/r/bug-bison/2020-05/msg00050.html
	Reported by Bruno Haible.

	* tests/diagnostics.at: here.

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: beware of portability issues with PTRDIFF_MAX
	For instance test 386, "glr.cc api.value.type={double}":

	    types.at:366: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
	    stderr:
	    test.cc: In function 'ptrdiff_t yysplitStack(yyGLRStack*, ptrdiff_t)':
	    test.cc:490:4: error: 'PTRDIFF_MAX' was not declared in this scope
	       (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : YY_CAST (ptrdiff_t, SIZE_MAX))
	        ^
	    test.cc:1805:37: note: in expansion of macro 'YYSIZEMAX'
	           ptrdiff_t half_max_capacity = YYSIZEMAX / 2 / state_size;
	                                         ^~~~~~~~~
	    test.cc:490:4: note: suggested alternative: '__PTRDIFF_MAX__'
	       (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : YY_CAST (ptrdiff_t, SIZE_MAX))
	        ^
	    test.cc:1805:37: note: in expansion of macro 'YYSIZEMAX'
	           ptrdiff_t half_max_capacity = YYSIZEMAX / 2 / state_size;
	                                         ^~~~~~~~~

	The failing tests are using glr.cc only, which I don't understand, the
	problem is rather in glr.c, so I would expect glr.c tests to also fail.

	Reported by Bruno Haible.
	https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00053.html

	* data/skeletons/yacc.c: Move the block that defines
	YYPTRDIFF_T/YYPTRDIFF_MAXIMUM, YYSIZE_T/YYSIZE_MAXIMUM, and
	YYSIZEOF to...
	* data/skeletons/c.m4 (b4_sizes_types_define): Here.
	(b4_c99_int_type): Also take care of the #undefinition of short.
	* data/skeletons/yacc.c, data/skeletons/glr.c: Use
	b4_sizes_types_define.
	* data/skeletons/glr.c: Adjust to use YYPTRDIFF_T/YYPTRDIFF_MAXIMUM,
	YYSIZE_T/YYSIZE_MAXIMUM.

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	todo: update

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of strnlen portability issues
	One function missing on Solaris 10 Sparc:

	     CCLD     examples/c/bistromathic/bistromathic
	    Undefined                       first referenced
	    symbol                             in file
	    strnlen                             examples/c/bistromathic/bistromathic-parse.o
	    ld: fatal: symbol referencing errors. No output written to examples/c/bistromathic/bistromathic

	Reported by Dagobert Michelsen.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00048.html

	* examples/c/bistromathic/parse.y (xstrndup): Don't use strnlen.
	xstrndup is assembled from gnulib's xstrndup, strndup and strnlen...

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of portability issues with sh's trap
	On AIX 7.2, when invoking "exit 77", we actually exit with 127.  The
	"cleanup" function, called via trap, received an incorrect exit
	status, something described in Autoconf's doc.
	Reported by Bruno Haible.
	https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00029.html
	https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00047.html

	* examples/test (skip): New.
	* examples/c/bistromathic/bistromathic.test,
	* examples/c/reccalc/reccalc.test: Use it, to ensure $? is set to 77
	when the trap is called.

2020-05-04  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of portability issues with diff -u
	AIX 7.1 supports diff -u, but its output does not match the expected
	one.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00049.html

	* tests/atlocal.in (DIFF_U_WORKS): New.
	* tests/local.at (AT_DIFF_U_CHECK): New.
	* tests/existing.at (_AT_TEST_EXISTING_GRAMMAR): Use AT_DIFF_U_CHECK.

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

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.93
	* NEWS: Record release date.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	news: update for 3.5.93

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: really skip tricky multichar test on Cygwin
	In Autotest, anything outside AT_SETUP/AT_CLEANUP is discarded.

	* tests/diagnostics.at (AT_TEST): Accept a skip-if test.
	Use it to skip on cygwin.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: beware of portability issues of readline on AIX
	Readline may emit escape sequences before the prompt.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/platform-testers/2020-05/msg00001.html.

	* examples/c/bistromathic/bistromathic.test: Trust readline _only_ if
	we get what we expect on some reference computation.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of portability issues with cmp
	As someone wrote nearly 20 years ago in Autoconf's documentation,
	don't use cmp to compare text files, but diff.
	https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=abad4f0576a7dc361e5385e19c7681449103cdb1
	Reported by Jannick.

	* examples/test: Use diff, not cmp.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	build: fix warnings (shown on IRIX)
	Appearing on IRIX with gcc -mabi=n32.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00039.html

	* examples/c++/variant-11.yy, examples/c/bistromathic/parse.y: Don't
	give chars to isdigit, cast them to unsigned char before.
	* src/complain.c: Use c_isdigit.
	* src/fixits.c (fixits_run): Avoid casts.
	* src/lalr.c (goto_print): Use %zu for a size_t.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: be compatible with the pre-3.6 way to get a symbol's kind
	Reported by Pramod Kumbhar.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00025.html

	* data/skeletons/c++.m4: here.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: beware of portability issues with strndup
	Reported by Dagobert Michelsen.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00026.html

	* examples/c/bistromathic/parse.y (xstrndup): New.
	Use it.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	flex: fix incorrect use of Automake conditional
	AM_CONDITIONAL does _not_ define a shell variable...
	Reported privately by Denis Excoffier.

	* configure.ac (LEX_CXX_WORKS): Fix its definition.

2020-05-03  Bruno Haible  <bruno@clisp.org>

	package: fix a link error on IRIX
	https://lists.gnu.org/r/bug-bison/2020-05/msg00035.html

	* src/local.mk (src_bison_LDADD): Mention libbison.a before, not after, the
	system libraries.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: beware of portability of readline
	Don't try to build bistromathic if we don't have readline.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00028.html

	* configure.ac (ENABLE_BISTROMATHIC): New.
	* examples/c/bistromathic/local.mk: Use it.
	* examples/c/bistromathic/bistromathic.test: Exit 77 for skip.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of portability issues of sh
	"foo || bar" does not invoke bar on AIX 7.2 when foo does not exist.
	It just dies.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00029.html

	* examples/c/reccalc/reccalc.test: Check for seq in a subshell.

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

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.92
	* NEWS: Record release date.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	news: update for 3.5.92

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	java: demonstrate push parsers
	* data/skeletons/lalr1.java (Location): Make it a static class.
	(Lexer.yylex, Lexer.getLVal, Lexer.getStartPos, Lexer.getEndPos):
	These are not needed in push parsers.
	* examples/java/calc/Calc.y: Demonstrate push parsers in the Java.
	* doc/bison.texi: Push parsers have been supported for a long time,
	remove incorrect statements stating the opposite.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: clarify what a location is
	Reported by Arthur Schwarz <aschwarz1309@att.net>
	https://lists.gnu.org/r/help-bison/2013-12/msg00009.html

	* doc/bison.texi (Location Type): here.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of mbswidth portability issues
	Shy away from these issues on Cygwin.
	Reported Denis Excoffier.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00003.html

	* tests/diagnostics.at (Tabulations and multibyte characters): Split
	in two.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of intl portability issues
	Reported by Horst von Brand.
	https://lists.gnu.org/r/bug-bison/2020-04/msg00033.html

	* examples/c/bistromathic/Makefile: libintl might not be needed, but
	libm probably is.
	* examples/c/bistromathic/parse.y: Include locale.h.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of portability issues with readline
	On OpenBSD 6.5, the prompt is repeated, but not the actual command
	line...  Don't try to cope with that.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00015.html

	* examples/c/bistromathic/bistromathic.test: Skip when readline behave
	this way.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of the portability of flex --header-file
	The option --header was introduced in version 2.5.6.
	The option --header-file was introduced in version 2.6.4.
	Reported by Bruno Haible.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00013.html

	So use --header, and do bother with versions that don't support it.

	* m4/flex.m4: Check whether flex supports --header.
	* configure.ac (FLEX_WORKS, FLEX_CXX_WORKS): Set to false if it doesn't.
	* * examples/c/reccalc/local.mk, examples/c/reccalc/Makefile:
	Use --header rather than --header-file.

2020-05-03  Akim Demaille  <akim.demaille@gmail.com>

	c++: provide backward compatibility on by_type
	To write unit tests for their scanners, some users depended on
	symbol_type::token():

	    Lexer lex("12345");
	    symbol_type t = lex.nextToken();
	    assert(t.token() == token::INTLIT);
	    assert(t.value.as<int>() == 12345);

	But symbol_type::token() was removed in Bison 3.5 because it relied on
	a conversion table.  So users had to find other patterns, such as

	    assert(t.type_get() == by_type(token::INTLIT).type_get());

	which relies on several private implementation details.

	As part of transitioning from "token type" to "token kind", and making
	this a public and documented interface, "by_type" was renamed
	"by_kind" and "type_get()" was renamed as "kind()".  The latter had
	backward compatibility mechanisms, not the former.

	In Bison 3.6 none of this should be used, but rather

	    assert(t.kind() == symbol_kind::S_INTLIT);

	Reported by Pramod Kumbhar.
	https://lists.gnu.org/r/bug-bison/2020-05/msg00012.html

	* data/skeletons/c++.m4 (by_type): Make it an alias to by_kind.

2020-05-02  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: improve formatting of the generated code
	* data/skeletons/yacc.c (yy_reduce_print): here.

2020-05-02  Akim Demaille  <akim.demaille@gmail.com>

	doc: java supports push parsers since 3.0 (2013-07-25)
	* doc/bison.texi: Clarify this.

2020-05-02  Akim Demaille  <akim.demaille@gmail.com>

	java: fix coding style
	I don't plan to fix everything in one go.  But this was in the way of
	the next commit.

	* data/skeletons/lalr1.java: Avoid space before parens.
	* tests/java.at: Adjust.

2020-05-02  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* tests/java.at: here.

2020-05-02  Akim Demaille  <akim.demaille@gmail.com>

	todo: more

2020-05-02  Akim Demaille  <akim.demaille@gmail.com>

	style: more documentation about errs
	Suggested by Angelo Borsotti.
	https://lists.gnu.org/r/bug-bison/2014-02/msg00003.html

	* src/state.h: here.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	doc: document the exit status
	Suggested by Alexandre Duret-Lutz.
	https://lists.gnu.org/r/bug-bison/2013-09/msg00015.html

	* doc/bison.texi (Invocation): Here.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	java: add missing i18n requests
	* data/skeletons/lalr1.java (reportSyntaxError): Here.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	java: style: fix coding style of yyerror/reportSyntaxError
	* data/skeletons/lalr1.java: here.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	java: avoid useless work
	* data/skeletons/lalr1.java (yySymbolPrint): Avoid the computation of
	the argument if useless.
	While at it, fix Java coding style.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	java: comment changes
	* data/skeletons/lalr1.java, examples/java/calc/Calc.y: here.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	news: make it more consistent
	* NEWS: Use the same pattern for titles.

2020-05-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: use modern idioms to make classes non-copyable
	Reported by Don Macpherson.
	https://lists.gnu.org/r/bug-bison/2019-05/msg00015.html
	https://github.com/akimd/bison/issues/36

	* data/skeletons/lalr1.cc, data/skeletons/stack.hh,
	* data/skeletons/variant.hh: Delete the copy-ctor and the copy operator.

2020-04-30  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: avoid the use of a temporary
	* data/skeletons/yacc.c: Use YYLLOC_DEFAULT directly with the final
	destination.

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

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.91
	* NEWS: Record release date.

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	build: fix syntax-check issues
	* cfg.mk: We do want to gettextize the examples.
	* po/POTFILES.in: Adjust.

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	doc: document YYEOF, YYUNDEF and YYerror
	* doc/bison.texi (Special Tokens): New.
	* examples/c/bistromathic/parse.y: Formatting changes.

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	package: fix distcheck
	Bison emits strings to translate in the generated code, for builtin
	tokens.  So they appear only in generated parsers, which are not
	shipped, so they are not in the src tree, so we cannot use them in our
	POTFILE.

	Except src/parse-gram.c, which is in the source tree.  And even in the
	git repo.  But to avoid useless diffs in the repo, we do not keep the
	src/parse-gram.c _with_ the #lines.  This is done in a dist-hook which
	regenerates src/parse-gram.c when we run "make dist".

	Unfortunately, then, update-po traverses the whole tree and sees that
	the location of the strings to translate in src/parse-gram.c have
	changed, so the bison.pot is to be updated.  And that is not possible
	in the "make dist" which is run within "make distcheck"
	(not the one preparing the dist for distcheck, the one run by
	distcheck to check that a distributed tarball can build a tarball)
	because then the src tree is read-only.

	So let's not put src/parse-gram.c in the POTFILE, and expose these
	strings to gettextize by hand.

	* src/i18n-strings.c: New.
	* po/POTFILES.in: Add it, and remove src/parse-gram.c.

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	style: avoid gettextize warnings
	* src/scan-gram.l, src/scan-skel.l: Help it see the start and end of
	"character literals".

2020-04-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of portability of readline
	* examples/test: here.

2020-04-28  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: install backward compatibility for YYERRCODE
	Some people have been using that symbol.  Some even have #defined it
	themselves.
	https://lists.gnu.org/r/bison-patches/2020-04/msg00138.html

	Let's provide backward compatibility, having it point to YYUNDEF, so
	that an error message is generated.

	* data/skeletons/yacc.c (YYERRCODE): New, at the exact same location
	it was defined before.

2020-04-28  Akim Demaille  <akim.demaille@gmail.com>

	style: c++: s/type/kind/ where appropriate
	These are internal details.  `type_get ()` is still there to ensure
	backward compatibility, `kind ()` being the modern way.

	* data/skeletons/c++.m4 (by_type, by_type::type): Rename as...
	(by_kind, by_kind::kind_): this.
	Adjust dependencies.

2020-04-28  Akim Demaille  <akim.demaille@gmail.com>

	java: clean up the definition of token kinds
	From

	    public interface Lexer {
	      /* Token kinds.  */
	      /** Token number, to be returned by the scanner.  */
	      static final int YYEOF = 0;
	      /** Token number, to be returned by the scanner.  */
	      static final int YYERRCODE = 256;
	      /** Token number, to be returned by the scanner.  */
	      static final int YYUNDEF = 257;
	      /** Token number, to be returned by the scanner.  */
	      static final int BANG = 258;
	    ...
	      /** Deprecated, use b4_symbol(0, id) instead.  */
	      public static final int EOF = YYEOF;

	to

	    public interface Lexer {
	      /* Token kinds.  */
	      /** Token "end of file", to be returned by the scanner.  */
	      static final int YYEOF = 0;
	      /** Token error, to be returned by the scanner.  */
	      static final int YYerror = 256;
	      /** Token "invalid token", to be returned by the scanner.  */
	      static final int YYUNDEF = 257;
	      /** Token "!", to be returned by the scanner.  */
	      static final int BANG = 258;
	    ...
	      /** Deprecated, use YYEOF instead.  */
	      public static final int EOF = YYEOF;

	* data/skeletons/java.m4 (b4_token_enum): Display the symbol's tag in
	comment.
	* data/skeletons/lalr1.java: Address overquotation issue.
	* examples/java/calc/Calc.y, examples/java/simple/Calc.y: Use YYEOF,
	not EOF.

2020-04-28  Akim Demaille  <akim.demaille@gmail.com>

	error: rename the error token from YYERRCODE to YYerror
	See https://lists.gnu.org/r/bison-patches/2020-04/msg00162.html.

	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc,
	* data/skeletons/lalr1.java, doc/bison.texi,
	* examples/c/bistromathic/parse.y, src/scan-gram.l, src/symtab.c
	(YYERRCODE): Rename as...
	(YYerror): this.
	Adjust dependencies.

2020-04-27  Akim Demaille  <akim.demaille@gmail.com>

	dogfooding: use YYERRCODE in our scanner
	* src/scan-gram.l: Use it.
	* tests/input.at: Adjust.

2020-04-27  Akim Demaille  <akim.demaille@gmail.com>

	scanner: avoid spurious errors about empty character literals
	On an invalid character literal such as "'\777'" we used to produce
	two errors:

	    input.y:2.9-12: error: invalid number after \-escape: 777
	    input.y:2.8-13: error: empty character literal

	Get rid of the second one.

	* src/scan-gram.l (STRING_GROW_ESCAPE): New.
	* tests/input.at: Adjust.

2020-04-27  Akim Demaille  <akim.demaille@gmail.com>

	scanner: bad character literals are errors
	* src/scan-gram.l: These are errors, not warnings.
	* tests/input.at: Adjust.

2020-04-27  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	todo: update

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	all: don't emit an error message when the scanner returns YYERRCODE
	I'm quite pleased to see that the tricky case of glr.c was already
	prepared by the changes to support syntax_error exceptions.  Better
	yet, it is actually syntax_error that becomes a special case of the
	general pattern: make yytoken be YYERRCODE.

	* data/skeletons/glr.c (YYFAULTYTOK): Remove the now useless (Basil)
	Faulty token.
	Instead, use the error token.
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: When computing
	the action, first check the case of the error token.

	* tests/calc.at: Check cases for the error token symbols before and
	after it.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	c: don't emit an error message when the scanner returns YYERRCODE
	* data/skeletons/yacc.c (yyparse): When the scanner returns YYERRCODE,
	go directly to error recovery (yyerrlab1).
	However, don't keep the error token as lookahead, that token is too
	special.
	* data/skeletons/lalr1.cc: Likewise.

	* examples/c/bistromathic/parse.y (yylex): Use that feature to report
	nicely invalid characters.
	* examples/c/bistromathic/bistromathic.test: Check that.
	* examples/test: Neutralize gratuitous differences such as rule
	position.

	* tests/calc.at: Check that case in C only.
	The other case seem to be working, but that's an illusion that the
	next commit will address (in fact, they can enter endless loops, and
	report the error several times anyway).

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: demonstrate error recovery
	* examples/c/bistromathic/parse.y: here.
	* examples/c/bistromathic/bistromathic.test: Check it.
	Included a stupid case where the error is actually ignored.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: when quitting, close the current line
	When the user ctrl-d the line, we left the cursor not at col 0.
	Let's fix that.
	This revealed a few short-comings in the testing framework.

	* examples/test (run): Also display the diffs.
	And support -n.
	* examples/c/bistromathic/bistromathic.test
	* examples/c/bistromathic/parse.y

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: comment changes
	* examples/c/bistromathic/parse.y: here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	doc: hacking tricks
	* README-hacking.md: Here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: make valid to print the empty symbol
	* data/skeletons/lalr1.cc (yy_print_): here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: always define symbol_name
	* data/skeletons/lalr1.cc (symbol_name): Always define it, even when
	it's actually yytname which is used.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix a few style issues
	* data/skeletons/lalr1.cc (yystack_print_, yy_reduce_print_): Add
	missing const.
	(yystack_print_): Rename as...
	(yy_stack_print_): this.
	* data/skeletons/glr.cc (yy_symbol_value_print_, yy_symbol_print_):
	Add missing const.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	all: prefer YYERRCODE to YYERROR
	We will not keep YYERRCODE anyway, it causes backward compatibility
	issues.  So as a first step, let all the skeletons use that name,
	until we have a better one.

	* data/skeletons/bison.m4, data/skeletons/glr.c,
	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
	* data/skeletons/yacc.c, doc/bison.texi, tests/headers.at,
	* tests/input.at:
	here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	style: glr.c: clarify
	* data/skeletons/glr.c: Make the code a bit clearer.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	style: prefer b4_has_translations_if
	* data/skeletons/glr.c, data/skeletons/yacc.c: here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	style: glr.c: fix indentation issue
	* data/skeletons/glr.c (yyparse): here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	style: fix a few remaining 'type' instead of 'kind'
	* data/skeletons/glr.c, data/skeletons/yacc.c (YY_SYMBOL_PRINT):
	Here.

2020-04-26  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: make the warning about implementation details clearer
	* data/skeletons/bison.m4 (b4_disclaimer): Here.
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: Use it.

2020-04-25  Akim Demaille  <akim.demaille@gmail.com>

	style: c: fix a few minor issues about indentation of cpp directives
	* README-hacking.md: More about cpp.
	* data/skeletons/c.m4, data/skeletons/yacc.c: Style changes.

2020-04-25  Akim Demaille  <akim.demaille@gmail.com>

	bench: store in benches/012 rather than in benches/12
	* etc/bench.pl.in ($basedir): New.
	Format $count with a least three digits.

2020-04-25  Akim Demaille  <akim.demaille@gmail.com>

	bench: minor improvements
	* etc/bench.pl.in: Don't force parse.error=detailed
	Use a simpler way to display the pseudo %bison directive.
	(&bench_with_gbenchmark): Give details about the compiler.

2020-04-25  Akim Demaille  <akim.demaille@gmail.com>

	style: clarify #endif
	We could try to avoid the weird "#if 1", but then the indentation of
	the inner #if would be wrong.  Let' keep it this way.

	* data/skeletons/yacc.c: here.
	Also, avoid sticking the comment to the directive.

2020-04-25  Akim Demaille  <akim.demaille@gmail.com>

	style: minor fixes
	* data/skeletons/bison.m4, doc/bison.texi: Spell check.
	* examples/c/bistromathic/parse.y (N_): Remove, now useless.

2020-04-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: shorten token description
	* examples/c/bistromathic/parse.y: "number" is enough.
	* doc/bison.texi: Likewise.

2020-04-24  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: demonstrate internationalization
	Currently it was only using stubs.  Let's actually translate the
	strings using gettext.

	* examples/c/bistromathic/local.mk: Define LOCALEDIR, BISON_LOCALEDIR
	and link with libintl.
	* examples/c/bistromathic/parse.y: Use them.
	Remove useless includes.
	Take ENABLE_NLS into account.
	(error_format_string): New.
	(yyreport_syntax_error): Rewrite to rely on a format string, which is
	more appropriate for internationalization.
	* examples/c/bistromathic/Makefile: We no longer use Flex.
	We need readline and intl.

	* doc/bison.texi: Point to bistromathic for a better option for
	internationalization.
	* po/POTFILES.in: Add bistromathic.

2020-04-24  Akim Demaille  <akim.demaille@gmail.com>

	todo: update for YYERRCODE

2020-04-24  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-24  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: fix a typo
	* src/complain.c: here.

2020-04-20  Akim Demaille  <akim.demaille@gmail.com>

	c, c++: provide a default definition for N_
	In C/C++, N_ is a no-op.  Define it if the user didn't.
	Suggested by Frank Heckenbach.
	https://lists.gnu.org/r/bug-bison/2020-04/msg00010.html

	* src/output.c (prepare_symbol_names): Rename has_translations as
	has_translations_flag.
	* data/skeletons/bison.m4 (b4_has_translations_if): New.
	* data/skeletons/java.m4 (b4_trans): Use it.

	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/yacc.c
	(N_): Provide a default definition.

2020-04-19  Akim Demaille  <akim.demaille@gmail.com>

	i18n: also look in src/parse-gram.c
	Some strings appears in the generated file only, e.g., translation of
	"end of file".  So don't forget to go and see there.

2020-04-19  Akim Demaille  <akim.demaille@gmail.com>

	style: fix comments
	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
	* data/skeletons/yacc.c: here.

2020-04-19  Akim Demaille  <akim.demaille@gmail.com>

	tokens: clean up the translation of special symbols
	* src/output.c (prepare_symbol_names): Don't play tricks with the
	symbols, it's quite too late.
	(has_translations): Move to...
	* src/symtab.c: here.
	(symbols_pack): Use it to enable translation for special symbols.

2020-04-19  Akim Demaille  <akim.demaille@gmail.com>

	news: fix typo
	Reported by Frank Heckenbach.

2020-04-19  Akim Demaille  <akim.demaille@gmail.com>

	tests: beware of portability issues with wc
	On macOS, wc -l always prepends the result with a tab, even when fed
	by stdin.  But anyway, we should have used `grep -c -v`, which appears
	to be portable according to Autoconf's "Limitations of Usual Tools"
	section.
	Reported by Denis Excoffier.
	https://lists.gnu.org/r/bug-bison/2020-04/msg00009.html

	* tests/calc.at (_AT_CHECK_CALC): Use grep's -c instead.

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

2020-04-18  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.90
	* NEWS: Record release date.

2020-04-18  Akim Demaille  <akim.demaille@gmail.com>

	examples: beware of readline on macOS
	macOS' version of readline does not repeat stdin on stdout in
	non-interactive mode, contrary to the current version of GNU readline.

	* examples/test: Add support for strip_prompt.
	* examples/c/bistromathic/bistromathic.test (strip_prompt): Set it
	when needed.
	Early exit when needed.

2020-04-18  Akim Demaille  <akim.demaille@gmail.com>

	c++: give public access to the symbol kind
	symbol_type::token () was removed: it returned the token kind of a
	symbol.  To do that, one needs to convert from the symbol kind to the
	token kind, which requires a table.

	This broke some users' unit tests for scanners, see
	https://lists.gnu.org/r/bug-bison/2020-01/msg00001.html
	https://lists.gnu.org/r/bug-bison/2020-03/msg00020.html
	https://lists.gnu.org/r/help-bison/2020-04/msg00005.html

	Instead of making this possible again, let's check the symbol's kind
	instead.  So give proper access to a symbol's kind.

	That feature existed, undocumented, as 'type_get()'.  Let's rename
	this as 'kind()'.

	* data/skeletons/c++.m4, data/skeletons/glr.cc,
	* data/skeletons/lalr1.cc (type_get): Rename as...
	(kind): This.
	(type_get): Install a backward compatibility alias.
	* doc/bison.texi (Complete Symbols): Document symbol_type and
	symbol_type::kind.

2020-04-17  Akim Demaille  <akim.demaille@gmail.com>

	doc: token_kind_type in C++
	* data/skeletons/c++.m4: Define the old names in terms on the new
	ones, instead of the converse.
	* doc/bison.texi (C++ Parser Interface): Be more extensive about
	token_kind_type.

2020-04-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: updates for 3.6
	* doc/bison.texi: More s/token type/token kind/.
	* NEWS: Update.

2020-04-16  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: use symbol(-2, kind)
	Not all the symbols have a fixed symbol code.  UNDEF's one is fixed:
	-2.

	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/yacc.c: here.

2020-04-16  Akim Demaille  <akim.demaille@gmail.com>

	style: comments changes about error handling
	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/lalr1.java, data/skeletons/yacc.c: here.
	* data/skeletons/lalr1.cc: Reduce scope.

2020-04-14  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistro: don't be lazy with switch
	* examples/c/bistromathic/parse.y (yylex): Use the switch to
	discriminate all the cases.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: spell check
	* doc/bison.texi, NEWS, README-hacking.md: here.
	And elsewhere.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: more about the coding style
	* README-hacking.md: here.
	(Troubleshooting): New.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	java: promote YYEOF rather that Lexer.EOF
	* doc/bison.texi: here.
	* data/skeletons/lalr1.java: Use YYEOF.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	java: fix names
	* data/skeletons/lalr1.java (yySymbolPrint): There are no pointers
	here, remove the `p` suffix.
	Use the appropriate type for locations.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: java: SymbolKind, etc.
	Why didn't I think about this before???  symbolName should be a method
	of SymbolKind.

	* data/skeletons/lalr1.java (YYParser::yysymbolName): Move as...
	* data/skeletons/java.m4 (SymbolKind::getName): this.
	Make the table a static final table, not a local variable.
	Adjust dependencies.
	* doc/bison.texi (Java Parser Interface): Document i18n.
	(Java Parser Context Interface): Document SymbolKind.
	* examples/java/calc/Calc.y, tests/local.at: Adjust.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	style: java: get closer to the Java style
	* examples/java/calc/Calc.y, examples/java/simple/Calc.y: here.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: c++: document parser::context
	* doc/bison.texi (C++ Parser Context): New.

	* data/skeletons/lalr1.cc (parser::yysymbol_name): Rename as...
	(parser::symbol_name): this.
	(A Complete C++ Example): Promote LAC, now that we have it.
	Promote parse.error detailed over verbose.
	* examples/c++/calc++/calc++.test, tests/local.at: Adjust.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: promote YYEOF
	* NEWS (Deep overhaul of the symbol and token kinds): New.
	* doc/bison.texi: Promote YYEOF over "0" in scanners.
	(Token Decl): No longer show YYEOF here, it now works by default.
	(Token I18n): More details about YYEOF here.
	(Calc++): Just use YYEOF.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	d: put YYEMPTY in the TokenKind
	* data/skeletons/d.m4, data/skeletons/lalr1.d (b4_token_enums): Rename
	YYTokenType as TokenKind.
	Define YYEMPTY.
	* examples/d/calc.y, tests/calc.at, tests/scanner.at: Adjust.

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-13  Akim Demaille  <akim.demaille@gmail.com>

	c, c++: also define YYEMPTY in yytoken_kind_t
	I have been hesitating a lot before doing it ---after all the user
	must not use this kind, so what's the point of showing it in
	yytoken_kind_t.  And eventually I chose to play it safe with the
	typing system and make it possible to use yytoken_kind_t for all the
	tokens, even the "empty token".

	* data/skeletons/c.m4: Give an id and a tag to YYEMPTY.
	(b4_token_enums): Define YYEMPTY.
	* data/skeletons/c++.m4 (b4_token_enums): Define YYEMPTY.
	* data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/yacc.c:
	(YYEMPTY): Remove.
	Use b4_symbol(-2, id) instead.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	doc: use "code", not "number", for token (and symbol) kinds
	"Number" is too much about arithmethics.  "Code" conveys better the
	"enum" nature of token kinds.  And of symbol kinds.

	* doc/bison.texi: Here.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	doc: promote yytoken_kind_t, not yytokentype
	* data/skeletons/c.m4 (yytoken_kind_t): New.
	* data/skeletons/c++.m4, data/skeletons/lalr1.cc (yysymbol_kind_type):
	New.
	* examples/c/lexcalc/parse.y, examples/c/reccalc/parse.y,
	* tests/regression.at:
	Use them.
	* doc/bison.texi: Replace "enum yytokentype" by "yytoken_kind_t".
	(api.token.raw): Explain that it forces "yytoken_kind_t" to coincide
	with "yysymbol_kind_t".
	(Calling Convention): Mention YYEOF.
	(Table of Symbols): Add entries for "yytoken_kind_t" and
	"yysymbol_kind_t".
	(Glossary): Add entries for "Kind", "Token kind" and "Symbol kind".

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	doc: document yypcontext_t, and api.symbol.prefix
	* doc/bison.texi (%define Summary): Document api.symbol.prefix.
	(Syntax Error Reporting Function): Document yypcontext_t,
	yypcontext_location, yypcontext_token, yypcontext_expected_tokens, and
	yysymbol_kind_t.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	c: rename yyexpected_tokens as yypcontext_expected_tokens
	The user should think of yypcontext fields as accessible only via
	yypcontext_* functions.  So let's rename yyexpected_tokens to reflect
	that.

	Let's _not_ rename yyreport_syntax_error, as the user may define this
	function, and is not allowed to access directly the fields of
	yypcontext_t: she *must* use the "accessors".  This is comparable to
	the case of C++/Java where the user defines
	parser::report_syntax_error, not parser::context::report_syntax_error.

	* data/skeletons/glr.c, data/skeletons/yacc.c (yyexpected_tokens):
	Rename as...
	(yypcontext_expected_tokens): this.
	Adjust dependencies.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: clarify the tag of special tokens
	From

	    GRAM_EOF = 0,                  /* $end  */
	    GRAM_ERRCODE = 1,              /* error  */
	    GRAM_UNDEF = 2,                /* $undefined  */

	to

	    GRAM_EOF = 0,                  /* "end of file"  */
	    GRAM_ERRCODE = 1,              /* error  */
	    GRAM_UNDEF = 2,                /* "invalid token"  */

	* src/output.c (symbol_tag): New.
	Use it to pass the token names and the symbol tags to the skeletons.

	* tests/input.at: Adjust.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: use "invalid token" instead of "$undefined"
	* src/output.c (prepare_symbol_names): Also handle undeftoken.
	* tests/actions.at, tests/calc.at, tests/regression.at: Adjust.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: make the eof token translatable if i18n is enabled
	* src/output.c (has_translations): New.
	(prepare_symbol_names): Translate endtoken if the user already
	translated tokens.

	* examples/c/bistromathic/parse.y, src/parse-gram.y: Simplify.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: use "end of file" instead of "$end"
	The name "$end" is nice in the report, in particular it avoids that
	pointed-rules (aka items) be too long.  It also helps keeping them
	"standard".

	But it is bad in error messages, we should report "end of file" (or
	maybe "end of input", this is debatable).  So, unless the user already
	defined the alias for the error token herself, make it "end of file".
	It should even be translated if the user already translated some
	tokens, so that there is now no strong reason to redefine the $end
	token.

	* src/output.c (prepare_symbol_names): Issue "end of file" instead of
	"$end".

	* data/skeletons/lalr1.java (yytnamerr_): Remove the renaming hack.

	* build-aux/update-test: Accept files with names containing a "+",
	such as c++.at.
	* tests/actions.at, tests/c++.at, tests/conflicts.at,
	* tests/glr-regression.at, tests/regression.at, tests/skeletons.at:
	Adjust.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: replace "user token number" by "token code"
	Yet, don't change the structure identifier to avoid introducing
	conflicts in Vincent Imbimbo's PR (which, amusingly enough, is about
	conflicts).

	* src/symtab.c: here.
	* tests/diagnostics.at, tests/input.at: Adjust.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	c++: remove the yy prefix from some functions
	yy::parser features a parse() function, not a yyparse() one.

	* data/skeletons/lalr1.cc (yyreport_syntax_error)
	(context::yyexpected_tokens): Rename as...
	(report_syntax_error, context::expected_tokens): these.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	tokens: properly define the YYEOF token kind
	Currently EOF is handled in an adhoc way, with a #define YYEOF 0 in
	the implementation file.  As a result, the user has to define her own
	EOF token if she wants to use it, which is a pity.

	Give the $end token a visible kind name, YYEOF.  Except that in C,
	where enums are not scoped, we would have collisions between all the
	definitions of YYEOFs in the header files, so in C, make it
	<api.PREFIX>EOF.

	* data/skeletons/c.m4 (YYEOF): Override its name to avoid collisions.
	Unless the user already gave it a different name.
	* data/skeletons/glr.c (YYEOF): Remove.
	Use ]b4_symbol(0, [id])[ instead.
	Add support for "pre_epilogue", for glr.cc.
	* data/skeletons/glr.cc: Remove dead code (never emitted #undefs).
	* data/skeletons/yacc.c
	* src/parse-gram.c
	* src/reader.c
	* src/symtab.c
	* tests/actions.at
	* tests/input.at

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	tokens: define the "$undefined" token kind
	* data/skeletons/bison.m4 (b4_symbol_token_kind): Give a definition to
	$undefined.
	(b4_token_visible_if): $undefined has an id.
	* src/output.c (prepare_symbol_definitions): Stop lying: $undefined
	_is_ a token.
	* tests/input.at: Adjust.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	tokens: properly define the "error" token kind
	There are people out there that do use YYERRCODE (the token kind of
	the error token).  See for instance
	https://github.com/borbolla-automation/SPC_Machines/blob/3812012bb782bfdfe7b325950a35cd337925fcad/unixODBC-2.3.2/Drivers/nn/yylex.c.

	Currently, YYERRCODE is defined by yacc.c in an adhoc way as a #define
	in the *.c file only.  It belongs with the other token kinds.

	YYERRCODE is not a nice name, it does not fit in our naming scheme.
	YYERROR would be more logical, but it collides with the YYERROR macro.
	Shall we keep the same name in all the skeletons?  Besides, to avoid
	collisions in C, we need to apply the api prefix: YYERRCODE is
	actually <PREFIX>ERRCODE.  This is not needed in the other languages.

	* data/skeletons/bison.m4 (b4_symbol_token_kind): New.
	Map the error token to "YYERRCODE".
	* data/skeletons/yacc.c (YYERRCODE): Don't define it, it's handled by...
	* src/output.c (prepare_symbol_definitions): this.
	* tests/input.at (Redefining the error token): Check it.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	tokens: style: minor fixes
	* data/skeletons/bison.m4 (b4_symbol_kind): Dispatch on the UNDEF
	token number rather than its name.
	* data/skeletons/c++.m4, data/skeletons/c.m4, data/skeletons/java.m4:
	Comment changes.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: remove dead code
	* data/skeletons/glr.cc: here.

2020-04-12  Akim Demaille  <akim.demaille@gmail.com>

	c++: fix generated headers
	A forthcoming commit (tokens: properly define the "error" token kind)
	revealed a problem in the C++ generated headers: they are not
	self-contained.  With this file:

	    %language "c++"
	    %define api.value.type variant

	    %code {
	      static int yylex (yy::parser::semantic_type *lvalp);
	    }

	    %token <int> X

	    %%

	    exp:
	      X { printf ("x\n"); }
	    ;

	    %%

	    void
	    yy::parser::error (const std::string& m)
	    {
	      std::cerr << m << '\n';
	    }

	    static
	    int yylex (yy::parser::semantic_type *lvalp)
	    {
	      static int const input[] = {yy::parser::token::X, 0};
	      static int toknum = 0;
	      return input[toknum++];
	    }

	    int
	    main (int argc, char const* argv[])
	    {
	      yy::parser p;
	      return p.parse ();
	    }

	the generated header fails to compile cleanly (foo.cc just #includes
	the generated header):

	    $ clang++-mp-9.0 -c -Wundefined-func-template foo.cc
	    In file included from foo.cc:1:
	    bar.tab.hh:550:12: warning: instantiation of function 'yy::parser::basic_symbol<yy::parser::by_type>::basic_symbol' required here, but no definition is available
	          [-Wundefined-func-template]
	        struct symbol_type : basic_symbol<by_type>
	               ^
	    bar.tab.hh:436:7: note: forward declaration of template entity is here
	          basic_symbol (basic_symbol&& that);
	          ^
	    bar.tab.hh:550:12: note: add an explicit instantiation declaration to suppress this warning if 'yy::parser::basic_symbol<yy::parser::by_type>::basic_symbol' is explicitly instantiated
	          in another translation unit
	        struct symbol_type : basic_symbol<by_type>
	               ^
	    1 warning generated.

	* data/skeletons/c++.m4 (b4_public_types_define): Move the
	implementation of the basic_symbol move-ctor to...
	(b4_public_types_define): here, its declaration.
	* tests/headers.at (Sane headers): Use a declared token so that the
	corresponding token constructor is declared.  Which triggers the
	aforementioned issue.

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

	style: rename YYNOMEM as YYENOMEM
	This is clearer.

	* data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): Rename as...
	(YYENOMEM): here.

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

	todo: update

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

	c++: improvements on symbol kinds
	Instead of

	    /// (Internal) symbol kind.
	    enum symbol_kind_type
	    {
	      YYNTOKENS = 5, ///< Number of tokens.
	      YYSYMBOL_YYEMPTY = -2,
	      YYSYMBOL_YYEOF = 0,                      // END_OF_FILE
	      YYSYMBOL_YYERROR = 1,                    // error
	      YYSYMBOL_YYUNDEF = 2,                    // $undefined
	      YYSYMBOL_TEXT = 3,                       // TEXT
	      YYSYMBOL_NUMBER = 4,                     // NUMBER
	      YYSYMBOL_YYACCEPT = 5,                   // $accept
	      YYSYMBOL_result = 6,                     // result
	      YYSYMBOL_list = 7,                       // list
	      YYSYMBOL_item = 8                        // item
	    };

	generate

	    /// Symbol kinds.
	    struct symbol_kind
	    {
	      enum symbol_kind_type
	      {
	        YYNTOKENS = 5, ///< Number of tokens.
	        S_YYEMPTY = -2,
	        S_YYEOF = 0,                             // END_OF_FILE
	        S_YYERROR = 1,                           // error
	        S_YYUNDEF = 2,                           // $undefined
	        S_TEXT = 3,                              // TEXT
	        S_NUMBER = 4,                            // NUMBER
	        S_YYACCEPT = 5,                          // $accept
	        S_result = 6,                            // result
	        S_list = 7,                              // list
	        S_item = 8                               // item
	      };
	    };

	* data/skeletons/c++.m4 (api.symbol.prefix): Define to S_.
	Adjust all the uses.
	(b4_public_types_declare): Nest the enum inside 'struct symbol_kind'.
	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
	* tests/headers.at, tests/local.at: Adjust.

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

	d: improvements on symbol kinds
	    public enum SymbolKind
	    {
	      S_YYEMPTY = -2,    /* No symbol.  */
	      S_YYEOF = 0,       /* $end  */
	      S_YYERROR = 1,     /* error  */
	      S_YYUNDEF = 2,     /* $undefined  */
	      S_EQ = 3,          /* "="  */

	* data/skeletons/d.m4 (api.symbol.prefix): Default to S_.
	Output the symbol kind definitions with a comment.

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

	symbols: minor fixes
	* data/skeletons/bison.m4 (b4_symbol_kind): Series of _ are useless,
	one is enough.
	* data/skeletons/c.m4 (b4_token_enum): Fix overquoting.

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

	skeletons: introduce api.symbol.prefix
	* data/skeletons/bison.m4 (b4_symbol_prefix): New.
	(b4_symbol_kind): Use it.
	* data/skeletons/c++.m4, data/skeletons/c.m4, data/skeletons/d.m4
	* data/skeletons/java.m4 (api.symbol.prefix): Provide a default value.

	* data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java, data/skeletons/yacc.c:
	Adjust: use b4_symbol_prefix instead of YYSYMBOL_.

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

	java: also emit documenting comments for symbol kinds
	* data/skeletons/java.m4 (b4_symbol_enum): here.
	And stop defined YYSYMBOL_YYEMPTY, we no longer use it.

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

	todo: update
	* TODO (YYERRCODE): Remove, handled by YYSYMBOL_ERROR.

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

	skeletons: beware not to use yyarg when it's null
	Reported by Adrian Vogelsgesang.

	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.java, data/skeletons/yacc.c: Here.

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

	java: document new features
	* data/skeletons/lalr1.java: More comments.
	(Context.EMPTY): Remove.
	* doc/bison.texi (Java Parser Context Interface): New.

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

	java: prefer null to YYSYMBOL_YYEMPTY
	That's one nice benefit from using enums.

	* data/skeletons/lalr1.java (YYSYMBOL_YYEMPTY): No longer define it.
	Use 'null' instead.
	* examples/java/calc/Calc.y, tests/local.at: Adjust.

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

	java: rename Lexer.yyreportSyntaxError as reportSyntaxError
	* data/skeletons/lalr1.java: here.
	* examples/java/calc/Calc.y, tests/local.at: Adjust.

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

	java: use getExpectedTokens, not yyexpectedTokens
	* data/skeletons/lalr1.java, examples/java/calc/Calc.y, tests/local.at:
	here.

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

	java: style: fix coding style
	* data/skeletons/java.m4: Indent by two.
	* data/skeletons/lalr1.java (yynnts_): Remove.
	(yyfinal_, yyntokens_, yylast_, yyempty_): Rename as...
	(YYFINAL_, YYNTOKENS_, YYLAST_, YYEMPTY_): these, they are constants.

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

	c: make the symbol kind definition nicer to read
	From

	    enum yysymbol_kind_t
	    {
	      YYSYMBOL_YYEMPTY = -2,
	      YYSYMBOL_YYEOF = 0,
	      YYSYMBOL_YYERROR = 1,
	      YYSYMBOL_YYUNDEF = 2,

	to

	    enum yysymbol_kind_t
	    {
	      YYSYMBOL_YYEMPTY = -2,
	      YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
	      YYSYMBOL_YYERROR = 1,                    /* error  */
	      YYSYMBOL_YYUNDEF = 2,                    /* $undefined  */

	* data/skeletons/bison.m4 (b4_last_symbol): New.
	(b4_symbol_enum, b4_symbol_enums): Reformat the output.
	* data/skeletons/c.m4

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

	c: make the token kind definition nicer to read
	From

	    enum gram_tokentype
	    {
	      GRAM_EOF = 0,
	      STRING = 3,
	      TSTRING = 4,
	      PERCENT_TOKEN = 5,

	To

	    enum gram_tokentype
	    {
	      GRAM_EOF = 0,                  /* "end of file"  */
	      STRING = 3,                    /* "string"  */
	      TSTRING = 4,                   /* "translatable string"  */
	      PERCENT_TOKEN = 5,             /* "%token"  */

	* data/skeletons/bison.m4 (b4_last_enum_token): New.
	* data/skeletons/c.m4 (b4_token_enum, b4_token_enums): Show the
	corresponding symbol.

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

	c: make the generated YYSTYPE nicer to read
	From

	    union GRAM_STYPE
	    {
	      /* precedence_declarator  */
	      assoc precedence_declarator;
	      /* "string"  */
	      char* STRING;
	      /* "translatable string"  */
	      char* TSTRING;
	      /* "{...}"  */
	      char* BRACED_CODE;
	      /* "%?{...}"  */

	to

	    union GRAM_STYPE
	    {
	      assoc precedence_declarator;             /* precedence_declarator  */
	      char* STRING;                            /* "string"  */
	      char* TSTRING;                           /* "translatable string"  */
	      char* BRACED_CODE;                       /* "{...}"  */

	* data/skeletons/c.m4 (b4_symbol_type_register): Use m4_format to
	align the comments.
	* src/parse-gram.h: Regen.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	bison: use consistently "token kind", not "token type"
	* src/output.c, src/reader.c, src/scan-gram.l, src/tables.c: here.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: use consistently "kind" instead of "type" in the code
	* data/skeletons/bison.m4, data/skeletons/c++.m4, data/skeletons/c.m4,
	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java:
	Refer to the "kind" of a symbol, not its "type", where appropriate.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	doc: refer to the token kind rather than the token type
	* doc/bison.texi: Replace occurrences of "token type" with "token
	kind".
	Stop referring to the "macro definitions" of the token kinds, just
	name them "definitions".

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	m4: we don't need undef_token_number
	It's replaced by YYSYMBOL_YYUNDEF.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	m4: rename b4_symbol_sid as b4_symbol_kind
	* data/skeletons/bison.m4, data/skeletons/c++.m4, data/skeletons/c.m4,
	* data/skeletons/d.m4, data/skeletons/java.m4
	(b4_symbol_sid): Rename as...
	(b4_symbol_kind): this.
	Adjust dependencies.
	* data/README.md: Document the kind.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	d, java: rename SymbolType as SymbolKind
	See https://lists.gnu.org/r/bison-patches/2020-04/msg00031.html.

	* data/skeletons/d.m4, data/skeletons/lalr1.d,
	* data/skeletons/java.m4, data/skeletons/lalr1.java
	(SymbolType): Rename as...
	(SymbolKind): this.
	Adjust dependencies.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	c, c++: rename yysymbol_type_t as yysymbol_kind_t
	See https://lists.gnu.org/r/bison-patches/2020-04/msg00031.html

	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/yacc.c
	(yysymbol_type_t): Rename as...
	(yysymbol_kind_t): this.
	Adjust dependencies.
	* data/skeletons/c++.m4, data/skeletons/glr.cc, data/skeletons/lalr1.cc
	(symbol_type_type): Rename as...
	(symbol_kind_type): this.
	Adjust dependencies.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	doc: remove obsolete release instructions
	* README-hacking.md: here.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	Merge branch 'maint'
	* maint:
	  maint: post-release administrivia
	  version 3.5.4
	  examples: reccalc: really compile cleanly in C99
	  news: announce that Bison 3.6 drops YYERROR_VERBOSE
	  news: update for 3.5.4
	  style: fix spellos
	  typo: succesful -> successful
	  package: improve the readme
	  java: check and fix support for api.token.raw
	  java: style: prefer 'int[] foo' to 'int foo[]'
	  build: fix syntax-check issues
	  tests: recheck: work properly when the test suite was interrupted
	  doc: c++: promote api.token.raw
	  build: fix compatibility with old compilers
	  examples: reccalc: compile cleanly in C99

2020-04-05  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.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.4
	* NEWS: Record release date.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	news: update the yyreport_syntax_error example
	* examples/c/bistromathic/parse.y, tests/local.at
	(yyreport_syntax_error): Fix use of YYSYMBOL_YYEMPTY.
	* NEWS: Update.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	todo: update

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	style: rename yysyntax_error_arguments as yy_syntax_error_arguments
	It's a private implementation detail.

	* NEWS, data/skeletons/glr.c, data/skeletons/lalr1.cc,
	* data/skeletons/yacc.c, doc/bison.texi: here.

2020-04-05  Akim Demaille  <akim.demaille@gmail.com>

	examples: reccalc: really compile cleanly in C99
	The previous fix does not suffice, and actually managed to make things
	worse by defining yyscan_t twice in parse.y...

	Reported by kencu.
	https://trac.macports.org/ticket/59927#comment:29

	* examples/c/reccalc/parse.y (yyscan_t): Define it with the same
	guards as used by Flex.

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

	c: rename yyparse_context_t as yypcontext_t
	The first name is too long.  We already have `yypstate`, so
	`yypcontext` is ok.  We are also migrating to using `*_t` for our
	types.

	* NEWS, data/skeletons/glr.c, data/skeletons/yacc.c, doc/bison.texi,
	* examples/c/bistromathic/parse.y, src/parse-gram.y, tests/local.at:
	(yyparse_context_t, yyparse_context_location, yyparse_context_token):
	Rename as...
	(yypcontext_t, yypcontext_location, yypcontext_token): these.

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

	readme: more about the coding style

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

	java: fixes in SymbolType
	Reported by Paolo Bonzini.
	https://github.com/akimd/bison/pull/34#issuecomment-609029634

	* data/skeletons/java.m4 (SymbolType): Use 'final' where possible.
	(get): Rewrite on top of an array instead of a switch.

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

	java: use SymbolType
	The Java enums are very different from the C model.  As a consequence,
	one cannot "build" an enum directly from an integer, we must retrieve
	it.  That's the purpose of the SymbolType.get class method.

	* data/skeletons/java.m4 (b4_symbol_enum, b4_case_code_symbol)
	(b4_declare_symbol_enum): New.
	* data/skeletons/lalr1.java: Use SymbolType,
	SymbolType.YYSYMBOL_YYEMPTY, etc.
	* examples/java/calc/Calc.y, tests/local.at: Adjust.

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

	examples: java: use explicit token identifiers
	* examples/java/calc/Calc.y: Declare all the tokens, so that we are
	compatibile with api.token.raw.
	* examples/java/calc/Calc.test: Adjust.

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

	news: announce that Bison 3.6 drops YYERROR_VERBOSE
	* NEWS: here.

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

	news: update for 3.5.4

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

	style: fix spellos
	* src/complain.c, src/print.c, src/print-xml.c, src/symtab.h: here.

2020-04-04  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	typo: succesful -> successful
	* tests/calc.at: Here.

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

	package: improve the readme
	* README: Describe what Bison is.

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

	java: check and fix support for api.token.raw
	* tests/local.at (AT_LANG_MATCH, AT_YYERROR_DECLARE(java))
	(AT_YYERROR_DECLARE_EXTERN(java), AT_PARSER_CLASS): New.
	(AT_MAIN_DEFINE(java)): Use AT_PARSER_CLASS.
	* tests/scanner.at: Add a test for Java.
	* data/skeletons/lalr1.java (yytranslate_): Cast the result.

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

	d: use the SymbolType enum for symbol kinds
	* data/skeletons/d.m4 (b4_symbol_enum, b4_declare_symbol_enum): New.
	* data/skeletons/lalr1.d: Use them.
	Use SymbolType, SymbolType.YYSYMBOL_YYEMPTY etc. where appropriate.
	(undef_token_, token_number_type, yy_error_token_): Remove.

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

	java: style: prefer 'int[] foo' to 'int foo[]'
	* data/skeletons/java.m4 (b4_typed_parser_table_define): Here.

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

	build: fix syntax-check issues
	* src/system.h, tests/local.mk: Fix indentation.

2020-04-02  Akim Demaille  <akim.demaille@gmail.com>

	tests: recheck: work properly when the test suite was interrupted
	* tests/local.mk (recheck): Look at the per-test logs, not the overall
	log, which, when interrupted, contains only information about... the
	tests that passed.

2020-04-02  Akim Demaille  <akim.demaille@gmail.com>

	doc: c++: promote api.token.raw
	* doc/bison.texi (Calc++ Parser): Here.

2020-04-02  Akim Demaille  <akim.demaille@gmail.com>

	build: fix compatibility with old compilers
	GCC 4.2 dies with

	    src/InadequacyList.c: In function 'InadequacyList__new_conflict':
	    src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions
	    src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions
	    src/InadequacyList.c:40: error: #pragma GCC diagnostic not allowed inside functions

	Reported by Evan Lavelle.
	See https://lists.gnu.org/r/bug-bison/2020-03/msg00021.html
	and https://trac.macports.org/ticket/59927.

	* src/system.h (GCC_VERSION): New.
	Use it to control IGNORE_TYPE_LIMITS_BEGIN and
	IGNORE_TYPE_LIMITS_END.

2020-04-02  Akim Demaille  <akim.demaille@gmail.com>

	examples: reccalc: compile cleanly in C99
	See https://trac.macports.org/ticket/59927.

	* examples/c/reccalc/parse.y: C99 does not allow multiple typedefs.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: replace symbol_number_type with symbol_type_type
	* data/skeletons/c++.m4, data/skeletons/glr.cc,
	* data/skeletons/lalr1.cc: here.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: also use symbol_type_type
	Because of the insane current implementation of glr.cc, things are a
	bit nasty.  We will rename symbol_number_type as symbol_type_type
	later, to keep this commit small.

	* data/skeletons/c++.m4 (b4_declare_symbol_enum): New.
	Also define YYNTOKENS to avoid type clashes when yyntokens_ was
	actually defined in another enum.
	Use it.
	(symbol_number_type): Be an alias of symbol_type_type.
	Use YYSYMBOL_YYEMPTY and the like.
	Use symbol_number_type where appropriate.
	(empty_symbol): Remove.
	(yytranslate_): Use symbol_number_type, not token_number_type.
	* data/skeletons/lalr1.cc: Use symbol_number_type where appropriate.
	Adjust to the replacement of empty_symbol by YYSYMBOL_YYEMPTY.
	(yy_error_token_, yy_undef_token_, yyeof_, yyntokens_): Remove.
	Adjust dependencies.

	* data/skeletons/glr.cc: Use symbol_number_type where appropriate.
	Forward definitions of YYSYMBOL_YYEMPTY, etc. to glr.c.

	* tests/headers.at: Accept YYNTOKENS and other YYSYMBOL_*.
	* tests/local.at (AT_YYERROR_DEFINE(c++)): Use symbol_number_type.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: remove the yySymbol alias
	* data/skeletons/glr.c: Use yysymbol_type_t only.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	glr.c, yacc.c: propagate yysymbol_type_t
	Now that yacc.c and glr.c both know yysymbol_type_t, convert the
	common routines.

	* data/skeletons/c.m4 (yydestruct, yy_symbol_value_print)
	(yy_symbol_print): Use yysymbol_type_t instead of int.
	* data/skeletons/glr.c: Use yySymbol where appropriate.
	* data/skeletons/yacc.c (YY_ACCESSING_SYMBOL): New wrapper around
	yystos.
	Use it.
	* tests/local.at (yyreport_syntax_error): Use yysymbol_type_t where
	appropriate.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: use yysymbol_type_t, YYSYMBOL_YYEOF etc.
	Apply the same changes as in yacc.c.  Now yySymbol and yysymbol_type_t
	are aliases.  We will remove the former later, to avoid cluttering
	this commit.

	* data/skeletons/glr.c: Use b4_declare_symbol_enum.
	Use YYSYMBOL_YYEOF etc. where appropriate.
	(YYUNDEFTOK, YYTERROR): Remove.
	(YYTRANSLATE, yySymbol, yyexpected_tokens, yysyntax_error_arguments):
	Adjust.
	(yy_accessing_symbol): New.
	Use it where appropriate.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: fix more errors from make maintainer-check-g++
	* data/skeletons/yacc.c (yyexpected_tokens): Use casts where needed.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: revert to not using yysymbol_type_t in the yytranslate table
	This triggers warnings with several compilers.  For instance ICC fills
	the logs with pages and pages of

	    input.c(477): error: a value of type "int" cannot be used to initialize an entity of type "const yysymbol_type_t={yysymbol_type_t}"
	             0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
	             ^

	    input.c(477): error: a value of type "int" cannot be used to initialize an entity of type "const yysymbol_type_t={yysymbol_type_t}"
	             0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
	                    ^

	And so does G++9 when compiling yacc.c's (C) output

	    input.c:545:8: error: invalid conversion from 'int' to 'yysymbol_type_t' [-fpermissive]
	      545 |        0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
	          |        ^
	          |        |
	          |        int
	    input.c:545:15: error: invalid conversion from 'int' to 'yysymbol_type_t' [-fpermissive]
	      545 |        0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
	          |               ^
	          |               |
	          |               int

	Clang++ is no exception

	    input.c:545:8: error: cannot initialize an array element of type 'const yysymbol_type_t' with an rvalue of type 'int'
	           0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
	           ^
	    input.c:545:15: error: cannot initialize an array element of type 'const yysymbol_type_t' with an rvalue of type 'int'
	           0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
	                  ^

	At some point we could use yysymbol_type_t's enumerators to define
	yytranslate.  Meanwhile...

	* data/skeletons/yacc.c (yytranslate): Use the original integral type
	to define it.
	(YYTRANSLATE): Cast the result into yysymbol_type_t.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yysymbol_type_t: always assign an enumerator
	Currently we define enumerators only for symbols that have an
	identifier.  That rules out tokens such as '+', and nonterminals such
	as foo-bar and foo.bar.  As a consequence we are taking chances: the
	compiler might compile yysymbol_type_t as too small an integral type
	for some symbol codes.

	* data/skeletons/bison.m4 (b4_symbol_sid): Forge a unique symbol
	identifier for symbols that don't have an ID.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: use symbol numbers instead of YYTRANSLATE
	* examples/c/bistromathic/parse.y: here.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: prefer YYSYMBOL_YYERROR to YYSYMBOL_error
	* data/skeletons/bison.m4 (b4_symbol_sid): Map "error" to YYSYMBOL_YYERROR.
	* data/skeletons/yacc.c: Adjust.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: also define a symbol number for the empty token
	This is not only cleaner, it also protects us from mixing signed
	values (YYEMPTY is #defined as -2) with unsigned types (the
	yysymbol_type_t enum is typically compiled as a small unsigned).
	For instance GCC 9:

	    input.c: In function 'yyparse':
	    input.c:1107:7: error: conversion to 'unsigned int' from 'int'
	                           may change the sign of the result
	                           [-Werror=sign-conversion]
	     1107 |   yyn += yytoken;
	          |       ^~
	    input.c:1107:10: error: conversion to 'int' from 'unsigned int'
	                            may change the sign of the result
	                            [-Werror=sign-conversion]
	     1107 |   yyn += yytoken;
	          |          ^~~~~~~
	    input.c:1108:47: error: comparison of integer expressions of
	                            different signedness:
	                            'yytype_int8' {aka 'const signed char'} and
	                            'yysymbol_type_t' {aka 'enum yysymbol_type_t'}
	                            [-Werror=sign-compare]
	     1108 |   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
	          |                                               ^~
	    input.c:702:25: error: operand of ?: changes signedness from 'int'
	                           to 'unsigned int' due to unsignedness of
	                           other operand [-Werror=sign-compare]
	      702 | #define YYEMPTY         (-2)
	          |                         ^~~~
	    input.c:1220:33: note: in expansion of macro 'YYEMPTY'
	     1220 |   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
	          |                                 ^~~~~~~
	    input.c:1220:41: error: unsigned conversion from 'int' to
	                            'unsigned int' changes value
	                            from '-2' to '4294967294'
	                            [-Werror=sign-conversion]
	     1220 |   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
	          |                                         ^

	Eventually, it might be interesting to move away from -2 (which is the
	only possible negative symbol number) and use the next available
	number, to save bits.  We could actually even simply use "0" and shift
	the rest, which would allow to write "!yytoken" to mean really
	"yytoken != YYEMPTY".

	* data/skeletons/c.m4 (b4_declare_symbol_enum): Define YYSYMBOL_YYEMPTY.
	* data/skeletons/yacc.c: Use it.

	* src/parse-gram.y (yyreport_syntax_error): Use YYSYMBOL_YYEMPTY, not
	YYEMPTY, when dealing with a symbol.

	* tests/regression.at: Adjust.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: use yysymbol_type_t instead of int for yytoken
	Now that we have a proper type for internal symbol numbers, let's use
	it.  More code needs conversion, e.g., printers and destructors, but
	they are shared with glr.c, which is not ready yet for this change.

	It will also help us deal with warnings such as (GCC9 on GNU/Linux):

	    input.c: In function 'int yyparse()':
	    input.c:475:37: error: enumeral and non-enumeral type in conditional expression [-Werror=extra]
	      475 |   (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYSYMBOL_YYUNDEF)
	          |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    input.c:1024:17: note: in expansion of macro 'YYTRANSLATE'
	     1024 |       yytoken = YYTRANSLATE (yychar);
	          |                 ^~~~~~~~~~~

	* data/skeletons/yacc.c (yytranslate, yysymbol_name)
	(yyparse_context_t, yyexpected_tokens, yypstate_expected_tokens)
	(yysyntax_error_arguments):
	Use yysymbol_type_t instead of int.

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-04-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: introduce an enum that defines the symbol's number
	There's a number of advantage in exposing the symbol (internal)
	numbers:

	- custom error messages can use them to decide how to represent a
	  given symbol, or a set of symbols.

	- we need something similar in uses of yyexpected_tokens.  For
	  instance, currently, bistromathic's completion() reads:

	    int ntokens = expected_tokens (line, tokens, YYNTOKENS);
	    [...]
	    for (int i = 0; i < ntokens; ++i)
	      if (tokens[i] == YYTRANSLATE (TOK_VAR))
	      [...]
	      else if (tokens[i] == YYTRANSLATE (TOK_FUN))
	      [...]
	      else
	      [...]

	- now that it's a compile-time expression, we can easily build static
	  tables, switch, etc.

	- some users depended on the ability to get the token number from a
	  symbol to write test cases for their scanners.  But Bison 3.5
	  removed the table this feature depended upon (a reverse
	  yytranslate).  Now they can check against the actual symbol number,
	  without having pay (space and time) a conversion.
	  See https://lists.gnu.org/r/bug-bison/2020-01/msg00001.html, and
	  https://lists.gnu.org/archive/html/bug-bison/2020-03/msg00015.html.

	- it helps us clearly separate the internal symbol numbers from the
	  external token numbers, whose difference is sometimes blurred in the
	  code when values coincide (e.g. "yychar = yytoken = YYEOF").

	- it allows us to get rid of ugly macros with inconsistent names such
	  as YYUNDEFTOK and YYTERROR, and to group related definitions
	  together.

	- similarly it provides a clean access to the $accept symbol (which
	  proves convenient in a current experimentation of mine with several
	  %start symbols).

	Let's declare this type as a private type (in the *.c file, not
	the *.h one).  So it does not need to be influenced by the api prefix.

	* data/skeletons/bison.m4 (b4_symbol_sid): New.
	(b4_symbol): Use it.
	* data/skeletons/c.m4 (b4_symbol_enum, b4_declare_symbol_enum): New.
	* data/skeletons/yacc.c: Use b4_declare_symbol_enum.
	(YYUNDEFTOK, YYTERROR): Remove.
	Use the corresponding symbol enum instead.

2020-03-30  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes about token numbers
	* data/skeletons/bison.m4, data/skeletons/c.m4: here.

2020-03-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: recheck: work properly when the test suite was interrupted
	* tests/local.mk (recheck): Look at the per-test logs, not the overall
	log, which, when interrupted, contains only information about... the
	tests that passed.

2020-03-30  Akim Demaille  <akim.demaille@gmail.com>

	java: move away from _ for internationalization
	The "_" is becoming a keyword in Java, which causes tons of warnings
	currently in our test suite.  GNU Gettext is now using "i18n" instead
	of "_"
	(https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=e89fea36545f27487d9652a13e6a0adbea1117d0).

	* data/skeletons/java.m4: Use "i18n", not "_".
	* examples/java/calc/Calc.y, tests/calc.at: Adjust.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	c: use YYNOMEM instead of -2
	See 84b1972c96060866b4bd94a33b97711f8f7d0b6c.

	* data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): New.
	Use it.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	todo: update
	* TODO (Token Number): We have to clean this.
	(Naming conventions, Symbol numbers): New.
	(Bad styling): Addressed in e21ff47f5d0b64da693a47b7dd200a1a44a5bbeb.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	java: make yysyntaxErrorArguments a private detail
	* data/skeletons/lalr1.java (yysyntaxErrorArguments): Move it from the
	context, to the parser object.
	Generate only for detailed and verbose error messages.
	* tests/local.at (AT_YYERROR_DEFINE(java)): Use yyexpectedTokens
	instead.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: make yysyntax_error_arguments a private detail
	We could just "inline yysyntax_error_arguments back" in the routines
	it was originally extracted from, but I think the code is nicer to
	read this way.

	* data/skeletons/glr.c (yysyntax_error_arguments): Generate only for
	detailed and verbose error messages.
	* data/skeletons/yacc.c: Likewise.
	* data/skeletons/lalr1.cc (parser::context::yysyntax_error_arguments):
	Move as...
	(parser::yysyntax_error_arguments_): this.
	And only for detailed and verbose error messages.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: avoid using yysyntax_error_arguments
	* data/skeletons/lalr1.cc (context::token): New.
	* tests/local.at (yyreport_syntax_error): Don't use
	yysyntax_error_arguments.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	bison: avoid using yysyntax_error_arguments
	* src/parse-gram.y (yyreport_syntax_error): Use yyparse_context_token
	and yyexpected_tokens.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	tests: yacc.c: avoid yysyntax_error_arguments
	Because glr.c shares the same testing routines, we also need to
	convert it.

	* data/skeletons/glr.c (yyparse_context_token): New.
	* tests/local.at (yyreport_syntax_error): here.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	examples: don't use yysyntax_error_arguments
	Suggested by Adrian Vogelsgesang.
	https://lists.gnu.org/archive/html/bison-patches/2020-02/msg00069.html

	* data/skeletons/lalr1.java (Context.EMPTY, Context.getToken): New.
	(Context.yyntokens): Rename as...
	(Context.NTOKENS): this.
	Because (i) all the Java coding styles recommend upper case for
	constants, and (ii) the Java Skeleton exposes Lexer.EOF, not
	Lexer.YYEOF.
	* data/skeletons/yacc.c (yyparse_context_token): New.
	* examples/c/bistromathic/parse.y (yyreport_syntax_error): Don't use
	yysyntax_error_arguments.
	* examples/java/calc/Calc.y (yyreportSyntaxError): Likewise.

2020-03-28  Akim Demaille  <akim.demaille@gmail.com>

	skeletons: fix incorrect type for translatable tokens
	* data/skeletons/glr.c, data/skeletons/lalr1.c, data/skeletons/yacc.c:
	Fix confusion between the "translatable" and the "translate" tables.

2020-03-23  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: use negative numbers for errors in auxiliary functions
	yyparse returns 0, 1, 2 since ages (accept, reject, memory exhausted).
	Some of our auxiliary functions such as yy_lac and
	yyreport_syntax_error also need to return error codes and also use 0,
	1, 2.  Because it uses yy_lac, yyexpected_tokens also needs to return
	"problem", "memory exhausted", but in case of success, it needs to
	return the number of tokens, so it cannot use 1 and 2 as error code.
	Currently it uses -1 and -2, which is later converted into 1 and 2 as
	yacc.c expects it.

	Let's simplify this and use consistently -1 and -2 for auxiliary
	functions that are not exposed (or not yet exposed) to the user.  In
	particular this will save the user from having to convert
	yyexpected_tokens's -2 into yyreport_syntax_error's 2: both return -1
	or -2.

	* data/skeletons/yacc.c (yy_lac, yyreport_syntax_error)
	(yy_lac_stack_realloc): Return -1, -2 for errors instead of 1, 2.
	Adjust callers.
	* examples/c/bistromathic/parse.y (yyreport_syntax_error): Do take
	error codes into account.
	Issue a syntax error message even if we ran out of memory.
	* src/parse-gram.y, tests/local.at (yyreport_syntax_error): Adjust.

2020-03-23  Akim Demaille  <akim.demaille@gmail.com>

	style: reduce length of private constant
	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/yacc.c
	(YYERROR_VERBOSE_ARGS_MAXIMUM): Rename as...
	(YYARGS_MAX): this.
	* src/parse-gram.y (YYERROR_VERBOSE_ARGS_MAXIMUM): Rename as...
	(ARGS_MAX): this.

2020-03-23  Akim Demaille  <akim.demaille@gmail.com>

	doc: c++: promote api.token.raw
	* doc/bison.texi (Calc++ Parser): Here.

2020-03-22  Akim Demaille  <akim.demaille@gmail.com>

	bench: calc: no need for super long inputs
	* etc/bench.pl.in ($iterations): Restore initial value, -1, meaning
	"at least one second".
	($calc_input): There is no need to generate 400 lines.

2020-03-22  Akim Demaille  <akim.demaille@gmail.com>

	bench: calc: work on a string instead of a file
	The cost of the file layer is large and makes benchmarks too coarse,
	as seen for in following example, first with a file, then with a
	literal string:

	    0. %skeleton "yacc.c" %define parse.lac full
	    1. %skeleton "yacc-v1.c" %define nofinal %define parse.lac full
	    2. %skeleton "yacc-v2.c" %define nofinal %define parse.lac full
	    3. %skeleton "yacc-v3.c" %define nofinal %define parse.lac full
	    4. %skeleton "yacc.c"
	    5. %skeleton "yacc-v1.c" %define nofinal
	    6. %skeleton "yacc-v2.c" %define nofinal
	    7. %skeleton "yacc-v3.c" %define nofinal
	    --------------------------------------------------
	    Benchmark           Time           CPU Iterations
	    --------------------------------------------------
	    BM_y0           32558 ns      32537 ns      21228
	    BM_y1           32400 ns      32369 ns      21233
	    BM_y2           33485 ns      33464 ns      20625
	    BM_y3           32139 ns      32125 ns      21446
	    BM_y4           31343 ns      31329 ns      21747
	    BM_y5           31344 ns      31317 ns      22035
	    BM_y6           31287 ns      31255 ns      22039
	    BM_y7           31387 ns      31373 ns      22178
	    --------------------------------------------------
	    Benchmark           Time           CPU Iterations
	    --------------------------------------------------
	    BM_y0           10642 ns      10634 ns      63601
	    BM_y1           10657 ns      10654 ns      63625
	    BM_y2           10441 ns      10432 ns      65957
	    BM_y3           10558 ns      10554 ns      64546
	    BM_y4            9521 ns       9516 ns      72011
	    BM_y5            9179 ns       9157 ns      75028
	    BM_y6            9360 ns       9356 ns      73770
	    BM_y7            9365 ns       9359 ns      72609

	Of course, at the same time it is less realistic: most users read
	files rather that strings, so it might lead to us to pay attention to
	costs most people don't see.

	* etc/bench.pl.in (&calc_input): Output into a file given as argument.
	Output in C syntax.
	(&generate_grammar_calc): Use it.
	Simplify the grammar: remove operators we don't care about.
	Rewrite the scanner to work on a char* instead of a FILE*.

2020-03-22  Akim Demaille  <akim.demaille@gmail.com>

	bench: add a "latest" symlink
	* etc/bench.pl.in: here.

2020-03-22  Akim Demaille  <akim.demaille@gmail.com>

	bench: use the same prefix in both bench methods
	* etc/bench.pl.in (&bench_with_timethese): Also use y$i, as in
	&bench_with_gbenchmark.
	(&generate_grammar_calc): Don't add a prefix, let the callers do it.

2020-03-22  Akim Demaille  <akim.demaille@gmail.com>

	bench: use a C++-11 compiler
	See https://github.com/google/benchmark#a-faster-keeprunning-loop.

	* etc/bench.pl.in ($cxx): Be C++11.
	(&bench_with_gbenchmark): Adjust.

2020-03-22  Akim Demaille  <akim.demaille@gmail.com>

	bench: create a README file with benches
	* etc/bench.pl.in (&bench_with_gbenchmark): Here.

2020-03-21  Akim Demaille  <akim.demaille@gmail.com>

	bench: calc: add support for google benchmark
	* etc/bench.pl.in (&compiler): New, extracted from...
	(&compile): here.
	Don't link when using gbm.
	(&calc_input): Don't make massive input for micro
	benchmarks.
	(&generate_grammar_calc): When using gbm, use api.prefix to avoid name
	collisions.
	Be ready to issue BENCHMARKS instead of a main.
	(&bench): Rename as...
	(&bench_with_timethese): this.
	(&bench_with_gbenchmark): New.
	(&bench): New.
	Dispatch on these two.

2020-03-21  Akim Demaille  <akim.demaille@gmail.com>

	bench: better error messages on invalid input
	* etc/bench.pl.in: here.

2020-03-21  Akim Demaille  <akim.demaille@gmail.com>

	bench: simplify the calc grammar
	* etc/bench.pl.in (generate_grammar_calc): We don't need global_result
	etc.

2020-03-21  Akim Demaille  <akim.demaille@gmail.com>

	bench: die clearly on incorrect --grammar arguments
	* etc/bench.pl.in (getopt): here.

2020-03-17  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-03-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: style: prefer switch to if
	* data/skeletons/yacc.c: Prefer switch to decode yy_lac's return value.

2020-03-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: yypstate_expected_tokens
	In push parsers, when asking for the list of expected tokens at some
	point, it makes no sense to build a yyparse_context_t: the yypstate
	alone suffices (the only difference being the lookahead).  Instead of
	forcing the user to build a useless shell around yypstate, let's offer
	yypstate_expected_tokens.

	See https://lists.gnu.org/r/bison-patches/2020-03/msg00025.html.

	* data/skeletons/yacc.c (yypstate): Declare earlier, so that we can
	use it for...
	(yypstate_expected_tokens): this new function, when in push parsers.
	Adjust dependencies.
	* examples/c/bistromathic/parse.y: Simplify: use
	yypstate_expected_tokens.
	Style fixes.
	Reduce scopes (reported by Joel E. Denny).

2020-03-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: simplify
	* examples/c/bistromathic/parse.y (expected_tokens): Remove useless "break".

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	merge branch 'maint'
	* upstream/maint:
	  maint: post-release administrivia
	  version 3.5.3
	  news: update for 3.5.3
	  yacc.c: make sure we properly propagated the user's number for error
	  diagnostics: don't crash because of repeated definitions of error
	  style: initialize some struct members
	  diagnostics: beware of zero-width characters
	  diagnostics: be sure to close the styling when lines are too short
	  muscles: fix incorrect decoding of $
	  code: be robust to reference with invalid tags
	  build: fix typo
	  doc: update recommandation for libtextstyle
	  style: comment changes
	  examples: use consistently the GFDL header for readmes
	  style: remove useless declarations
	  typo: succesful -> successful
	  README: point to tests/bison, and document --trace
	  gnulib: update
	  maint: post-release administrivia

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

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.3
	* NEWS: Record release date.

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	news: update for 3.5.3

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: make sure we properly propagated the user's number for error
	* data/skeletons/yacc.c (YYERRCODE): Be truthful.
	* tests/input.at (Redefining the error token): Check that.

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: don't crash because of repeated definitions of error
	According to https://www.unix.com/man-page/POSIX/1posix/yacc/, the
	user is allowed to specify her user number for the error token:

	    The token error shall be reserved for error handling. The name
	    error can be used in grammar rules. It indicates places where the
	    parser can recover from a syntax error. The default value of error
	    shall be 256. Its value can be changed using a %token
	    declaration. The lexical analyzer should not return the value of
	    error.

	I think this feature is useless, the user should not have to deal with
	that.  The intend is probably to give the user a means to use 256 if
	she wants to, but provided "error" cleared the path first by being
	assigned another number.  In the case of Bison, 256 is assigned to
	"error" at the end if the user did not use it for a token of hers.  So
	this feature is useless.

	Yet it is valid, and if the user assigns twice a token number to
	"error", then the second time we want to complain about it and want to
	show the original definition.  At this point, we try to display the
	built-in definition of "error", whose location is NULL, and we crash.

	Rather, the location of the first user definition of "error" should
	become its defining location.

	Reported byg Ahcheong Lee.
	https://lists.gnu.org/r/bug-bison/2020-03/msg00007.html

	* src/symtab.c (symbol_class_set): If this is a declaration and the
	symbol was not declared yet, keep this as defining location.
	* tests/input.at (Redefining the error token): New.

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	style: initialize some struct members
	* src/symtab.c (sym_content_new): Initialize all the location members.
	Not needed by the code, but disturbing values when using a debugger.

2020-03-08  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: beware of zero-width characters
	Currenly we rely on (visual) width of the characters to decide where
	to open and close the styling of the quoted lines.  This breaks when
	we deal with zero-width characters: we cannot just rely on (visual)
	columns, we need to know whether we are before, inside, or after the
	highlighted portion.

	* src/location.c (location_caret): col_end: no longer add 1, "regular"
	characters have a width of 1, only 0-width characters have 0-width.
	opened: replace with 'state', a three-valued enum.
	Don't reopen the style if we already did.
	* tests/diagnostics.at (Zero-width characters): New.

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

	diagnostics: be sure to close the styling when lines are too short
	     bar.y:4.12-17: <error>error:</error> redefining user token number of foo
	    -    4 | %token foo <error>123
	    +    4 | %token foo <error>123</error>
	           |            <error>^~~~~~</error>

	* src/location.c (location_caret): Be sure to close.
	* tests/diagnostics.at (Line is too short, and then you die): New.

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

	muscles: fix incorrect decoding of $
	Bug introduced in 458171e6df5a0110a35ee45ad8b2e9f6fb426f1d.
	https://lists.gnu.org/archive/html/bison-patches/2013-11/msg00009.html

	Reported by Ahcheong Lee.
	https://lists.gnu.org/r/bug-bison/2020-03/msg00010.html

	* src/muscle-tab.c (COMMON_DECODE): "$" is coded as "$][", not "$[][".
	* tests/input.at ("%define" enum variables): Check that case.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	code: be robust to reference with invalid tags
	Because we want to support $<a->b>$, we must accept -> in type tags,
	and reject $<->$, as it is unfinished.
	Reported by Ahcheong Lee.

	* src/scan-code.l (yylex): Make sure "tag" does not end with -, since
	-> does not close the tag.
	* tests/input.at (Stray $ or @): Check this.

2020-03-06  Akimn Demaille  <akim.demaille@gmail.com>

	build: fix typo
	* build-aux/cross-options.pl: here.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	doc: update recommandation for libtextstyle
	* README: here.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* src/symtab.h, src/lr0.c: here.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	examples: use consistently the GFDL header for readmes
	* examples/c++/README.md, examples/c++/calc++/README.md,
	* examples/c/calc/README.md, examples/c/lexcalc/README.md,
	* examples/c/reccalc/README.md:
	Prefer the GFDL banner to the GPL one.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	style: remove useless declarations
	* src/reader.h: Don't duplicate what parse-gram.h already exposes.
	* src/lr0.h: Remove useless include.

2020-03-06  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	typo: succesful -> successful
	* data/skeletons/lalr1.cc: here
	* etc/bench.pl.in: here
	* src/location.c: and here.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	README: point to tests/bison, and document --trace
	Reported by Victor Morales Cayuela.

	* README, README-hacking.md: here.

2020-03-06  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-03-05  Akim Demaille  <akim.demaille@gmail.com>

	README: point to tests/bison, and document --trace
	Reported by Victor Morales Cayuela.

	* README, README-hacking.md: here.

2020-03-05  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: simplify yyparse_context_t member names
	* data/skeletons/yacc.c (yyparse_context_t): Rename yyes_p and
	yyes_capacity_p as...
	(yyes, yyes_capacity): These.

2020-03-05  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: yyerror_range does not need to be preserved accross calls
	* data/skeletons/yacc.c (b4_parse_state_variable_macros): Don't define
	yyerror_range.
	(yyparse): Add yyerror_range as local variable.

2020-03-05  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: push: undefine the pstate macros for the epilogue
	* data/skeletons/yacc.c (b4_macro_define, b4_macro_undef)
	(b4_pstate_macro_define, b4_parse_state_variable_macros):
	New.
	Use them.
	* examples/c/bistromathic/parse.y: Remove now useless undefs.

2020-03-05  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: push: initialize the pstate variables in pstate_new
	Currently pstate_new does not set up its variables, this task is left
	to yypush_parse.  This was probably to share more code with usual pull
	parsers, where these (local) variables are indeed initialized by
	yyparse.

	But as a consequence yyexpected_tokens crashes at the very beginning
	of the parse, since, for instance, the stacks are not even set up.
	See https://lists.gnu.org/r/bison-patches/2020-03/msg00001.html.

	The fix could have very simple, but the documentation actually makes
	it very clear that we can reuse a pstate for several parses:

	    After yypush_parse returns a status other than YYPUSH_MORE, the
	    parser instance yyps may be reused for a new parse.

	so we need to restore the parser to its pristine state so that (i) it
	is ready to run the next parse, (ii) it properly supports
	yyexpected_tokens for the next run.

	* data/skeletons/yacc.c (b4_initialize_parser_state_variables): New,
	extracted from the top of yyparse/yypush_parse.
	(yypstate_clear): New.
	(yypstate_new): Use it when push parsers are enabled.
	Define after the yyps macros so that we can use the same code as the
	regular pull parsers.
	(yyparse): Use it when push parsers are _not_ enabled.

	* examples/c/bistromathic/bistromathic.test: Check the completion on
	the beginning of the line.

2020-03-04  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* data/skeletons/yacc.c, tests/torture.at: here.

2020-03-04  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: properly compute the lcp, as expected by readline
	Currently completion on "at" proposes only "atan", but does not
	actually complete "at" into "atan".

	* examples/c/bistromathic/parse.y (completion): Install the lcp in
	matches[0].
	* examples/c/bistromathic/bistromathic.test: Check that case.

2020-03-04  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: don't require spaces after operators for completion
	Currently "(1+<TAB>" does not work as expected, because "+" is not a
	word breaking character.

	* examples/c/bistromathic/parse.y (init_readline): Specify our word
	breaking characters.
	* examples/c/bistromathic/bistromathic.test: Avoid trailing spaces.

2020-03-02  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: check completion
	* examples/c/bistromathic/bistromathic.test: here.
	* examples/c/bistromathic/parse.y (expected_tokens): Fix a memory
	leak.

2020-03-02  Akim Demaille  <akim.demaille@gmail.com>

	m4: remove b4_function_define and b4_function_declare
	* data/skeletons/c.m4: here.

2020-03-02  Akim Demaille  <akim.demaille@gmail.com>

	m4: decommission b4_function_declare
	* data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/yacc.c:
	Stop using b4_function_declare.

2020-03-02  Akim Demaille  <akim.demaille@gmail.com>

	m4: decommission function generating macro
	These macros have been extremely useful when we had to support K&R C,
	which we dropped long ago.  Now, they merely make the code uselessly
	hard to read.

	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/glr.cc,
	* data/skeletons/yacc.c:
	Stop using b4_function_define.

2020-03-01  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: demonstrate the use of yyexpected_tokens
	Let's use GNU readline and its TAB autocompletion to demonstrate the
	use of yyexpected_tokens.

	This shows a number of weaknesses in our current approach:

	- some macros (yyssp, etc.) from push parsers "leak" in user code, we
	  need to undefine them

	- the context needed by yyexpected_tokens does not need the token,
	  yypstate actually suffices

	- yypstate is not properly setup when first allocated, which results
	  in a crash of yyexpected_tokens if fired before a first token was
	  read.  We should move initialization from yypush_parse into
	  yypstate_new.

	* examples/c/bistromathic/parse.y (yylex): Take input as a string, not
	a file.
	(EXIT): New token.
	(input): Adjust to work only on a line.
	(line): Remove.
	(symbol_count, process_line, expected_tokens, completion)
	(init_readline): New.
	* examples/c/bistromathic/bistromathic.test: Adjust expectations.

2020-03-01  Akim Demaille  <akim.demaille@gmail.com>

	examples: use consistently the GFDL header for readmes
	* examples/c++/README.md, examples/c++/calc++/README.md,
	* examples/c/calc/README.md, examples/c/lexcalc/README.md,
	* examples/c/pushcalc/README.md, examples/c/reccalc/README.md:
	Prefer the GFDL banner to the GPL one.

2020-03-01  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: use readline

2020-02-29  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: don't use Flex
	This example will soon use GNU readline, so its scanner should be easy
	to use (concurrently) on strings, not streams.  This is not a place
	where Flex shines, and anyway, these are examples of Bison, not Flex.
	There's already lexcalc and reccalc that demonstrate the use of Flex.

	* examples/c/bistromathic/scan.l: Remove.
	* examples/c/bistromathic/parse.y (yylex): New.
	Adjust dependencies.

2020-02-29  Akim Demaille  <akim.demaille@gmail.com>

	examples: bistromathic: strengthen tests
	* examples/c/bistromathic/bistromathic.test: here.
	* examples/test: Be clearer on failing tests.

2020-02-29  Akim Demaille  <akim.demaille@gmail.com>

	examples: lexcalc: demonstrate location tracking
	The bistromathic example should not use Flex, it makes it too complex.
	But it was the only example to show location tracking with Flex.

	* examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/parse.y,
	* examples/c/lexcalc/scan.l: Demonstrate location tracking as is done
	in bistromathic.

2020-02-27  Akim Demaille  <akim.demaille@gmail.com>

	c++: don't copy the lookahead
	The current implementation of parser::context keeps a copy of the
	lookahead.  This is troublesome since we support move-only types.
	Besides, while GCC is happy with the current implementation, Clang
	complains that the ctor it needs to build the copy of the lookahead is
	not yet available.

	    461. calc.at:1120: testing Calculator C++ %defines %locations parse.error=verbose %name-prefix "calc" %verbose  ...
	    calc.at:1120: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -Wno-deprecated -o calc.cc calc.y
	    calc.at:1120: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
	    stderr:
	    In file included from calc-lex.cc:7:
	    calc.hh:351:12: error: instantiation of function 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' required here, but no definition is available [-Werror,-Wundefined-func-template]
	        struct symbol_type : basic_symbol<by_type>
	               ^
	    calc.hh:273:7: note: forward declaration of template entity is here
	          basic_symbol (const basic_symbol& that);
	          ^
	    calc.hh:351:12: note: add an explicit instantiation declaration to suppress this warning if 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' is explicitly instantiated in another translation unit
	        struct symbol_type : basic_symbol<by_type>
	               ^
	    1 error generated.
	    In file included from calc-main.cc:7:
	    calc.hh:351:12: error: instantiation of function 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' required here, but no definition is available [-Werror,-Wundefined-func-template]
	        struct symbol_type : basic_symbol<by_type>
	               ^
	    calc.hh:273:7: note: forward declaration of template entity is here
	          basic_symbol (const basic_symbol& that);
	          ^
	    calc.hh:351:12: note: add an explicit instantiation declaration to suppress this warning if 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' is explicitly instantiated in another translation unit
	        struct symbol_type : basic_symbol<by_type>
	               ^
	    1 error generated.
	    stdout:
	    calc.at:1120: exit code was 1, expected 0
	    461. calc.at:1120: 461. Calculator C++ %defines %locations parse.error=verbose %name-prefix "calc" %verbose  (calc.at:1120): FAILED (calc.at:1120)

	* data/skeletons/lalr1.cc (context::yyla_): Make it a const-ref.
	Move the implementation out of the declaration.

2020-02-27  Akim Demaille  <akim.demaille@gmail.com>

	c++: minor fixes
	Address compiler warnings such as

	    warning: declaration of 'yyla' shadows a member of 'yy::parser::context' [-Wshadow]

	* data/skeletons/lalr1.cc (context): Don't use the same names for
	variables and members.
	Use foo_ for private members, as in parser.
	Also, use the + trick in array accesses to please ICC and provide it
	with an int.

2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	c++: add support for parse.error=custom
	* data/skeletons/lalr1.cc: added support here
	* tests/calc.at: added test cases
	* tests/local.at: added yyreport_syntax_error implementation
	   for C++ test cases

2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	c++: add parser::context for syntax error handling
	* data/skeletons/lalr1.cc: here

2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	c++: add support for parse.error=detailed
	* data/skeletons/lalr1.cc: added support here
	* tests/calc.at: added a test case

2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	skeletons: prefer b4_parse_error_{case,bmatch} over manual solution
	Prefer b4_parse_error_case over the adhoc solution
	`m4_case + b4_percent_define_get`. Same for b4_parse_error_bmatch.

	* data/skeletons/glr.c: here
	* data/skeletons/yacc.c: here

2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	typo: succesful -> successful
	* data/skeletons/lalr1.cc: here
	* etc/bench.pl.in: here
	* src/location.c: here
	* tests/calc.at: and here

2020-02-24  Akim Demaille  <akim.demaille@gmail.com>

	bench.pl: clean up the dust
	* etc/bench.pl.in: Adjust to the current use of %define's values.
	Don't use %error-verbose.
	Prefer Bison to CPP (e.g., api.value.type).
	Avoid returning characters directly, so that %define api.token.raw works.

2020-02-23  Akim Demaille  <akim.demaille@gmail.com>

	style: comment changes
	* src/symtab.h, src/lr0.c: here.

2020-02-23  Akim Demaille  <akim.demaille@gmail.com>

	style: avoid using 'this' as an identifier
	LLDB insists on parsing 'this' as a C++ keyword, even when debugging a
	C program.

	* src/symtab.c: Please the dictator.

2020-02-23  Akim Demaille  <akim.demaille@gmail.com>

	style: remove useless declarations
	* src/reader.h: Don't duplicate what parse-gram.h already exposes.
	* src/lr0.h: Remove useless include.

2020-02-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: fix c/calc
	* examples/c/calc/calc.y: Remove experiment traces.

2020-02-19  Akim Demaille  <akim.demaille@gmail.com>

	todo: update

2020-02-15  Akim Demaille  <akim.demaille@gmail.com>

	doc: update recommandation for libtextstyle
	* README: here.

2020-02-15  Akimn Demaille  <akim.demaille@gmail.com>

	build: fix typo
	* build-aux/cross-options.pl: here.

2020-02-15  Akim Demaille  <akim.demaille@gmail.com>

	doc: simplify the cross references
	* doc/bison.texi: here.

2020-02-15  Akim Demaille  <akim.demaille@gmail.com>

	doc: document token internationalization
	* doc/bison.texi (Parser Internationalization): Move most of its
	content into...
	(Enabling I18n): this new node.
	(Token I18n): New.
	(Token Decl): Refer to token internationalization.
	(Error Reporting Function): Promote parse.error detailed.

2020-02-15  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-02-15  Victor Morales Cayuela  <victor.morales_cayuela@nokia-sbell.com>

	diagnostics: modernize the display of submessages
	Since Bison 2.7, output was indented four spaces for explanatory
	statements.  For example:

	    input.y:2.7-13: error: %type redeclaration for exp
	    input.y:1.7-11:     previous declaration

	Since the introduction of caret-diagnostics, it became less clear.
	Remove the indentation and display submessages as in GCC:

	    input.y:2.7-13: error: %type redeclaration for exp
	        2 | %type <float> exp
	          |       ^~~~~~~
	    input.y:1.7-11: note: previous declaration
	        1 | %type <int> exp
	          |       ^~~~~

	* src/complain.h (SUB_INDENT): Remove.
	(warnings): Add "note" to the enum.
	* src/complain.h, src/complain.c (complain_indent): Replace by...
	(subcomplain): this.
	Adjust all dependencies.
	* tests/actions.at, tests/diagnostics.at, tests/glr-regression.at,
	* tests/input.at, tests/named-refs.at, tests/regression.at:
	Adjust expectations.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: simplify uses of references
	This reverts "doc: work around problems with PDF generation", commit
	d810aa3d8f76b1a4d7d402072f45a0662152ffd4.  Upstream issue is fixed.
	https://lists.gnu.org/r/bug-texinfo/2020-02/msg00006.html

	* gnulib: Update.
	* doc/bison.texi: Simplify.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	java: provide a Context ctor
	This is really a private auxiliary inner class, so it should not
	matter.  But it's better style.

	* data/skeletons/lalr1.java: here.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	Merge tag 'v3.5.2'
	bison 3.5.2

	* tag 'v3.5.2':
	  version 3.5.2
	  news: 3.5.2
	  gnulib: update
	  doc: update Doxygen template
	  java: avoid trailing white spaces
	  m4: fix b4_token_format
	  doc: clearly state that %yacc only makes sense with yacc.c
	  doc: spell check
	  examples: be more robust to spaces in paths
	  larlr1.cc: Reject unsupported values for parse.lac

2020-02-13  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.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.2
	* NEWS: Record release date.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	news: 3.5.2
	* NEWS: Update.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: update Doxygen template
	* Doxyfile.in: Run doxygen -u on it.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	java: avoid trailing white spaces
	* data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed.
	* data/skeletons/lalr1.java: Avoid trailing spaces.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	m4: fix b4_token_format
	We used to emit:

	    /** Token number,to be returned by the scanner.  */
	    static final int NUM = 258;
	    /** Token number,to be returned by the scanner.  */
	    static final int NEG = 259;

	with no space after the comma.  Fix that.

	* data/skeletons/bison.m4 (b4_token_format): Quote where appropriate.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: clearly state that %yacc only makes sense with yacc.c
	* doc/bison.texi: here.

2020-02-13  Akim Demaille  <akim.demaille@gmail.com>

	doc: spell check
	* doc/bison.texi: here.

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

	examples: bistromathic: demonstrate named references
	* examples/c/bistromathic/parse.y: here.

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

	c++: simplify
	* data/skeletons/stack.hh (ssize): Remove, same as size.

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

	tests: check calls to yyerror from the user actions
	This revealed a number of things I had not realized:

	- the Java location tracking was aliasing the same pair of positions
	  for all the symbols (see previous commit).

	- in impure parsers, it's quite easy to use incorrect locations for
	  diagnostics, since yyerror uses yylloc, which is the location of the
	  lookahead, not that of the current lhs.  So we need something like

	    {
	      YYLTYPE old_yylloc = yylloc;
	      yylloc = @$;
	      yyerror (]AT_PARAM_IF([result, count, nerrs, ])[buf);
	      yylloc = old_yylloc;
	    }

	  Maybe we should do that little yylloc dance in the skeleton instead
	  of leaving it to the user?  It might be costly...  But that's only
	  for users of the impure parsers, which are asking for trouble
	  anyway.

	- in glr.cc invoking yyerror is somewhat cumbersome: the C++ interface
	  is not available as we are in yyparse (which in C), and yyerror is
	  used by glr.cc itself to bind it to the user's parser::error.  If we
	  call yyerror, we need:

	    yyerror (]AT_LOCATION_IF([[&@$, ]])[yyparser, ]AT_PARAM_IF([result, count, nerrs, ])[msg);

	  However calling yy::parser::error is easier, once we know that the
	  current parser object is available as 'yyparser'.  Which also saves
	  us from having to pass the parse-params ourselves:

	    yyparser.error (]AT_LOCATION_IF([[@$, ]])[msg);

	* tests/calc.at: Invoke yyerror by hand, instead of using fprintf etc.
	Adjust expectations.

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

	java: beware not to alias the locations of the various symbols
	* examples/java/calc/Calc.y, tests/calc.at, tests/local.at
	(getStartPos, getEndPos): Always return a new object.
	* doc/bison.texi: Clarify this.

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

	java: check that parse.error custom|detailed work with push parsers
	* tests/calc.at: here.

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

	java: don't expose the Context's members
	* data/skeletons/lalr1.java (Context): Make data members private.
	(Context.getLocation): New.
	* examples/java/calc/Calc.y, tests/java.at, tests/local.at: Adjust.

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

	build: pacify syntax-check
	* src/complain.c: Fix indentation.
	* cfg.mk: Using strcmp is ok in the tests.
	Test cases and examples don't need Bison's PO support.

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

	regen

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

	gnulib: update

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

	build: prefer %D% and %C% to hard coded values
	* doc/local.mk: here.

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

	parse.error: document and diagnose the incompatibility with %token-table
	* doc/bison.texi (Tokens from Literals): Move to code using
	%token-table to...
	(Decl Summary: %token-table): here.
	* data/skeletons/bison.m4: Implement mutual exclusion.
	* tests/input.at: Check it.
	* doc/local.mk: Be robust to the removal of doc/.

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

	doc: spell check
	* doc/bison.texi: here.

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

	doc: formatting changes
	* doc/bison.texi: here.

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

	doc: work around problems with PDF generation
	With texinfo.tex 2019-09-24.13, node names with + are not properly
	handled.
	https://lists.gnu.org/r/bug-texinfo/2020-02/msg00004.html

	* doc/bison.texi: Always use the three-argument form for references to
	node with a + in the name.

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

	java: revert "style: avoid useless initializers"
	This reverts commit ebab1ffca8a728158051481795ae798231cfd93d.
	This commit removed "useless" initializers, going from

	    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
	       STATE-NUM.  */
	    private static final byte yypact_[] = yypact_init ();
	    private static final byte[] yypact_init ()
	    {
	      return new byte[]
	      {
	        25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
	        -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
	        -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
	         3,     3
	      };
	    }

	to

	    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
	       STATE-NUM.  */
	    private static final byte[] yypact_ =
	    {
	        25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
	        -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
	        -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
	         3,     3
	    };

	But it turns out that this was on purpose, to work around the 64KB
	limitation in JVM methods.  It was introduced on the 2008-11-10 by
	Di-an Jan in 09ccae9b18a7c09ebf7bb8df2a18c8c4a6def248: "Work around
	Java's ``code too large'' problem for parser tables".  See
	https://lists.gnu.org/r/help-bison/2008-11/msg00004.html.  A real
	test, where we would hit the JVM limitation, would be nice.

	To avoid further regressions, add comments.

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

	skeletons: avoid b4_error_verbose_if, which is confusing
	parse.error has more than two possible values.

	* data/skeletons/bison.m4 (b4_error_verbose_if, b4_error_verbose_flag):
	Remove.
	(b4_parse_error_case, b4_parse_error_bmatch): New.
	Adjust dependencies.

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

	skeletons: decorelate %token-table from verbose error messages
	Reported by Adrian Vogelsgesang.

	* data/skeletons/bison.m4: Here.
	* data/skeletons/lalr1.cc: Adjust.

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

	doc: formatting changes
	* doc/bison.texi: here.

2020-02-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: clearly state that %yacc only makes sense with yacc.c
	* doc/bison.texi: here.
	* tests/calc.at: Stop testing %yacc with non yacc.c skeletons.

2020-02-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	style: stylistic cleanups in the C skeletons
	* data/skeletons/glr.c, data/skeletons/yacc.c:
	Avoid duplicated declaration of yysymbol_name.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	java: provide Context with a more OO interface
	* data/skeletons/lalr1.java (yyexpectedTokens)
	(yysyntaxErrorArguments): Make them methods of Context.
	(Context.yysymbolName): New.
	* tests/local.at: Adjust.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	java: add support for parse.error custom
	* data/skeletons/lalr1.java: Add support for custom parse errors.
	(yyntokens_): Make it public.  Under...
	(yyntokens): this name.
	(Context): Capture the location too.
	* examples/c/bistromathic/parse.y,
	* examples/c/bistromathic/bistromathic.test:
	Improve error message.
	* examples/java/calc/Calc.test, examples/java/calc/Calc.y: Use custom
	error messages.
	* tests/calc.at, tests/local.at: Check custom error messages.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	java: let the Context give access to yyntokens
	* data/skeletons/lalr1.java (Context.yytokens): New.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	java: make the syntax error format string translatable
	The error format should be translated, but contrary to the case of
	C/C++, we cannot just depend on macros to adapt on the
	presence/absence of '_'.  Let's consider that the message format is to
	be translated iff there are some internationalized tokens.

	* src/output.c (prepare_symbol_names): Define b4_has_translations.
	* data/skeletons/java.m4 (b4_trans): New.
	* data/skeletons/lalr1.java: Use it to emit translatable or not the
	format string.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	java: introduce yyexpectedTokens
	And allow syntax error messages for 'detailed' and 'verbose' to be
	translated.

	* data/skeletons/lalr1.java (Context, yyexpectedTokens)
	(yysyntaxErrorArguments): New.
	(yysyntax_error): Use it.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	java: add support for parse.error=detailed
	In Java there is no need for N_ and yytranslate_.  So instead of
	hard-coding the use of N_ in the table of the symbol names, rely on
	b4_symbol_translate.

	* src/output.c (prepare_symbol_names): Use b4_symbol_translate instead
	of N_.
	* data/skeletons/c.m4 (b4_symbol_translate): New.
	* data/skeletons/lalr1.java (yysymbolName): New.
	Use it.
	* examples/java/calc/Calc.y: Use parse.error=detailed.
	* tests/calc.at: Check parse.error=detailed.

2020-02-08  Akim Demaille  <akim.demaille@gmail.com>

	m4: fix b4_token_format
	We used to emit:

	    /** Token number,to be returned by the scanner.  */
	    static final int NUM = 258;
	    /** Token number,to be returned by the scanner.  */
	    static final int NEG = 259;

	with no space after the comma.  Fix that.

	* data/skeletons/bison.m4 (b4_token_format): Quote where appropriate.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: tests: remove now redundant tests
	* tests/javapush.at: here.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: tests: check push parsers like the others
	Currently in javapush.at.

	* tests/calc.at: Here.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: tests: remove now redundant tests
	* tests/java.at: Calculator tests are now in calc.at.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: tests: check location tracking in the calculator
	Unfortunately in the Java skeleton the user cannot override the way
	locations are displayed, and locations don't know the structure of the
	positions.  So they cannot implement the tricks used in the C/C++
	skeletons to display "1.1" instead of "1.1-1.2".

	* tests/local.at (Java): Add support for column tracking in the
	locations, as we did in examples/java/calc.
	* tests/calc.at: Use AT_CALC_YYLEX.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: tests: prepare the replacement of calculator tests
	Soon calculator tests for Java will move from java.at to calc.at.
	Which implies improving the Java testing infrastructure in
	local.at (for instance really tracking columns in positions, not just
	token number).  Detach java.at from local.at.

	* tests/java.at (AT_JAVA_POSITION_DEFINE_OLD): New.
	Use it.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: style: avoid useless initializers
	Instead of

	      /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
	       STATE-NUM.  */
	      private static final byte yypact_[] = yypact_init ();
	      private static final byte[] yypact_init ()
	      {
	        return new byte[]
	        {
	          25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
	          -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
	          -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
	           3,     3
	        };
	      }

	generate

	    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
	       STATE-NUM.  */
	      private static final byte[] yypact_ =
	      {
	          25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
	          -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
	          -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
	           3,     3
	      };

	I have no idea what motivated the previous approach.

	* data/skeletons/java.m4 (b4_typed_parser_table_define): Here.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: style: prefer putting the square brackets on the type
	* examples/java/calc/Calc.y, examples/java/simple/Calc.y,
	* tests/calc.at, tests/local.at: here.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: examples: fix the tracking of locations
	* examples/java/calc/Calc.y: The StreamTokenizer cannot "peek" for the
	next character, it reads it, and keeps it for the next call.  So the
	current location is one passed the end of the current token.  To avoid
	this, keep the previous position, and use it to end the current token.
	* examples/java/calc/Calc.test: Adjust.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: examples: prefer switch to chains of else-if
	* examples/java/calc/Calc.y, examples/java/simple/Calc.y: here.
	* examples/java/simple/Calc.y: Use the tokenizer's handling of blanks.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	java: examples: split in two
	* examples/java: Split in...
	* examples/java/simple, examples/java/calc: these.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	traces: don't print the stack before the gotos
	The C, C++ and D skeletons used to show the stack right after popping
	the stack during the reduction.  Now that the stack is printed after
	reaching a new state, that has become useless:

	    Entering state 1
	    Stack now 0 1
	    Reducing stack by rule 5 (line 83):
	       $1 = token "number" (1)
	    -> $$ = nterm exp (1)
	    Stack now 0
	    Entering state 8
	    Stack now 0 8

	Remove the "Stack now 0" line.

	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/lalr1.java, data/skeletons/yacc.c:
	Here.

2020-02-05  Akim Demaille  <akim.demaille@gmail.com>

	traces: show the stack after reading a token
	Currently, if we have long rules and series of shift, we stack states
	without showing stack.  Let's be more incremental, and do how the Java
	skeleton does.

	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/yacc.c:
	Here.
	Adjust test cases.
	* tests/torture.at (AT_DATA_STACK_TORTURE): Disable stack traces: this
	test produces a very large stack, and showing the stack each time we
	shift a token goes quadatric.

2020-02-04  Akim Demaille  <akim.demaille@gmail.com>

	traces: write the "Reading a token" alone on its line
	The Java skeleton displays

	    Reading a token:
	    Next token is token "number" (1)

	while the other display

	    Reading a token: Next token is token "number" (1)

	When generating logs in the scanner, the first part is separated from
	the second, and the end of the scanner logs have the second part
	pasted in.  So let's propagate the Java way, but with the colon.

	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/lalr1.java, data/skeletons/yacc.c: Do it.
	Adjust test cases and doc.

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

	java: use the same calc tests as the other skeletons
	* tests/local.at (AT_LANG_MATCH): New.
	(AT_YYERROR_DECLARE(java), AT_YYERROR_DECLARE_EXTERN(java)): New.
	* tests/calc.at: The grammar file for Java is quite different for the
	others, and continuing to assemble it from pieces makes the grammar
	file hard to understand.  Let's also dispatch on the language to
	assemble it, and isolate Java from the others.
	Most of this comes from java.at.

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

	java: add access to the number of errors
	* data/skeletons/lalr1.java (yynewrrs, getNumberOfErrors): New.
	Formatting changes.

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

	java: formatting changes
	* data/skeletons/java.m4, data/skeletons/lalr1.java: here.

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

	java: avoid trailing white spaces
	* data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed.
	* data/skeletons/lalr1.java: Avoid trailing spaces.

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

	java: example: properly track the locations
	This example, so far, was tracking the current token number, not the
	current column number.  This is not nice for an example...

	* examples/java/Calc.y (PositionReader): New.
	Use it.
	* examples/java/Calc.test: Check the output.

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

	java: example: improve
	* examples/java/Calc.y: Propagate the exit status.
	Support -p.

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

	java: example: rely on autoboxing
	AFAICT, autoboxing/unboxing was added in Java 5 (September 30, 2004).
	I think we can afford to use it.  It should help us merge some Java
	tests with the main ones.

	However, beware that != does not unbox: it compares the object
	addresses.

	* examples/java/Calc.y, tests/java.at: Simplify.
	* examples/java/Calc.test, tests/java.at: Improve tests.

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

	tests: comment changes
	* tests/calc.at: Shorten titles and reduce redundancy.

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

	skeletons: add support for %code epilogue
	When building the test cases, emitting code in the epilogue is very
	constraining.  Let's make it simpler thanks to %code epilogue.

	However, I don't want to document this: it is bad style to use it (we
	should avoid having too many ways to write the same thing,
	TI!MTOWTDI), just put your code in the true epilogue section.

	* data/skeletons/glr.c, data/skeletons/lalr1.d, data/skeletons/lalr1.java,
	* data/skeletons/yacc.c: Implement support for %code epilogue.
	Remove useless comments.
	* tests/calc.at, tests/java.at: Simplify.

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

	examples: bistromathic: fix location tracking
	* examples/c/bistromathic/scan.l (LOCATION_STEP): New.
	Use to properly ignore blanks.
	* examples/c/bistromathic/bistromathic.test: Check that case.

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

	doc: document new features of parse.error
	* doc/bison.texi (Error Reporting): Rename as...
	(Error Reporting Function): this.
	Adjust dependencies.
	Make it a subsection of this...
	(Error Reporting): new section.
	(Syntax Error Reporting Function): New.
	(parse.error): Update description.

2020-01-29  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: add support for parse.error=custom
	* data/skeletons/glr.c (yyreportSyntaxError): Call the user's
	yyreport_syntax_error in custom mode.
	* tests/calc.at: Check it.

2020-01-29  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: add support for parse.error=detailed
	* data/skeletons/glr.c (yystrlen, yysymbol_name): New.
	Implement parse.error detailed.
	* tests/calc.at: Check it.

2020-01-29  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: introduce yyexpected_tokens and yysyntax_error_arguments
	Modeled after what was done in yacc.c, yet somewhat different since
	yyGLRStack play the role of the full yyparse_context_t.  It will
	probably be defined as a alias, to make interfaces compatible.

	LAC is not supported here.  And is somewhat tricky.

	* data/skeletons/glr.c (yyexpected_tokens, yysyntax_error_arguments): New.

2020-01-29  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: move code around
	* data/skeletons/glr.c: Move the handling of error messages after the
	definition of types.  Especially after yyGLRStack, which we will need
	in forthcoming patches.
	Simplify: yyGLRStack is defined at this point.

2020-01-29  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: rename yyStateNum as yy_state_t
	* data/skeletons/glr.c: here.
	For consistency with yacc.c.

2020-01-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: fix misleading indentation
	* data/skeletons/yacc.c: here.

2020-01-27  Akim Demaille  <akim.demaille@gmail.com>

	doc: simplify uses of @ref
	The PDF output is more consistent: some nodes were not pointed to with
	their title.  The HTML output becomes "see section Foo" instead of
	"see Foo", but this should be addressed in the next Texinfo release.
	Info output is simplified, as it uses only the node name and not its
	title.  But it's considered easier to read this way.
	See https://lists.gnu.org/r/help-texinfo/2020-01/msg00031.html.

	* doc/bison.texi: Set @xrefautomaticsectiontitle on.
	Simplify all uses of ref.

2020-01-27  Akim Demaille  <akim.demaille@gmail.com>

	examples: be more robust to spaces in paths
	Reported by Nikki Valen.
	https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html

	* examples/test ($prog): Remove, replaced by...
	(prog): This new function, which pays attention to quoting shell
	variables.

2020-01-27  Akim Demaille  <akim.demaille@gmail.com>

	doc: don't pretend trigonometry is part of arithmetics
	* doc/bison.texi (arith_funs): Rename as...
	(funs): this.

2020-01-27  Akim Demaille  <akim.demaille@gmail.com>

	doc: update Doxygen template
	* Doxyfile.in: Run doxygen -u on it.

2020-01-27  Akim Demaille  <akim.demaille@gmail.com>

	examples: add a complete example with all the bells and whistles
	* examples/c/bistromathic/Makefile,
	* examples/c/bistromathic/README.md,
	* examples/c/bistromathic/bistromathic.test,
	* examples/c/bistromathic/local.mk,
	* examples/c/bistromathic/parse.y,
	* examples/c/bistromathic/scan.l:
	New.

	* Makefile.am (AM_YFLAGS_WITH_LINES): Add -Wdangling-alias.
	* examples/test: Make failure errors easier to read.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: add an example of a push parser
	Add an example to demonstrate the use of push parser.  I'm pleasantly
	surprised: parse.error=detailed works like a charm with push parsers.

	* examples/c/local.mk, examples/c/pushcalc/Makefile
	* examples/c/pushcalc/README.md, examples/c/pushcalc/calc.test,
	* examples/c/pushcalc/calc.y, examples/c/pushcalc/local.mk:
	New.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: more tests
	* examples/c/mfcalc/mfcalc.test: here.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	examples: clean up
	* examples/c/calc/calc.y: Restore to its original state, with
	parse.error=detailed instead of parse.error=custom (this example
	should be simple).
	* examples/c/calc/calc.test: Check syntax errors.
	* examples/c/lexcalc/parse.y: Add comments.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: check custom error messages and push parsers
	* tests/local.at (AT_LAC_IF): New.
	* tests/calc.at: And also check the suppot for LAC.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* data/skeletons/lalr1.java: here.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	todo: update

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	bison: pretend to 3.6 already
	* src/parse-gram.y: here.

2020-01-26  Akim Demaille  <akim.demaille@gmail.com>

	git: update ignores
	* lib/.gitignore: here.

2020-01-23  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: modernize bison's syntax errors
	We used to display the unexpected token first:

	    $ bison foo.y
	    foo.y:1.8-13: error: syntax error, unexpected %token, expecting character literal or identifier or <tag>
	        1 | %token %token
	          |        ^~~~~~

	GCC uses a different format:

	    $ gcc-mp-9 foo.c
	    foo.c:1:5: error: expected identifier or '(' before ')' token
	        1 | int()()()
	          |     ^

	and so does Clang:

	    $ clang-mp-9.0 foo.c
	    foo.c:1:5: error: expected identifier or '('
	    int()()()
	        ^
	    1 error generated.

	They display the unexpected token last (or not at all).  Also, they
	don't waste width with "syntax error".  Let's try that.  It gives, for
	the same example as above:

	    $ bison foo.y
	    foo.y:1.8-13: error: expected character literal or identifier or <tag> before %token
	        1 | %token %token
	          |        ^~~~~~

	* src/complain.h, src/complain.c (syntax_error): New.
	* src/parse-gram.y (yyreport_syntax_error): Use it.

2020-01-23  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: report syntax errors in color
	* src/parse-gram.y (parse.error): Set to 'custom'.
	(yyreport_syntax_error): New.
	* data/bison-default.css (.expected, .unexpected): New.
	* tests/diagnostics.at: Adjust.

2020-01-23  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-23  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: translate bison's own tokens
	As a test case, support translations in Bison itself.

	* src/parse-gram.y: Mark the translatable tokens.
	While at it, use clearer names.
	* tests/input.at: Adjust expectations.

2020-01-22  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: handle -fno-caret in the called functions
	Don't force callers of location_caret to have to deal with flags that
	disable it.

	* src/location.h, src/location.c (location_caret)
	(location_caret_suggestion): Early return if disabled.
	* src/complain.c: Simplify.

2020-01-22  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: fixes
	* data/skeletons/yacc.c: Avoid warnings about unused functions.
	Fix typo.

2020-01-21  Akim Demaille  <akim.demaille@gmail.com>

	examples: be more robust to spaces in paths
	Reported by Nikki Valen.
	https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html

	* examples/test ($prog): Remove, replaced by...
	(prog): This new function, which pays attention to quoting shell
	variables.

2020-01-21  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	larlr1.cc: Reject unsupported values for parse.lac
	Just as the yacc.c skeleton, the lalr1.cc skeleton should reject
	invalid values for parse.lac.

	* data/skeletons/lalr1.cc: check validity of parse.lac
	* tests/input.at: new test cases

2020-01-21  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	larlr1.cc: Reject unsupported values for parse.lac
	Just as the yacc.c skeleton, the lalr1.cc skeleton should reject
	invalid values for parse.lac.

	* data/skeletons/lalr1.cc: check validity of parse.lac
	* tests/input.at: new test cases

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	parsers: issue tname with i18n markup
	Some users would like to avoid having to "parse" the *.y file to find
	the strings to translate.  Let's issue the translatable tokens with N_
	to allow "parsing" the generated parsers instead.

	See
	https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00015.html

	* src/output.c (prepare_symbol_names): Issue symbol_names with N_()
	markup.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	tests: check token internationalization
	* tests/calc.at: Check it.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	parsers: support translatable token aliases
	In addition to

	    %token NUM "number"

	accept

	    %token NUM _("number")

	in which case the token will be translated in error messages.
	Do not use _() in the output if there are no translatable tokens.

	* src/symtab.h, src/symtab.c (symbol): Add a 'translatable' member.
	* src/parse-gram.y (TSTRING): New token.
	(string_as_id.opt): Replace with...
	(alias): this.
	Use it.
	* src/scan-gram.l (SC_ESCAPED_TSTRING): New start conditions, to match
	TSTRINGs.
	* src/output.c (prepare_symbols): Define b4_translatable if there are
	translatable strings.

	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
	* data/skeletons/yacc.c (yytnamerr): Receive b4_translatable, and use it.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	tests: check that detailed error messages preserve UTF-8 characters
	* tests/regression.at: here.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: escape trigraphs in detailed parse.error
	* src/output.c (escape_trigraphs, xescape_trigraphs): New.
	(prepare_symbol_names): Use it.
	* tests/regression.at: Check the handling of trigraphs with
	parse.error = detailed.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	bison: use detailed error messages
	* #: .

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: tests: check detailed error messages
	* tests/local.at (AT_ERROR_DETAILED_IF): New.
	(AT_ERROR_SIMPLE_IF): Adjust.
	* tests/calc.at: Check parse.error=detailed.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: add support for parse.error detailed
	"detailed" error messages are almost like "verbose", except that we
	don't double escape them, they don't get inner quotes, we don't use
	yytnamerr, and we hide the table.

	"custom" is exposed with the "detailed" tokens, not the "verbose"
	ones: they are not double-quoted.

	Because there's a risk that some people use yytname even without
	"verbose", let's keep yytname (instead of yys_name) in "simple"
	parse.error.

	* src/output.c (prepare_symbol_names): Be ready to output symbol names
	unquoted.
	(prepare_symbol_names): Output both the old tname table, and the new
	symbol_names one.
	* data/skeletons/bison.m4: Accept 'detailed'.
	* data/skeletons/yacc.c: When parse.error is 'detailed', don't emit
	yytname and yytnamerr, just yysymbol_name with the table inside.
	* tests/calc.at: Adjust.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	c: use yysymbol_name in traces
	Only parse.error verbose and simple will get the original yytname: the
	other options will rely on a different table.  So let's move on top of
	the yysymbol_name function.

	* data/skeletons/c.m4 (yy_symbol_print): Use yysymbol_name.
	* data/skeletons/glr.c (yytokenName): Rename as...
	(yysymbol_name): this.
	The change of naming scheme is unfortunate, but it's definitely glr.c
	which is "wrong".

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: move some functions after the definition of types
	Currently yy_symbol_print is defined before yytokenName, although it
	should use it instead of read yytname directly.  Move blocks around to
	avoid this.

	* data/skeletons/glr.c (yy_symbol_print): Move its definition after
	that of yytokenName.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	Merge branch 'maint'
	* maint:
	  maint: post-release administrivia
	  version 3.5.1
	  news: update
	  CI: use ICC again
	  warnings: pacify ICC in lalr1.cc
	  test: report.at: avoid tiny new failure
	  git: update ignores

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

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5.1
	* NEWS: Record release date.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	CI: use ICC again
	See https://github.com/nemequ/icc-travis/issues/15.
	Thanks to Jeff Hammond and Evan Nemerson for their help.

	* configure.ac (warn_common): Disable dubious warnings.
	* .travis.yml: Use ICC again.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	warnings: pacify ICC in lalr1.cc
	See 139d0655947c87f90af08718618feaaca0e558d7.

	* data/skeletons/yacc.c: If I might be a char, write a[+I] instead of
	a[I], so that ICC does not complain.

2020-01-19  Jim Meyering  <meyering@fb.com>

	test: report.at: avoid tiny new failure
	Be robust to newer versions of Autoconf where the package URL defaults
	to https instead of http.

	* configure.ac (AC_INIT): Use https.
	* tests/report.at: Adjust expected output s/http/https/
	to match updated URL.

2020-01-19  Akim Demaille  <akim.demaille@gmail.com>

	git: update ignores

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: portability to G++ 4.8
	Currently we get warnings with GCC 4.8 when running the
	maintainer-check-g++ tests:

	    143. skeletons.at:85: testing Installed skeleton file names ...
	    ../../tests/skeletons.at:120: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret --skeleton=yacc.c -o input-cmd-line.c input-cmd-line.y
	    ../../tests/skeletons.at:121: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o input-cmd-line input-cmd-line.c $LIBS
	    stderr:
	    input-cmd-line.c: In function 'int yysyntax_error(long int*, char**, const yyparse_context_t*)':
	    input-cmd-line.c:977:52: error: conversion to 'int' from 'long int' may alter its value [-Werror=conversion]
	                                       YYSIZEOF (yyarg) / YYSIZEOF (*yyarg));
	                                                        ^
	    cc1plus: all warnings being treated as errors
	    stdout:
	    ../../tests/skeletons.at:121: exit code was 1, expected 0

	and

	    429. calc.at:823: testing Calculator parse.error=custom %locations api.prefix={calc}  ...
	    ../../tests/calc.at:823: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y
	    ../../tests/calc.at:823: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.c $LIBS
	    stderr:
	    calc.y: In function 'int yyreport_syntax_error(const yyparse_context_t*)':
	    calc.y:157:58: error: conversion to 'int' from 'long unsigned int' may alter its value [-Werror=conversion]
	       int n = yysyntax_error_arguments (ctx, arg, sizeof arg / sizeof *arg);
	                                                              ^
	    cc1plus: all warnings being treated as errors
	    stdout:
	    ../../tests/calc.at:823: exit code was 1, expected 0

	We could use a cast to avoid the warning, but it becomes too
	cluttered.  We can also use YYPTRDIFF_T, but that forces the user to
	use YYPTRDIFF_T too, although this is an array of tokens, which is
	limited by YYNTOKENS, an int.  So let's completely avoid this warning.

	* data/skeletons/yacc.c, tests/local.at (yyreport_syntax_error): Avoid
	relying on sizeof to compute the array capacity.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: pass the parse-params to yyreport_syntax_error
	Enhance the calculator tests: show that passing arguments to yyerror
	works.

	* tests/calc.at: Add a new parse-param, nerrs, which counts the number
	of syntax errors in a run.
	* tests/local.at: Adjust to handle the new 'nerrs' argument, when
	present.

	The custom error reporting function show sees the user's additional
	arguments.  Let's experiment with passing them as arguments to
	yyreport_syntax_error, but maybe storing them in the context would be
	a bettter alternative.

	* data/skeletons/yacc.c (yyreport_syntax_error): Handle the
	parse-params.
	* tests/calc.at, tests/local.at: Adjust.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	tests: a clearer test for parse-params
	Currently the parse-params are tested in calc.at by checking that the
	global variable and the parse-params have the same value.  But it does
	not check that value, that could remain being 0 just as well.

	* tests/calc.at: Don't define the params when they are not used.
	Check the final value of result and count.
	Also, do count the number of line of logs.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: check custom error messages with parse-params
	* tests/calc.at: Check with prefix and parse-params.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: let custom error messages see the location
	* data/skeletons/yacc.c (yyparse_context_t): Add yylloc when
	applicable.
	(yyparse_context_location): New.
	* tests/local.at (AT_YYERROR_DEFINE(c)): Handle the location.
	* tests/calc.at: Check it.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: isolate yyexpected_tokens
	Provide users with a means to query for the currently allowed tokens.
	Could be used for autocompletion for instance.

	* data/skeletons/yacc.c (yyexpected_tokens): New, extracted from
	yysyntax_error_arguments.
	* examples/c/calc/calc.y (PRINT_EXPECTED_TOKENS): New.
	Use it.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	tests: compute verbose error messages from the custom ones
	We use a different format to check parse.error custom.  Compute the
	"verbose" one from it instead of forcing the test author to provide
	the various formats of expected error messages.

	* tests/calc.at (_AT_CHECK_CALC_ERROR): Handle this transformation
	when needed.
	Simplify callers.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: check custom error messages
	* tests/local.at (AT_ERROR_CUSTOM_IF, AT_ERROR_VERBOSE_IF)
	(AT_ERROR_SIMPLE_IF): New.
	(AT_YYERROR_DEFINE(c)): Generate yyreport_syntax_error.
	* tests/calc.at (_AT_CHECK_CALC_ERROR): Accept custom error messages
	as additional test case.
	Use it.
	Add a new test case for %define parse.error custom.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: add custom error message generation
	When parse.error is custom, let users define a yyreport_syntax_error
	function, and use it.

	* data/skeletons/bison.m4 (b4_error_verbose_if): Accept 'custom'.
	* data/skeletons/yacc.c: Implement it.
	* examples/c/calc/calc.y: Experiment with it.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: style: avoid macros
	* data/skeletons/yacc.c (YYSYNTAX_ERROR): Remove, the call is now
	sufficiently small so that we can afford to duplicate it.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: store token numbers, not token strings
	That allows users to cover more cases, such as easily filtering some
	arguments they don't want to expose.  But they now have to call
	yysymbol_name explicitly.

	* data/skeletons/yacc.c (yysyntax_error_arguments, yysyntax_error):
	Deal with symbol numbers instead of symbol names.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: extract yyerror_message_arguments
	Isolate a function that returns the list of expected and unexpected
	tokens.  It will be exposed to users willing to customize their error
	messages.

	* data/skeletons/yacc.c (yyparse_context_t): New.
	(yyerror_message_arguments): New, extracted from yysyntax_error.

2020-01-17  Akim Demaille  <akim.demaille@gmail.com>

	regen

2020-01-15  Akim Demaille  <akim.demaille@gmail.com>

	tests: make AT_PARSE_PARAMS usable at the end of arguments
	When not empty, AT_PARSE_PARAMS was guaranteed to end with a comma.
	Remove the trailing comma, so that we can use AT_PARSE_PARAMS at the
	end of the arguments, not only at the beginning.

	* tests/local.at: here.
	Unfortunately, m4_append relies on the macro not being defined whereas
	we would have preferred it to check for emptiness.  So use
	m4_define/m4_undefine instead of m4_pushdef/m4_popdef.

2020-01-15  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS pairs
	* tests/glr-regression.at, tests/java.at, tests/javapush.at:
	Close properly what is opened.
	Do not nest.

2020-01-15  Akim Demaille  <akim.demaille@gmail.com>

	d, java: use traces more alike that of C
	Same order, same places, same content.

	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: here.

2020-01-15  Akim Demaille  <akim.demaille@gmail.com>

	c++: report the stack at the same places as in C
	Let's have C be the reference, and match it elsewhere.  Maybe C is too
	verbose and some adjustments are needed, but then that would be done
	in another batch of patches.

	* data/skeletons/lalr1.cc: Print the stack once we popped after
	YYERROR, and before emptying the stack at the end of parsing.

2020-01-15  Akim Demaille  <akim.demaille@gmail.com>

	c++: display the stack in the same order as in C
	Currently the C and C++ parse traces differ in the order in which the
	stack is displayed: bottom up in C, top down in C++.  Let's stick to
	the C order.

	* data/skeletons/stack.hh (stack::iterator, stack::const_iterator)
	(begin, end): Be forward, not backward.

2020-01-15  Akim Demaille  <akim.demaille@gmail.com>

	style: avoid redundancy in the tests
	* tests/local.at (m4_rpatsubst): New.
	Use it to handle %parse-params.
	* tests/calc.at: Use %parse-params with several arguments.

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

	yacc.c: comment changes
	In particular, import Adrian Vogelsgesang's comments about LAC from
	lalr1.cc.

	* data/skeletons/yacc.c: here.

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

	yacc.c: style: double-quote the argument of b4_percent_define_get
	* data/skeletons/yacc.c: Here, for consistency.

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

	yacc.c: introduce yysymbol_name
	Provide the users with a public API to get the name of the tokens.  A
	thin wrapper around yytname.

	* data/skeletons/yacc.c (yysymbol_name): New.
	Use it.

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

	CI: check on PPC64le, ARM64 and s390x
	I was hoping it would help us catch warnings when char is
	unsigned (see 78bb152a63f711af65364881c434af4c198e1ee0), but it does
	not seem to help.  It's a pity that the compiler is the same all over
	the place, I would have preferred testing others.

	* .travis.yml: here.

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

	todo: update

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

	Merge branch 'maint' into HEAD
	* maint:
	  gnulib: update
	  lalr1.cc: avoid static_cast
	  glr.c: add missing cast
	  regen
	  package: bump copyrights to 2020
	  gitignore: update

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

	gnulib: update

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

	lalr1.cc: avoid static_cast
	Reported by donmac703.
	Fixes https://github.com/akimd/bison/issues/20.

	* data/skeletons/lalr1.cc: here.

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

	glr.c: add missing cast
	Reported by psjo.
	Fixes https://github.com/akimd/bison/issues/19.

	* data/skeletons/glr.c (yyprocessOneStack): Here.

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

	regen

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

	package: bump copyrights to 2020
	Run 'make update-copyright'.

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

	gitignore: update

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

	regen

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

	yacc.c: simplify use of YYDPRINTF
	* data/skeletons/yacc.c (YYDPRINTF): Expand to no-op (instead of
	nothing) when disabled.
	Simplify callers.

2020-01-05  Akim Demaille  <akim.demaille@gmail.com>

	package: bump copyrights to 2020
	Run 'make update-copyright'.

2020-01-05  Akim Demaille  <akim.demaille@gmail.com>

	gitignore: update

2020-01-04  Akim Demaille  <akim.demaille@gmail.com>

	doc: YYERROR_VERBOSE is no longer supported
	* doc/bison.texi (Table of Symbols): Remove last reference to it.
	* NEWS: Be clear about that.

2020-01-04  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: no longer support YYERROR_VERBOSE
	* data/skeletons/glr.c: Rather, dispatch directly on parse.error's
	value.

2020-01-04  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: no longer support YYERROR_VERBOSE
	Supporting YYERROR_VERBOSE via cpp is a nuisance: m4 is in charge of
	handling alternatives.  When adding more options for %define
	parse.error, supporting both CPP and M4 is too complex.  Anyway,
	YYERROR_VERBOSE was deprecated long ago.

	* data/skeletons/yacc.c: Use m4 only to handle verbose/simple error
	messages.

2020-01-03  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c: avoid negations
	* data/skeletons/yacc.c (yyerrlab): here.

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

	glr.c: clarify yyreportSyntaxError
	See the previous commit.

	* data/skeletons/glr.c (yyreportSyntaxError): First compute the
	arguments of the error message, _then_ th error message size.

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

	yacc: restructure and fix yysyntax_error
	I would like to offer new ways to build the error message.  As a first
	step, let's simplify yysyntax_error whose first loop does two things
	at the same time: (i) collect the tokens to be reported in the error
	message, and (ii) accumulate their sizes and possibly return
	"overflow".  Let's pull (ii) in a second step.

	Then test 525 (regression.at:1193: parse.error=verbose overflow)
	failed.  This test checks that we correctly report "memory overflow"
	when the error message is too large.  However the test is mistaken: it
	is triggered in a place where there are five (large) expected tokens,
	so anyway we would not display them, so there is no (memory) overflow
	here!  Transform this test to (i) check that indeed there is no
	overflow, and (ii) create syntax_error3 which does check the intended
	behavior, but with four expected tokens.

	* data/skeletons/yacc.c (yysyntax_error): First compute the list of
	arguments, then compute yysize.
	* tests/regression.at (parse.error=verbose overflow): Enhance and fix.

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

	tests: also check -Wchar-subscripts
	GCC's -Wchar-subscripts may report issues on platforms where char is
	unsigned.  Unfortunately the current CI does not reproduce the
	problem.  But that would allow contributors to report issues if the
	warning appears somewhere.

	See 139d0655947c87f90af08718618feaaca0e558d7.
	Problem reported by Andy Fiddaman in:
	https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html

	* configure.ac (warn_common): Add -Wchar-subscripts.

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

	CI: do not specify the language
	When we give travis the langugage, it overrides our envvars.  Instead
	of the MATRIX_EVAL trick, just stop specifying the language.

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

	CI: remove ICC support, we can no longer use it
	https://github.com/nemequ/icc-travis/issues/15

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

	doc: clean up the description of YYDEBUG
	* doc/bison.texi: Make it clearer that %define parse.trace is the
	preferred options.
	Fix a typo about api.prefix.

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

	glr.cc: avoid compiler warnings
	    381. types.at:366: testing glr.cc api.value.type={double} ...
	    test.cc:207:57: error: "__clang_major__" is not defined, evaluates to 0 [-Werror=undef]
	      207 | #if defined __APPLE__ && YY_CPLUSPLUS < 201103L && 4 <= __clang_major__
	          |                                                         ^~~~~~~~~~~~~~~

	* data/skeletons/glr.cc: Check __clang_major__ before using it.

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

	warnings: pacify ‘gcc -Wchar-subscripts’ in yacc.c
	Problem reported by Andy Fiddaman in:
	https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html
	* data/skeletons/yacc.c (yy_reduce_print, yy_lac, yysyntax_error)
	(yyreturn): If I might be a char, write a[+I] instead of a[I],
	so that ‘gcc -Wchar-subscripts’ does not complain.

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

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

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

	tests: don't fail if seq is no available
	As is the case on Solaris.
	Reported by Dennis Clarke.
	https://lists.gnu.org/archive/html/bug-bison/2019-12/msg00011.html

	* examples/c/reccalc/reccalc.test: Skip if there is no seq.

2019-12-11  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-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.
