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