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

	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.

