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.
