"Fossies" - the Fresh Open Source Software Archive

Member "bison-3.7.3/ChangeLog" (13 Oct 2020, 1019473 Bytes) of package /linux/misc/bison-3.7.3.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "ChangeLog": 3.7.2_vs_3.7.3.

    1 2020-10-13  Akim Demaille  <akim.demaille@gmail.com>
    2 
    3 	version 3.7.3
    4 	* NEWS: Record release date.
    5 
    6 2020-10-13  Akim Demaille  <akim.demaille@gmail.com>
    7 
    8 	build: don't link bison against libreadline
    9 	Reported by Paul Smith <psmith@gnu.org>.
   10 	https://lists.gnu.org/r/bug-bison/2020-10/msg00001.html
   11 
   12 	* src/local.mk (src_bison_LDADD): here.
   13 
   14 2020-10-13  Akim Demaille  <akim.demaille@gmail.com>
   15 
   16 	gnulib: update
   17 
   18 2020-09-27  Akim Demaille  <akim.demaille@gmail.com>
   19 
   20 	glr.cc: fix: use symbol_name
   21 	* data/skeletons/glr.cc: here.
   22 
   23 2020-09-06  Akim Demaille  <akim.demaille@gmail.com>
   24 
   25 	build: fix a concurrent build issue in examples
   26 	Reported by Thomas Deutschmann <whissi@gentoo.org>.
   27 	https://lists.gnu.org/r/bug-bison/2020-09/msg00010.html
   28 
   29 	* examples/c/lexcalc/local.mk: scan.o depends on parse.[ch].
   30 
   31 2020-09-05  Akim Demaille  <akim.demaille@gmail.com>
   32 
   33 	maint: post-release administrivia
   34 	* NEWS: Add header line for next release.
   35 	* .prev-version: Record previous version.
   36 	* cfg.mk (old_NEWS_hash): Auto-update.
   37 
   38 2020-09-05  Akim Demaille  <akim.demaille@gmail.com>
   39 
   40 	version 3.7.2
   41 	* NEWS: Record release date.
   42 
   43 2020-09-05  Akim Demaille  <akim.demaille@gmail.com>
   44 
   45 	build: disable syntax-check warning
   46 	error_message_uppercase
   47 	etc/bench.pl.in-419-static int yylex (@{[is_pure (@directive) ? "YYSTYPE *yylvalp" : "void"]});
   48 
   49 	* cfg.mk: here.
   50 
   51 2020-09-05  Akim Demaille  <akim.demaille@gmail.com>
   52 
   53 	gnulib: update
   54 
   55 2020-09-05  Akim Demaille  <akim.demaille@gmail.com>
   56 
   57 	build: fix incorrect dependencies
   58 	Commit af000bab111768a04021bf5ffa4bbe91d44e231c ("doc: work around
   59 	Texinfo 6.7 bug"), published in 3.4.91, added a dependency on the
   60 	"all" target.
   61 
   62 	This is a super bad idea, since "make all" will run this
   63 	target *before* "all", which builds bison.  It turns out that this new
   64 	dependency actually needed bison to be built.  So all the regular
   65 	process (i) build $(BUILT_SOURCES) and then (ii) build bison, was
   66 	wrecked since some of the $(BUILT_SOURCES) depended on bison...
   67 
   68 	It was "easy" to see in the logs of "make V=1" because we were
   69 	building bison files (such as src/files.o) *before* displaying the
   70 	banner for "all-recursive".  With this fix, we finally get again the
   71 	proper sequence:
   72 
   73 	    rm -f examples/c/reccalc/scan.stamp examples/c/reccalc/scan.stamp.tmp
   74 	    /opt/local/libexec/gnubin/mkdir -p examples/c/reccalc
   75 	    touch examples/c/reccalc/scan.stamp.tmp
   76 	    flex   -oexamples/c/reccalc/scan.c --header=examples/c/reccalc/scan.h ./examples/c/reccalc/scan.l
   77 	    mv examples/c/reccalc/scan.stamp.tmp examples/c/reccalc/scan.stamp
   78 	    rm -f lib/fcntl.h-t lib/fcntl.h && \
   79 	    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
   80 	      ...
   81 	    } > lib/fcntl.h-t && \
   82 	    mv lib/fcntl.h-t lib/fcntl.h
   83 	    ...
   84 	    mv -f lib/alloca.h-t lib/alloca.h
   85 	    make  all-recursive
   86 
   87 	Reported by Mingli Yu <mingli.yu@windriver.com>.
   88 	https://github.com/akimd/bison/issues/31
   89 	https://lists.gnu.org/r/bison-patches/2020-05/msg00055.html
   90 
   91 	Reported by Claudio Calvelli <bugb@w42.org>.
   92 	https://lists.gnu.org/r/bug-bison/2020-09/msg00001.html
   93 	https://bugs.gentoo.org/716516
   94 
   95 	* doc/local.mk (all): Rename as...
   96 	(all-local): this.
   97 	So that we don't compete with BUILT_SOURCES.
   98 
   99 2020-09-02  Akim Demaille  <akim.demaille@gmail.com>
  100 
  101 	doc: updates
  102 	* NEWS, TODO: here.
  103 
  104 2020-08-30  Akim Demaille  <akim.demaille@gmail.com>
  105 
  106 	gnulib: update
  107 
  108 2020-08-30  Akim Demaille  <akim.demaille@gmail.com>
  109 
  110 	tests: beware of sed portability issues
  111 	Reported by David Laxer <davidl@softintel.com>.
  112 	https://lists.gnu.org/r/bug-bison/2020-08/msg00027.html
  113 
  114 	* tests/output.at: Don't use + with sed.
  115 	While at it, fix a quotation problem hidden by the use of '#'.
  116 
  117 2020-08-30  Akim Demaille  <akim.demaille@gmail.com>
  118 
  119 	c: always use YYMALLOC/YYFREE
  120 	Reported by Kovalex <kovalex.pro@gmail.com>.
  121 	https://lists.gnu.org/r/bug-bison/2020-08/msg00015.html
  122 
  123 	* data/skeletons/yacc.c: Don't make direct calls to malloc/free.
  124 	* tests/calc.at: Check it.
  125 
  126 2020-08-30  Akim Demaille  <akim.demaille@gmail.com>
  127 
  128 	build: beware of POSIX mode
  129 	Reported by Dennis Clarke.
  130 	https://lists.gnu.org/r/bug-bison/2020-08/msg00013.html
  131 
  132 	* examples/d/local.mk, examples/java/calc/local.mk,
  133 	* examples/java/simple/local.mk: Pass bison's options before its
  134 	argument, in case we're in POSIX mode.
  135 
  136 2020-08-30  Akim Demaille  <akim.demaille@gmail.com>
  137 
  138 	doc: history of api.prefix
  139 	Reported by Matthew Fernandez <matthew.fernandez@gmail.com>.
  140 	https://lists.gnu.org/r/help-bison/2020-08/msg00015.html
  141 
  142 	* doc/bison.texi (api.prefix): We move to {} in 3.0.
  143 
  144 2020-08-11  Akim Demaille  <akim.demaille@gmail.com>
  145 
  146 	CI: intel moved the script for ICC
  147 	* .travis.yml: Adjust.
  148 
  149 2020-08-08  Akim Demaille  <akim.demaille@gmail.com>
  150 
  151 	fix: unterminated \-escape
  152 	An assertion failed when the last character is a '\' and we're in a
  153 	character or a string.
  154 	Reported by Agency for Defense Development.
  155 	https://lists.gnu.org/r/bug-bison/2020-08/msg00009.html
  156 
  157 	* src/scan-gram.l: Catch unterminated escapes.
  158 	* tests/input.at (Unexpected end of file): New.
  159 
  160 2020-08-07  Akim Demaille  <akim.demaille@gmail.com>
  161 
  162 	fix: crash when redefining the EOF token
  163 	Reported by Agency for Defense Development.
  164 	https://lists.gnu.org/r/bug-bison/2020-08/msg00008.html
  165 
  166 	On an empty such as
  167 
  168 	    %token FOO
  169 	           BAR
  170 	           FOO 0
  171 	    %%
  172 	    input: %empty
  173 
  174 	we crash because when we find FOO 0, we decrement ntokens (since FOO
  175 	was discovered to be EOF, which is already known to be a token, so we
  176 	increment ntokens for it, and need to cancel this).  This "works well"
  177 	when EOF is properly defined in one go, but here it is first defined
  178 	and later only assign token code 0.  In the meanwhile BAR was given
  179 	the token number that we just decremented.
  180 
  181 	To fix this, assign symbol numbers after parsing, not during parsing,
  182 	so that we also saw all the explicit token codes.  To maintain the
  183 	current numbers (I'd like to keep no difference in the output, not
  184 	just equivalence), we need to make sure the symbols are numbered in
  185 	the same order: that of appearance in the source file.  So we need the
  186 	locations to be correct, which was almost the case, except for nterms
  187 	that appeared several times as LHS (i.e., several times as "foo:
  188 	...").  Fixing the use of location_of_lhs sufficed (it appears it was
  189 	intended for this use, but its implementation was unfinished: it was
  190 	always set to "false" only).
  191 
  192 	* src/symtab.c (symbol_location_as_lhs_set): Update location_of_lhs.
  193 	(symbol_code_set): Remove broken hack that decremented ntokens.
  194 	(symbol_class_set, dummy_symbol_get): Don't set number, ntokens and
  195 	nnterms.
  196 	(symbol_check_defined): Do it.
  197 	(symbols): Don't count nsyms here.
  198 	Actually, don't count nsyms at all: let it be done in...
  199 	* src/reader.c (check_and_convert_grammar): here.  Define nsyms from
  200 	ntokens and nnterms after parsing.
  201 	* tests/input.at (EOF redeclared): New.
  202 
  203 	* examples/c/bistromathic/bistromathic.test: Adjust the traces: in
  204 	"%nterm <double> exp %% input: ...", exp used to be numbered before
  205 	input.
  206 
  207 2020-08-07  Akim Demaille  <akim.demaille@gmail.com>
  208 
  209 	style: fix missing space before paren
  210 	* cfg.mk (_space_before_paren_exempt): Be less laxist.
  211 	* src/output.c, src/reader.c: Fix space before paren issues.
  212 	Pacify the warnings where applicable.
  213 
  214 2020-08-07  Akim Demaille  <akim.demaille@gmail.com>
  215 
  216 	style: fix comments and more debug trace
  217 	* src/location.c, src/symtab.h, src/symtab.c: here.
  218 
  219 2020-08-07  Akim Demaille  <akim.demaille@gmail.com>
  220 
  221 	style: more uses of const
  222 	* src/symtab.c: here.
  223 
  224 2020-08-07  Akim Demaille  <akim.demaille@gmail.com>
  225 
  226 	bench: fix support for pure parser
  227 	* etc/bench.pl.in (is_pure): New.
  228 	(generate_grammar_calc): Use code provides where needed.
  229 	Use is_pure to call yylex properly.
  230 	Coding style fixes.
  231 
  232 2020-08-03  Akim Demaille  <akim.demaille@gmail.com>
  233 
  234 	portability: multiple typedefs
  235 	Older versions of GCC (4.1.2 here) don't like repeated typedefs.
  236 
  237 	      CC       src/bison-parse-simulation.o
  238 	    src/parse-simulation.c:61: error: redefinition of typedef 'parse_state'
  239 	    src/parse-simulation.h:74: error: previous declaration of 'parse_state' was here
  240 	    make: *** [Makefile:7876: src/bison-parse-simulation.o] Error 1
  241 
  242 	Reported by Nelson H. F. Beebe.
  243 
  244 	* src/parse-simulation.c (parse_state): Don't typedef,
  245 	parse-simulation.h did it already.
  246 
  247 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  248 
  249 	style: revert "avoid warnings with GCC 4.6"
  250 	This reverts commit d0bec3175ff5cf6582ffbf584b73ea6aaea838d0 (which
  251 	should have read "We have a clash...", not "With have a clash...").
  252 	Now that `max()` was renamed `max_int()`, we can use `max` again, as
  253 	elsewhere in the code.
  254 
  255 	* src/counterexample.c (visited_hasher): Alpha reconversion.
  256 
  257 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  258 
  259 	maint: post-release administrivia
  260 	* NEWS: Add header line for next release.
  261 	* .prev-version: Record previous version.
  262 	* cfg.mk (old_NEWS_hash): Auto-update.
  263 
  264 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  265 
  266 	version 3.7.1
  267 	* NEWS: Record release date.
  268 
  269 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  270 
  271 	portability: we use termios.h and sys/ioctl.h
  272 	Reported by Maarten De Braekeleer.
  273 	https://lists.gnu.org/r/bison-patches/2020-07/msg00079.html
  274 
  275 	* bootstrap.conf (gnulib_modules): Add termios and sys_ioctl.
  276 
  277 2020-08-02  Maarten De Braekeleer  <maarten.debraekeleer@gmail.com>
  278 
  279 	portability: rename accept to acceptsymbol because of MSVC
  280 	MSVC already defines this symbol.
  281 
  282 	* src/symtab.h, src/symtab.c (accept): Rename as...
  283 	(acceptsymbol): this.
  284 	Adjust dependencies.
  285 
  286 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  287 
  288 	regen
  289 
  290 2020-08-02  Maarten De Braekeleer  <maarten.debraekeleer@gmail.com>
  291 
  292 	portability: use CHAR_LITERAL instead of CHAR because MSVC defines CHAR
  293 	* src/parse-gram.y, src/scan-gram.l: here.
  294 
  295 2020-08-02  Maarten De Braekeleer  <maarten.debraekeleer@gmail.com>
  296 
  297 	portability: use INT_LITERAL instead of INT because MSVC defines INT
  298 	It is defined as a typedef, not a macro.
  299 	https://lists.gnu.org/r/bison-patches/2020-08/msg00001.html
  300 
  301 	* src/parse-gram.y, src/scan-gram.l: here.
  302 
  303 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  304 
  305 	portability: beware of max () with MSVC
  306 	Reported by Maarten De Braekeleer.
  307 	https://lists.gnu.org/r/bison-patches/2020-07/msg00080.html
  308 
  309 	We don't want to use gnulib's min and max macros, since we use
  310 	function calls in min/max arguments.
  311 
  312 	* src/location.c (max_int, min_int): Move to...
  313 	* src/system.h: here.
  314 	* src/counterexample.c, src/derivation.c: Use max_int instead of max.
  315 
  316 2020-08-02  Akim Demaille  <akim.demaille@gmail.com>
  317 
  318 	libtextstyle: be sure to have ostream_printf and hyperlink support
  319 	Older versions of libtextstyle do not support them, rule them out.
  320 
  321 	Reported by Lars Wendler
  322 	https://lists.gnu.org/r/bug-bison/2020-07/msg00030.html
  323 
  324 	and by Arnold Robbins
  325 	https://lists.gnu.org/r/bug-bison/2020-07/msg00041.html and
  326 	https://lists.gnu.org/mailman/private/gawk-devel/2020-July/003988.html
  327 
  328 	and by Nelson H. F. Beebe
  329 	https://lists.gnu.org/mailman/private/gawk-devel/2020-July/003993.html
  330 
  331 	With support from Bruno Haible in gnulib
  332 	https://lists.gnu.org/r/bug-gnulib/2020-08/msg00000.html
  333 	thread starting at
  334 	https://lists.gnu.org/r/bug-gnulib/2020-07/msg00148.html
  335 
  336 	* configure.ac: Require libtextstyle 0.20.5.
  337 	* gnulib: Update.
  338 
  339 2020-08-01  Akim Demaille  <akim.demaille@gmail.com>
  340 
  341 	CI: comment changes
  342 
  343 2020-08-01  Akim Demaille  <akim.demaille@gmail.com>
  344 
  345 	regen
  346 
  347 2020-08-01  Akim Demaille  <akim.demaille@gmail.com>
  348 
  349 	diagnostics: better location for type redeclarations
  350 	From
  351 
  352 	    foo.y:1.7-11: error: %type redeclaration for bar
  353 	        1 | %type <foo> bar bar
  354 	          |       ^~~~~
  355 	    foo.y:1.7-11: note: previous declaration
  356 	        1 | %type <foo> bar bar
  357 	          |       ^~~~~
  358 
  359 	to
  360 
  361 	    foo.y:1.17-19: error: %type redeclaration for bar
  362 	        1 | %type <foo> bar bar
  363 	          |                 ^~~
  364 	    foo.y:1.13-15: note: previous declaration
  365 	        1 | %type <foo> bar bar
  366 	          |             ^~~
  367 
  368 	* src/symlist.h, src/symlist.c (symbol_list_type_set): There's no need
  369 	for the tag's location, use that of the symbol.
  370 	* src/parse-gram.y: Adjust.
  371 	* tests/input.at: Adjust.
  372 
  373 2020-07-30  Akim Demaille  <akim.demaille@gmail.com>
  374 
  375 	todo: updates for D
  376 
  377 2020-07-29  Akim Demaille  <akim.demaille@gmail.com>
  378 
  379 	cex: style: comment changes
  380 	* src/parse-simulation.c: here.
  381 
  382 2020-07-29  Akim Demaille  <akim.demaille@gmail.com>
  383 
  384 	cex: style: prefer "res" for the returned value
  385 	* src/derivation.c (derivation_new): here.
  386 
  387 2020-07-29  Akim Demaille  <akim.demaille@gmail.com>
  388 
  389 	cex: style: prefer FOO_print to print_FOO
  390 	* src/state-item.h, src/state-item.c (print_state_item): Rename as...
  391 	(state_item_print): this.
  392 	* src/counterexample.c (print_counterexample): Rename as...
  393 	(counterexample_print): this.
  394 
  395 2020-07-28  Akim Demaille  <akim.demaille@gmail.com>
  396 
  397 	scanner: don't crash on strings containing a NUL byte
  398 	We crash if the input contains a string containing a NUL byte.
  399 	Reported by Suhwan Song.
  400 	https://lists.gnu.org/r/bug-bison/2020-07/msg00051.html
  401 
  402 	* src/flex-scanner.h (STRING_FREE): Avoid accidental use of
  403 	last_string.
  404 	* src/scan-gram.l: Don't call STRING_FREE without calling
  405 	STRING_FINISH first.
  406 	* tests/input.at (Invalid inputs): Check that case.
  407 
  408 2020-07-28  Akim Demaille  <akim.demaille@gmail.com>
  409 
  410 	doc: refer to cex from sections dealing with conflicts
  411 	The documentation about -Wcex should be put forward.
  412 
  413 	* doc/bison.texi: Refer to -Wcex from the sections about conflicts.
  414 
  415 2020-07-28  Akim Demaille  <akim.demaille@gmail.com>
  416 
  417 	doc: factor ifnottex/iftex examples
  418 	* doc/bison.texi: Factor the common bits out of ifnottex/iftex.
  419 
  420 2020-07-28  Akim Demaille  <akim.demaille@gmail.com>
  421 
  422 	doc: fix colors
  423 	The original Texinfo macros introducing colors were made for
  424 	diagnostics, which are printed in bold.  So by copy-paste accident the
  425 	styles we introduced for counterexamples were also in bold.  They
  426 	should not.
  427 
  428 	* doc/bison.texi: Separate the styling of diagnostics from the styling
  429 	for counterexamples.
  430 	Don't use bold in the latter case.
  431 
  432 2020-07-28  Akim Demaille  <akim.demaille@gmail.com>
  433 
  434 	doc: fixes
  435 	* doc/bison.texi: Fix spello.
  436 	Fix missing colors, and factor.
  437 
  438 2020-07-23  Akim Demaille  <akim.demaille@gmail.com>
  439 
  440 	maint: post-release administrivia
  441 	* NEWS: Add header line for next release.
  442 	* .prev-version: Record previous version.
  443 	* cfg.mk (old_NEWS_hash): Auto-update.
  444 
  445 2020-07-23  Akim Demaille  <akim.demaille@gmail.com>
  446 
  447 	version 3.7
  448 	* NEWS: Record release date.
  449 
  450 2020-07-23  Akim Demaille  <akim.demaille@gmail.com>
  451 
  452 	style: avoid warnings with GCC 4.6
  453 	With have a clash with the "max" function.
  454 
  455 	    src/counterexample.c: In function 'visited_hasher':
  456 	    src/counterexample.c:720:48: error: declaration of 'max' shadows a global declaration [-Werror=shadow]
  457 	    src/counterexample.c:116:12: error: shadowed declaration is here [-Werror=shadow]
  458 
  459 	* src/counterexample.c (visited_hasher): Alpha conversion.
  460 
  461 2020-07-23  Akim Demaille  <akim.demaille@gmail.com>
  462 
  463 	doc: fix definition of -Wall
  464 	* doc/bison.texi (Diagnostics): here.
  465 
  466 2020-07-23  Akim Demaille  <akim.demaille@gmail.com>
  467 
  468 	gnulib: update
  469 	* bootstrap.conf: We need stpncpy.
  470 
  471 2020-07-23  Akim Demaille  <akim.demaille@gmail.com>
  472 
  473 	tests: fixes
  474 	Fix 6b78e50cef3c2cd8e6f4e7938be987e8769f8eef, "cex: make "rerun with
  475 	'-Wcex'" a note instead of a warning"
  476 
  477 	* tests/conflicts.at (-W versus %expect and %expect-rr): Fix
  478 	expectations.
  479 
  480 2020-07-22  Akim Demaille  <akim.demaille@gmail.com>
  481 
  482 	cex: update NEWS for 3.7
  483 	* NEWS: Update to the current style of cex display.
  484 
  485 2020-07-22  Akim Demaille  <akim.demaille@gmail.com>
  486 
  487 	doc: catch up with the current display of cex
  488 	Unfortunately I found no way to use the ↳ glyph in Texinfo, so I used
  489 	@arrow{} instead, which has a different width, so we have to have all
  490 	the examples doubled, once for TeX, another for the rest of the world.
  491 
  492 	* doc/bison.texi: Use the current display in the examples.
  493 	* doc/calc.y, doc/ids.y, doc/if-then-else.y, doc/sequence.y: New.
  494 
  495 2020-07-21  Akim Demaille  <akim.demaille@gmail.com>
  496 
  497 	cex: make "rerun with '-Wcex'" a note instead of a warning
  498 	Currently the suggestion to rerun is a -Wother warning:
  499 
  500 	    warning: 2 shift/reduce conflicts [-Wconflicts-sr]
  501 	    warning: rerun with option '-Wcounterexamples' to generate conflict counterexamples [-Wother]
  502 
  503 	Instead, let's attach it as a subnote of the diagnostic (in the
  504 	current case, -Wconflicts-sr):
  505 
  506 	    warning: 2 shift/reduce conflicts [-Wconflicts-sr]
  507 	    note: rerun with option '-Wcounterexamples' to generate conflict counterexamples
  508 
  509 	* src/conflicts.c (conflicts_print): Do that.
  510 	Adjust the test suite.
  511 
  512 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  513 
  514 	maint: post-release administrivia
  515 	* NEWS: Add header line for next release.
  516 	* .prev-version: Record previous version.
  517 	* cfg.mk (old_NEWS_hash): Auto-update.
  518 
  519 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  520 
  521 	version 3.6.93
  522 	* NEWS: Record release date.
  523 
  524 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  525 
  526 	cex: label all the derivations by their initial action
  527 	From
  528 
  529 	    input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
  530 	      Example: A b .
  531 	      First derivation
  532 	        a
  533 	        `-> A b .
  534 	      Second derivation
  535 	        a
  536 	        `-> A b
  537 	              `-> b .
  538 
  539 	to
  540 
  541 	    input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
  542 	      Example: A b .
  543 	      First reduce derivation
  544 	        a
  545 	        `-> A b .
  546 	      Second reduce derivation
  547 	        a
  548 	        `-> A b
  549 	              `-> b .
  550 
  551 	* src/counterexample.c (print_counterexample): here.
  552 	Compute the width of the labels to properly align the values.
  553 	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
  554 	* tests/report.at: Adjust.
  555 
  556 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  557 
  558 	cex: improve readability of the subsections
  559 	Now that the derivation is no longer printed on one line, aligning the
  560 	example and the derivation is no longer useful.  It can actually be
  561 	harmful, as it makes the overall structure less clear.
  562 
  563 	* src/derivation.h, src/derivation.c (derivation_print_leaves): Remove
  564 	the `prefix` argument.
  565 	* src/counterexample.c (print_counterexample): Put the example next to
  566 	its label.
  567 	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
  568 	* tests/report.at: Adjust.
  569 
  570 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  571 
  572 	cex: don't issue an empty line between counterexamples
  573 	Now that we use complain, the "sections" are clearer.
  574 
  575 	* src/counterexample.c (print_counterexample): Use the empty line only
  576 	in reports.
  577 	* tests/counterexample.at, tests/diagnostics.at, tests/report.at: Adjust.
  578 
  579 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  580 
  581 	cex: use usual routines for diagnostics about S/R conflicts
  582 	See previous commit.  We go from
  583 
  584 	    input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
  585 	    Shift/reduce conflict on token "⊕":
  586 	      Example              exp "+" exp • "⊕" exp
  587 	      Shift derivation
  588 	        exp
  589 	        ↳ exp "+" exp
  590 	                  ↳ exp • "⊕" exp
  591 
  592 	to
  593 
  594 	    input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
  595 	    input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
  596 	      Example              exp "+" exp • "⊕" exp
  597 	      Shift derivation
  598 	        exp
  599 	        ↳ exp "+" exp
  600 	                  ↳ exp • "⊕" exp
  601 
  602 	with an hyperlink on -Wcounterexamples.
  603 
  604 	* src/counterexample.c (counterexample_report_shift_reduce):
  605 	Use complain.
  606 	* tests/counterexample.at, tests/diagnostics.at, tests/report.at:
  607 	Adjust.
  608 
  609 2020-07-20  Akim Demaille  <akim.demaille@gmail.com>
  610 
  611 	cex: use usual routines for diagnostics about R/R conflicts
  612 	This is more consistent, and brings benefits: users know that these
  613 	diagnostics are attached to -Wcounterexamples, and they can also click
  614 	on the hyperlink if permitted by their terminal.
  615 
  616 	We go from
  617 
  618 	    warning: 1 reduce/reduce conflict [-Wconflicts-rr]
  619 	    Reduce/reduce conflict on token $end:
  620 	      Example              A b .
  621 	      First derivation     a -> [ A b . ]
  622 	      Second derivation    a -> [ A b -> [ b . ] ]
  623 
  624 	to
  625 
  626 	    warning: 1 reduce/reduce conflict [-Wconflicts-rr]
  627 	    input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
  628 	      Example              A b .
  629 	      First derivation     a -> [ A b . ]
  630 	      Second derivation    a -> [ A b -> [ b . ] ]
  631 
  632 	with an hyperlink on -Wcounterexamples.
  633 
  634 	* src/counterexample.c (counterexample_report_reduce_reduce):
  635 	Use complain.
  636 	* tests/counterexample.at, tests/diagnostics.at, tests/report.at:
  637 	Adjust.
  638 
  639 2020-07-19  Akim Demaille  <akim.demaille@gmail.com>
  640 
  641 	diagnostics: use hyperlinks to point to the only documentation
  642 	* src/complain.c (begin_hyperlink, end_hyperlink): New.
  643 	(warnings_print_categories): Use them.
  644 	* tests/local.at (AT_SET_ENV): Disable hyperlinks in the tests, they
  645 	contain random id's, and brackets (which is not so nice for M4).
  646 
  647 2020-07-19  Akim Demaille  <akim.demaille@gmail.com>
  648 
  649 	doc: add anchors for warnings
  650 	Unfortunately Texinfo somewhat mangles anchors such as `-Werror` into
  651 	`g_t_002dWerror`, so let's not include the dash.
  652 
  653 	* doc/bison.texi (Diagnostics): here.
  654 
  655 2020-07-19  Akim Demaille  <akim.demaille@gmail.com>
  656 
  657 	glyphs: fix types
  658 	The code was written on top of buffers of `char[26]`, and then was
  659 	changed to use `char *`, yet was still using `sizeof buf`, which
  660 	became `sizeof (char *)` instead of `sizeof (char[26])`.
  661 
  662 	Reported by Dagobert Michelsen.
  663 	https://lists.gnu.org/r/bug-bison/2020-07/msg00023.html
  664 
  665 	* src/glyphs.h, src/glyphs.c: Get rid of uses of `char *`, use only
  666 	glyph_buffer_t.
  667 
  668 2020-07-19  Akim Demaille  <akim.demaille@gmail.com>
  669 
  670 	maint: post-release administrivia
  671 	* NEWS: Add header line for next release.
  672 	* .prev-version: Record previous version.
  673 	* cfg.mk (old_NEWS_hash): Auto-update.
  674 
  675 2020-07-19  Akim Demaille  <akim.demaille@gmail.com>
  676 
  677 	version 3.6.92
  678 	* NEWS: Record release date.
  679 
  680 2020-07-19  Akim Demaille  <akim.demaille@gmail.com>
  681 
  682 	style: avoid strncpy
  683 	syntax-check seems to dislike strncpy.  The GNU Coreutils replaced
  684 	their uses of strncpy with stpncpy.
  685 
  686 	strlcpy is not an option.
  687 	  http://sources.redhat.com/ml/libc-alpha/2002-01/msg00159.html
  688 	  http://sources.redhat.com/ml/libc-alpha/2002-01/msg00011.html
  689 	  http://lists.gnu.org/archive/html/bug-gnulib/2004-09/msg00181.html
  690 
  691 	* src/glyphs.c: Use stpncpy.
  692 
  693 2020-07-18  Akim Demaille  <akim.demaille@gmail.com>
  694 
  695 	cex: display derivations as trees
  696 	Sometimes, understanding the derivations is difficult, because they
  697 	are serialized to fit in one line.  For instance, the example taken
  698 	from the NEWS file:
  699 
  700 	    %token ID
  701 	    %%
  702 	    s: a ID
  703 	    a: expr
  704 	    expr: expr ID ',' | "expr"
  705 
  706 	gave
  707 
  708 	    First example        expr • ID ',' ID $end
  709 	    Shift derivation     $accept → [ s → [ a → [ expr → [ expr • ID ',' ] ] ID ] $end ]
  710 	    Second example       expr • ID $end
  711 	    Reduce derivation    $accept → [ s → [ a → [ expr • ] ID ] $end ]
  712 
  713 	Printing as trees, it gives:
  714 
  715 	    First example        expr • ID ',' ID $end
  716 	    Shift derivation
  717 	      $accept
  718 	      ↳ s                      $end
  719 	        ↳ a                 ID
  720 	          ↳ expr
  721 	            ↳ expr • ID ','
  722 	    Second example       expr • ID $end
  723 	    Reduce derivation
  724 	      $accept
  725 	      ↳ s             $end
  726 	        ↳ a        ID
  727 	          ↳ expr •
  728 
  729 	* src/glyphs.h, src/glyphs.c (down_arrow, empty, derivation_separator):
  730 	New.
  731 	* src/derivation.c (derivation_print, derivation_print_impl): Rename
  732 	as...
  733 	(derivation_print_flat, derivation_print_flat_impl): These.
  734 	(fputs_if, derivation_depth, derivation_width, derivation_print_tree)
  735 	(derivation_print_tree_impl, derivation_print): New.
  736 	* src/counterexample.c (print_counterexample): Adjust.
  737 	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
  738 	* tests/report.at: Adjust.
  739 
  740 2020-07-16  Akim Demaille  <akim.demaille@gmail.com>
  741 
  742 	cex: use the glyphs
  743 	* src/derivation.c: here.
  744 	* src/gram.h, src/gram.c (print_arrow, print_dot, print_fallback):
  745 	Remove.
  746 
  747 2020-07-16  Akim Demaille  <akim.demaille@gmail.com>
  748 
  749 	cex: factor the handling of graphical symbols
  750 	* src/glyphs.h, src/glyphs.c: New.
  751 
  752 2020-07-15  Akim Demaille  <akim.demaille@gmail.com>
  753 
  754 	cex: style changes
  755 	* src/counterexample.c: here.
  756 
  757 2020-07-15  Akim Demaille  <akim.demaille@gmail.com>
  758 
  759 	cex: simplify tests
  760 	* tests/counterexample.at (AT_BISON_CHECK_CEX): Handle the keyword.
  761 	Simplify the signature.
  762 
  763 2020-07-15  Akim Demaille  <akim.demaille@gmail.com>
  764 
  765 	cex: more colors
  766 	Provided by Daniela Becker.
  767 
  768 	* data/bison-default.css: More colors.
  769 
  770 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  771 
  772 	style: comments changes
  773 	* src/print.c: here.
  774 
  775 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  776 
  777 	doc: update GLR sections
  778 	Reported by Christian Schoenebeck.
  779 
  780 	* doc/bison.texi (GLR Parsers): Minor fixes.
  781 	(Compiler Requirements for GLR): Remove, quite useless today.
  782 
  783 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  784 
  785 	cex: display shifts before reductions
  786 	When reporting counterexamples for s/r conflicts, put the shift first.
  787 	This is more natural, and displays the default resolution first, which
  788 	is also what happens for r/r conflicts where the smallest rule number
  789 	is displayed first, and "wins".
  790 
  791 	* src/counterexample.c (counterexample): Add a shift_reduce member.
  792 	(new_counterexample): Adjust.
  793 	Swap the derivations when this is a s/r conflict.
  794 	(print_counterexample): For s/r conflicts, prefer "Shift derivation"
  795 	and "Reduce derivation" rather than "First/Second derivation".
  796 
  797 	* tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust.
  798 	* NEWS, doc/bison.texi: Ditto.
  799 
  800 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  801 
  802 	style: s/lookahead_tokens/lookaheads/g
  803 	Currently we use both names.  Let's stick to the short one.
  804 
  805 	* src/AnnotationList.c, src/conflicts.c, src/counterexample.c,
  806 	* src/getargs.c, src/getargs.h, src/graphviz.c, src/ielr.c,
  807 	* src/lalr.c, src/print-graph.c, src/print-xml.c, src/print.c,
  808 	* src/state-item.c, src/state.c, src/state.h, src/tables.c:
  809 	s/lookahead_token/lookahead/gi.
  810 
  811 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  812 
  813 	cex: factor memory allocation
  814 	* src/counterexample.c (counterexample_report_state): Allocate once
  815 	per conflicted state, instead of once per r/r conflict.
  816 
  817 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  818 
  819 	cex: use state_item_number consistently
  820 	* src/counterexample.c, src/state-item.c: here.
  821 	(counterexample_report_state): While at it, prefer c2 to j/k, to match
  822 	c1.
  823 
  824 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  825 
  826 	cex: more consistent memory allocation/copy
  827 	* src/counterexample.c, src/parse-simulation.c: It is more usual in
  828 	Bison to use sizeof on expressions than on types, especially for
  829 	allocation.
  830 	Let the compiler do it's job instead of calling memcpy ourselves.
  831 
  832 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  833 
  834 	cex: minor renaming
  835 	* src/counterexample.c (has_common_prefix): Rename as...
  836 	(have_common_prefix): this.
  837 
  838 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  839 
  840 	cex: use better type names
  841 	There are too many gl_list_t in there, it's hard to understand what is
  842 	going on.  Introduce and use more precise types.  I sure can be wrong
  843 	in some places, it's hard to tell without proper tool support.
  844 
  845 	* src/counterexample.c, src/lssi.c, src/lssi.h, src/parse-simulation.c,
  846 	* src/parse-simulation.h, src/state-item.c, src/state-item.h
  847 	(si_bfs_node_list, search_state_list, ssb_list, lssi_list)
  848 	(state_item_list): New.
  849 
  850 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  851 
  852 	cex: minor style changes
  853 	* src/counterexample.h, src/derivation.h, src/derivation.c:
  854 	More comments.
  855 	Use `out` for FILE*, as elsewhere.
  856 
  857 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  858 
  859 	tests: beware of version numbers from git describe
  860 	* tests/report.at: Be robust to version numbers such as
  861 	3.6.4.133-fbac-dirty.
  862 
  863 2020-07-14  Akim Demaille  <akim.demaille@gmail.com>
  864 
  865 	tests: fix expectations
  866 	Broken in ee86ea88399ed02243fbceb2704c9ea322a12bf9.
  867 
  868 	* tests/diagnostics.at: here.
  869 
  870 2020-07-12  Akim Demaille  <akim.demaille@gmail.com>
  871 
  872 	doc: makeinfo wants @arrow{}, not @arrow
  873 	* doc/bison.texi: here.
  874 
  875 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  876 
  877 	gnulib: update
  878 
  879 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  880 
  881 	cex: prefer → to ::=
  882 	It does not make a lot of sense to use ::= in our counterexamples,
  883 	that's not something that belongs to the Bison "vocabulary".  Using
  884 	the colon makes sense, but it's too discreet.  Let's use the arrow,
  885 	which we already use in some reports (HTML and Dot).
  886 
  887 	* src/gram.h (print_dot_fallback): Generalize into...
  888 	(print_fallback): this.
  889 	(print_arrow): New.
  890 	* src/derivation.c: Use it.
  891 
  892 	* NEWS, tests/conflicts.at, tests/counterexample.at,
  893 	* tests/diagnostics.at, tests/report.at: Adjust.
  894 	* doc/bison.texi: Ditto.
  895 	Unfortunately the literal `→` is output as `↦`.  So we need to use
  896 	@arrow.
  897 
  898 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  899 
  900 	style: cex: prefer the array notation
  901 	Prefer `&foos[i]` to `foos + i` when `foos` is an array.  IMHO, it
  902 	makes the semantics clearer.
  903 
  904 	* src/counterexample.c, src/lssi.c, src/parse-simulation.c,
  905 	* src/state-item.c: With arrays, prefer the array notation rather than
  906 	the pointer one.
  907 
  908 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  909 
  910 	style: cex: remove variables that don't make it simpler to read
  911 	* src/counterexample.c: With arrays, prefer the array notation rather
  912 	than the pointer one.
  913 
  914 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  915 
  916 	bistromathic: demonstrate caret-diagnostics
  917 	* examples/c/bistromathic/parse.y (user_context): We need the current
  918 	line.
  919 	(yyreport_syntax_error): Quote the guilty line, with squiggles.
  920 	* examples/c/bistromathic/bistromathic.test: Adjust.
  921 
  922 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  923 
  924 	bistromathic: do not display parse errors on completion
  925 	Currently autocompletion on a line with errors leaks the error
  926 	messages.  It can be useful to let the user know, but GNU Readline
  927 	does not provide us with an nice way to display the error.  So we
  928 	actually break into the current line of the user.
  929 
  930 	So instead, do not show these errors.
  931 
  932 	* examples/c/bistromathic/parse.y (user_context): New.
  933 	Use %param to pass it to the parser and scanner.
  934 	Keep quiet when in computing autocompletion.
  935 
  936 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  937 
  938 	bistromathic: don't stupidly reset the location for each token
  939 	That quite defeats the whole point of locations...  But anyway, we
  940 	should not see these messages at all.
  941 
  942 	* examples/c/bistromathic/parse.y (expected_tokens): Fix (useless)
  943 	location tracking.
  944 
  945 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  946 
  947 	bistromathic: promote yytoken_kind_t
  948 	* examples/c/bistromathic/parse.y: Use yytoken_kind_t rather than int.
  949 
  950 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  951 
  952 	html: capitalize titles
  953 	* data/xslt/xml2xhtml.xsl: Use "State 0", not "state 0".
  954 	As we do in text reports.
  955 
  956 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  957 
  958 	html: don't define several times the same anchors
  959 	Currently when we output useless rules, they appear before the
  960 	grammar, but using the same invocation.  As a result, the anchor is
  961 	defined twice, and the wrong one, being first, is honored.
  962 
  963 	* data/xslt/xml2xhtml.xsl (rule): Take a new 'anchor' parameter to
  964 	decide whether being an anchor, or a target.
  965 	Let it be true when output the grammar.
  966 	* tests/report.at: Adjust.
  967 
  968 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  969 
  970 	html: simplify
  971 	* data/xslt/xml2xhtml.xsl: Merge two identical when-clauses.
  972 
  973 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  974 
  975 	reports: let html reports catch up with --report and --graph
  976 	* data/xslt/xml2xhtml.xsl: Show the symbol types.
  977 	* tests/report.at: Adjust.
  978 
  979 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  980 
  981 	reports: let xml reports catch up with --report and --graph
  982 	The text and Dot reports are expected to be identical when generated
  983 	directly (--report, --graph) or indirectly (via XML).  The xml
  984 	testsuite had not be run for ages, let it catch up a bit.
  985 
  986 	* src/print-xml.c: Pass the type of the symbols.
  987 	* data/xslt/xml2text.xsl
  988 	Catch up with the new layout.
  989 	Display the symbol types.
  990 	Use '•', not '.'
  991 	* tests/local.at: Smash '•' to '.' when matching against the direct
  992 	text report.
  993 	* tests/report.at: Adjust XML expectations.
  994 
  995 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
  996 
  997 	reports: update html ouput
  998 	* data/xslt/xml2xhtml.xsl: Improve indentation.
  999 	Use ul/li rather that pre.
 1000 
 1001 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
 1002 
 1003 	tests: check html
 1004 	* tests/report.at: here.
 1005 
 1006 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
 1007 
 1008 	style: factor complex expressions
 1009 	* src/print-xml.c, src/print.c: Introduce a variable pointing to the
 1010 	current symbol.
 1011 
 1012 2020-07-11  Akim Demaille  <akim.demaille@gmail.com>
 1013 
 1014 	maint: make it easier to update expectations
 1015 	* tests/local.mk (update-tests): New.
 1016 
 1017 2020-07-09  Akim Demaille  <akim.demaille@gmail.com>
 1018 
 1019 	maint: post-release administrivia
 1020 	* NEWS: Add header line for next release.
 1021 	* .prev-version: Record previous version.
 1022 	* cfg.mk (old_NEWS_hash): Auto-update.
 1023 
 1024 2020-07-09  Akim Demaille  <akim.demaille@gmail.com>
 1025 
 1026 	version 3.6.91
 1027 	* NEWS: Record release date.
 1028 
 1029 2020-07-09  Akim Demaille  <akim.demaille@gmail.com>
 1030 
 1031 	news: update
 1032 
 1033 2020-07-09  Akim Demaille  <akim.demaille@gmail.com>
 1034 
 1035 	gnulib: update
 1036 
 1037 2020-07-08  Akim Demaille  <akim.demaille@gmail.com>
 1038 
 1039 	examples: add license headers
 1040 	Prompted by Rici Lake.
 1041 	https://stackoverflow.com/questions/62658368/#comment110853985_62661621
 1042 	Discussed with Paul Eggert.
 1043 
 1044 	* doc/bison.texi, examples/c/bistromathic/parse.y,
 1045 	* examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l,
 1046 	* examples/c/pushcalc/calc.y, examples/c/reccalc/parse.y,
 1047 	* examples/c/reccalc/scan.l, examples/d/calc.y,
 1048 	* examples/java/calc/Calc.y, examples/java/simple/Calc.y:
 1049 	Install the GPL3+ header.
 1050 
 1051 2020-07-05  Akim Demaille  <akim.demaille@gmail.com>
 1052 
 1053 	style: update comments
 1054 	* src/reader.c: action_obstack was removed in 2002...
 1055 	* src/parse-gram.y: Better names.
 1056 	* src/scan-code.h: More comments.
 1057 
 1058 2020-07-05  Akim Demaille  <akim.demaille@gmail.com>
 1059 
 1060 	style: update comments in the skeletons
 1061 	* data/skeletons/c++.m4, data/skeletons/glr.c, data/skeletons/lalr1.d,
 1062 	* data/skeletons/lalr1.java, data/skeletons/yacc.c:
 1063 	Be more accurate about yychar and yytoken.
 1064 	Don't name local variables as if they were members.
 1065 
 1066 2020-07-05  Akim Demaille  <akim.demaille@gmail.com>
 1067 
 1068 	doc: more details about symbols in m4
 1069 	* data/README.md: here.
 1070 	* README-hacking.md (Vocabulary): More.
 1071 
 1072 2020-07-05  Akim Demaille  <akim.demaille@gmail.com>
 1073 
 1074 	regen
 1075 
 1076 2020-07-05  Akim Demaille  <akim.demaille@gmail.com>
 1077 
 1078 	examples: include the generated header
 1079 	* examples/c/bistromathic/parse.y, examples/c/lexcalc/parse.y,
 1080 	* examples/c/reccalc/parse.y: here.
 1081 	Add some comments.
 1082 
 1083 	* src/parse-gram.y (api_version): Pull out of handle_require.
 1084 	Bump to 3.7.
 1085 
 1086 2020-07-04  Akim Demaille  <akim.demaille@gmail.com>
 1087 
 1088 	maint: post-release administrivia
 1089 	* NEWS: Add header line for next release.
 1090 	* .prev-version: Record previous version.
 1091 	* cfg.mk (old_NEWS_hash): Auto-update.
 1092 
 1093 2020-07-04  Akim Demaille  <akim.demaille@gmail.com>
 1094 
 1095 	version 3.6.90
 1096 	* NEWS: Record release date.
 1097 
 1098 2020-07-04  Akim Demaille  <akim.demaille@gmail.com>
 1099 
 1100 	news: update
 1101 
 1102 2020-07-04  Akim Demaille  <akim.demaille@gmail.com>
 1103 
 1104 	package: fix syntax-check errors
 1105 	* examples/c/bistromathic/bistromathic.test, po/POTFILES.in: here.
 1106 
 1107 2020-07-04  Akim Demaille  <akim.demaille@gmail.com>
 1108 
 1109 	gnulib: update
 1110 
 1111 2020-07-04  Akim Demaille  <akim.demaille@gmail.com>
 1112 
 1113 	cex: give more details about -Wcex and -rcex
 1114 	* data/bison-default.css: Cobalt does not seem to be supported.
 1115 	* doc/bison.texi (Counterexamples): A new section.
 1116 	(Understanding): Show the counterexamples as it shows in the report:
 1117 	with its items.
 1118 	(Bison Options): Document -Wcex and -rcex.
 1119 
 1120 2020-07-03  Akim Demaille  <akim.demaille@gmail.com>
 1121 
 1122 	news: update
 1123 
 1124 2020-07-03  Akim Demaille  <akim.demaille@gmail.com>
 1125 
 1126 	dot: also use a dot in the output
 1127 	* src/print-graph.c (print_core): Use a dot instead of a point.
 1128 	* doc/figs/example-reduce.gv, doc/figs/example-reduce.txt,
 1129 	* doc/figs/example-shift.gv, doc/figs/example-shift.txt,
 1130 	* doc/figs/example.gv: Update.
 1131 	* tests/output.at, tests/report.at: Adjust.
 1132 
 1133 2020-07-02  Akim Demaille  <akim@lrde.epita.fr>
 1134 
 1135 	doc: improve a sentence
 1136 	* doc/bison.texi: here.
 1137 
 1138 2020-07-01  Akim Demaille  <akim.demaille@gmail.com>
 1139 
 1140 	news: formatting changes
 1141 
 1142 2020-07-01  Akim Demaille  <akim.demaille@gmail.com>
 1143 
 1144 	news, todo: update
 1145 
 1146 2020-06-30  Akim Demaille  <akim.demaille@gmail.com>
 1147 
 1148 	doc: clarify that the pcontext interface is *.c only
 1149 	Reported by Rici Lake.
 1150 	https://lists.gnu.org/r/bug-bison/2020-06/msg00054.html
 1151 
 1152 	* doc/bison.texi (Syntax Error Reporting Function): Make it clear that
 1153 	this is not exported.
 1154 	Remove C++ details that landed in the C doc.
 1155 
 1156 2020-06-30  Akim Demaille  <akim.demaille@gmail.com>
 1157 
 1158 	doc: use color in the cex examples
 1159 	* doc/bison.texi: here.
 1160 	And use smallexample when it no longer fits in PDF.
 1161 
 1162 2020-06-30  Akim Demaille  <akim.demaille@gmail.com>
 1163 
 1164 	doc: repair the references to the Bibliography
 1165 	In commit c80cdf2db2b302db4137fabd4ae11e578fa51fca ("doc: simplify
 1166 	uses of @ref", Jan 27 2020, released in Bison 3.6), I broke the
 1167 	references to the Bibliography.  For instance:
 1168 
 1169 	     For a more detailed exposition of the mysterious behavior in LALR parsers
 1170 	    -and the benefits of IELR, @pxref{Bibliography,,Denny 2008 March}, and
 1171 	    -@ref{Bibliography,,Denny 2010 November}.
 1172 	    +and the benefits of IELR, @pxref{Bibliography}, and
 1173 	    +@ref{Bibliography}.
 1174 
 1175 	which results in "see Bibliography" twice, instead of the more precise
 1176 	reference.
 1177 
 1178 	* doc/bison.texi (@pcite, @tcite): New.
 1179 	Use them instead of @ref to Bibliography.
 1180 	Cite only the first author (that's what we did for the other entries).
 1181 
 1182 2020-06-30  Vincent Imbimbo  <vmi6@cornell.edu>
 1183 
 1184 	doc: cex documentation
 1185 	* NEWS, doc/bison.texi: Add documentation for conflict counterexample
 1186 	generation.
 1187 
 1188 2020-06-30  Akim Demaille  <akim.demaille@gmail.com>
 1189 
 1190 	doc: update Doxygen template file
 1191 	* doc/Doxyfile.in: here.
 1192 
 1193 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1194 
 1195 	yacc.c: push: don't clear the parser state when accepting/rejecting
 1196 	Currently when a push parser finishes its parsing (i.e., it did not
 1197 	return YYPUSH_MORE), it also clears its state.  It is therefore
 1198 	impossible to see if it had parse errors.
 1199 
 1200 	In the context of autocompletion, because error recovery might have
 1201 	fired, the parser is actually already in a different state.  For
 1202 	instance on `(1 + + <TAB>` in the bistromathic, because there's a
 1203 	`exp: "(" error ")"` recovery rule, `1 + +` tokens have already been
 1204 	popped, replaced by `error`, and autocompletions think we are ready
 1205 	for the closing ")".  So here, we would like to see if there was a
 1206 	syntax error, yet `yynerrs` was cleared.
 1207 
 1208 	In the case of a successful parse, we still have a problem: if error
 1209 	recovery succeeded, we won't know it, since, again, `yynerrs` is
 1210 	clearer.
 1211 
 1212 	It seems much more natural to leave the parser state available for
 1213 	analysis when there is a failure.
 1214 
 1215 	To reuse the parser, we should either:
 1216 
 1217 	1. provide an explicit means to reinitialize a parser state for future
 1218 	   parses.
 1219 
 1220 	2. automatically reset the parser state when it is used in a new
 1221 	   parse.
 1222 
 1223 	Option 2 requires to check whether we need to reinitialize the parser
 1224 	each time we call `yypush_parse`, i.e., each time we give a new token.
 1225 	This seems expensive compared to Option 1, but benchmarks revealed no
 1226 	difference.  Option 1 is incompatible with the documentation
 1227 	("After `yypush_parse` returns a status other than `YYPUSH_MORE`, the
 1228 	parser instance `yyps` may be reused for a new parse.").
 1229 
 1230 	So Option 2 wins, reusing the private `yynew` member to record that a
 1231 	parse was finished, and therefore that the state must reset in the
 1232 	next call to `yypull_parse`.
 1233 
 1234 	While at it, this implementation now reuses the previously enlarged
 1235 	stacks from one parse to another.
 1236 
 1237 	* data/skeletons/yacc.c (yypstate_new): Set up the stacks in their
 1238 	initial configurations (setting their bottom to the stack array), and
 1239 	use yypstate_clear to reset them (moving their top to their bottom).
 1240 	(yypstate_delete): Adjust.
 1241 	(yypush_parse): At the beginning, clear yypstate if needed, and at the
 1242 	end, record when yypstate needs to be clearer.
 1243 
 1244 	* examples/c/bistromathic/parse.y (expected_tokens): Do not propose
 1245 	autocompletion when there are parse errors.
 1246 	* examples/c/bistromathic/bistromathic.test: Check that case.
 1247 
 1248 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1249 
 1250 	bistromathic: don't display undefined locations
 1251 	Currently, completion when there is a syntax error shows broken
 1252 	locations.
 1253 
 1254 	* examples/c/bistromathic/parse.y (expected_tokens): Initialize the
 1255 	location.
 1256 	* examples/c/bistromathic/bistromathic.test: Check that.
 1257 
 1258 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1259 
 1260 	yacc.c: simplify initialization of push parsers
 1261 	The previous commit ("yacc.c: declare and initialize and the same
 1262 	time") made b4_initialize_parser_state_variables useless.
 1263 
 1264 	* data/skeletons/yacc.c (b4_initialize_parser_state_variables): Inline
 1265 	into...
 1266 	(yypstate_clear): here.
 1267 
 1268 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1269 
 1270 	regen
 1271 
 1272 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1273 
 1274 	yacc.c: declare and initialize and the same time
 1275 	In order to factor the code of push and pull parsers, the declaration
 1276 	of the parser's state variable was common (being local variable in
 1277 	pull parsers, and struct members in push parsers).  This result in
 1278 	rather poor style in pull parser, with first variable declarations,
 1279 	and then their initializations.
 1280 
 1281 	The initialization is about to differ between push and pull parsers,
 1282 	so it is no longer worth keeping both cases together.
 1283 
 1284 	* data/skeletons/yacc.c (b4_declare_parser_state_variables): Accept an
 1285 	argument, and when it is set, initialize the variables.
 1286 	Adjust dependencies.
 1287 
 1288 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1289 
 1290 	yacc.c: style changes in push mode
 1291 	* data/skeletons/yacc.c: here.
 1292 
 1293 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1294 
 1295 	yacc.c: simplify yypull_parse
 1296 	Currently yypull_parse takes a yypstate* as argument, and accepts it
 1297 	to be NULL.  This does not seem to make a lot of sense: rather it is
 1298 	its callers that should do that.
 1299 
 1300 	I believe this is historical: yypull_parse was introduced
 1301 	first (c3d503425f8014b432601a33b3398446d63b5963), with yyparse being a
 1302 	macro.  So yyparse could hardly deal with memory allocation properly.
 1303 	In 7172e23e8ffb95b8cafee24c4f36c46ca709507f that yyparse was turned
 1304 	into a genuine function.  At that point, it should have allocated its
 1305 	own yypstate*, which would have left yypull_parse deal with only one
 1306 	single non-null ypstate* argument.
 1307 
 1308 	Fortunately, it is nowhere documented that it is valid to pass NULL to
 1309 	yypull_parse.  It is now forbidden.
 1310 
 1311 	* data/skeletons/yacc.c (yypull_parse): Don't allocate a yypstate.
 1312 	Needs a location to issue the error message.
 1313 	(yyparse): Allocate the yypstate.
 1314 
 1315 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1316 
 1317 	doc: tidy the text files
 1318 	* etc/README: Rename/reformat as...
 1319 	* etc/README.md: this.
 1320 	And ship it.
 1321 
 1322 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1323 
 1324 	bench: simplify the `rand` target
 1325 	* etc/bench.pl.in: There is no need to recompile the bench cases
 1326 	themselves.
 1327 
 1328 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1329 
 1330 	bench: make it easy to edit the generated files
 1331 	* etc/bench.pl.in (&compile): Generate rules that compile the
 1332 	generated files independently of the source files.
 1333 
 1334 2020-06-29  Akim Demaille  <akim.demaille@gmail.com>
 1335 
 1336 	tests: don't use $VERBOSE
 1337 	It is used by the test suite itself, which results in this test
 1338 	failing.
 1339 
 1340 	* tests/c++.at: Use $DEBUG, not $VERBOSE.
 1341 
 1342 2020-06-28  Akim Demaille  <akim.demaille@gmail.com>
 1343 
 1344 	doc: overhaul of the readmes
 1345 	* README-hacking.md (Working from the Repository): Make it first to
 1346 	make it easier to find the instructions to build from the repo.
 1347 	(Implementation Notes): New.
 1348 	* README: Provide more links.
 1349 
 1350 2020-06-28  Akim Demaille  <akim.demaille@gmail.com>
 1351 
 1352 	java: rename package as api.package
 1353 	* data/skeletons/lalr1.java: here.
 1354 	* doc/bison.texi: Update.
 1355 	* src/muscle-tab.c: Ensure backward compat.
 1356 	* tests/java.at: Check it.
 1357 
 1358 2020-06-28  Akim Demaille  <akim.demaille@gmail.com>
 1359 
 1360 	style: shift/reduce, not shift-reduce
 1361 	* src/reader.c: here.
 1362 
 1363 2020-06-27  Akim Demaille  <akim.demaille@gmail.com>
 1364 
 1365 	style: rename endtoken as eoftoken
 1366 	* src/symtab.h, src/symtab.c (endtoken): Rename as...
 1367 	(eoftoken): this.
 1368 	Adjust dependencies.
 1369 
 1370 2020-06-27  Akim Demaille  <akim.demaille@gmail.com>
 1371 
 1372 	news: fixes
 1373 	Reported by Jacob L. Mandelson.
 1374 
 1375 	* NEWS: here.
 1376 
 1377 2020-06-27  Akim Demaille  <akim.demaille@gmail.com>
 1378 
 1379 	style: use 'nonterminal' consistently
 1380 	* doc/bison.texi: Formatting changes.
 1381 	* src/gram.h, src/gram.c (nvars): Rename as...
 1382 	(nnterms): this.
 1383 	Adjust dependencies.
 1384 	(section): New.  Use it.
 1385 	Replace "non terminal" and "non-terminal" by "nonterminal".
 1386 
 1387 2020-06-27  Akim Demaille  <akim.demaille@gmail.com>
 1388 
 1389 	doc: parse.assert in C++ requires RTTI
 1390 	* doc/bison.texi (%define Summary): Say it.
 1391 
 1392 2020-06-27  Akim Demaille  <akim.demaille@gmail.com>
 1393 
 1394 	c++: by default, use const std::string for file names
 1395 	Reported by Martin Blais and Yuriy Solodkyy.
 1396 	https://lists.gnu.org/r/help-bison/2020-05/msg00011.html
 1397 	https://lists.gnu.org/r/bug-bison/2020-06/msg00038.html
 1398 
 1399 	While at it, modernize filename_type as api.filename.type and document
 1400 	it properly.
 1401 
 1402 	* data/skeletons/c++.m4 (filename_type): Rename as...
 1403 	(api.filename.type): this.
 1404 	Default to const std::string.
 1405 	* data/skeletons/location.cc (position, location): Expose the
 1406 	filename_type type.
 1407 	Use api.filename.type.
 1408 	* doc/bison.texi (%define Summary): Document api.filename.type.
 1409 	(C++ Location Values): Document position::filename_type.
 1410 	* src/muscle-tab.c (muscle_percent_variable_update): Ensure backward
 1411 	compatibility.
 1412 	* tests/c++.at: Check that using const file names is ok.
 1413 	tests/input.at: Check backward compat.
 1414 
 1415 2020-06-27  Akim Demaille  <akim.demaille@gmail.com>
 1416 
 1417 	ielr: fix crash on memory management
 1418 	Reported by Dwight Guth.
 1419 	https://lists.gnu.org/r/bug-bison/2020-06/msg00037.html
 1420 
 1421 	* src/AnnotationList.c (AnnotationList__computePredecessorAnnotations):
 1422 	Beware that SBITSET__FOR_EACH nests _two_ for-loops, so "break" does
 1423 	not actually break out of it.
 1424 	That was the only occurrence in the code.
 1425 	* src/Sbitset.h (SBITSET__FOR_EACH): Warn passersby.
 1426 
 1427 2020-06-25  Akim Demaille  <akim.demaille@gmail.com>
 1428 
 1429 	style: factor the access to a rule from its items
 1430 	* src/counterexample.c (item_rule): Move to...
 1431 	* src/counterexample.h: here.
 1432 	* src/AnnotationList.c, src/counterexample.c, src/ielr.c: Use it.
 1433 
 1434 2020-06-25  Akim Demaille  <akim.demaille@gmail.com>
 1435 
 1436 	style: clean up nullable
 1437 	* src/nullable.c: Reduce scopes.
 1438 	Prefer `r` to `rules_ruleno`, which is truly an ugly name.
 1439 
 1440 2020-06-25  Akim Demaille  <akim.demaille@gmail.com>
 1441 
 1442 	style: clean up ielr
 1443 	* src/AnnotationList.c, src/ielr.c: Fix include order.
 1444 	Prefer `res` to `result`.
 1445 	Reduce scopes.
 1446 	Be free of the oldish 76 cols limitation when it clutters too much the
 1447 	code.
 1448 	Denest when possible (we're starving for horizontal width).
 1449 
 1450 2020-06-23  Akim Demaille  <akim.demaille@gmail.com>
 1451 
 1452 	don't use strlen to compute visual width
 1453 	* src/output.c (prepare_symbol_names): Use mbswidth.
 1454 
 1455 2020-06-23  Akim Demaille  <akim.demaille@gmail.com>
 1456 
 1457 	doc: use dot/'•' rather than point/'.'
 1458 	AFAICT, "dotted rule" is a more frequent synonym of "item" than
 1459 	"pointed rule".  So let's migrate to using "dot" only.
 1460 
 1461 	* doc/bison.texi: Use dot/'•' rather than point/'.'.
 1462 
 1463 	* src/print-xml.c (print_core): Use dot rather than point.  This is
 1464 	not backward compatible, but AFAICT, we don't have actual user of the
 1465 	XML output (but ourselves).  So...
 1466 	* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl,
 1467 	* data/xslt/xml2xhtml.xsl, tests/report.at: ... adjust.
 1468 
 1469 2020-06-23  Akim Demaille  <akim.demaille@gmail.com>
 1470 
 1471 	cex: display all the S/R conflicts, not just one per (state, rule)
 1472 	Before this commit, on
 1473 
 1474 	    %%
 1475 	    exp
 1476 	    : "if" exp "then" exp
 1477 	    | "if" exp "then" exp "else" exp
 1478 	    | exp "+" exp
 1479 	    | "num"
 1480 
 1481 	we used to not display the third counterexample below:
 1482 
 1483 	    Shift/reduce conflict on token "+":
 1484 	      Example              exp "+" exp . "+" exp
 1485 	      First derivation     exp ::=[ exp ::=[ exp "+" exp . ] "+" exp ]
 1486 	      Second derivation    exp ::=[ exp "+" exp ::=[ exp . "+" exp ] ]
 1487 
 1488 	    Shift/reduce conflict on token "else":
 1489 	      Example              "if" exp "then" "if" exp "then" exp . "else" exp
 1490 	      First derivation     exp ::=[ "if" exp "then" exp ::=[ "if" exp "then" exp . ] "else" exp ]
 1491 	      Second derivation    exp ::=[ "if" exp "then" exp ::=[ "if" exp "then" exp . "else" exp ] ]
 1492 
 1493 	    Shift/reduce conflict on token "+":
 1494 	      Example              "if" exp "then" exp . "+" exp
 1495 	      First derivation     exp ::=[ exp ::=[ "if" exp "then" exp . ] "+" exp ]
 1496 	      Second derivation    exp ::=[ "if" exp "then" exp ::=[ exp . "+" exp ] ]
 1497 
 1498 	    Shift/reduce conflict on token "+":
 1499 	      Example              "if" exp "then" exp "else" exp . "+" exp
 1500 	      First derivation     exp ::=[ exp ::=[ "if" exp "then" exp "else" exp . ] "+" exp ]
 1501 	      Second derivation    exp ::=[ "if" exp "then" exp "else" exp ::=[ exp . "+" exp ] ]
 1502 
 1503 	* src/counterexample.c (counterexample_report_state): Don't stop of
 1504 	the first conflicts.
 1505 	* tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at,
 1506 	* tests/report.at: Adjust.
 1507 
 1508 2020-06-22  Akim Demaille  <akim.demaille@gmail.com>
 1509 
 1510 	cex: don't display twice unifying examples if there is no color
 1511 	It makes no sense, and is actually confusing, to display twice the
 1512 	same example with no visible difference.
 1513 
 1514 	* src/complain.h, src/complain.c (is_styled): New.
 1515 	* src/counterexample.c (print_counterexample): Display the unified
 1516 	example a second time only if it makes a difference.
 1517 	* tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust.
 1518 	* tests/diagnostics.at: Make sure we do display the unifying examples
 1519 	twice when colors are enabled.  And check those colors.
 1520 
 1521 2020-06-22  Vincent Imbimbo  <vmi6@cornell.edu>
 1522 
 1523 	cex: fix reporting of null nonterminals
 1524 	I implemented this to print A ::= [ ], but A ::= [ %empty ] might be
 1525 	clearer.
 1526 
 1527 	* src/parse-simulation.c (nullable_closure): Don't generate null
 1528 	nonterminal derivations as leaves.
 1529 	* src/derivation.c (derivation_print_impl): Don't print seperator
 1530 	spaces for null nonterminal.
 1531 	* tests/counterexample.at: Update test results.
 1532 
 1533 2020-06-22  Akim Demaille  <akim.demaille@gmail.com>
 1534 
 1535 	cex: use the bullet in HTML
 1536 	* data/xslt/xml2xhtml.xsl: here.
 1537 
 1538 2020-06-19  Akim Demaille  <akim.demaille@gmail.com>
 1539 
 1540 	cex: style changes
 1541 	* src/counterexample.c: Simplify a bit.
 1542 	* src/parse-simulation.c, src/parse-simulation.h: Enforce coding style.
 1543 
 1544 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1545 
 1546 	c++: get rid of global_tokens_and_yystype
 1547 	This was a hack to make it easier for people to migrate from yacc.c to
 1548 	lalr1.cc and from glr.c to glr.cc: when set, YYSTYPE and YYLTYPE were
 1549 	`#defined`.  It was never documented (just mentioned in NEWS for Bison
 1550 	2.2, 2006-05-19), but was used to simplify the test suite.  Stop that:
 1551 	adjust the test suite to the skeletons, not the converse.
 1552 
 1553 	In C++ use yy::parser::semantic_type, yy::parser::location_type, and
 1554 	yy::parser::token::MY_TOKEN, instead of YYSTYPE, YYLTYPE and MY_TOKEN.
 1555 
 1556 	* data/skeletons/glr.cc, data/skeletons/lalr1.cc: Remove its support.
 1557 	* tests/actions.at, tests/c++.at, tests/calc.at: Adjust.
 1558 
 1559 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1560 
 1561 	cex: don't assume the terminal supports "•"
 1562 	Use of print_unicode_char suggested by Bruno Haible.
 1563 	https://lists.gnu.org/r/bug-gettext/2020-06/msg00012.html
 1564 
 1565 	* src/gram.h (print_dot_fallback, print_dot): New.
 1566 	* src/gram.c, src/derivation.c: Use it.
 1567 	* tests/counterexample.at, tests/report.at: Adjust the test suite.
 1568 	* .travis.yml, README-hacking.md: Adjust.
 1569 
 1570 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1571 
 1572 	cex: also include in the report on --report=counterexamples
 1573 	And let --report=all include the counterexamples.
 1574 
 1575 	* src/getargs.h, src/getargs.c (report_cex): New.
 1576 	* src/main.c: Compute counterexamples when -rcex is specified.
 1577 	* src/print.c: Include the counterexamples when -rcex is specified.
 1578 
 1579 	* tests/conflicts.at, tests/existing.at, tests/local.at: Adjust.
 1580 
 1581 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1582 
 1583 	cex: also include the counterexamples in the report
 1584 	The report is the best place to show the details about
 1585 	counterexamples, since we have the state right under the nose.
 1586 
 1587 	For instance:
 1588 
 1589 	State 7
 1590 
 1591 	    1 exp: exp . "⊕" exp
 1592 	    2    | exp . "+" exp
 1593 	    2    | exp "+" exp .  [$end, "+", "⊕"]
 1594 	    3    | exp . "+" exp
 1595 	    3    | exp "+" exp .  [$end, "+", "⊕"]
 1596 
 1597 	    "⊕"  shift, and go to state 6
 1598 
 1599 	    $end      reduce using rule 2 (exp)
 1600 	    $end      [reduce using rule 3 (exp)]
 1601 	    "+"       reduce using rule 2 (exp)
 1602 	    "+"       [reduce using rule 3 (exp)]
 1603 	    "⊕"       [reduce using rule 2 (exp)]
 1604 	    "⊕"       [reduce using rule 3 (exp)]
 1605 	    $default  reduce using rule 2 (exp)
 1606 
 1607 	    Conflict between rule 2 and token "+" resolved as reduce (%left "+").
 1608 
 1609 	    Shift/reduce conflict on token "⊕":
 1610 	        2 exp: exp "+" exp .
 1611 	        1 exp: exp . "⊕" exp
 1612 	      Example                  exp "+" exp • "⊕" exp
 1613 	      First derivation         exp ::=[ exp ::=[ exp "+" exp • ] "⊕" exp ]
 1614 	      Example                  exp "+" exp • "⊕" exp
 1615 	      Second derivation        exp ::=[ exp "+" exp ::=[ exp • "⊕" exp ] ]
 1616 
 1617 	    Reduce/reduce conflict on tokens $end, "+", "⊕":
 1618 	        2 exp: exp "+" exp .
 1619 	        3 exp: exp "+" exp .
 1620 	      Example                  exp "+" exp •
 1621 	      First derivation         exp ::=[ exp "+" exp • ]
 1622 	      Example                  exp "+" exp •
 1623 	      Second derivation        exp ::=[ exp "+" exp • ]
 1624 
 1625 	    Shift/reduce conflict on token "⊕":
 1626 	        3 exp: exp "+" exp .
 1627 	        1 exp: exp . "⊕" exp
 1628 	      Example                  exp "+" exp • "⊕" exp
 1629 	      First derivation         exp ::=[ exp ::=[ exp "+" exp • ] "⊕" exp ]
 1630 	      Example                  exp "+" exp • "⊕" exp
 1631 	      Second derivation        exp ::=[ exp "+" exp ::=[ exp • "⊕" exp ] ]
 1632 
 1633 	* src/conflicts.h, src/conflicts.c (has_conflicts): New.
 1634 	* src/counterexample.h, src/counterexample.c (print_counterexample):
 1635 	Add a `prefix` argument.
 1636 	(counterexample_report_shift_reduce)
 1637 	(counterexample_report_reduce_reduce): Show the items when there's a
 1638 	prefix.
 1639 	* src/state-item.h, src/state-item.c (print_state_item):
 1640 	Add a `prefix` argument.
 1641 	* src/derivation.h, src/derivation.c (derivation_print)
 1642 	(derivation_print_leaves): Add a prefix argument.
 1643 	* src/print.c (print_state): When -Wcex is enabled, show the
 1644 	conflicts.
 1645 	* tests/report.at: Adjust.
 1646 
 1647 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1648 
 1649 	cex: indent the diagnostics to highlight the structure
 1650 	Instead of
 1651 
 1652 	    Shift/reduce conflict on token D:
 1653 	    Example              A a • D
 1654 	    First derivation     s ::=[ A a a ::=[ b ::=[ c ::=[ • ] ] ] d ::=[ D ] ]
 1655 	    Example              A a • D
 1656 	    Second derivation    s ::=[ A a d ::=[ • D ] ]
 1657 
 1658 	display
 1659 
 1660 	    Shift/reduce conflict on token D:
 1661 	      Example              A a • D
 1662 	      First derivation     s ::=[ A a a ::=[ b ::=[ c ::=[ • ] ] ] d ::=[ D ] ]
 1663 	      Example              A a • D
 1664 	      Second derivation    s ::=[ A a d ::=[ • D ] ]
 1665 
 1666 	* src/counterexample.c (print_counterexample): Indent.
 1667 	* tests/counterexample.at: Adjust.
 1668 
 1669 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1670 
 1671 	cex: don't report the items
 1672 	Showing the items (with the state numbers) is really something we
 1673 	should restrict to the report.
 1674 
 1675 	* src/counterexample.c (counterexample_report_shift_reduce)
 1676 	(counterexample_report_reduce_reduce): Don't show the pointed rules,
 1677 	we will do that in the report.
 1678 	* tests/counterexample.at: Adjust.
 1679 
 1680 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1681 
 1682 	cex: make sure traces go to stderr
 1683 	* src/parse-simulation.h, src/parse-simulation.c (print_parse_state):
 1684 	here.
 1685 
 1686 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1687 
 1688 	cex: add an argument to the reporting functions to specify the stream
 1689 	* src/conflicts.c (find_state_item_number, report_state_counterexamples):
 1690 	Move to...
 1691 	* src/counterexample.h, src/counterexample.c (find_state_item_number)
 1692 	(counterexample_report_state): this.
 1693 	Add support for `out` as an argument.
 1694 	(counterexample_report_reduce_reduce, counterexample_report_shift_reduce):
 1695 	Accept an `out` argument, and be static.
 1696 
 1697 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1698 
 1699 	style: more uses of const
 1700 	* src/print.c, src/state.h, src/state.c: here.
 1701 
 1702 2020-06-16  Akim Demaille  <akim.demaille@gmail.com>
 1703 
 1704 	Merge 'maint'
 1705 	* upstream/maint:
 1706 	  maint: post-release administrivia
 1707 	  version 3.6.4
 1708 	  glr.cc: don't leak glr.c/glr.cc scaffolding to the user
 1709 
 1710 	Some fixes were needed to adjust to recent changes in glr.cc and
 1711 	glr.c.
 1712 
 1713 	* data/skeletons/glr.cc: Stop messing with the user's epilogue to
 1714 	insert glr.cc code.  We need that code to be inserted _before_ the
 1715 	user's epilogue, not after.  So define b4_glr_cc_pre_epilogue.
 1716 	* data/skeletons/glr.c: Use it.
 1717 
 1718 2020-06-15  Akim Demaille  <akim.demaille@gmail.com>
 1719 
 1720 	maint: post-release administrivia
 1721 	* NEWS: Add header line for next release.
 1722 	* .prev-version: Record previous version.
 1723 	* cfg.mk (old_NEWS_hash): Auto-update.
 1724 
 1725 2020-06-15  Akim Demaille  <akim.demaille@gmail.com>
 1726 
 1727 	version 3.6.4
 1728 	* NEWS: Record release date.
 1729 
 1730 2020-06-15  Akim Demaille  <akim.demaille@gmail.com>
 1731 
 1732 	glr.cc: don't leak glr.c/glr.cc scaffolding to the user
 1733 	Until we have a decent reimplementation of glr.cc, we have to use
 1734 	tricks to shoehorn C++ symbols to the C engine of glr.c.  Some of them
 1735 	are done via #define.  Unfortunately in Bison 3.6 some of these we
 1736 	done in the header file, which broke valid user code.
 1737 
 1738 	Reported by Egor Pugin.
 1739 	https://lists.gnu.org/r/bug-bison/2020-06/msg00003.html
 1740 
 1741 	* data/skeletons/glr.cc: Stop playing tricks with b4_pre_epilogue.
 1742 	(b4_glr_cc_setup, b4_glr_cc_cleanup): New.
 1743 	Much cleaner way to instal glr.cc's scaffolding around glr.c.
 1744 	* data/skeletons/glr.c: Adjust to use them.
 1745 
 1746 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1747 
 1748 	reports: the column width differs from the byte count
 1749 	From
 1750 
 1751 	    "number"          shift, and go to state 1
 1752 	    "Ñùṃéℝô"  shift, and go to state 2
 1753 
 1754 	to
 1755 
 1756 	    "number"  shift, and go to state 1
 1757 	    "Ñùṃéℝô"  shift, and go to state 2
 1758 
 1759 	* src/print.c: Use mbswidth, not strlen, to compute visual columns.
 1760 	* tests/report.at: Adjust.
 1761 
 1762 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1763 
 1764 	reports: don't escape the labels
 1765 	Currently we use "quotearg" to escape the strings output in Dot.  As a
 1766 	result, if the user's locale is C for instance, all the non-ASCII are
 1767 	escaped.  Unfortunately graphviz does not interpret this style of
 1768 	escaping.
 1769 
 1770 	For instance:
 1771 
 1772 	    5 -> 2 [style=solid label="\"\303\221\303\271\341\271\203\303\251\342\204\235\303\264\""]
 1773 
 1774 	was displayed as a sequence of numbers.  We now output:
 1775 
 1776 	    5 -> 2 [style=solid label="\"Ñùṃéℝô\""]
 1777 
 1778 	independently of the user's locale.
 1779 
 1780 	* src/system.h (obstack_backslash): New.
 1781 	* src/graphviz.h, src/graphviz.c (escape): Remove, use
 1782 	obstack_backslash instead.
 1783 	* src/print-graph.c: Likewise.
 1784 	* tests/report.at: Adjust.
 1785 
 1786 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1787 
 1788 	regen
 1789 
 1790 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1791 
 1792 	parser: keep string aliases as the user wrote it
 1793 	Currently our scanner decodes all the escapes in the strings, and we
 1794 	later reescape the strings when we emit them.
 1795 
 1796 	This is troublesome, as we do not respect the user input.  For
 1797 	instance, when the user writes in UTF-8, we destroy her string when we
 1798 	write it back.  And this shows everywhere: in the reports we show the
 1799 	escaped string instead of the actual alias:
 1800 
 1801 	    0 $accept: . exp $end
 1802 	    1 exp: . exp "\342\212\225" exp
 1803 	    2    | . exp "+" exp
 1804 	    3    | . exp "+" exp
 1805 	    4    | . "number"
 1806 	    5    | . "\303\221\303\271\341\271\203\303\251\342\204\235\303\264"
 1807 
 1808 	    "number"                                                    shift, and go to state 1
 1809 	    "\303\221\303\271\341\271\203\303\251\342\204\235\303\264"  shift, and go to state 2
 1810 
 1811 	This commit preserves the user's exact spelling of the string aliases,
 1812 	instead of interpreting the escapes and then reescaping.  The report
 1813 	now shows:
 1814 
 1815 	    0 $accept: . exp $end
 1816 	    1 exp: . exp "⊕" exp
 1817 	    2    | . exp "+" exp
 1818 	    3    | . exp "+" exp
 1819 	    4    | . "number"
 1820 	    5    | . "Ñùṃéℝô"
 1821 
 1822 	    "number"          shift, and go to state 1
 1823 	    "Ñùṃéℝô"  shift, and go to state 2
 1824 
 1825 	Likewise, the XML (and therefore HTML) outputs are fixed.
 1826 
 1827 	* src/scan-gram.l (STRING, TSTRING): Do not interpret the escapes in
 1828 	the resulting string.
 1829 	* src/parse-gram.y (unquote, parser_init, parser_free, unquote_free)
 1830 	(handle_defines, handle_language, obstack_for_unquote): New.
 1831 	Use them to unquote where needed.
 1832 	* tests/regression.at, tests/report.at: Update.
 1833 
 1834 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1835 
 1836 	tests: check reports with conflicts and UTF-8
 1837 	This is to record the current state of the report, which escapes the
 1838 	UTF-8 characters (as parse.error="verbose" does), but shouldn't (as
 1839 	parse.error="detailed" does).
 1840 
 1841 	* tests/report.at: here.
 1842 
 1843 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1844 
 1845 	style: factor common bits about string scanning
 1846 	* src/scan-gram.l: here.
 1847 
 1848 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1849 
 1850 	style: introduce & use STRING_1GROW
 1851 	* src/flex-scanner.h (STRING_1GROW): New.
 1852 	* src/scan-gram.l, src/scan-skel.l: Use it.
 1853 
 1854 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1855 
 1856 	style: reduce scopes
 1857 	* src/scan-gram.l (STRING_GROW_ESCAPE): Move the static_assert about
 1858 	type sizes here.
 1859 
 1860 2020-06-13  Akim Demaille  <akim.demaille@gmail.com>
 1861 
 1862 	style: prefer 'FOO ()' to 'FOO' for function-like macros
 1863 	* src/flex-scanner.h (STRING_GROW, STRING_FINISH, STRING_FREE):
 1864 	Make them function-like macros.
 1865 	Adjust dependencies.
 1866 
 1867 2020-06-11  Akim Demaille  <akim.demaille@gmail.com>
 1868 
 1869 	regen
 1870 
 1871 2020-06-10  Akim Demaille  <akim.demaille@gmail.com>
 1872 
 1873 	cex: suggest -Wcounterexamples when there are unexpected conflicts
 1874 	Suggesting -Wcounterexamples when there are conflicts is probably not
 1875 	what the user wants.  If she knows her conflicts and has set
 1876 	%expect/%expect-rr appropriately, we shouldn't warn.
 1877 
 1878 	The commit also swaps the counterexamples and the report of conflicts,
 1879 	into, IMHO, a more natural order: from
 1880 
 1881 	    Shift/reduce conflict on token B:
 1882 	    1:    3 a: A .
 1883 	    1:    8 y: A . B
 1884 	    Example              A • B C
 1885 	    First derivation     s ::=[ a ::=[ A • ] x ::=[ B C ] ]
 1886 	    Example              A • B C
 1887 	    Second derivation    s ::=[ y ::=[ A • B ] c ::=[ C ] ]
 1888 
 1889 	    input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
 1890 	    input.y:4.4: warning: rule useless in parser due to conflicts [-Wother]
 1891 
 1892 	to
 1893 
 1894 	    input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
 1895 	    Shift/reduce conflict on token B:
 1896 	    1:    3 a: A .
 1897 	    1:    8 y: A . B
 1898 	    Example              A • B C
 1899 	    First derivation     s ::=[ a ::=[ A • ] x ::=[ B C ] ]
 1900 	    Example              A • B C
 1901 	    Second derivation    s ::=[ y ::=[ A • B ] c ::=[ C ] ]
 1902 
 1903 	    input.y:4.4: warning: rule useless in parser due to conflicts [-Wother]
 1904 
 1905 	* src/conflicts.c (rule_conflicts_print): Rename as...
 1906 	(report_rule_expectation_mismatches): this.
 1907 	Move the handling of report_counterexamples to...
 1908 	(conflicts_print): Here.
 1909 	Display this warning when applicable.
 1910 
 1911 2020-06-10  Akim Demaille  <akim.demaille@gmail.com>
 1912 
 1913 	cex: rename -Wcounterexample as -Wcounterexamples, and support -Wcex
 1914 	Plural vs. singular is always a problem...
 1915 
 1916 	But we already have conflicts-sr and conflicts-rr, so counterexamples
 1917 	makes more sense than counterexample.  Besides, -Wcounterexample will
 1918 	still be accepted as an unambiguous prefix of -Wcounterexamples.
 1919 
 1920 	Add -Wcex as a convenient alias.
 1921 
 1922 	While at it, use only "counterexample", never "counter example".
 1923 
 1924 	* src/complain.h, src/complain.c
 1925 	(Wcounterexample, warning_counterexample): Rename as...
 1926 	(Wcounterexamples, warning_counterexamples): these.
 1927 	(argmatch_warning_docs): Rename -Wcounterexample as -Wcounterexamples.
 1928 	(argmatch_warning_args): Likewise.
 1929 	Add support for -Wcex.
 1930 	Adjust dependencies.
 1931 
 1932 2020-06-09  Akim Demaille  <akim.demaille@gmail.com>
 1933 
 1934 	api.header.include: document it, and fix its default value
 1935 	While defining api.header.include worked as expected, its default
 1936 	value was incorrectly defined.  As a result, by default, the generated
 1937 	parsers still duplicated the content of the generated header instead
 1938 	of including it.
 1939 
 1940 	* data/skeletons/yacc.c (api.header.include): Fix its default value.
 1941 	* tests/output.at: Check it.
 1942 	* doc/bison.texi (%define Summary): Document api.header.include.
 1943 	While at it, move the definition of api.namespace at the proper
 1944 	place.
 1945 
 1946 2020-06-07  Akim Demaille  <akim.demaille@gmail.com>
 1947 
 1948 	cex: color the counterexamples
 1949 	Use colors to show the counterexamples and the derivations in color,
 1950 	to highlight their structure.  Align the outputs, and add i18n
 1951 	support. Reduce width by using a one-space separator instead of
 1952 	two-space.
 1953 
 1954 	From
 1955 
 1956 	    Example  A  •  B  C
 1957 	    First  derivation  s ::=[ a ::=[ A  • ]  x ::=[ B  C ] ]
 1958 	    Second derivation  s ::=[ y ::=[ A  •  B ]  c ::=[ C ] ]
 1959 
 1960 	to
 1961 
 1962 	    Example              A • B C
 1963 	    First derivation     s ::=[ a ::=[ A • ] x ::=[ B C ] ]
 1964 	    Example              A • B C
 1965 	    Second derivation    s ::=[ y ::=[ A • B ] c ::=[ C ] ]
 1966 
 1967 	with colors.
 1968 
 1969 	* data/bison-default.css (cex-dot, cex-0, cex-1, cex-2, cex-3, cex-4)
 1970 	(cex-5, cex-6, cex-7, cex-step, cex-leaf): New.
 1971 	* src/derivation.c (derivation_print_styled_impl): New.
 1972 	(derivation_print, derivation_print_leaves): Use it.
 1973 	* src/counterexample.c: Reformat the output.
 1974 	* tests/counterexample.at: Adjust.
 1975 
 1976 2020-06-07  Akim Demaille  <akim.demaille@gmail.com>
 1977 
 1978 	cex: enforce case for tokens/nonterminals
 1979 	It's unfortunate that the traditions between formal language theory
 1980 	and Yacc differs, but here, tokens should be upper case, and
 1981 	nonterminals should be lower case.
 1982 
 1983 	* tests/counterexample.at: Comply with this.
 1984 
 1985 2020-06-07  Akim Demaille  <akim.demaille@gmail.com>
 1986 
 1987 	cex: reformat the s/r and r/r reports
 1988 	In Bison we refer to "shift/reduce" conflicts, not "shift-reduce" (in
 1989 	Bison 3.6.3 186 occurrences vs 15).  Enforce consistency on this.
 1990 
 1991 	Instead of "spending" a second line for each conflict to report the
 1992 	lookaheads, put that on the same line as the type of conflict.  Also,
 1993 	prefer "token" to "symbol".  Maybe we should even prefer "lookahead".
 1994 	While at it, enable internationalization, with plurals where
 1995 	appropriate.
 1996 
 1997 	As a consequence, instead of
 1998 
 1999 	    Shift-Reduce Conflict:
 2000 	    6:    3 b: . %empty
 2001 	    6:    6 d: c . A
 2002 	    On Symbol: A
 2003 
 2004 	display
 2005 
 2006 	    Shift/reduce conflict on token A:
 2007 	    6:    3 b: . %empty
 2008 	    6:    6 d: c . A
 2009 
 2010 	* NEWS, doc/bison.texi, src/conflicts.c: Spell it "shift/reduce", not
 2011 	"shift-reduce".
 2012 	* src/counterexample.c (counterexample_report_shift_reduce)
 2013 	(counterexample_report_reduce_reduce): Reformat and internationalize
 2014 	output.
 2015 	* tests/counterexample.at: Adjust expectations.
 2016 
 2017 2020-06-07  Akim Demaille  <akim.demaille@gmail.com>
 2018 
 2019 	style: fix syntax-check issues
 2020 	* src/counterexample.c, src/files.c, src/files.h, src/lssi.c,
 2021 	* src/state-item.c: here.
 2022 
 2023 2020-06-07  Akim Demaille  <akim.demaille@gmail.com>
 2024 
 2025 	all: show the rules in comments before the user actions
 2026 	For instance, in the case of Bison's own parser:
 2027 
 2028 	    -  case 40:
 2029 	    +  case 40:  /* grammar_declaration: "%code" "identifier" "{...}"  */
 2030 	         {
 2031 	           muscle_percent_code_grow ((yyvsp[-1].ID), (yylsp[-1]),
 2032 	                                     translate_code_braceless ((yyvsp[0].BRACED_CODE), (yylsp[0])),
 2033 	                                     (yylsp[0]));
 2034 	           code_scanner_last_string_free ();
 2035 	         }
 2036 	         break;
 2037 
 2038 	* data/skeletons/c.m4: Modified.
 2039 	* data/skeletons/d.m4: Modified.
 2040 	* data/skeletons/java.m4: Modified.
 2041 	* src/output.c (output_escaped): New.
 2042 	(quoted_output): Use it, and rename as...
 2043 	(output_quoted): this.
 2044 	Adjust dependencies.
 2045 	(rule_output): New.
 2046 	(user_actions_output): Use it.
 2047 	* data/skeletons/c.m4, data/skeletons/d.m4, data/skeletons/java.m4
 2048 	(b4_case): Add support for $3, an optional comment.
 2049 
 2050 2020-06-06  Akim Demaille  <akim.demaille@gmail.com>
 2051 
 2052 	CI: use GCC10 on ppc too
 2053 	We were still using GCC9, because GCC10 was failing.
 2054 
 2055 	* .travis.yml (PPC64le): Use GCC10.
 2056 	While at it, use -O2 instead of -O3: it's certainly nicer for the
 2057 	CPUs, and allows to test different sets of compiler flags (we use -O3
 2058 	in several other configurations).
 2059 
 2060 2020-06-06  Akim Demaille  <akim.demaille@gmail.com>
 2061 
 2062 	examples: fix missing includes
 2063 	* examples/c/bistromathic/parse.y: Use abort rather than assert so
 2064 	that the "unused result" warning is silenced even with -DNDEBUG.
 2065 
 2066 2020-06-03  Akim Demaille  <akim.demaille@gmail.com>
 2067 
 2068 	warnings: fix -Wmissing-prototypes issues
 2069 	* src/counterexample.c, src/lssi.c, src/parse-simulation.c,
 2070 	* src/state-item.c:
 2071 	Here.
 2072 
 2073 2020-06-03  Akim Demaille  <akim.demaille@gmail.com>
 2074 
 2075 	Merge maint into HEAD
 2076 	* upstream/maint:
 2077 	  maint: post-release administrivia
 2078 	  version 3.6.3
 2079 	  build: check -Wmissing-prototypes
 2080 	  tests: show logs
 2081 	  c++: fix printing of state number on streams
 2082 
 2083 2020-06-03  Akim Demaille  <akim.demaille@gmail.com>
 2084 
 2085 	maint: post-release administrivia
 2086 	* NEWS: Add header line for next release.
 2087 	* .prev-version: Record previous version.
 2088 	* cfg.mk (old_NEWS_hash): Auto-update.
 2089 
 2090 2020-06-03  Akim Demaille  <akim.demaille@gmail.com>
 2091 
 2092 	version 3.6.3
 2093 	* NEWS: Record release date.
 2094 
 2095 2020-06-01  Akim Demaille  <akim.demaille@gmail.com>
 2096 
 2097 	build: check -Wstrict-aliasing
 2098 	* configure.ac (warn_common): Add -Wstrict-aliasing.
 2099 
 2100 2020-06-01  Akim Demaille  <akim.demaille@gmail.com>
 2101 
 2102 	doc: using asan
 2103 	* README-hacking.md: here.
 2104 
 2105 2020-06-01  Akim Demaille  <akim.demaille@gmail.com>
 2106 
 2107 	style: fix includes
 2108 	* src/fixits.c: Follow our usual pattern.
 2109 	* src/scan-code.l, src/scan-gram.l, src/scan-skel.l: Prefer "" to
 2110 	include src/ headers.
 2111 	* README-hacking.md: Document the pattern.
 2112 
 2113 2020-06-01  Akim Demaille  <akim.demaille@gmail.com>
 2114 
 2115 	lists: fix various issues with the use of gnulib's list
 2116 	First, we should avoid code such as
 2117 
 2118 	    gl_list_iterator_t it = gl_list_iterator (deriv->children);
 2119 	    derivation *child = NULL;
 2120 	    while (gl_list_iterator_next (&it, (const void **) &child, NULL))
 2121 	      {
 2122 	        derivation_print (child, f);
 2123 
 2124 	because of -Wstrict-aliasing (whose job is to catch type-punning
 2125 	issues).  See https://lists.gnu.org/r/bug-bison/2020-05/msg00039.html.
 2126 
 2127 	Rather we need
 2128 
 2129 	    gl_list_iterator_t it = gl_list_iterator (deriv->children);
 2130 	    const void **p = NULL;
 2131 	    while (gl_list_iterator_next (&it, &p, NULL))
 2132 	      {
 2133 	        derivation *child = (derivation *) p;
 2134 	        derivation_print (child, f);
 2135 
 2136 	Second, list iterators actually have destructors.  Even though they
 2137 	are noop in the case of linked-lists, we should use them.
 2138 
 2139 	Let's address both issues with typed wrappers (such as
 2140 	derivation_list_next) that take care of both issues, and besides allow
 2141 	to scope the iterators within the loop:
 2142 
 2143 	    derivation *child;
 2144 	    for (gl_list_iterator_t it = gl_list_iterator (deriv->children);
 2145 	         derivation_list_next (&it, &child);
 2146 	         )
 2147 	      {
 2148 	        derivation_print (child, f);
 2149 
 2150 	* src/derivation.h, src/derivation.c (derivation_list_next): New.
 2151 	Use it where appropriate.
 2152 	* src/counterexample.c (search_state_list_next): New.
 2153 	Use it where appropriate.
 2154 	* src/parse-simulation.h, src/parse-simulation.c
 2155 	* src/state-item.h (state_item_list_next): New.
 2156 	Use it where appropriate.
 2157 
 2158 2020-06-01  Akim Demaille  <akim.demaille@gmail.com>
 2159 
 2160 	build: check -Wmissing-prototypes
 2161 	pstate_clear is lacking a prototype.
 2162 	Reported by Ryan
 2163 	https://lists.gnu.org/r/bug-bison/2020-05/msg00101.html
 2164 
 2165 	Besides, none of the C examples were compiled with the warning flags.
 2166 
 2167 	* configure.ac (warn_c): Add -Wmissing-prototypes.
 2168 	* data/skeletons/yacc.c (pstate_clear): Make it static.
 2169 	* examples/local.mk (TEST_CFLAGS): New.
 2170 	* examples/c/bistromathic/local.mk, examples/c/calc/local.mk,
 2171 	* examples/c/lexcalc/local.mk, examples/c/mfcalc/local.mk,
 2172 	* examples/c/pushcalc/local.mk, examples/c/reccalc/local.mk,
 2173 	* examples/c/rpcalc/local.mk:
 2174 	Use it.
 2175 
 2176 	GCC's warn_unused_result is not silenced by a cast to void, so we have
 2177 	to "use" scanf's result.
 2178 	https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509
 2179 	https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425
 2180 
 2181 	Flex generated code produces too many warnings, including things such
 2182 	as, with ICC:
 2183 
 2184 	    examples/c/lexcalc/scan.c(1088): error #1682: implicit conversion
 2185 	              of a 64-bit integral type to a smaller integral type (potential portability problem)
 2186 	    2259                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
 2187 	    2260                ^
 2188 	    2261
 2189 	    2262
 2190 
 2191 	I am tired of trying to fix Flex's output.  The project does not seem
 2192 	maintained.  We ought to avoid it.  So, for the time being, don't try
 2193 	to enable warnings with Flex.
 2194 
 2195 	* examples/c/bistromathic/parse.y, examples/c/reccalc/scan.l: Fix
 2196 	warnings.
 2197 	* doc/bison.texi: Discard scanf's return value to defeat
 2198 	-Werror=unused-result.
 2199 
 2200 2020-05-31  Akim Demaille  <akim.demaille@gmail.com>
 2201 
 2202 	gnulib: update
 2203 
 2204 2020-05-25  Akim Demaille  <akim.demaille@gmail.com>
 2205 
 2206 	style: make item_index a truly different type from item_number
 2207 	See previous commit.
 2208 
 2209 	* src/gram.h (item_index): Make it unsigned.
 2210 	Fix remaiming issues.
 2211 
 2212 2020-05-25  Vincent Imbimbo  <vmi6@cornell.edu>
 2213 
 2214 	style: decouple different uses of item_number
 2215 	item_number is used for elements of ritem as well as indices into
 2216 	ritem which is fairly confusing.  Introduce item_index to represent
 2217 	indices into ritem.
 2218 
 2219 	* src/gram.h (item_index): Introduce it for ritem indices.
 2220 	* src/closure.h, src/closure.c, src/ielr.c, src/lr0.c,
 2221 	* src/print-graph.c, src/state.h, src/state.h:
 2222 	Replace uses of item_number with item_index where appropriate.
 2223 
 2224 2020-05-24  Joshua Watt  <jpewhacker@gmail.com>
 2225 
 2226 	bison: add command line option to map file prefixes
 2227 	Teaches bison about a new command line option, --file-prefix-map OLD=NEW
 2228 	(based on the -ffile-prefix-map option from GCC) which causes it to
 2229 	replace and file path of OLD in the text of the output file with NEW,
 2230 	mainly for header guards and comments. The primary use of this is to
 2231 	make builds reproducible with different input paths, and in particular
 2232 	the debugging information produced when the source code is compiled. For
 2233 	example, a distro may know that the bison source code will be located at
 2234 	"/usr/src/bison" and thus can generate bison files that are reproducible
 2235 	with the following command:
 2236 
 2237 	    bison --output=/build/bison/parse.c -d --file-prefix-map=/build/bison/=/usr/src/bison/ parse.y
 2238 
 2239 	Importantly, this will change the header guards and #line directives
 2240 	from:
 2241 
 2242 	    #ifndef YY_BUILD_BISON_PARSE_H
 2243 	    #line 100 "/build/bison/parse.h"
 2244 
 2245 	to
 2246 
 2247 	    #ifndef YY_USR_SRC_BISON_PARSE_H
 2248 	    #line 100 "/usr/src/bison/parse.h"
 2249 
 2250 	which is reproducible.
 2251 
 2252 	See https://lists.gnu.org/r/bison-patches/2020-05/msg00016.html
 2253 
 2254 	* src/files.h, src/files.c (spec_mapped_header_file)
 2255 	(mapped_dir_prefix, map_file_name, add_prefix_map): New.
 2256 	* src/getargs.c (-M, --file-prefix-map): New option.
 2257 	* src/output.c (prepare): Define b4_mapped_dir_prefix and
 2258 	b4_spec_header_file.
 2259 	* src/scan-skel.l (@ofile@): Output the mapped file name.
 2260 	* data/skeletons/glr.c, data/skeletons/glr.cc,
 2261 	* data/skeletons/lalr1.cc, data/skeletons/location.cc,
 2262 	* data/skeletons/yacc.c:
 2263 	Adjust.
 2264 	* doc/bison.texi: Document.
 2265 	* tests/input.at, tests/output.at: Check.
 2266 
 2267 2020-05-24  Akim Demaille  <akim.demaille@gmail.com>
 2268 
 2269 	tests: fix expectations
 2270 	Should have been part of 1ec93ca2a2b4718b5d94871475520a2688b4c5c8.
 2271 
 2272 	* tests/counterexample.at: here.
 2273 
 2274 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2275 
 2276 	cex: clean the display of conflicted symbols
 2277 	Instead of `On Symbols: {b,c,}`, display `On Symbols: b, c`.
 2278 
 2279 	* src/counterexample.c (counterexample_report_reduce_reduce): We don't
 2280 	need braces.
 2281 	Use commas as a separator, not a terminator.
 2282 	* tests/counterexample.at: Adjust.
 2283 
 2284 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2285 
 2286 	tests: show logs
 2287 	* examples/c/bistromathic/bistromathic.test, examples/test: here.
 2288 
 2289 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2290 
 2291 	c++: fix printing of state number on streams
 2292 	Avoid this kind of display:
 2293 
 2294 	    LAC: checking lookahead identifier: R4 R3 G^B S5
 2295 
 2296 	* data/skeletons/lalr1.cc: Convert state_t to int before printing it.
 2297 
 2298 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2299 
 2300 	c++: fix printing of state number on streams
 2301 	Avoid this kind of display:
 2302 
 2303 	    LAC: checking lookahead identifier: R4 R3 G^B S5
 2304 
 2305 	* data/skeletons/lalr1.cc: Convert state_t to int before printing it.
 2306 
 2307 2020-05-23  Vincent Imbimbo  <vmi6@cornell.edu>
 2308 
 2309 	cex: fix pruning crash
 2310 	Fixes a crash on Cim's grammar.
 2311 	https://lists.gnu.org/r/bison-patches/2020-05/msg00107.html
 2312 
 2313 	* src/state-item.c (prune_disabled_paths): Prune forward and backwards
 2314 	paths in seperate passes.
 2315 	(prune_forward, prune_backward): New.
 2316 	(disable_state_item): Change function argument from state_item_number
 2317 	to state_item.
 2318 	(state_items_report): Add disabling to graph print-out.
 2319 	* src/conflicts.c (find_state_item_number,
 2320 	report_state_counterexamples): Add SI_DISABLED checks.
 2321 
 2322 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2323 
 2324 	regen
 2325 
 2326 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2327 
 2328 	kinds: use the symbol kinds where applicable
 2329 	Instead of generating switch statements with numbers, let's use the
 2330 	symbol kinds.  Not only is this more readable, it also makes reading
 2331 	diff easier, as a change in symbol numbers won't have such a large
 2332 	effect on the implementation of symbol actions.
 2333 
 2334 	* data/skeletons/bison.m4 (_b4_symbol_case): Use the symbol kind
 2335 	rather than its number.
 2336 
 2337 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2338 
 2339 	kinds: also define the possibly qualified symbol kinds
 2340 	* data/skeletons/bison.m4 (b4_symbol_kind): Rename as...
 2341 	(b4_symbol_kind_base): this.
 2342 	(b4_symbol_kind): New, for fully qualified kind name.
 2343 	* data/skeletons/lalr1.cc (b4_symbol_kind): New.
 2344 	Adjust to use b4_symbol_kind where appropriate.
 2345 	* src/parse-gram.h, src/parse-gram.c: regen.
 2346 
 2347 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2348 
 2349 	m4: simplify useless quotation
 2350 	* data/skeletons/bison.m4: The result of b4_symbol is "quoted"
 2351 	already, no need for m4_expand.
 2352 
 2353 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2354 
 2355 	m4: use m4_shift2 etc.
 2356 	* data/skeletons/bison.m4 (m4_shift4): New.
 2357 	Use them where applicable.
 2358 
 2359 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2360 
 2361 	tests: show logs
 2362 	* examples/c/bistromathic/bistromathic.test, examples/test: here.
 2363 
 2364 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2365 
 2366 	style: spell fixes
 2367 	* Makefile.am (codespell): New.
 2368 	* doc/bison.texi: Fixes.
 2369 	Use @option for options.
 2370 	* src/lssi.c, src/lssi.h, src/parse-simulation.h, src/state-item.c:
 2371 	Fix spellos.
 2372 
 2373 2020-05-23  Akim Demaille  <akim.demaille@gmail.com>
 2374 
 2375 	style: rename user_token_number as code
 2376 	This should have been done in 3.6, but I wanted to avoid introducing
 2377 	conflicts into Vincent's work on counterexamples.  It turns out it's
 2378 	completely orthogonal.
 2379 
 2380 	* data/README.md, data/skeletons/bison.m4, data/skeletons/c++.m4,
 2381 	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/java.m4,
 2382 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
 2383 	* data/skeletons/variant.hh, data/skeletons/yacc.c, src/conflicts.c,
 2384 	* src/derives.c, src/gram.c, src/gram.h, src/output.c,
 2385 	* src/parse-gram.c, src/parse-gram.y, src/print-xml.c, src/print.c,
 2386 	* src/reader.c, src/symtab.c, src/symtab.h, tests/input.at,
 2387 	* tests/types.at:
 2388 	s/user_token_number/code/g.
 2389 	Plus minor changes.
 2390 
 2391 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2392 
 2393 	Merge maint into master
 2394 	* upstream/maint:
 2395 	  fix generated comments
 2396 	  traces: provide a means to get short m4 traces
 2397 	  traces: show the full m4 invocation
 2398 
 2399 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2400 
 2401 	cex: replace state-item data structures
 2402 	* src/state-item.h: Add trans, prods, and revs edges to state-item
 2403 	struct.
 2404 	(si_trans, si_revs, si_prods_lookup): Remove.
 2405 	* src/state-item.c, src/lssi.c, src/parse-simulation.c,
 2406 	* src/counterexample.c: Update state-item API usage accordingly.
 2407 
 2408 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2409 
 2410 	cex: fix bad reference counting
 2411 	* src/counterexample.c (si_bfs_free): Fix reference_count
 2412 	decrementing.
 2413 
 2414 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2415 
 2416 	cex: fix miscellaneous leaks
 2417 	* src/counterexample.c (unifying_counterexample): Always free
 2418 	stage3result when it exists.
 2419 	* src/conflicts.c (report_state_counterexamples): free leaked bitset.
 2420 	* src/state-item.c (prune_disabled_paths): free leaked queue.
 2421 
 2422 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2423 
 2424 	cex: fix counterexample leak
 2425 	* src/counterexample.c (free_counterexample): New.
 2426 	Free counterexamples after printing.
 2427 
 2428 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2429 
 2430 	cex: fix lssi leaks
 2431 	* src/lssi.c (shortest_path_from_start): Free the root of
 2432 	shortest_path_from_start search.
 2433 	Free eligible bitset.
 2434 
 2435 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2436 
 2437 	cex: fix parse state leaks
 2438 	* src/parse_simulation.c: Fix bug in parse_state_free.
 2439 	Free new_root when simulate_reduction generates zero states.
 2440 
 2441 	* src/parse-simulation.c, src/parse-simulation.h
 2442 	(parse_state_list, parse_state_list_append): New.
 2443 	* src/parse-simulation.c, src/parse-simulation.h,
 2444 	* src/counterexample.c: Replace all uses of lists of parse states and
 2445 	appends to parse_state_lists with the new API.
 2446 
 2447 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2448 
 2449 	cex: derivation reference counting
 2450 	* src/derivation.h, src/derivation.c: Make derivation struct opaque.
 2451 	Add derivation_list type for clarity.
 2452 	(derivation_list_new): New.
 2453 	(derivation_list_append): New.
 2454 	(derivation_list_prepend): New.
 2455 	(derivation_new_leaf): New constructor for derivations with no
 2456 	children.
 2457 	* src/counterexample.c, src/parse-simulation.c,
 2458 	* src/parse-simulation.h: Replace uses of gl_list_t containing
 2459 	derivations with derivation_list and its API.
 2460 	Replace calls of dervation_new using null children with
 2461 	derivation_new_leaf.
 2462 	* src/parse-simulation.c: replace ps_chunk and its API with typed
 2463 	versions si_chunk and deriv_chunk.
 2464 	* src/parse-simlation.h, src/parse-simulation.c: Remove
 2465 	parse_state_retain_deriv in favor of derivation reference counting.
 2466 	* src/counterexample.c: Remove search_state_retain_deriv.
 2467 
 2468 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2469 
 2470 	cex: style changes in parse-simulation
 2471 	* src/parse-simulation.c: Formatting changes.
 2472 	(parse_state_list_new): New.
 2473 	Use it.
 2474 
 2475 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2476 
 2477 	cex: style: prefer res for returned value
 2478 	* src/lssi.c, src/parse-simulation.c: here.
 2479 
 2480 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2481 
 2482 	cex: fix memory leaks when there are conflicts
 2483 	* src/counterexample.c (production_step, reduction_step): Release
 2484 	memory of temporary objects.
 2485 
 2486 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2487 
 2488 	cex: be sure to always reclaim memory put in hashes
 2489 	One call to hash_initialize did not provide a function to free memory.
 2490 
 2491 	* src/state-item.c (hash_pair_table_create): New.
 2492 	Use it.
 2493 
 2494 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2495 
 2496 	cex: properly reclaim hash's allocated memory
 2497 	* src/state-item.c: Use hash_free where appropriate.
 2498 
 2499 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2500 
 2501 	cex: avoid gratuitous heap allocations
 2502 	There's no need to go for the heap when using gnulib's hash module.
 2503 
 2504 	* src/state-item.c (hash_pair_lookup, hash_pair_remove,
 2505 	state_sym_lookup): Use the heap Luke.
 2506 	That removes a leak from hash_pair_lookup.
 2507 	(init_prods): Use hash_pair_insert instead of duplicating it.
 2508 
 2509 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2510 
 2511 	cex: fix leaks
 2512 	* src/state-item.c: Various functions were using heap allocated locals
 2513 	and not freeing them.
 2514 
 2515 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2516 
 2517 	style: use hash_xinsert
 2518 	* gnulib: Update to get hash_xinsert.
 2519 	Use it where appropriate.
 2520 
 2521 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2522 
 2523 	cex: style changes in state-item
 2524 	* src/state-item.h, src/state-item.c (state_item): Make the state
 2525 	const.
 2526 	(state_item_set): Make it clearer that it works in the state_items
 2527 	global array.
 2528 
 2529 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2530 
 2531 	cex: stylistic changes
 2532 	* src/counterexample.c: Use 'res' as a variable name for returned
 2533 	value, as elsewhere.
 2534 	Avoid uninitialized variables, especially pointers.
 2535 	Avoid assignment where possible.
 2536 
 2537 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2538 
 2539 	cex: avoid uninitialized variables
 2540 	* src/counterexample.c (item_rule_bounds): Split into...
 2541 	(item_rule_start, item_rule_end): these.
 2542 	Adjust dependencies.
 2543 	* src/conflicts.c (find_state_item_number): New.
 2544 	Use it to avoid uninitialized variables.
 2545 
 2546 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2547 
 2548 	cex: isolate missing API from gl_list
 2549 	* src/counterexample.c (list_get_end): New.
 2550 	Use it.
 2551 	Reduce scopes.
 2552 
 2553 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2554 
 2555 	cex: tests: be robust to variations in time limit reports
 2556 	The CI has "failures" such as (253, "Null nonterminals"):
 2557 
 2558 	    @@ -21,7 +21,7 @@
 2559 	     3:    3 b: . %empty
 2560 	     3:    4 c: . %empty
 2561 	     On Symbols: {A,}
 2562 	    -time limit exceeded: 6.000000
 2563 	    +time limit exceeded: 11.000000
 2564 	     First  Example c  •  c  A  A  $end
 2565 	     First  derivation  $accept ::=[ a ::=[ c  d ::=[ a ::=[ b ::=[ • ]  d ::=[ c  A  A ] ] ] ]  $end ]
 2566 	     Second Example c  •  A  $end
 2567 
 2568 	* tests/counterexample.at (AT_BISON_CHECK_CEX): New.
 2569 	Use it to neutralize differences in timeout values.
 2570 
 2571 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2572 
 2573 	cex: fix stack overflow
 2574 	* src/parse-simulation.c: Replace reference counting with
 2575 	parse_state_retain everywhere.
 2576 	(free_parse_state): Make this function iterative instead of
 2577 	recursive. Long parse_state chains were causing stack exhaustion.
 2578 
 2579 	* tests/counterexample.at: Fix expectations.
 2580 
 2581 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2582 
 2583 	cex: fix crash from zombie result
 2584 	Fixes the SEGV in test 247 (counterexample.at:195): "S/R after first
 2585 	token".
 2586 
 2587 	* src/counterexample.c: here.
 2588 	* tests/counterexample.at: Fix expectations.
 2589 
 2590 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2591 
 2592 	cex: fixes, and enable tests
 2593 	* src/counterexample.c, src/derivation.c:
 2594 	Do not output diagnostics on stdout, that's the job of stderr, and the
 2595 	testsuite heavily depend on this.
 2596 	Do not leave trailing spaces in the output.
 2597 	* tests/counterexample.at: Use AT_KEYWORDS.
 2598 	Specify the expected outputs.
 2599 	* tests/local.mk: Add counterexample.at.
 2600 
 2601 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2602 
 2603 	cex: fix a crash
 2604 	* src/state-item.c (init_state_items): If the rule has no reductions
 2605 	at all, don't read at all in its list of reduced rules.
 2606 
 2607 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2608 
 2609 	cex: add tests
 2610 	* tests/counterexample.at: New.
 2611 
 2612 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2613 
 2614 	cex: bind counterexample generation
 2615 	* src/complain.h, src/complain.c: Add support for -Wcounterexample.
 2616 	* src/conflicts.c (report_counterexamples): New.
 2617 	(rule_conflicts_print): Use it when -Wcounterexample is given.
 2618 	* src/getargs.h, src/getargs.c: Add support for --trace=cex.
 2619 	* src/main.c (main): Init and deinit counterexample generation.
 2620 
 2621 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2622 
 2623 	cex: introduce counterexample search
 2624 	* src/counterexample.h, src/counterexample.c: New.
 2625 
 2626 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2627 
 2628 	cex: introduce the parse simulator
 2629 	* src/derivation.h, src/derivation.c,
 2630 	* src/parse-simulation.h, src/parse-simulation.c: New.
 2631 
 2632 2020-05-22  Vincent Imbimbo  <vmi6@cornell.edu>
 2633 
 2634 	cex: add support for state-item pair graph generation
 2635 	* src/lssi.h, src/lssi.c, src/state-item.h, src/state-item.c: New.
 2636 
 2637 2020-05-22  Akim Demaille  <akim.demaille@gmail.com>
 2638 
 2639 	cex: add gnulib dependencies
 2640 	* bootstrap.conf (gnulib_modules): Add linked-list.
 2641 
 2642 2020-05-21  Akim Demaille  <akim.demaille@gmail.com>
 2643 
 2644 	fix generated comments
 2645 	In Bison 3.6.2, the comments with brackets lose their brackets, for
 2646 	improper m4 quotation.
 2647 
 2648 	* data/skeletons/bison.m4 (b4_gsub): New.
 2649 	* data/skeletons/c-like.m4 (_b4_comment): Use it.
 2650 	* tests/m4.at: Check b4_gsub.
 2651 
 2652 2020-05-21  Akim Demaille  <akim.demaille@gmail.com>
 2653 
 2654 	traces: provide a means to get short m4 traces
 2655 	Let --trace=m4-early dump all the logs from the start (as --trace=m4
 2656 	used to do), and have --trace=m4 now start traces only when actually
 2657 	working of the user's grammar.
 2658 
 2659 	Can make a big difference in the case of small inputs.  E.g.
 2660 
 2661 	    $ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4 |& wc
 2662 	       3952   19446  251068
 2663 	    $ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4-early |& wc
 2664 	      19491  131904 1830495
 2665 
 2666 	* data/skeletons/traceon.m4: New.
 2667 	* src/getargs.h, src/getargs.c: Introduce --trace=m4-early.
 2668 	* src/output.c (output_skeleton): Adjust for --trace=m4 and --trace=m4-early.
 2669 
 2670 2020-05-21  Akim Demaille  <akim.demaille@gmail.com>
 2671 
 2672 	traces: show the full m4 invocation
 2673 	Unfortunately the effect of -dV is still position independent.
 2674 
 2675 	* src/output.c (output_skeleton): here.
 2676 
 2677 2020-05-20  Thomas Petazzoni  <thomas.petazzoni@bootlin.com>
 2678 
 2679 	src: make path to m4 relocatable
 2680 	Commit a4ede8f85b0c9a254fcb01e5888cee1983095669 ("package: make bison
 2681 	a relocatable package") made Bison relocatable, but in fact it still
 2682 	contains one absolute reference: the M4 variable, which points to the
 2683 	M4 program. Let's fix that by using relocate(), see if an M4 binary is
 2684 	available at the relocated location, and otherwise fallback to the
 2685 	original M4 location.
 2686 
 2687 	See https://lists.gnu.org/r/bison-patches/2020-05/msg00078.html,
 2688 	and https://lists.gnu.org/r/bison-patches/2020-05/msg00087.html.
 2689 
 2690 	* src/files.h, src/files.c (m4path): New.
 2691 	* src/output.c: Use it.
 2692 
 2693 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2694 
 2695 	CI: fix PPC recipe
 2696 
 2697 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2698 
 2699 	Merge branch 'maint'
 2700 	* upstream/maint:
 2701 	  maint: post-release administrivia
 2702 	  version 3.6.2
 2703 	  tests: improve update-test
 2704 	  CI: add GCC 10 and Clang 10
 2705 	  fix: do not emit nested comments
 2706 	  todo: update
 2707 	  examples: use markdown hyperlinks
 2708 	  tests: don't use == to compare const char *...
 2709 	  gnulib: update
 2710 
 2711 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2712 
 2713 	c: more fixes for _Noreturn
 2714 	The previous fix was insufficient.
 2715 
 2716 	    tests/types.at:366: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
 2717 	    ++ ccache clang++-mp-9.0 -Qunused-arguments -ggdb -Wall -Wextra -Wcast-align -Wchar-subscripts -fparse-all-comments -Wdocumentation -Wformat -Wimplicit-fallthrough -Wnull-dereference -Wno-sign-compare -Wno-tautological-constant-out-of-range-compare -Wpointer-arith -Wshadow -Wwrite-strings -Wextra-semi -Wold-style-cast -Wundefined-func-template -Wweak-vtables -Wunreachable-code -Wundef -pedantic -Wconversion -Wdeprecated -Wsign-compare -Wsign-conversion -Wtautological-constant-out-of-range-compare -fno-color-diagnostics -Wno-keyword-macro -Werror -std=c++98 -I/Users/akim/src/gnu/bison/tests -isystem /opt/gostai/include -isystem /opt/local/include -L/opt/gostai/lib -L/opt/local/lib -o test test.cc /Users/akim/src/gnu/bison/_build/c9d/lib/libbison.a -lintl -Wl,-framework -Wl,CoreFoundation
 2718 	    stderr:
 2719 	    test.cc:955:1: error: _Noreturn functions are a C11-specific feature [-Werror,-Wc11-extensions]
 2720 	    _Noreturn static void
 2721 	    ^
 2722 	    test.cc:963:1: error: _Noreturn functions are a C11-specific feature [-Werror,-Wc11-extensions]
 2723 	    _Noreturn static void
 2724 	    ^
 2725 	    2 errors generated.
 2726 
 2727 	* data/skeletons/c.m4 (b4_attribute_define): Do not use _Noreturn at
 2728 	all in C++, clang or not.
 2729 
 2730 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2731 
 2732 	maint: post-release administrivia
 2733 	* NEWS: Add header line for next release.
 2734 	* .prev-version: Record previous version.
 2735 	* cfg.mk (old_NEWS_hash): Auto-update.
 2736 
 2737 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2738 
 2739 	version 3.6.2
 2740 	* NEWS: Record release date.
 2741 
 2742 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2743 
 2744 	tests: improve update-test
 2745 	* build-aux/update-test: When given a directory, use the testsuite.log
 2746 	which it contains.
 2747 	Do not accept empty "from"s, as substituting the empty string with
 2748 	something is rarely a good idea.
 2749 
 2750 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2751 
 2752 	CI: add GCC 10 and Clang 10
 2753 	* .travis.yml: Here.
 2754 	* tests/input.at, tests/regression.at: Beware of clang's -Wdocumentation.
 2755 
 2756 2020-05-17  Akim Demaille  <akim.demaille@gmail.com>
 2757 
 2758 	fix: do not emit nested comments
 2759 	With input such as
 2760 
 2761 	    %token<fl> yVL_CLOCK "/*verilator sc_clock*/"
 2762 
 2763 	we generate
 2764 
 2765 	    yVL_CLOCK = 610,      /* "/*verilator sc_clock*/"  */
 2766 
 2767 	which is invalid since the comment will actually be closed on the
 2768 	first "*/".  Let's turn "*/" into "*\/" to avoid this.  But GCC will
 2769 	also warn about "/*" inside a comment, so let's "escape" it too.
 2770 
 2771 	Reported by Huang Rui.
 2772 	https://github.com/akimd/bison/issues/38
 2773 
 2774 	* data/skeletons/c-like.m4 (_b4_comment): Escape comment delimiters in
 2775 	comments.
 2776 	* tests/input.at (Torturing the Scanner): Check thes cases.
 2777 	* tests/m4.at: New.
 2778 
 2779 2020-05-16  Akim Demaille  <akim.demaille@gmail.com>
 2780 
 2781 	c: restore definition of _Noreturn as [[noreturn]] in C++
 2782 	c.m4 contains a definition of _Noreturn which is modeled after
 2783 	gnulib's lib/_Noreturn.h.  The latter was recently
 2784 	changed (b61bf2f0e8bdc1e522ae8e97d57d5625163b42ea) to not using
 2785 	[[noreturn]] at all, because the uses of _Noreturn in gnulib are
 2786 	sometimes incompatible with the rules of [[noreturn]].
 2787 
 2788 	As a result glr.cc started to use _Noreturn in C++, which clang
 2789 	refuses (all the glr.cc tests currently fail with Clang++).
 2790 
 2791 	* data/skeletons/c.m4 (b4_attribute_define): Restore the definition of
 2792 	_Noreturn as [[noreturn]] in modern C++.
 2793 	The generated code uses _Noreturn in places where [[noreturn]] is
 2794 	valid.
 2795 
 2796 2020-05-16  Akim Demaille  <akim.demaille@gmail.com>
 2797 
 2798 	examples: don't promote unchecked function calls
 2799 	* etc/bench.pl.in, examples/c/bistromathic/parse.y,
 2800 	* examples/c/calc/calc.y, examples/c/pushcalc/calc.y: Check scanf's
 2801 	return value.
 2802 	* doc/bison.texi: Likewise, but only for the second example, to avoid
 2803 	cluttering the very simple case.
 2804 
 2805 2020-05-16  Akim Demaille  <akim.demaille@gmail.com>
 2806 
 2807 	gnulib: update
 2808 
 2809 2020-05-15  Akim Demaille  <akim.demaille@gmail.com>
 2810 
 2811 	todo: update
 2812 
 2813 2020-05-14  Akim Demaille  <akim.demaille@gmail.com>
 2814 
 2815 	examples: use markdown hyperlinks
 2816 	* examples/c++/README.md, examples/c++/calc++/README.md,
 2817 	* examples/c/README.md: here.
 2818 
 2819 2020-05-14  Akim Demaille  <akim.demaille@gmail.com>
 2820 
 2821 	tests: don't use == to compare const char *...
 2822 	Reported by Dagobert Michelsen.
 2823 	https://lists.gnu.org/r/bug-bison/2020-05/msg00091.html
 2824 
 2825 	* tests/c++.at: here.
 2826 
 2827 2020-05-14  Akim Demaille  <akim.demaille@gmail.com>
 2828 
 2829 	gnulib: update
 2830 
 2831 2020-05-13  Akim Demaille  <akim.demaille@gmail.com>
 2832 
 2833 	tests: improve update-test
 2834 	* build-aux/update-test: When given a directory, use the testsuite.log
 2835 	which it contains.
 2836 	Do not accept empty "from"s, as substituting the empty string with
 2837 	something is rarely a good idea.
 2838 
 2839 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2840 
 2841 	Merge branch maint
 2842 	* maint:
 2843 	  news: update
 2844 	  maint: post-release administrivia
 2845 	  version 3.6.1
 2846 	  c++: style: reorder generated code
 2847 	  c++: provide yy::parser::symbol_type::name
 2848 	  c++: make parser::symbol_name public
 2849 	  examples: beware of ~/.inputrc
 2850 	  build: also provide lzip compressed tarballs
 2851 	  style: minor fixes
 2852 	  yacc.c: restore ansi-c compatibility
 2853 
 2854 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2855 
 2856 	news: update
 2857 
 2858 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2859 
 2860 	maint: post-release administrivia
 2861 	* NEWS: Add header line for next release.
 2862 	* .prev-version: Record previous version.
 2863 	* cfg.mk (old_NEWS_hash): Auto-update.
 2864 
 2865 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2866 
 2867 	version 3.6.1
 2868 	* NEWS: Record release date.
 2869 
 2870 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2871 
 2872 	bench: add support to randomize the order of execution
 2873 	It's amazing how much the order matters.  To a point that many of
 2874 	these benches are meaningless.  For instance (some of the benches
 2875 	where run with `make -C benches/latest rand
 2876 	BENCHFLAGS=--benchmark_min_time=3`):
 2877 
 2878 	    compiler: g++ -std=c++11 -O2
 2879 	      0. %define nofinal
 2880 	      1.
 2881 	    --------------------------------------------------
 2882 	    Benchmark           Time           CPU Iterations
 2883 	    --------------------------------------------------
 2884 	    BM_y0            1543 ns       1541 ns     441660
 2885 	    BM_y1            1521 ns       1520 ns     456535
 2886 	    --------------------------------------------------
 2887 	    BM_y0            1531 ns       1530 ns     440584
 2888 	    BM_y1            1512 ns       1511 ns     457591
 2889 	    --------------------------------------------------
 2890 	    BM_y0            1539 ns       1538 ns    2749330
 2891 	    BM_y1            1516 ns       1515 ns    2771500
 2892 	    --------------------------------------------------
 2893 	    BM_y0            1571 ns       1570 ns    2600782
 2894 	    BM_y1            1542 ns       1541 ns    2708349
 2895 	    --------------------------------------------------
 2896 	    BM_y0            1530 ns       1529 ns    2670363
 2897 	    BM_y1            1519 ns       1518 ns    2764096
 2898 
 2899 	    --------------------------------------------------
 2900 	    Benchmark           Time           CPU Iterations
 2901 	    --------------------------------------------------
 2902 	    BM_y1            1529 ns       1528 ns     451937
 2903 	    BM_y0            1508 ns       1507 ns     453944
 2904 	    --------------------------------------------------
 2905 	    BM_y1            1525 ns       1524 ns    2750684
 2906 	    BM_y0            1516 ns       1515 ns    2794034
 2907 	    --------------------------------------------------
 2908 	    BM_y1            1526 ns       1525 ns    2749620
 2909 	    BM_y0            1515 ns       1514 ns    2808112
 2910 	    --------------------------------------------------
 2911 	    BM_y1            1524 ns       1523 ns    4475844
 2912 	    BM_y0            1502 ns       1501 ns    4611665
 2913 
 2914 	* etc/bench.pl.in: here.
 2915 
 2916 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2917 
 2918 	bench: use a Makefile
 2919 	This makes it much easier to toy with the benchs.
 2920 
 2921 	* etc/bench.pl.in: Generate a Makefile instead of directly compiling
 2922 	the files.
 2923 
 2924 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2925 
 2926 	examples: use markdown hyperlinks
 2927 	* examples/c++/README.md, examples/c++/calc++/README.md,
 2928 	* examples/c/README.md: here.
 2929 
 2930 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2931 
 2932 	don't use stdnoreturn
 2933 	Reported by Paul Eggert.
 2934 
 2935 	* src/getargs.c: We don't need it anyway, since we use _Noreturn.
 2936 	* data/skeletons/c.m4: While at it, update the definition of _Noreturn
 2937 	stolen from gnulib.
 2938 
 2939 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2940 
 2941 	c++: style: reorder generated code
 2942 	The implementation of yy::parser::symbol_name is emitted even before
 2943 	the implementation of yy::parser::parser.  This makes little sense.
 2944 
 2945 	* data/skeletons/lalr1.cc (symbol_name): Move its implementation in
 2946 	the same place as in the class definition: after "error" and before
 2947 	"context".
 2948 
 2949 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2950 
 2951 	c++: provide yy::parser::symbol_type::name
 2952 	* data/skeletons/c++.m4 (yy::parser::basic_symbol::name): New.
 2953 	* data/skeletons/lalr1.cc (yy_print_): Use it.
 2954 	* doc/bison.texi: Document.
 2955 	* tests/c++.at: Check.
 2956 
 2957 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2958 
 2959 	c++: make parser::symbol_name public
 2960 	Reported by Martin Blais <blais@furius.ca>.
 2961 	https://lists.gnu.org/r/help-bison/2020-05/msg00005.html
 2962 
 2963 	* data/skeletons/lalr1.cc (symbol_name): Make it public.
 2964 	Add a private hidden hook to enable testing of private parts.
 2965 	* tests/local.at (AT_DATA_GRAMMAR_PROLOGUE): Help Emacs find the right
 2966 	language mode.
 2967 	* tests/c++.at (C++ Variant-based Symbols Unit Tests): Check that we
 2968 	can read symbol_name.
 2969 
 2970 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2971 
 2972 	examples: beware of ~/.inputrc
 2973 	* examples/c/bistromathic/bistromathic.test: here.
 2974 
 2975 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2976 
 2977 	build: also provide lzip compressed tarballs
 2978 	Suggested by Matias Fonzo <selk@dragora.org>.
 2979 
 2980 	* cfg.mk: Post announcements to bison-announce.
 2981 	* configure.ac: Build lzip packages.
 2982 	* .travis.yml: Build only xz, we don't care about the other formats
 2983 	here.
 2984 
 2985 2020-05-10  Akim Demaille  <akim.demaille@gmail.com>
 2986 
 2987 	style: minor fixes
 2988 	* examples/c/README.md: here.
 2989 
 2990 2020-05-09  Akim Demaille  <akim.demaille@gmail.com>
 2991 
 2992 	yacc.c: restore ansi-c compatibility
 2993 	Reported by neok-m4700.
 2994 	https://github.com/akimd/bison/issues/37
 2995 
 2996 	* data/skeletons/yacc.c: Don't use // comments.
 2997 
 2998 2020-05-09  Akim Demaille  <akim.demaille@gmail.com>
 2999 
 3000 	bench: use *.cc for C++
 3001 	Using *.c is simpler, but triggers annoying warnings with Clang++.
 3002 
 3003 	* etc/bench.pl.in: Please the dictator.
 3004 
 3005 2020-05-09  Akim Demaille  <akim.demaille@gmail.com>
 3006 
 3007 	style: minor fixes
 3008 	* examples/c/README.md: here.
 3009 
 3010 2020-05-09  Akim Demaille  <akim.demaille@gmail.com>
 3011 
 3012 	gnulib: update
 3013 
 3014 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3015 
 3016 	gnulib: update, and use the attribute module
 3017 	* gnulib: Update.
 3018 	* bootstrap.conf: Use attribute.
 3019 	* src/system.h: Remove macros for attributes.
 3020 	Adjust dependencies.
 3021 	* src/scan-gram.l (DEPRECATED): Rename as...
 3022 	(DEPRECATED_DIRECTIVE): this, to avoid the clash with the DEPRECATED macro.
 3023 
 3024 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3025 
 3026 	build: also provide lzip compressed tarballs
 3027 	Suggested by Matias Fonzo <selk@dragora.org>.
 3028 
 3029 	* cfg.mk: Post announcements to bison-announce.
 3030 	* configure.ac: Build lzip packages.
 3031 	* .travis.yml: Build only xz, we don't care about the other formats
 3032 	here.
 3033 
 3034 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3035 
 3036 	maint: post-release administrivia
 3037 	* NEWS: Add header line for next release.
 3038 	* .prev-version: Record previous version.
 3039 	* cfg.mk (old_NEWS_hash): Auto-update.
 3040 
 3041 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3042 
 3043 	version 3.6
 3044 	* NEWS: Record release date.
 3045 
 3046 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3047 
 3048 	examples: beware of portability issue on Windows
 3049 	Reported by Jannick.
 3050 	https://lists.gnu.org/r/bug-bison/2020-05/msg00040.html
 3051 	https://lists.gnu.org/r/bug-bison/2020-05/msg00066.html
 3052 
 3053 	* examples/test (diff_opts): Use --strip-trailing-cr if supported, to
 3054 	avoid \n vs. \r\n issues.
 3055 	* examples/c/bistromathic/bistromathic.test: When on MSYS, don't try
 3056 	to check autocompletion.
 3057 
 3058 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3059 
 3060 	regen
 3061 
 3062 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3063 
 3064 	doc: fix the generation of the man page
 3065 	When there is no bison.1 at all, the procedure fails.
 3066 
 3067 	* doc/local.mk (bison.1): Be robust to cold starts.
 3068 
 3069 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3070 
 3071 	news: prepare for 3.6
 3072 
 3073 2020-05-08  Akim Demaille  <akim.demaille@gmail.com>
 3074 
 3075 	doc: complete the table of symbols
 3076 	* doc/bison.texi: Add YYEMPTY, YYEOF and YYUNDEF.
 3077 
 3078 2020-05-07  Akim Demaille  <akim.demaille@gmail.com>
 3079 
 3080 	doc: clarify the glossary item about kinds
 3081 	* doc/bison.texi (Glossary): here.
 3082 
 3083 2020-05-06  Akim Demaille  <akim.demaille@gmail.com>
 3084 
 3085 	maint: post-release administrivia
 3086 	* NEWS: Add header line for next release.
 3087 	* .prev-version: Record previous version.
 3088 	* cfg.mk (old_NEWS_hash): Auto-update.
 3089 
 3090 2020-05-06  Akim Demaille  <akim.demaille@gmail.com>
 3091 
 3092 	version 3.5.94
 3093 	* NEWS: Record release date.
 3094 
 3095 2020-05-06  Akim Demaille  <akim.demaille@gmail.com>
 3096 
 3097 	doc: document yypstate_expected_tokens
 3098 	* doc/bison.texi (Push Parser Interface): Here.
 3099 
 3100 2020-05-06  Akim Demaille  <akim.demaille@gmail.com>
 3101 
 3102 	doc: restructure the push parser documentation
 3103 	I don't think it's fair to have yypstate_new, yypstate_delete,
 3104 	yypush_parse and yypull_parse to have their own section, on par with
 3105 	yyparse and yylex.  Let them be in a single section about push
 3106 	parsers.  And show new/delete first.
 3107 
 3108 	* doc/bison.texi (Push Parser Interface): New.
 3109 	Fuse the aforementioned sections into it.
 3110 
 3111 2020-05-06  Akim Demaille  <akim@lrde.epita.fr>
 3112 
 3113 	all: fix the interface of yyexpected_tokens
 3114 	The user gives yyexpected_tokens a limit: the max number of tokens she
 3115 	wants to hear about.  That's because an error message that reports a
 3116 	bazillion of possible tokens is useless.
 3117 
 3118 	In that case yyexpected_tokens returned 0, so the user would not know
 3119 	if there are too many expected tokens or none (yes, that's possible).
 3120 
 3121 	There are several ways to tell the user in which situation she's in:
 3122 
 3123 	- return some E2MANY, a negative value.  Then it makes the pattern
 3124 
 3125 	    int argsize = yypcontext_expected_tokens (ctx, arg, ARGS_MAX);
 3126 	    if (argsize < 0)
 3127 	      return argsize;
 3128 
 3129 	  no longer valid, as for E2MANY (i) the user must generate the error
 3130 	  message anyway, and (ii) she should not return E2MANY
 3131 
 3132 	- return ARGS_MAX + 1.  Then it makes it dangerous for the user, as
 3133 	  she has to iterate update `min (ARGS_MAX, argsize)`.
 3134 
 3135 	Returning 0 is definitely simpler and safer for the user, as it tells
 3136 	her "this is not an error, just generate your message without a list
 3137 	of expecting tokens".  So let's still return 0, but set arg[0] to the
 3138 	empty token when the list is really empty.
 3139 
 3140 	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.java
 3141 	* data/skeletons/yacc.c (yyexpected_tokens): Put the empty symbol
 3142 	first if there are no possible tokens at all.
 3143 	* examples/c/bistromathic/parse.y: Demonstrate how to use that.
 3144 
 3145 2020-05-05  Akim Demaille  <akim.demaille@gmail.com>
 3146 
 3147 	examples: fix handling of syntax errors
 3148 	The shell grammar does not allow empty statements in then/else part of
 3149 	an if, but examples/test failed to catch the syntax errors from the
 3150 	script it ran.  So exited with success anyway.
 3151 
 3152 	You would expect 'set -e' to suffice, but with bash 3.2 actually it
 3153 	does not.  As a matter of fact, I could find a way to have this behave
 3154 	properly:
 3155 
 3156 	    $ cat test.sh
 3157 	    set -e
 3158 	    cleanup ()
 3159 	    {
 3160 	      status=$?
 3161 	      echo "cleanup: $status"
 3162 	      exit $status
 3163 	    }
 3164 	    trap cleanup 0 1 2 13 15
 3165 	    . $1
 3166 	    s=$?
 3167 	    echo "test.sh: $s"
 3168 	    exit $s
 3169 
 3170 	    $ cat bistro.test
 3171 	    if true; then
 3172 	    fi
 3173 
 3174 	    $ /bin/sh ./test.sh ./bistro.test
 3175 	    ./bistro.test: line 2: syntax error near unexpected token `fi'
 3176 	    cleanup: 0
 3177 	    $ echo $?
 3178 	    0
 3179 
 3180 	Remove the set -e (or the trap), and tada, it works...  So we have to
 3181 	deal with the error by hand.
 3182 
 3183 	* examples/test ($exit): Replace with...
 3184 	($status): this.
 3185 	Preserve the exit status of the test case.
 3186 	* examples/c/bistromathic/bistromathic.test: Fix syntax error.
 3187 
 3188 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3189 
 3190 	doc: beware of timestamp issues on Haiku
 3191 	On Haiku, help2man is fired on a freshly extracted tarball.
 3192 	Reported by Bruno Haible.
 3193 	https://lists.gnu.org/r/bug-bison/2020-05/msg00055.html
 3194 
 3195 	* doc/local.mk (bison.1): Be robust to a missing help2man.
 3196 
 3197 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3198 
 3199 	tests: beware of wchar_t portability issues on AIX
 3200 	https://lists.gnu.org/r/bug-bison/2020-05/msg00050.html
 3201 	Reported by Bruno Haible.
 3202 
 3203 	* tests/diagnostics.at: here.
 3204 
 3205 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3206 
 3207 	glr.c: beware of portability issues with PTRDIFF_MAX
 3208 	For instance test 386, "glr.cc api.value.type={double}":
 3209 
 3210 	    types.at:366: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
 3211 	    stderr:
 3212 	    test.cc: In function 'ptrdiff_t yysplitStack(yyGLRStack*, ptrdiff_t)':
 3213 	    test.cc:490:4: error: 'PTRDIFF_MAX' was not declared in this scope
 3214 	       (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : YY_CAST (ptrdiff_t, SIZE_MAX))
 3215 	        ^
 3216 	    test.cc:1805:37: note: in expansion of macro 'YYSIZEMAX'
 3217 	           ptrdiff_t half_max_capacity = YYSIZEMAX / 2 / state_size;
 3218 	                                         ^~~~~~~~~
 3219 	    test.cc:490:4: note: suggested alternative: '__PTRDIFF_MAX__'
 3220 	       (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : YY_CAST (ptrdiff_t, SIZE_MAX))
 3221 	        ^
 3222 	    test.cc:1805:37: note: in expansion of macro 'YYSIZEMAX'
 3223 	           ptrdiff_t half_max_capacity = YYSIZEMAX / 2 / state_size;
 3224 	                                         ^~~~~~~~~
 3225 
 3226 	The failing tests are using glr.cc only, which I don't understand, the
 3227 	problem is rather in glr.c, so I would expect glr.c tests to also fail.
 3228 
 3229 	Reported by Bruno Haible.
 3230 	https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00053.html
 3231 
 3232 	* data/skeletons/yacc.c: Move the block that defines
 3233 	YYPTRDIFF_T/YYPTRDIFF_MAXIMUM, YYSIZE_T/YYSIZE_MAXIMUM, and
 3234 	YYSIZEOF to...
 3235 	* data/skeletons/c.m4 (b4_sizes_types_define): Here.
 3236 	(b4_c99_int_type): Also take care of the #undefinition of short.
 3237 	* data/skeletons/yacc.c, data/skeletons/glr.c: Use
 3238 	b4_sizes_types_define.
 3239 	* data/skeletons/glr.c: Adjust to use YYPTRDIFF_T/YYPTRDIFF_MAXIMUM,
 3240 	YYSIZE_T/YYSIZE_MAXIMUM.
 3241 
 3242 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3243 
 3244 	todo: update
 3245 
 3246 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3247 
 3248 	examples: beware of strnlen portability issues
 3249 	One function missing on Solaris 10 Sparc:
 3250 
 3251 	     CCLD     examples/c/bistromathic/bistromathic
 3252 	    Undefined                       first referenced
 3253 	    symbol                             in file
 3254 	    strnlen                             examples/c/bistromathic/bistromathic-parse.o
 3255 	    ld: fatal: symbol referencing errors. No output written to examples/c/bistromathic/bistromathic
 3256 
 3257 	Reported by Dagobert Michelsen.
 3258 	https://lists.gnu.org/r/bug-bison/2020-05/msg00048.html
 3259 
 3260 	* examples/c/bistromathic/parse.y (xstrndup): Don't use strnlen.
 3261 	xstrndup is assembled from gnulib's xstrndup, strndup and strnlen...
 3262 
 3263 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3264 
 3265 	examples: beware of portability issues with sh's trap
 3266 	On AIX 7.2, when invoking "exit 77", we actually exit with 127.  The
 3267 	"cleanup" function, called via trap, received an incorrect exit
 3268 	status, something described in Autoconf's doc.
 3269 	Reported by Bruno Haible.
 3270 	https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00029.html
 3271 	https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00047.html
 3272 
 3273 	* examples/test (skip): New.
 3274 	* examples/c/bistromathic/bistromathic.test,
 3275 	* examples/c/reccalc/reccalc.test: Use it, to ensure $? is set to 77
 3276 	when the trap is called.
 3277 
 3278 2020-05-04  Akim Demaille  <akim.demaille@gmail.com>
 3279 
 3280 	tests: beware of portability issues with diff -u
 3281 	AIX 7.1 supports diff -u, but its output does not match the expected
 3282 	one.
 3283 	Reported by Bruno Haible.
 3284 	https://lists.gnu.org/r/bug-bison/2020-05/msg00049.html
 3285 
 3286 	* tests/atlocal.in (DIFF_U_WORKS): New.
 3287 	* tests/local.at (AT_DIFF_U_CHECK): New.
 3288 	* tests/existing.at (_AT_TEST_EXISTING_GRAMMAR): Use AT_DIFF_U_CHECK.
 3289 
 3290 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3291 
 3292 	maint: post-release administrivia
 3293 	* NEWS: Add header line for next release.
 3294 	* .prev-version: Record previous version.
 3295 	* cfg.mk (old_NEWS_hash): Auto-update.
 3296 
 3297 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3298 
 3299 	version 3.5.93
 3300 	* NEWS: Record release date.
 3301 
 3302 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3303 
 3304 	news: update for 3.5.93
 3305 
 3306 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3307 
 3308 	gnulib: update
 3309 
 3310 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3311 
 3312 	tests: really skip tricky multichar test on Cygwin
 3313 	In Autotest, anything outside AT_SETUP/AT_CLEANUP is discarded.
 3314 
 3315 	* tests/diagnostics.at (AT_TEST): Accept a skip-if test.
 3316 	Use it to skip on cygwin.
 3317 
 3318 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3319 
 3320 	bistromathic: beware of portability issues of readline on AIX
 3321 	Readline may emit escape sequences before the prompt.
 3322 	Reported by Bruno Haible.
 3323 	https://lists.gnu.org/r/platform-testers/2020-05/msg00001.html.
 3324 
 3325 	* examples/c/bistromathic/bistromathic.test: Trust readline _only_ if
 3326 	we get what we expect on some reference computation.
 3327 
 3328 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3329 
 3330 	examples: beware of portability issues with cmp
 3331 	As someone wrote nearly 20 years ago in Autoconf's documentation,
 3332 	don't use cmp to compare text files, but diff.
 3333 	https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=abad4f0576a7dc361e5385e19c7681449103cdb1
 3334 	Reported by Jannick.
 3335 
 3336 	* examples/test: Use diff, not cmp.
 3337 
 3338 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3339 
 3340 	build: fix warnings (shown on IRIX)
 3341 	Appearing on IRIX with gcc -mabi=n32.
 3342 	Reported by Bruno Haible.
 3343 	https://lists.gnu.org/r/bug-bison/2020-05/msg00039.html
 3344 
 3345 	* examples/c++/variant-11.yy, examples/c/bistromathic/parse.y: Don't
 3346 	give chars to isdigit, cast them to unsigned char before.
 3347 	* src/complain.c: Use c_isdigit.
 3348 	* src/fixits.c (fixits_run): Avoid casts.
 3349 	* src/lalr.c (goto_print): Use %zu for a size_t.
 3350 
 3351 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3352 
 3353 	c++: be compatible with the pre-3.6 way to get a symbol's kind
 3354 	Reported by Pramod Kumbhar.
 3355 	https://lists.gnu.org/r/bug-bison/2020-05/msg00025.html
 3356 
 3357 	* data/skeletons/c++.m4: here.
 3358 
 3359 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3360 
 3361 	bistromathic: beware of portability issues with strndup
 3362 	Reported by Dagobert Michelsen.
 3363 	https://lists.gnu.org/r/bug-bison/2020-05/msg00026.html
 3364 
 3365 	* examples/c/bistromathic/parse.y (xstrndup): New.
 3366 	Use it.
 3367 
 3368 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3369 
 3370 	flex: fix incorrect use of Automake conditional
 3371 	AM_CONDITIONAL does _not_ define a shell variable...
 3372 	Reported privately by Denis Excoffier.
 3373 
 3374 	* configure.ac (LEX_CXX_WORKS): Fix its definition.
 3375 
 3376 2020-05-03  Bruno Haible  <bruno@clisp.org>
 3377 
 3378 	package: fix a link error on IRIX
 3379 	https://lists.gnu.org/r/bug-bison/2020-05/msg00035.html
 3380 
 3381 	* src/local.mk (src_bison_LDADD): Mention libbison.a before, not after, the
 3382 	system libraries.
 3383 
 3384 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3385 
 3386 	bistromathic: beware of portability of readline
 3387 	Don't try to build bistromathic if we don't have readline.
 3388 	Reported by Bruno Haible.
 3389 	https://lists.gnu.org/r/bug-bison/2020-05/msg00028.html
 3390 
 3391 	* configure.ac (ENABLE_BISTROMATHIC): New.
 3392 	* examples/c/bistromathic/local.mk: Use it.
 3393 	* examples/c/bistromathic/bistromathic.test: Exit 77 for skip.
 3394 
 3395 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3396 
 3397 	tests: beware of portability issues of sh
 3398 	"foo || bar" does not invoke bar on AIX 7.2 when foo does not exist.
 3399 	It just dies.
 3400 	Reported by Bruno Haible.
 3401 	https://lists.gnu.org/r/bug-bison/2020-05/msg00029.html
 3402 
 3403 	* examples/c/reccalc/reccalc.test: Check for seq in a subshell.
 3404 
 3405 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3406 
 3407 	maint: post-release administrivia
 3408 	* NEWS: Add header line for next release.
 3409 	* .prev-version: Record previous version.
 3410 	* cfg.mk (old_NEWS_hash): Auto-update.
 3411 
 3412 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3413 
 3414 	version 3.5.92
 3415 	* NEWS: Record release date.
 3416 
 3417 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3418 
 3419 	news: update for 3.5.92
 3420 
 3421 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3422 
 3423 	gnulib: update
 3424 
 3425 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3426 
 3427 	java: demonstrate push parsers
 3428 	* data/skeletons/lalr1.java (Location): Make it a static class.
 3429 	(Lexer.yylex, Lexer.getLVal, Lexer.getStartPos, Lexer.getEndPos):
 3430 	These are not needed in push parsers.
 3431 	* examples/java/calc/Calc.y: Demonstrate push parsers in the Java.
 3432 	* doc/bison.texi: Push parsers have been supported for a long time,
 3433 	remove incorrect statements stating the opposite.
 3434 
 3435 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3436 
 3437 	doc: clarify what a location is
 3438 	Reported by Arthur Schwarz <aschwarz1309@att.net>
 3439 	https://lists.gnu.org/r/help-bison/2013-12/msg00009.html
 3440 
 3441 	* doc/bison.texi (Location Type): here.
 3442 
 3443 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3444 
 3445 	tests: beware of mbswidth portability issues
 3446 	Shy away from these issues on Cygwin.
 3447 	Reported Denis Excoffier.
 3448 	https://lists.gnu.org/r/bug-bison/2020-05/msg00003.html
 3449 
 3450 	* tests/diagnostics.at (Tabulations and multibyte characters): Split
 3451 	in two.
 3452 
 3453 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3454 
 3455 	examples: beware of intl portability issues
 3456 	Reported by Horst von Brand.
 3457 	https://lists.gnu.org/r/bug-bison/2020-04/msg00033.html
 3458 
 3459 	* examples/c/bistromathic/Makefile: libintl might not be needed, but
 3460 	libm probably is.
 3461 	* examples/c/bistromathic/parse.y: Include locale.h.
 3462 
 3463 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3464 
 3465 	examples: beware of portability issues with readline
 3466 	On OpenBSD 6.5, the prompt is repeated, but not the actual command
 3467 	line...  Don't try to cope with that.
 3468 	Reported by Bruno Haible.
 3469 	https://lists.gnu.org/r/bug-bison/2020-05/msg00015.html
 3470 
 3471 	* examples/c/bistromathic/bistromathic.test: Skip when readline behave
 3472 	this way.
 3473 
 3474 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3475 
 3476 	examples: beware of the portability of flex --header-file
 3477 	The option --header was introduced in version 2.5.6.
 3478 	The option --header-file was introduced in version 2.6.4.
 3479 	Reported by Bruno Haible.
 3480 	https://lists.gnu.org/r/bug-bison/2020-05/msg00013.html
 3481 
 3482 	So use --header, and do bother with versions that don't support it.
 3483 
 3484 	* m4/flex.m4: Check whether flex supports --header.
 3485 	* configure.ac (FLEX_WORKS, FLEX_CXX_WORKS): Set to false if it doesn't.
 3486 	* * examples/c/reccalc/local.mk, examples/c/reccalc/Makefile:
 3487 	Use --header rather than --header-file.
 3488 
 3489 2020-05-03  Akim Demaille  <akim.demaille@gmail.com>
 3490 
 3491 	c++: provide backward compatibility on by_type
 3492 	To write unit tests for their scanners, some users depended on
 3493 	symbol_type::token():
 3494 
 3495 	    Lexer lex("12345");
 3496 	    symbol_type t = lex.nextToken();
 3497 	    assert(t.token() == token::INTLIT);
 3498 	    assert(t.value.as<int>() == 12345);
 3499 
 3500 	But symbol_type::token() was removed in Bison 3.5 because it relied on
 3501 	a conversion table.  So users had to find other patterns, such as
 3502 
 3503 	    assert(t.type_get() == by_type(token::INTLIT).type_get());
 3504 
 3505 	which relies on several private implementation details.
 3506 
 3507 	As part of transitioning from "token type" to "token kind", and making
 3508 	this a public and documented interface, "by_type" was renamed
 3509 	"by_kind" and "type_get()" was renamed as "kind()".  The latter had
 3510 	backward compatibility mechanisms, not the former.
 3511 
 3512 	In Bison 3.6 none of this should be used, but rather
 3513 
 3514 	    assert(t.kind() == symbol_kind::S_INTLIT);
 3515 
 3516 	Reported by Pramod Kumbhar.
 3517 	https://lists.gnu.org/r/bug-bison/2020-05/msg00012.html
 3518 
 3519 	* data/skeletons/c++.m4 (by_type): Make it an alias to by_kind.
 3520 
 3521 2020-05-02  Akim Demaille  <akim.demaille@gmail.com>
 3522 
 3523 	yacc.c: improve formatting of the generated code
 3524 	* data/skeletons/yacc.c (yy_reduce_print): here.
 3525 
 3526 2020-05-02  Akim Demaille  <akim.demaille@gmail.com>
 3527 
 3528 	doc: java supports push parsers since 3.0 (2013-07-25)
 3529 	* doc/bison.texi: Clarify this.
 3530 
 3531 2020-05-02  Akim Demaille  <akim.demaille@gmail.com>
 3532 
 3533 	java: fix coding style
 3534 	I don't plan to fix everything in one go.  But this was in the way of
 3535 	the next commit.
 3536 
 3537 	* data/skeletons/lalr1.java: Avoid space before parens.
 3538 	* tests/java.at: Adjust.
 3539 
 3540 2020-05-02  Akim Demaille  <akim.demaille@gmail.com>
 3541 
 3542 	style: comment changes
 3543 	* tests/java.at: here.
 3544 
 3545 2020-05-02  Akim Demaille  <akim.demaille@gmail.com>
 3546 
 3547 	todo: more
 3548 
 3549 2020-05-02  Akim Demaille  <akim.demaille@gmail.com>
 3550 
 3551 	style: more documentation about errs
 3552 	Suggested by Angelo Borsotti.
 3553 	https://lists.gnu.org/r/bug-bison/2014-02/msg00003.html
 3554 
 3555 	* src/state.h: here.
 3556 
 3557 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3558 
 3559 	doc: document the exit status
 3560 	Suggested by Alexandre Duret-Lutz.
 3561 	https://lists.gnu.org/r/bug-bison/2013-09/msg00015.html
 3562 
 3563 	* doc/bison.texi (Invocation): Here.
 3564 
 3565 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3566 
 3567 	java: add missing i18n requests
 3568 	* data/skeletons/lalr1.java (reportSyntaxError): Here.
 3569 
 3570 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3571 
 3572 	java: style: fix coding style of yyerror/reportSyntaxError
 3573 	* data/skeletons/lalr1.java: here.
 3574 
 3575 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3576 
 3577 	java: avoid useless work
 3578 	* data/skeletons/lalr1.java (yySymbolPrint): Avoid the computation of
 3579 	the argument if useless.
 3580 	While at it, fix Java coding style.
 3581 
 3582 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3583 
 3584 	java: comment changes
 3585 	* data/skeletons/lalr1.java, examples/java/calc/Calc.y: here.
 3586 
 3587 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3588 
 3589 	news: make it more consistent
 3590 	* NEWS: Use the same pattern for titles.
 3591 
 3592 2020-05-01  Akim Demaille  <akim.demaille@gmail.com>
 3593 
 3594 	c++: use modern idioms to make classes non-copyable
 3595 	Reported by Don Macpherson.
 3596 	https://lists.gnu.org/r/bug-bison/2019-05/msg00015.html
 3597 	https://github.com/akimd/bison/issues/36
 3598 
 3599 	* data/skeletons/lalr1.cc, data/skeletons/stack.hh,
 3600 	* data/skeletons/variant.hh: Delete the copy-ctor and the copy operator.
 3601 
 3602 2020-04-30  Akim Demaille  <akim.demaille@gmail.com>
 3603 
 3604 	yacc.c: avoid the use of a temporary
 3605 	* data/skeletons/yacc.c: Use YYLLOC_DEFAULT directly with the final
 3606 	destination.
 3607 
 3608 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3609 
 3610 	maint: post-release administrivia
 3611 	* NEWS: Add header line for next release.
 3612 	* .prev-version: Record previous version.
 3613 	* cfg.mk (old_NEWS_hash): Auto-update.
 3614 
 3615 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3616 
 3617 	version 3.5.91
 3618 	* NEWS: Record release date.
 3619 
 3620 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3621 
 3622 	build: fix syntax-check issues
 3623 	* cfg.mk: We do want to gettextize the examples.
 3624 	* po/POTFILES.in: Adjust.
 3625 
 3626 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3627 
 3628 	gnulib: update
 3629 
 3630 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3631 
 3632 	doc: document YYEOF, YYUNDEF and YYerror
 3633 	* doc/bison.texi (Special Tokens): New.
 3634 	* examples/c/bistromathic/parse.y: Formatting changes.
 3635 
 3636 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3637 
 3638 	package: fix distcheck
 3639 	Bison emits strings to translate in the generated code, for builtin
 3640 	tokens.  So they appear only in generated parsers, which are not
 3641 	shipped, so they are not in the src tree, so we cannot use them in our
 3642 	POTFILE.
 3643 
 3644 	Except src/parse-gram.c, which is in the source tree.  And even in the
 3645 	git repo.  But to avoid useless diffs in the repo, we do not keep the
 3646 	src/parse-gram.c _with_ the #lines.  This is done in a dist-hook which
 3647 	regenerates src/parse-gram.c when we run "make dist".
 3648 
 3649 	Unfortunately, then, update-po traverses the whole tree and sees that
 3650 	the location of the strings to translate in src/parse-gram.c have
 3651 	changed, so the bison.pot is to be updated.  And that is not possible
 3652 	in the "make dist" which is run within "make distcheck"
 3653 	(not the one preparing the dist for distcheck, the one run by
 3654 	distcheck to check that a distributed tarball can build a tarball)
 3655 	because then the src tree is read-only.
 3656 
 3657 	So let's not put src/parse-gram.c in the POTFILE, and expose these
 3658 	strings to gettextize by hand.
 3659 
 3660 	* src/i18n-strings.c: New.
 3661 	* po/POTFILES.in: Add it, and remove src/parse-gram.c.
 3662 
 3663 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3664 
 3665 	style: avoid gettextize warnings
 3666 	* src/scan-gram.l, src/scan-skel.l: Help it see the start and end of
 3667 	"character literals".
 3668 
 3669 2020-04-29  Akim Demaille  <akim.demaille@gmail.com>
 3670 
 3671 	tests: beware of portability of readline
 3672 	* examples/test: here.
 3673 
 3674 2020-04-28  Akim Demaille  <akim.demaille@gmail.com>
 3675 
 3676 	yacc.c: install backward compatibility for YYERRCODE
 3677 	Some people have been using that symbol.  Some even have #defined it
 3678 	themselves.
 3679 	https://lists.gnu.org/r/bison-patches/2020-04/msg00138.html
 3680 
 3681 	Let's provide backward compatibility, having it point to YYUNDEF, so
 3682 	that an error message is generated.
 3683 
 3684 	* data/skeletons/yacc.c (YYERRCODE): New, at the exact same location
 3685 	it was defined before.
 3686 
 3687 2020-04-28  Akim Demaille  <akim.demaille@gmail.com>
 3688 
 3689 	style: c++: s/type/kind/ where appropriate
 3690 	These are internal details.  `type_get ()` is still there to ensure
 3691 	backward compatibility, `kind ()` being the modern way.
 3692 
 3693 	* data/skeletons/c++.m4 (by_type, by_type::type): Rename as...
 3694 	(by_kind, by_kind::kind_): this.
 3695 	Adjust dependencies.
 3696 
 3697 2020-04-28  Akim Demaille  <akim.demaille@gmail.com>
 3698 
 3699 	java: clean up the definition of token kinds
 3700 	From
 3701 
 3702 	    public interface Lexer {
 3703 	      /* Token kinds.  */
 3704 	      /** Token number, to be returned by the scanner.  */
 3705 	      static final int YYEOF = 0;
 3706 	      /** Token number, to be returned by the scanner.  */
 3707 	      static final int YYERRCODE = 256;
 3708 	      /** Token number, to be returned by the scanner.  */
 3709 	      static final int YYUNDEF = 257;
 3710 	      /** Token number, to be returned by the scanner.  */
 3711 	      static final int BANG = 258;
 3712 	    ...
 3713 	      /** Deprecated, use b4_symbol(0, id) instead.  */
 3714 	      public static final int EOF = YYEOF;
 3715 
 3716 	to
 3717 
 3718 	    public interface Lexer {
 3719 	      /* Token kinds.  */
 3720 	      /** Token "end of file", to be returned by the scanner.  */
 3721 	      static final int YYEOF = 0;
 3722 	      /** Token error, to be returned by the scanner.  */
 3723 	      static final int YYerror = 256;
 3724 	      /** Token "invalid token", to be returned by the scanner.  */
 3725 	      static final int YYUNDEF = 257;
 3726 	      /** Token "!", to be returned by the scanner.  */
 3727 	      static final int BANG = 258;
 3728 	    ...
 3729 	      /** Deprecated, use YYEOF instead.  */
 3730 	      public static final int EOF = YYEOF;
 3731 
 3732 	* data/skeletons/java.m4 (b4_token_enum): Display the symbol's tag in
 3733 	comment.
 3734 	* data/skeletons/lalr1.java: Address overquotation issue.
 3735 	* examples/java/calc/Calc.y, examples/java/simple/Calc.y: Use YYEOF,
 3736 	not EOF.
 3737 
 3738 2020-04-28  Akim Demaille  <akim.demaille@gmail.com>
 3739 
 3740 	error: rename the error token from YYERRCODE to YYerror
 3741 	See https://lists.gnu.org/r/bison-patches/2020-04/msg00162.html.
 3742 
 3743 	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc,
 3744 	* data/skeletons/lalr1.java, doc/bison.texi,
 3745 	* examples/c/bistromathic/parse.y, src/scan-gram.l, src/symtab.c
 3746 	(YYERRCODE): Rename as...
 3747 	(YYerror): this.
 3748 	Adjust dependencies.
 3749 
 3750 2020-04-27  Akim Demaille  <akim.demaille@gmail.com>
 3751 
 3752 	dogfooding: use YYERRCODE in our scanner
 3753 	* src/scan-gram.l: Use it.
 3754 	* tests/input.at: Adjust.
 3755 
 3756 2020-04-27  Akim Demaille  <akim.demaille@gmail.com>
 3757 
 3758 	scanner: avoid spurious errors about empty character literals
 3759 	On an invalid character literal such as "'\777'" we used to produce
 3760 	two errors:
 3761 
 3762 	    input.y:2.9-12: error: invalid number after \-escape: 777
 3763 	    input.y:2.8-13: error: empty character literal
 3764 
 3765 	Get rid of the second one.
 3766 
 3767 	* src/scan-gram.l (STRING_GROW_ESCAPE): New.
 3768 	* tests/input.at: Adjust.
 3769 
 3770 2020-04-27  Akim Demaille  <akim.demaille@gmail.com>
 3771 
 3772 	scanner: bad character literals are errors
 3773 	* src/scan-gram.l: These are errors, not warnings.
 3774 	* tests/input.at: Adjust.
 3775 
 3776 2020-04-27  Akim Demaille  <akim.demaille@gmail.com>
 3777 
 3778 	regen
 3779 
 3780 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3781 
 3782 	todo: update
 3783 
 3784 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3785 
 3786 	all: don't emit an error message when the scanner returns YYERRCODE
 3787 	I'm quite pleased to see that the tricky case of glr.c was already
 3788 	prepared by the changes to support syntax_error exceptions.  Better
 3789 	yet, it is actually syntax_error that becomes a special case of the
 3790 	general pattern: make yytoken be YYERRCODE.
 3791 
 3792 	* data/skeletons/glr.c (YYFAULTYTOK): Remove the now useless (Basil)
 3793 	Faulty token.
 3794 	Instead, use the error token.
 3795 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: When computing
 3796 	the action, first check the case of the error token.
 3797 
 3798 	* tests/calc.at: Check cases for the error token symbols before and
 3799 	after it.
 3800 
 3801 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3802 
 3803 	c: don't emit an error message when the scanner returns YYERRCODE
 3804 	* data/skeletons/yacc.c (yyparse): When the scanner returns YYERRCODE,
 3805 	go directly to error recovery (yyerrlab1).
 3806 	However, don't keep the error token as lookahead, that token is too
 3807 	special.
 3808 	* data/skeletons/lalr1.cc: Likewise.
 3809 
 3810 	* examples/c/bistromathic/parse.y (yylex): Use that feature to report
 3811 	nicely invalid characters.
 3812 	* examples/c/bistromathic/bistromathic.test: Check that.
 3813 	* examples/test: Neutralize gratuitous differences such as rule
 3814 	position.
 3815 
 3816 	* tests/calc.at: Check that case in C only.
 3817 	The other case seem to be working, but that's an illusion that the
 3818 	next commit will address (in fact, they can enter endless loops, and
 3819 	report the error several times anyway).
 3820 
 3821 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3822 
 3823 	examples: bistromathic: demonstrate error recovery
 3824 	* examples/c/bistromathic/parse.y: here.
 3825 	* examples/c/bistromathic/bistromathic.test: Check it.
 3826 	Included a stupid case where the error is actually ignored.
 3827 
 3828 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3829 
 3830 	examples: bistromathic: when quitting, close the current line
 3831 	When the user ctrl-d the line, we left the cursor not at col 0.
 3832 	Let's fix that.
 3833 	This revealed a few short-comings in the testing framework.
 3834 
 3835 	* examples/test (run): Also display the diffs.
 3836 	And support -n.
 3837 	* examples/c/bistromathic/bistromathic.test
 3838 	* examples/c/bistromathic/parse.y
 3839 
 3840 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3841 
 3842 	examples: bistromathic: comment changes
 3843 	* examples/c/bistromathic/parse.y: here.
 3844 
 3845 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3846 
 3847 	doc: hacking tricks
 3848 	* README-hacking.md: Here.
 3849 
 3850 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3851 
 3852 	c++: make valid to print the empty symbol
 3853 	* data/skeletons/lalr1.cc (yy_print_): here.
 3854 
 3855 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3856 
 3857 	c++: always define symbol_name
 3858 	* data/skeletons/lalr1.cc (symbol_name): Always define it, even when
 3859 	it's actually yytname which is used.
 3860 
 3861 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3862 
 3863 	c++: fix a few style issues
 3864 	* data/skeletons/lalr1.cc (yystack_print_, yy_reduce_print_): Add
 3865 	missing const.
 3866 	(yystack_print_): Rename as...
 3867 	(yy_stack_print_): this.
 3868 	* data/skeletons/glr.cc (yy_symbol_value_print_, yy_symbol_print_):
 3869 	Add missing const.
 3870 
 3871 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3872 
 3873 	all: prefer YYERRCODE to YYERROR
 3874 	We will not keep YYERRCODE anyway, it causes backward compatibility
 3875 	issues.  So as a first step, let all the skeletons use that name,
 3876 	until we have a better one.
 3877 
 3878 	* data/skeletons/bison.m4, data/skeletons/glr.c,
 3879 	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
 3880 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
 3881 	* data/skeletons/yacc.c, doc/bison.texi, tests/headers.at,
 3882 	* tests/input.at:
 3883 	here.
 3884 
 3885 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3886 
 3887 	style: glr.c: clarify
 3888 	* data/skeletons/glr.c: Make the code a bit clearer.
 3889 
 3890 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3891 
 3892 	style: prefer b4_has_translations_if
 3893 	* data/skeletons/glr.c, data/skeletons/yacc.c: here.
 3894 
 3895 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3896 
 3897 	style: glr.c: fix indentation issue
 3898 	* data/skeletons/glr.c (yyparse): here.
 3899 
 3900 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3901 
 3902 	style: fix a few remaining 'type' instead of 'kind'
 3903 	* data/skeletons/glr.c, data/skeletons/yacc.c (YY_SYMBOL_PRINT):
 3904 	Here.
 3905 
 3906 2020-04-26  Akim Demaille  <akim.demaille@gmail.com>
 3907 
 3908 	skeletons: make the warning about implementation details clearer
 3909 	* data/skeletons/bison.m4 (b4_disclaimer): Here.
 3910 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: Use it.
 3911 
 3912 2020-04-25  Akim Demaille  <akim.demaille@gmail.com>
 3913 
 3914 	style: c: fix a few minor issues about indentation of cpp directives
 3915 	* README-hacking.md: More about cpp.
 3916 	* data/skeletons/c.m4, data/skeletons/yacc.c: Style changes.
 3917 
 3918 2020-04-25  Akim Demaille  <akim.demaille@gmail.com>
 3919 
 3920 	bench: store in benches/012 rather than in benches/12
 3921 	* etc/bench.pl.in ($basedir): New.
 3922 	Format $count with a least three digits.
 3923 
 3924 2020-04-25  Akim Demaille  <akim.demaille@gmail.com>
 3925 
 3926 	bench: minor improvements
 3927 	* etc/bench.pl.in: Don't force parse.error=detailed
 3928 	Use a simpler way to display the pseudo %bison directive.
 3929 	(&bench_with_gbenchmark): Give details about the compiler.
 3930 
 3931 2020-04-25  Akim Demaille  <akim.demaille@gmail.com>
 3932 
 3933 	style: clarify #endif
 3934 	We could try to avoid the weird "#if 1", but then the indentation of
 3935 	the inner #if would be wrong.  Let' keep it this way.
 3936 
 3937 	* data/skeletons/yacc.c: here.
 3938 	Also, avoid sticking the comment to the directive.
 3939 
 3940 2020-04-25  Akim Demaille  <akim.demaille@gmail.com>
 3941 
 3942 	style: minor fixes
 3943 	* data/skeletons/bison.m4, doc/bison.texi: Spell check.
 3944 	* examples/c/bistromathic/parse.y (N_): Remove, now useless.
 3945 
 3946 2020-04-24  Akim Demaille  <akim.demaille@gmail.com>
 3947 
 3948 	examples: bistromathic: shorten token description
 3949 	* examples/c/bistromathic/parse.y: "number" is enough.
 3950 	* doc/bison.texi: Likewise.
 3951 
 3952 2020-04-24  Akim Demaille  <akim.demaille@gmail.com>
 3953 
 3954 	examples: bistromathic: demonstrate internationalization
 3955 	Currently it was only using stubs.  Let's actually translate the
 3956 	strings using gettext.
 3957 
 3958 	* examples/c/bistromathic/local.mk: Define LOCALEDIR, BISON_LOCALEDIR
 3959 	and link with libintl.
 3960 	* examples/c/bistromathic/parse.y: Use them.
 3961 	Remove useless includes.
 3962 	Take ENABLE_NLS into account.
 3963 	(error_format_string): New.
 3964 	(yyreport_syntax_error): Rewrite to rely on a format string, which is
 3965 	more appropriate for internationalization.
 3966 	* examples/c/bistromathic/Makefile: We no longer use Flex.
 3967 	We need readline and intl.
 3968 
 3969 	* doc/bison.texi: Point to bistromathic for a better option for
 3970 	internationalization.
 3971 	* po/POTFILES.in: Add bistromathic.
 3972 
 3973 2020-04-24  Akim Demaille  <akim.demaille@gmail.com>
 3974 
 3975 	todo: update for YYERRCODE
 3976 
 3977 2020-04-24  Akim Demaille  <akim.demaille@gmail.com>
 3978 
 3979 	regen
 3980 
 3981 2020-04-24  Akim Demaille  <akim.demaille@gmail.com>
 3982 
 3983 	diagnostics: fix a typo
 3984 	* src/complain.c: here.
 3985 
 3986 2020-04-20  Akim Demaille  <akim.demaille@gmail.com>
 3987 
 3988 	c, c++: provide a default definition for N_
 3989 	In C/C++, N_ is a no-op.  Define it if the user didn't.
 3990 	Suggested by Frank Heckenbach.
 3991 	https://lists.gnu.org/r/bug-bison/2020-04/msg00010.html
 3992 
 3993 	* src/output.c (prepare_symbol_names): Rename has_translations as
 3994 	has_translations_flag.
 3995 	* data/skeletons/bison.m4 (b4_has_translations_if): New.
 3996 	* data/skeletons/java.m4 (b4_trans): Use it.
 3997 
 3998 	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/yacc.c
 3999 	(N_): Provide a default definition.
 4000 
 4001 2020-04-19  Akim Demaille  <akim.demaille@gmail.com>
 4002 
 4003 	i18n: also look in src/parse-gram.c
 4004 	Some strings appears in the generated file only, e.g., translation of
 4005 	"end of file".  So don't forget to go and see there.
 4006 
 4007 2020-04-19  Akim Demaille  <akim.demaille@gmail.com>
 4008 
 4009 	style: fix comments
 4010 	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
 4011 	* data/skeletons/yacc.c: here.
 4012 
 4013 2020-04-19  Akim Demaille  <akim.demaille@gmail.com>
 4014 
 4015 	tokens: clean up the translation of special symbols
 4016 	* src/output.c (prepare_symbol_names): Don't play tricks with the
 4017 	symbols, it's quite too late.
 4018 	(has_translations): Move to...
 4019 	* src/symtab.c: here.
 4020 	(symbols_pack): Use it to enable translation for special symbols.
 4021 
 4022 2020-04-19  Akim Demaille  <akim.demaille@gmail.com>
 4023 
 4024 	news: fix typo
 4025 	Reported by Frank Heckenbach.
 4026 
 4027 2020-04-19  Akim Demaille  <akim.demaille@gmail.com>
 4028 
 4029 	tests: beware of portability issues with wc
 4030 	On macOS, wc -l always prepends the result with a tab, even when fed
 4031 	by stdin.  But anyway, we should have used `grep -c -v`, which appears
 4032 	to be portable according to Autoconf's "Limitations of Usual Tools"
 4033 	section.
 4034 	Reported by Denis Excoffier.
 4035 	https://lists.gnu.org/r/bug-bison/2020-04/msg00009.html
 4036 
 4037 	* tests/calc.at (_AT_CHECK_CALC): Use grep's -c instead.
 4038 
 4039 2020-04-18  Akim Demaille  <akim.demaille@gmail.com>
 4040 
 4041 	maint: post-release administrivia
 4042 	* NEWS: Add header line for next release.
 4043 	* .prev-version: Record previous version.
 4044 	* cfg.mk (old_NEWS_hash): Auto-update.
 4045 
 4046 2020-04-18  Akim Demaille  <akim.demaille@gmail.com>
 4047 
 4048 	version 3.5.90
 4049 	* NEWS: Record release date.
 4050 
 4051 2020-04-18  Akim Demaille  <akim.demaille@gmail.com>
 4052 
 4053 	examples: beware of readline on macOS
 4054 	macOS' version of readline does not repeat stdin on stdout in
 4055 	non-interactive mode, contrary to the current version of GNU readline.
 4056 
 4057 	* examples/test: Add support for strip_prompt.
 4058 	* examples/c/bistromathic/bistromathic.test (strip_prompt): Set it
 4059 	when needed.
 4060 	Early exit when needed.
 4061 
 4062 2020-04-18  Akim Demaille  <akim.demaille@gmail.com>
 4063 
 4064 	c++: give public access to the symbol kind
 4065 	symbol_type::token () was removed: it returned the token kind of a
 4066 	symbol.  To do that, one needs to convert from the symbol kind to the
 4067 	token kind, which requires a table.
 4068 
 4069 	This broke some users' unit tests for scanners, see
 4070 	https://lists.gnu.org/r/bug-bison/2020-01/msg00001.html
 4071 	https://lists.gnu.org/r/bug-bison/2020-03/msg00020.html
 4072 	https://lists.gnu.org/r/help-bison/2020-04/msg00005.html
 4073 
 4074 	Instead of making this possible again, let's check the symbol's kind
 4075 	instead.  So give proper access to a symbol's kind.
 4076 
 4077 	That feature existed, undocumented, as 'type_get()'.  Let's rename
 4078 	this as 'kind()'.
 4079 
 4080 	* data/skeletons/c++.m4, data/skeletons/glr.cc,
 4081 	* data/skeletons/lalr1.cc (type_get): Rename as...
 4082 	(kind): This.
 4083 	(type_get): Install a backward compatibility alias.
 4084 	* doc/bison.texi (Complete Symbols): Document symbol_type and
 4085 	symbol_type::kind.
 4086 
 4087 2020-04-17  Akim Demaille  <akim.demaille@gmail.com>
 4088 
 4089 	doc: token_kind_type in C++
 4090 	* data/skeletons/c++.m4: Define the old names in terms on the new
 4091 	ones, instead of the converse.
 4092 	* doc/bison.texi (C++ Parser Interface): Be more extensive about
 4093 	token_kind_type.
 4094 
 4095 2020-04-16  Akim Demaille  <akim.demaille@gmail.com>
 4096 
 4097 	doc: updates for 3.6
 4098 	* doc/bison.texi: More s/token type/token kind/.
 4099 	* NEWS: Update.
 4100 
 4101 2020-04-16  Akim Demaille  <akim.demaille@gmail.com>
 4102 
 4103 	skeletons: use symbol(-2, kind)
 4104 	Not all the symbols have a fixed symbol code.  UNDEF's one is fixed:
 4105 	-2.
 4106 
 4107 	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
 4108 	* data/skeletons/yacc.c: here.
 4109 
 4110 2020-04-16  Akim Demaille  <akim.demaille@gmail.com>
 4111 
 4112 	style: comments changes about error handling
 4113 	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
 4114 	* data/skeletons/lalr1.java, data/skeletons/yacc.c: here.
 4115 	* data/skeletons/lalr1.cc: Reduce scope.
 4116 
 4117 2020-04-14  Akim Demaille  <akim.demaille@gmail.com>
 4118 
 4119 	examples: bistro: don't be lazy with switch
 4120 	* examples/c/bistromathic/parse.y (yylex): Use the switch to
 4121 	discriminate all the cases.
 4122 
 4123 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4124 
 4125 	doc: spell check
 4126 	* doc/bison.texi, NEWS, README-hacking.md: here.
 4127 	And elsewhere.
 4128 
 4129 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4130 
 4131 	gnulib: update
 4132 
 4133 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4134 
 4135 	doc: more about the coding style
 4136 	* README-hacking.md: here.
 4137 	(Troubleshooting): New.
 4138 
 4139 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4140 
 4141 	java: promote YYEOF rather that Lexer.EOF
 4142 	* doc/bison.texi: here.
 4143 	* data/skeletons/lalr1.java: Use YYEOF.
 4144 
 4145 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4146 
 4147 	java: fix names
 4148 	* data/skeletons/lalr1.java (yySymbolPrint): There are no pointers
 4149 	here, remove the `p` suffix.
 4150 	Use the appropriate type for locations.
 4151 
 4152 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4153 
 4154 	doc: java: SymbolKind, etc.
 4155 	Why didn't I think about this before???  symbolName should be a method
 4156 	of SymbolKind.
 4157 
 4158 	* data/skeletons/lalr1.java (YYParser::yysymbolName): Move as...
 4159 	* data/skeletons/java.m4 (SymbolKind::getName): this.
 4160 	Make the table a static final table, not a local variable.
 4161 	Adjust dependencies.
 4162 	* doc/bison.texi (Java Parser Interface): Document i18n.
 4163 	(Java Parser Context Interface): Document SymbolKind.
 4164 	* examples/java/calc/Calc.y, tests/local.at: Adjust.
 4165 
 4166 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4167 
 4168 	style: java: get closer to the Java style
 4169 	* examples/java/calc/Calc.y, examples/java/simple/Calc.y: here.
 4170 
 4171 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4172 
 4173 	doc: c++: document parser::context
 4174 	* doc/bison.texi (C++ Parser Context): New.
 4175 
 4176 	* data/skeletons/lalr1.cc (parser::yysymbol_name): Rename as...
 4177 	(parser::symbol_name): this.
 4178 	(A Complete C++ Example): Promote LAC, now that we have it.
 4179 	Promote parse.error detailed over verbose.
 4180 	* examples/c++/calc++/calc++.test, tests/local.at: Adjust.
 4181 
 4182 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4183 
 4184 	doc: promote YYEOF
 4185 	* NEWS (Deep overhaul of the symbol and token kinds): New.
 4186 	* doc/bison.texi: Promote YYEOF over "0" in scanners.
 4187 	(Token Decl): No longer show YYEOF here, it now works by default.
 4188 	(Token I18n): More details about YYEOF here.
 4189 	(Calc++): Just use YYEOF.
 4190 
 4191 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4192 
 4193 	d: put YYEMPTY in the TokenKind
 4194 	* data/skeletons/d.m4, data/skeletons/lalr1.d (b4_token_enums): Rename
 4195 	YYTokenType as TokenKind.
 4196 	Define YYEMPTY.
 4197 	* examples/d/calc.y, tests/calc.at, tests/scanner.at: Adjust.
 4198 
 4199 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4200 
 4201 	regen
 4202 
 4203 2020-04-13  Akim Demaille  <akim.demaille@gmail.com>
 4204 
 4205 	c, c++: also define YYEMPTY in yytoken_kind_t
 4206 	I have been hesitating a lot before doing it ---after all the user
 4207 	must not use this kind, so what's the point of showing it in
 4208 	yytoken_kind_t.  And eventually I chose to play it safe with the
 4209 	typing system and make it possible to use yytoken_kind_t for all the
 4210 	tokens, even the "empty token".
 4211 
 4212 	* data/skeletons/c.m4: Give an id and a tag to YYEMPTY.
 4213 	(b4_token_enums): Define YYEMPTY.
 4214 	* data/skeletons/c++.m4 (b4_token_enums): Define YYEMPTY.
 4215 	* data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/yacc.c:
 4216 	(YYEMPTY): Remove.
 4217 	Use b4_symbol(-2, id) instead.
 4218 
 4219 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4220 
 4221 	doc: use "code", not "number", for token (and symbol) kinds
 4222 	"Number" is too much about arithmethics.  "Code" conveys better the
 4223 	"enum" nature of token kinds.  And of symbol kinds.
 4224 
 4225 	* doc/bison.texi: Here.
 4226 
 4227 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4228 
 4229 	doc: promote yytoken_kind_t, not yytokentype
 4230 	* data/skeletons/c.m4 (yytoken_kind_t): New.
 4231 	* data/skeletons/c++.m4, data/skeletons/lalr1.cc (yysymbol_kind_type):
 4232 	New.
 4233 	* examples/c/lexcalc/parse.y, examples/c/reccalc/parse.y,
 4234 	* tests/regression.at:
 4235 	Use them.
 4236 	* doc/bison.texi: Replace "enum yytokentype" by "yytoken_kind_t".
 4237 	(api.token.raw): Explain that it forces "yytoken_kind_t" to coincide
 4238 	with "yysymbol_kind_t".
 4239 	(Calling Convention): Mention YYEOF.
 4240 	(Table of Symbols): Add entries for "yytoken_kind_t" and
 4241 	"yysymbol_kind_t".
 4242 	(Glossary): Add entries for "Kind", "Token kind" and "Symbol kind".
 4243 
 4244 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4245 
 4246 	doc: document yypcontext_t, and api.symbol.prefix
 4247 	* doc/bison.texi (%define Summary): Document api.symbol.prefix.
 4248 	(Syntax Error Reporting Function): Document yypcontext_t,
 4249 	yypcontext_location, yypcontext_token, yypcontext_expected_tokens, and
 4250 	yysymbol_kind_t.
 4251 
 4252 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4253 
 4254 	c: rename yyexpected_tokens as yypcontext_expected_tokens
 4255 	The user should think of yypcontext fields as accessible only via
 4256 	yypcontext_* functions.  So let's rename yyexpected_tokens to reflect
 4257 	that.
 4258 
 4259 	Let's _not_ rename yyreport_syntax_error, as the user may define this
 4260 	function, and is not allowed to access directly the fields of
 4261 	yypcontext_t: she *must* use the "accessors".  This is comparable to
 4262 	the case of C++/Java where the user defines
 4263 	parser::report_syntax_error, not parser::context::report_syntax_error.
 4264 
 4265 	* data/skeletons/glr.c, data/skeletons/yacc.c (yyexpected_tokens):
 4266 	Rename as...
 4267 	(yypcontext_expected_tokens): this.
 4268 	Adjust dependencies.
 4269 
 4270 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4271 
 4272 	skeletons: clarify the tag of special tokens
 4273 	From
 4274 
 4275 	    GRAM_EOF = 0,                  /* $end  */
 4276 	    GRAM_ERRCODE = 1,              /* error  */
 4277 	    GRAM_UNDEF = 2,                /* $undefined  */
 4278 
 4279 	to
 4280 
 4281 	    GRAM_EOF = 0,                  /* "end of file"  */
 4282 	    GRAM_ERRCODE = 1,              /* error  */
 4283 	    GRAM_UNDEF = 2,                /* "invalid token"  */
 4284 
 4285 	* src/output.c (symbol_tag): New.
 4286 	Use it to pass the token names and the symbol tags to the skeletons.
 4287 
 4288 	* tests/input.at: Adjust.
 4289 
 4290 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4291 
 4292 	skeletons: use "invalid token" instead of "$undefined"
 4293 	* src/output.c (prepare_symbol_names): Also handle undeftoken.
 4294 	* tests/actions.at, tests/calc.at, tests/regression.at: Adjust.
 4295 
 4296 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4297 
 4298 	skeletons: make the eof token translatable if i18n is enabled
 4299 	* src/output.c (has_translations): New.
 4300 	(prepare_symbol_names): Translate endtoken if the user already
 4301 	translated tokens.
 4302 
 4303 	* examples/c/bistromathic/parse.y, src/parse-gram.y: Simplify.
 4304 
 4305 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4306 
 4307 	skeletons: use "end of file" instead of "$end"
 4308 	The name "$end" is nice in the report, in particular it avoids that
 4309 	pointed-rules (aka items) be too long.  It also helps keeping them
 4310 	"standard".
 4311 
 4312 	But it is bad in error messages, we should report "end of file" (or
 4313 	maybe "end of input", this is debatable).  So, unless the user already
 4314 	defined the alias for the error token herself, make it "end of file".
 4315 	It should even be translated if the user already translated some
 4316 	tokens, so that there is now no strong reason to redefine the $end
 4317 	token.
 4318 
 4319 	* src/output.c (prepare_symbol_names): Issue "end of file" instead of
 4320 	"$end".
 4321 
 4322 	* data/skeletons/lalr1.java (yytnamerr_): Remove the renaming hack.
 4323 
 4324 	* build-aux/update-test: Accept files with names containing a "+",
 4325 	such as c++.at.
 4326 	* tests/actions.at, tests/c++.at, tests/conflicts.at,
 4327 	* tests/glr-regression.at, tests/regression.at, tests/skeletons.at:
 4328 	Adjust.
 4329 
 4330 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4331 
 4332 	diagnostics: replace "user token number" by "token code"
 4333 	Yet, don't change the structure identifier to avoid introducing
 4334 	conflicts in Vincent Imbimbo's PR (which, amusingly enough, is about
 4335 	conflicts).
 4336 
 4337 	* src/symtab.c: here.
 4338 	* tests/diagnostics.at, tests/input.at: Adjust.
 4339 
 4340 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4341 
 4342 	c++: remove the yy prefix from some functions
 4343 	yy::parser features a parse() function, not a yyparse() one.
 4344 
 4345 	* data/skeletons/lalr1.cc (yyreport_syntax_error)
 4346 	(context::yyexpected_tokens): Rename as...
 4347 	(report_syntax_error, context::expected_tokens): these.
 4348 
 4349 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4350 
 4351 	tokens: properly define the YYEOF token kind
 4352 	Currently EOF is handled in an adhoc way, with a #define YYEOF 0 in
 4353 	the implementation file.  As a result, the user has to define her own
 4354 	EOF token if she wants to use it, which is a pity.
 4355 
 4356 	Give the $end token a visible kind name, YYEOF.  Except that in C,
 4357 	where enums are not scoped, we would have collisions between all the
 4358 	definitions of YYEOFs in the header files, so in C, make it
 4359 	<api.PREFIX>EOF.
 4360 
 4361 	* data/skeletons/c.m4 (YYEOF): Override its name to avoid collisions.
 4362 	Unless the user already gave it a different name.
 4363 	* data/skeletons/glr.c (YYEOF): Remove.
 4364 	Use ]b4_symbol(0, [id])[ instead.
 4365 	Add support for "pre_epilogue", for glr.cc.
 4366 	* data/skeletons/glr.cc: Remove dead code (never emitted #undefs).
 4367 	* data/skeletons/yacc.c
 4368 	* src/parse-gram.c
 4369 	* src/reader.c
 4370 	* src/symtab.c
 4371 	* tests/actions.at
 4372 	* tests/input.at
 4373 
 4374 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4375 
 4376 	tokens: define the "$undefined" token kind
 4377 	* data/skeletons/bison.m4 (b4_symbol_token_kind): Give a definition to
 4378 	$undefined.
 4379 	(b4_token_visible_if): $undefined has an id.
 4380 	* src/output.c (prepare_symbol_definitions): Stop lying: $undefined
 4381 	_is_ a token.
 4382 	* tests/input.at: Adjust.
 4383 
 4384 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4385 
 4386 	tokens: properly define the "error" token kind
 4387 	There are people out there that do use YYERRCODE (the token kind of
 4388 	the error token).  See for instance
 4389 	https://github.com/borbolla-automation/SPC_Machines/blob/3812012bb782bfdfe7b325950a35cd337925fcad/unixODBC-2.3.2/Drivers/nn/yylex.c.
 4390 
 4391 	Currently, YYERRCODE is defined by yacc.c in an adhoc way as a #define
 4392 	in the *.c file only.  It belongs with the other token kinds.
 4393 
 4394 	YYERRCODE is not a nice name, it does not fit in our naming scheme.
 4395 	YYERROR would be more logical, but it collides with the YYERROR macro.
 4396 	Shall we keep the same name in all the skeletons?  Besides, to avoid
 4397 	collisions in C, we need to apply the api prefix: YYERRCODE is
 4398 	actually <PREFIX>ERRCODE.  This is not needed in the other languages.
 4399 
 4400 	* data/skeletons/bison.m4 (b4_symbol_token_kind): New.
 4401 	Map the error token to "YYERRCODE".
 4402 	* data/skeletons/yacc.c (YYERRCODE): Don't define it, it's handled by...
 4403 	* src/output.c (prepare_symbol_definitions): this.
 4404 	* tests/input.at (Redefining the error token): Check it.
 4405 
 4406 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4407 
 4408 	tokens: style: minor fixes
 4409 	* data/skeletons/bison.m4 (b4_symbol_kind): Dispatch on the UNDEF
 4410 	token number rather than its name.
 4411 	* data/skeletons/c++.m4, data/skeletons/c.m4, data/skeletons/java.m4:
 4412 	Comment changes.
 4413 
 4414 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4415 
 4416 	glr.cc: remove dead code
 4417 	* data/skeletons/glr.cc: here.
 4418 
 4419 2020-04-12  Akim Demaille  <akim.demaille@gmail.com>
 4420 
 4421 	c++: fix generated headers
 4422 	A forthcoming commit (tokens: properly define the "error" token kind)
 4423 	revealed a problem in the C++ generated headers: they are not
 4424 	self-contained.  With this file:
 4425 
 4426 	    %language "c++"
 4427 	    %define api.value.type variant
 4428 
 4429 	    %code {
 4430 	      static int yylex (yy::parser::semantic_type *lvalp);
 4431 	    }
 4432 
 4433 	    %token <int> X
 4434 
 4435 	    %%
 4436 
 4437 	    exp:
 4438 	      X { printf ("x\n"); }
 4439 	    ;
 4440 
 4441 	    %%
 4442 
 4443 	    void
 4444 	    yy::parser::error (const std::string& m)
 4445 	    {
 4446 	      std::cerr << m << '\n';
 4447 	    }
 4448 
 4449 	    static
 4450 	    int yylex (yy::parser::semantic_type *lvalp)
 4451 	    {
 4452 	      static int const input[] = {yy::parser::token::X, 0};
 4453 	      static int toknum = 0;
 4454 	      return input[toknum++];
 4455 	    }
 4456 
 4457 	    int
 4458 	    main (int argc, char const* argv[])
 4459 	    {
 4460 	      yy::parser p;
 4461 	      return p.parse ();
 4462 	    }
 4463 
 4464 	the generated header fails to compile cleanly (foo.cc just #includes
 4465 	the generated header):
 4466 
 4467 	    $ clang++-mp-9.0 -c -Wundefined-func-template foo.cc
 4468 	    In file included from foo.cc:1:
 4469 	    bar.tab.hh:550:12: warning: instantiation of function 'yy::parser::basic_symbol<yy::parser::by_type>::basic_symbol' required here, but no definition is available
 4470 	          [-Wundefined-func-template]
 4471 	        struct symbol_type : basic_symbol<by_type>
 4472 	               ^
 4473 	    bar.tab.hh:436:7: note: forward declaration of template entity is here
 4474 	          basic_symbol (basic_symbol&& that);
 4475 	          ^
 4476 	    bar.tab.hh:550:12: note: add an explicit instantiation declaration to suppress this warning if 'yy::parser::basic_symbol<yy::parser::by_type>::basic_symbol' is explicitly instantiated
 4477 	          in another translation unit
 4478 	        struct symbol_type : basic_symbol<by_type>
 4479 	               ^
 4480 	    1 warning generated.
 4481 
 4482 	* data/skeletons/c++.m4 (b4_public_types_define): Move the
 4483 	implementation of the basic_symbol move-ctor to...
 4484 	(b4_public_types_define): here, its declaration.
 4485 	* tests/headers.at (Sane headers): Use a declared token so that the
 4486 	corresponding token constructor is declared.  Which triggers the
 4487 	aforementioned issue.
 4488 
 4489 2020-04-10  Akim Demaille  <akim.demaille@gmail.com>
 4490 
 4491 	style: rename YYNOMEM as YYENOMEM
 4492 	This is clearer.
 4493 
 4494 	* data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): Rename as...
 4495 	(YYENOMEM): here.
 4496 
 4497 2020-04-10  Akim Demaille  <akim.demaille@gmail.com>
 4498 
 4499 	todo: update
 4500 
 4501 2020-04-10  Akim Demaille  <akim.demaille@gmail.com>
 4502 
 4503 	c++: improvements on symbol kinds
 4504 	Instead of
 4505 
 4506 	    /// (Internal) symbol kind.
 4507 	    enum symbol_kind_type
 4508 	    {
 4509 	      YYNTOKENS = 5, ///< Number of tokens.
 4510 	      YYSYMBOL_YYEMPTY = -2,
 4511 	      YYSYMBOL_YYEOF = 0,                      // END_OF_FILE
 4512 	      YYSYMBOL_YYERROR = 1,                    // error
 4513 	      YYSYMBOL_YYUNDEF = 2,                    // $undefined
 4514 	      YYSYMBOL_TEXT = 3,                       // TEXT
 4515 	      YYSYMBOL_NUMBER = 4,                     // NUMBER
 4516 	      YYSYMBOL_YYACCEPT = 5,                   // $accept
 4517 	      YYSYMBOL_result = 6,                     // result
 4518 	      YYSYMBOL_list = 7,                       // list
 4519 	      YYSYMBOL_item = 8                        // item
 4520 	    };
 4521 
 4522 	generate
 4523 
 4524 	    /// Symbol kinds.
 4525 	    struct symbol_kind
 4526 	    {
 4527 	      enum symbol_kind_type
 4528 	      {
 4529 	        YYNTOKENS = 5, ///< Number of tokens.
 4530 	        S_YYEMPTY = -2,
 4531 	        S_YYEOF = 0,                             // END_OF_FILE
 4532 	        S_YYERROR = 1,                           // error
 4533 	        S_YYUNDEF = 2,                           // $undefined
 4534 	        S_TEXT = 3,                              // TEXT
 4535 	        S_NUMBER = 4,                            // NUMBER
 4536 	        S_YYACCEPT = 5,                          // $accept
 4537 	        S_result = 6,                            // result
 4538 	        S_list = 7,                              // list
 4539 	        S_item = 8                               // item
 4540 	      };
 4541 	    };
 4542 
 4543 	* data/skeletons/c++.m4 (api.symbol.prefix): Define to S_.
 4544 	Adjust all the uses.
 4545 	(b4_public_types_declare): Nest the enum inside 'struct symbol_kind'.
 4546 	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
 4547 	* tests/headers.at, tests/local.at: Adjust.
 4548 
 4549 2020-04-10  Akim Demaille  <akim.demaille@gmail.com>
 4550 
 4551 	d: improvements on symbol kinds
 4552 	    public enum SymbolKind
 4553 	    {
 4554 	      S_YYEMPTY = -2,    /* No symbol.  */
 4555 	      S_YYEOF = 0,       /* $end  */
 4556 	      S_YYERROR = 1,     /* error  */
 4557 	      S_YYUNDEF = 2,     /* $undefined  */
 4558 	      S_EQ = 3,          /* "="  */
 4559 
 4560 	* data/skeletons/d.m4 (api.symbol.prefix): Default to S_.
 4561 	Output the symbol kind definitions with a comment.
 4562 
 4563 2020-04-10  Akim Demaille  <akim.demaille@gmail.com>
 4564 
 4565 	symbols: minor fixes
 4566 	* data/skeletons/bison.m4 (b4_symbol_kind): Series of _ are useless,
 4567 	one is enough.
 4568 	* data/skeletons/c.m4 (b4_token_enum): Fix overquoting.
 4569 
 4570 2020-04-07  Akim Demaille  <akim.demaille@gmail.com>
 4571 
 4572 	skeletons: introduce api.symbol.prefix
 4573 	* data/skeletons/bison.m4 (b4_symbol_prefix): New.
 4574 	(b4_symbol_kind): Use it.
 4575 	* data/skeletons/c++.m4, data/skeletons/c.m4, data/skeletons/d.m4
 4576 	* data/skeletons/java.m4 (api.symbol.prefix): Provide a default value.
 4577 
 4578 	* data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/lalr1.cc,
 4579 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java, data/skeletons/yacc.c:
 4580 	Adjust: use b4_symbol_prefix instead of YYSYMBOL_.
 4581 
 4582 2020-04-07  Akim Demaille  <akim.demaille@gmail.com>
 4583 
 4584 	java: also emit documenting comments for symbol kinds
 4585 	* data/skeletons/java.m4 (b4_symbol_enum): here.
 4586 	And stop defined YYSYMBOL_YYEMPTY, we no longer use it.
 4587 
 4588 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4589 
 4590 	todo: update
 4591 	* TODO (YYERRCODE): Remove, handled by YYSYMBOL_ERROR.
 4592 
 4593 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4594 
 4595 	skeletons: beware not to use yyarg when it's null
 4596 	Reported by Adrian Vogelsgesang.
 4597 
 4598 	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
 4599 	* data/skeletons/lalr1.java, data/skeletons/yacc.c: Here.
 4600 
 4601 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4602 
 4603 	java: document new features
 4604 	* data/skeletons/lalr1.java: More comments.
 4605 	(Context.EMPTY): Remove.
 4606 	* doc/bison.texi (Java Parser Context Interface): New.
 4607 
 4608 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4609 
 4610 	java: prefer null to YYSYMBOL_YYEMPTY
 4611 	That's one nice benefit from using enums.
 4612 
 4613 	* data/skeletons/lalr1.java (YYSYMBOL_YYEMPTY): No longer define it.
 4614 	Use 'null' instead.
 4615 	* examples/java/calc/Calc.y, tests/local.at: Adjust.
 4616 
 4617 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4618 
 4619 	java: rename Lexer.yyreportSyntaxError as reportSyntaxError
 4620 	* data/skeletons/lalr1.java: here.
 4621 	* examples/java/calc/Calc.y, tests/local.at: Adjust.
 4622 
 4623 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4624 
 4625 	java: use getExpectedTokens, not yyexpectedTokens
 4626 	* data/skeletons/lalr1.java, examples/java/calc/Calc.y, tests/local.at:
 4627 	here.
 4628 
 4629 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4630 
 4631 	java: style: fix coding style
 4632 	* data/skeletons/java.m4: Indent by two.
 4633 	* data/skeletons/lalr1.java (yynnts_): Remove.
 4634 	(yyfinal_, yyntokens_, yylast_, yyempty_): Rename as...
 4635 	(YYFINAL_, YYNTOKENS_, YYLAST_, YYEMPTY_): these, they are constants.
 4636 
 4637 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4638 
 4639 	c: make the symbol kind definition nicer to read
 4640 	From
 4641 
 4642 	    enum yysymbol_kind_t
 4643 	    {
 4644 	      YYSYMBOL_YYEMPTY = -2,
 4645 	      YYSYMBOL_YYEOF = 0,
 4646 	      YYSYMBOL_YYERROR = 1,
 4647 	      YYSYMBOL_YYUNDEF = 2,
 4648 
 4649 	to
 4650 
 4651 	    enum yysymbol_kind_t
 4652 	    {
 4653 	      YYSYMBOL_YYEMPTY = -2,
 4654 	      YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
 4655 	      YYSYMBOL_YYERROR = 1,                    /* error  */
 4656 	      YYSYMBOL_YYUNDEF = 2,                    /* $undefined  */
 4657 
 4658 	* data/skeletons/bison.m4 (b4_last_symbol): New.
 4659 	(b4_symbol_enum, b4_symbol_enums): Reformat the output.
 4660 	* data/skeletons/c.m4
 4661 
 4662 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4663 
 4664 	c: make the token kind definition nicer to read
 4665 	From
 4666 
 4667 	    enum gram_tokentype
 4668 	    {
 4669 	      GRAM_EOF = 0,
 4670 	      STRING = 3,
 4671 	      TSTRING = 4,
 4672 	      PERCENT_TOKEN = 5,
 4673 
 4674 	To
 4675 
 4676 	    enum gram_tokentype
 4677 	    {
 4678 	      GRAM_EOF = 0,                  /* "end of file"  */
 4679 	      STRING = 3,                    /* "string"  */
 4680 	      TSTRING = 4,                   /* "translatable string"  */
 4681 	      PERCENT_TOKEN = 5,             /* "%token"  */
 4682 
 4683 	* data/skeletons/bison.m4 (b4_last_enum_token): New.
 4684 	* data/skeletons/c.m4 (b4_token_enum, b4_token_enums): Show the
 4685 	corresponding symbol.
 4686 
 4687 2020-04-06  Akim Demaille  <akim.demaille@gmail.com>
 4688 
 4689 	c: make the generated YYSTYPE nicer to read
 4690 	From
 4691 
 4692 	    union GRAM_STYPE
 4693 	    {
 4694 	      /* precedence_declarator  */
 4695 	      assoc precedence_declarator;
 4696 	      /* "string"  */
 4697 	      char* STRING;
 4698 	      /* "translatable string"  */
 4699 	      char* TSTRING;
 4700 	      /* "{...}"  */
 4701 	      char* BRACED_CODE;
 4702 	      /* "%?{...}"  */
 4703 
 4704 	to
 4705 
 4706 	    union GRAM_STYPE
 4707 	    {
 4708 	      assoc precedence_declarator;             /* precedence_declarator  */
 4709 	      char* STRING;                            /* "string"  */
 4710 	      char* TSTRING;                           /* "translatable string"  */
 4711 	      char* BRACED_CODE;                       /* "{...}"  */
 4712 
 4713 	* data/skeletons/c.m4 (b4_symbol_type_register): Use m4_format to
 4714 	align the comments.
 4715 	* src/parse-gram.h: Regen.
 4716 
 4717 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4718 
 4719 	regen
 4720 
 4721 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4722 
 4723 	bison: use consistently "token kind", not "token type"
 4724 	* src/output.c, src/reader.c, src/scan-gram.l, src/tables.c: here.
 4725 
 4726 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4727 
 4728 	skeletons: use consistently "kind" instead of "type" in the code
 4729 	* data/skeletons/bison.m4, data/skeletons/c++.m4, data/skeletons/c.m4,
 4730 	* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
 4731 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java:
 4732 	Refer to the "kind" of a symbol, not its "type", where appropriate.
 4733 
 4734 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4735 
 4736 	doc: refer to the token kind rather than the token type
 4737 	* doc/bison.texi: Replace occurrences of "token type" with "token
 4738 	kind".
 4739 	Stop referring to the "macro definitions" of the token kinds, just
 4740 	name them "definitions".
 4741 
 4742 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4743 
 4744 	m4: we don't need undef_token_number
 4745 	It's replaced by YYSYMBOL_YYUNDEF.
 4746 
 4747 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4748 
 4749 	m4: rename b4_symbol_sid as b4_symbol_kind
 4750 	* data/skeletons/bison.m4, data/skeletons/c++.m4, data/skeletons/c.m4,
 4751 	* data/skeletons/d.m4, data/skeletons/java.m4
 4752 	(b4_symbol_sid): Rename as...
 4753 	(b4_symbol_kind): this.
 4754 	Adjust dependencies.
 4755 	* data/README.md: Document the kind.
 4756 
 4757 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4758 
 4759 	d, java: rename SymbolType as SymbolKind
 4760 	See https://lists.gnu.org/r/bison-patches/2020-04/msg00031.html.
 4761 
 4762 	* data/skeletons/d.m4, data/skeletons/lalr1.d,
 4763 	* data/skeletons/java.m4, data/skeletons/lalr1.java
 4764 	(SymbolType): Rename as...
 4765 	(SymbolKind): this.
 4766 	Adjust dependencies.
 4767 
 4768 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4769 
 4770 	c, c++: rename yysymbol_type_t as yysymbol_kind_t
 4771 	See https://lists.gnu.org/r/bison-patches/2020-04/msg00031.html
 4772 
 4773 	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/yacc.c
 4774 	(yysymbol_type_t): Rename as...
 4775 	(yysymbol_kind_t): this.
 4776 	Adjust dependencies.
 4777 	* data/skeletons/c++.m4, data/skeletons/glr.cc, data/skeletons/lalr1.cc
 4778 	(symbol_type_type): Rename as...
 4779 	(symbol_kind_type): this.
 4780 	Adjust dependencies.
 4781 
 4782 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4783 
 4784 	doc: remove obsolete release instructions
 4785 	* README-hacking.md: here.
 4786 
 4787 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4788 
 4789 	Merge branch 'maint'
 4790 	* maint:
 4791 	  maint: post-release administrivia
 4792 	  version 3.5.4
 4793 	  examples: reccalc: really compile cleanly in C99
 4794 	  news: announce that Bison 3.6 drops YYERROR_VERBOSE
 4795 	  news: update for 3.5.4
 4796 	  style: fix spellos
 4797 	  typo: succesful -> successful
 4798 	  package: improve the readme
 4799 	  java: check and fix support for api.token.raw
 4800 	  java: style: prefer 'int[] foo' to 'int foo[]'
 4801 	  build: fix syntax-check issues
 4802 	  tests: recheck: work properly when the test suite was interrupted
 4803 	  doc: c++: promote api.token.raw
 4804 	  build: fix compatibility with old compilers
 4805 	  examples: reccalc: compile cleanly in C99
 4806 
 4807 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4808 
 4809 	maint: post-release administrivia
 4810 	* NEWS: Add header line for next release.
 4811 	* .prev-version: Record previous version.
 4812 	* cfg.mk (old_NEWS_hash): Auto-update.
 4813 
 4814 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4815 
 4816 	version 3.5.4
 4817 	* NEWS: Record release date.
 4818 
 4819 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4820 
 4821 	news: update the yyreport_syntax_error example
 4822 	* examples/c/bistromathic/parse.y, tests/local.at
 4823 	(yyreport_syntax_error): Fix use of YYSYMBOL_YYEMPTY.
 4824 	* NEWS: Update.
 4825 
 4826 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4827 
 4828 	todo: update
 4829 
 4830 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4831 
 4832 	style: rename yysyntax_error_arguments as yy_syntax_error_arguments
 4833 	It's a private implementation detail.
 4834 
 4835 	* NEWS, data/skeletons/glr.c, data/skeletons/lalr1.cc,
 4836 	* data/skeletons/yacc.c, doc/bison.texi: here.
 4837 
 4838 2020-04-05  Akim Demaille  <akim.demaille@gmail.com>
 4839 
 4840 	examples: reccalc: really compile cleanly in C99
 4841 	The previous fix does not suffice, and actually managed to make things
 4842 	worse by defining yyscan_t twice in parse.y...
 4843 
 4844 	Reported by kencu.
 4845 	https://trac.macports.org/ticket/59927#comment:29
 4846 
 4847 	* examples/c/reccalc/parse.y (yyscan_t): Define it with the same
 4848 	guards as used by Flex.
 4849 
 4850 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4851 
 4852 	c: rename yyparse_context_t as yypcontext_t
 4853 	The first name is too long.  We already have `yypstate`, so
 4854 	`yypcontext` is ok.  We are also migrating to using `*_t` for our
 4855 	types.
 4856 
 4857 	* NEWS, data/skeletons/glr.c, data/skeletons/yacc.c, doc/bison.texi,
 4858 	* examples/c/bistromathic/parse.y, src/parse-gram.y, tests/local.at:
 4859 	(yyparse_context_t, yyparse_context_location, yyparse_context_token):
 4860 	Rename as...
 4861 	(yypcontext_t, yypcontext_location, yypcontext_token): these.
 4862 
 4863 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4864 
 4865 	readme: more about the coding style
 4866 
 4867 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4868 
 4869 	java: fixes in SymbolType
 4870 	Reported by Paolo Bonzini.
 4871 	https://github.com/akimd/bison/pull/34#issuecomment-609029634
 4872 
 4873 	* data/skeletons/java.m4 (SymbolType): Use 'final' where possible.
 4874 	(get): Rewrite on top of an array instead of a switch.
 4875 
 4876 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4877 
 4878 	java: use SymbolType
 4879 	The Java enums are very different from the C model.  As a consequence,
 4880 	one cannot "build" an enum directly from an integer, we must retrieve
 4881 	it.  That's the purpose of the SymbolType.get class method.
 4882 
 4883 	* data/skeletons/java.m4 (b4_symbol_enum, b4_case_code_symbol)
 4884 	(b4_declare_symbol_enum): New.
 4885 	* data/skeletons/lalr1.java: Use SymbolType,
 4886 	SymbolType.YYSYMBOL_YYEMPTY, etc.
 4887 	* examples/java/calc/Calc.y, tests/local.at: Adjust.
 4888 
 4889 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4890 
 4891 	examples: java: use explicit token identifiers
 4892 	* examples/java/calc/Calc.y: Declare all the tokens, so that we are
 4893 	compatibile with api.token.raw.
 4894 	* examples/java/calc/Calc.test: Adjust.
 4895 
 4896 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4897 
 4898 	news: announce that Bison 3.6 drops YYERROR_VERBOSE
 4899 	* NEWS: here.
 4900 
 4901 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4902 
 4903 	news: update for 3.5.4
 4904 
 4905 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4906 
 4907 	style: fix spellos
 4908 	* src/complain.c, src/print.c, src/print-xml.c, src/symtab.h: here.
 4909 
 4910 2020-04-04  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 4911 
 4912 	typo: succesful -> successful
 4913 	* tests/calc.at: Here.
 4914 
 4915 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4916 
 4917 	package: improve the readme
 4918 	* README: Describe what Bison is.
 4919 
 4920 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4921 
 4922 	java: check and fix support for api.token.raw
 4923 	* tests/local.at (AT_LANG_MATCH, AT_YYERROR_DECLARE(java))
 4924 	(AT_YYERROR_DECLARE_EXTERN(java), AT_PARSER_CLASS): New.
 4925 	(AT_MAIN_DEFINE(java)): Use AT_PARSER_CLASS.
 4926 	* tests/scanner.at: Add a test for Java.
 4927 	* data/skeletons/lalr1.java (yytranslate_): Cast the result.
 4928 
 4929 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4930 
 4931 	d: use the SymbolType enum for symbol kinds
 4932 	* data/skeletons/d.m4 (b4_symbol_enum, b4_declare_symbol_enum): New.
 4933 	* data/skeletons/lalr1.d: Use them.
 4934 	Use SymbolType, SymbolType.YYSYMBOL_YYEMPTY etc. where appropriate.
 4935 	(undef_token_, token_number_type, yy_error_token_): Remove.
 4936 
 4937 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4938 
 4939 	java: style: prefer 'int[] foo' to 'int foo[]'
 4940 	* data/skeletons/java.m4 (b4_typed_parser_table_define): Here.
 4941 
 4942 2020-04-04  Akim Demaille  <akim.demaille@gmail.com>
 4943 
 4944 	build: fix syntax-check issues
 4945 	* src/system.h, tests/local.mk: Fix indentation.
 4946 
 4947 2020-04-02  Akim Demaille  <akim.demaille@gmail.com>
 4948 
 4949 	tests: recheck: work properly when the test suite was interrupted
 4950 	* tests/local.mk (recheck): Look at the per-test logs, not the overall
 4951 	log, which, when interrupted, contains only information about... the
 4952 	tests that passed.
 4953 
 4954 2020-04-02  Akim Demaille  <akim.demaille@gmail.com>
 4955 
 4956 	doc: c++: promote api.token.raw
 4957 	* doc/bison.texi (Calc++ Parser): Here.
 4958 
 4959 2020-04-02  Akim Demaille  <akim.demaille@gmail.com>
 4960 
 4961 	build: fix compatibility with old compilers
 4962 	GCC 4.2 dies with
 4963 
 4964 	    src/InadequacyList.c: In function 'InadequacyList__new_conflict':
 4965 	    src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions
 4966 	    src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions
 4967 	    src/InadequacyList.c:40: error: #pragma GCC diagnostic not allowed inside functions
 4968 
 4969 	Reported by Evan Lavelle.
 4970 	See https://lists.gnu.org/r/bug-bison/2020-03/msg00021.html
 4971 	and https://trac.macports.org/ticket/59927.
 4972 
 4973 	* src/system.h (GCC_VERSION): New.
 4974 	Use it to control IGNORE_TYPE_LIMITS_BEGIN and
 4975 	IGNORE_TYPE_LIMITS_END.
 4976 
 4977 2020-04-02  Akim Demaille  <akim.demaille@gmail.com>
 4978 
 4979 	examples: reccalc: compile cleanly in C99
 4980 	See https://trac.macports.org/ticket/59927.
 4981 
 4982 	* examples/c/reccalc/parse.y: C99 does not allow multiple typedefs.
 4983 
 4984 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 4985 
 4986 	c++: replace symbol_number_type with symbol_type_type
 4987 	* data/skeletons/c++.m4, data/skeletons/glr.cc,
 4988 	* data/skeletons/lalr1.cc: here.
 4989 
 4990 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 4991 
 4992 	c++: also use symbol_type_type
 4993 	Because of the insane current implementation of glr.cc, things are a
 4994 	bit nasty.  We will rename symbol_number_type as symbol_type_type
 4995 	later, to keep this commit small.
 4996 
 4997 	* data/skeletons/c++.m4 (b4_declare_symbol_enum): New.
 4998 	Also define YYNTOKENS to avoid type clashes when yyntokens_ was
 4999 	actually defined in another enum.
 5000 	Use it.
 5001 	(symbol_number_type): Be an alias of symbol_type_type.
 5002 	Use YYSYMBOL_YYEMPTY and the like.
 5003 	Use symbol_number_type where appropriate.
 5004 	(empty_symbol): Remove.
 5005 	(yytranslate_): Use symbol_number_type, not token_number_type.
 5006 	* data/skeletons/lalr1.cc: Use symbol_number_type where appropriate.
 5007 	Adjust to the replacement of empty_symbol by YYSYMBOL_YYEMPTY.
 5008 	(yy_error_token_, yy_undef_token_, yyeof_, yyntokens_): Remove.
 5009 	Adjust dependencies.
 5010 
 5011 	* data/skeletons/glr.cc: Use symbol_number_type where appropriate.
 5012 	Forward definitions of YYSYMBOL_YYEMPTY, etc. to glr.c.
 5013 
 5014 	* tests/headers.at: Accept YYNTOKENS and other YYSYMBOL_*.
 5015 	* tests/local.at (AT_YYERROR_DEFINE(c++)): Use symbol_number_type.
 5016 
 5017 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5018 
 5019 	glr.c: remove the yySymbol alias
 5020 	* data/skeletons/glr.c: Use yysymbol_type_t only.
 5021 
 5022 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5023 
 5024 	regen
 5025 
 5026 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5027 
 5028 	glr.c, yacc.c: propagate yysymbol_type_t
 5029 	Now that yacc.c and glr.c both know yysymbol_type_t, convert the
 5030 	common routines.
 5031 
 5032 	* data/skeletons/c.m4 (yydestruct, yy_symbol_value_print)
 5033 	(yy_symbol_print): Use yysymbol_type_t instead of int.
 5034 	* data/skeletons/glr.c: Use yySymbol where appropriate.
 5035 	* data/skeletons/yacc.c (YY_ACCESSING_SYMBOL): New wrapper around
 5036 	yystos.
 5037 	Use it.
 5038 	* tests/local.at (yyreport_syntax_error): Use yysymbol_type_t where
 5039 	appropriate.
 5040 
 5041 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5042 
 5043 	glr.c: use yysymbol_type_t, YYSYMBOL_YYEOF etc.
 5044 	Apply the same changes as in yacc.c.  Now yySymbol and yysymbol_type_t
 5045 	are aliases.  We will remove the former later, to avoid cluttering
 5046 	this commit.
 5047 
 5048 	* data/skeletons/glr.c: Use b4_declare_symbol_enum.
 5049 	Use YYSYMBOL_YYEOF etc. where appropriate.
 5050 	(YYUNDEFTOK, YYTERROR): Remove.
 5051 	(YYTRANSLATE, yySymbol, yyexpected_tokens, yysyntax_error_arguments):
 5052 	Adjust.
 5053 	(yy_accessing_symbol): New.
 5054 	Use it where appropriate.
 5055 
 5056 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5057 
 5058 	regen
 5059 
 5060 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5061 
 5062 	yacc.c: fix more errors from make maintainer-check-g++
 5063 	* data/skeletons/yacc.c (yyexpected_tokens): Use casts where needed.
 5064 
 5065 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5066 
 5067 	regen
 5068 
 5069 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5070 
 5071 	yacc.c: revert to not using yysymbol_type_t in the yytranslate table
 5072 	This triggers warnings with several compilers.  For instance ICC fills
 5073 	the logs with pages and pages of
 5074 
 5075 	    input.c(477): error: a value of type "int" cannot be used to initialize an entity of type "const yysymbol_type_t={yysymbol_type_t}"
 5076 	             0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 5077 	             ^
 5078 
 5079 	    input.c(477): error: a value of type "int" cannot be used to initialize an entity of type "const yysymbol_type_t={yysymbol_type_t}"
 5080 	             0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 5081 	                    ^
 5082 
 5083 	And so does G++9 when compiling yacc.c's (C) output
 5084 
 5085 	    input.c:545:8: error: invalid conversion from 'int' to 'yysymbol_type_t' [-fpermissive]
 5086 	      545 |        0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
 5087 	          |        ^
 5088 	          |        |
 5089 	          |        int
 5090 	    input.c:545:15: error: invalid conversion from 'int' to 'yysymbol_type_t' [-fpermissive]
 5091 	      545 |        0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
 5092 	          |               ^
 5093 	          |               |
 5094 	          |               int
 5095 
 5096 	Clang++ is no exception
 5097 
 5098 	    input.c:545:8: error: cannot initialize an array element of type 'const yysymbol_type_t' with an rvalue of type 'int'
 5099 	           0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
 5100 	           ^
 5101 	    input.c:545:15: error: cannot initialize an array element of type 'const yysymbol_type_t' with an rvalue of type 'int'
 5102 	           0,     5,     9,     2,     2,     2,     2,     2,     2,     2,
 5103 	                  ^
 5104 
 5105 	At some point we could use yysymbol_type_t's enumerators to define
 5106 	yytranslate.  Meanwhile...
 5107 
 5108 	* data/skeletons/yacc.c (yytranslate): Use the original integral type
 5109 	to define it.
 5110 	(YYTRANSLATE): Cast the result into yysymbol_type_t.
 5111 
 5112 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5113 
 5114 	regen
 5115 
 5116 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5117 
 5118 	yysymbol_type_t: always assign an enumerator
 5119 	Currently we define enumerators only for symbols that have an
 5120 	identifier.  That rules out tokens such as '+', and nonterminals such
 5121 	as foo-bar and foo.bar.  As a consequence we are taking chances: the
 5122 	compiler might compile yysymbol_type_t as too small an integral type
 5123 	for some symbol codes.
 5124 
 5125 	* data/skeletons/bison.m4 (b4_symbol_sid): Forge a unique symbol
 5126 	identifier for symbols that don't have an ID.
 5127 
 5128 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5129 
 5130 	bistromathic: use symbol numbers instead of YYTRANSLATE
 5131 	* examples/c/bistromathic/parse.y: here.
 5132 
 5133 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5134 
 5135 	regen
 5136 
 5137 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5138 
 5139 	yacc.c: prefer YYSYMBOL_YYERROR to YYSYMBOL_error
 5140 	* data/skeletons/bison.m4 (b4_symbol_sid): Map "error" to YYSYMBOL_YYERROR.
 5141 	* data/skeletons/yacc.c: Adjust.
 5142 
 5143 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5144 
 5145 	regen
 5146 
 5147 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5148 
 5149 	yacc.c: also define a symbol number for the empty token
 5150 	This is not only cleaner, it also protects us from mixing signed
 5151 	values (YYEMPTY is #defined as -2) with unsigned types (the
 5152 	yysymbol_type_t enum is typically compiled as a small unsigned).
 5153 	For instance GCC 9:
 5154 
 5155 	    input.c: In function 'yyparse':
 5156 	    input.c:1107:7: error: conversion to 'unsigned int' from 'int'
 5157 	                           may change the sign of the result
 5158 	                           [-Werror=sign-conversion]
 5159 	     1107 |   yyn += yytoken;
 5160 	          |       ^~
 5161 	    input.c:1107:10: error: conversion to 'int' from 'unsigned int'
 5162 	                            may change the sign of the result
 5163 	                            [-Werror=sign-conversion]
 5164 	     1107 |   yyn += yytoken;
 5165 	          |          ^~~~~~~
 5166 	    input.c:1108:47: error: comparison of integer expressions of
 5167 	                            different signedness:
 5168 	                            'yytype_int8' {aka 'const signed char'} and
 5169 	                            'yysymbol_type_t' {aka 'enum yysymbol_type_t'}
 5170 	                            [-Werror=sign-compare]
 5171 	     1108 |   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
 5172 	          |                                               ^~
 5173 	    input.c:702:25: error: operand of ?: changes signedness from 'int'
 5174 	                           to 'unsigned int' due to unsignedness of
 5175 	                           other operand [-Werror=sign-compare]
 5176 	      702 | #define YYEMPTY         (-2)
 5177 	          |                         ^~~~
 5178 	    input.c:1220:33: note: in expansion of macro 'YYEMPTY'
 5179 	     1220 |   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
 5180 	          |                                 ^~~~~~~
 5181 	    input.c:1220:41: error: unsigned conversion from 'int' to
 5182 	                            'unsigned int' changes value
 5183 	                            from '-2' to '4294967294'
 5184 	                            [-Werror=sign-conversion]
 5185 	     1220 |   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
 5186 	          |                                         ^
 5187 
 5188 	Eventually, it might be interesting to move away from -2 (which is the
 5189 	only possible negative symbol number) and use the next available
 5190 	number, to save bits.  We could actually even simply use "0" and shift
 5191 	the rest, which would allow to write "!yytoken" to mean really
 5192 	"yytoken != YYEMPTY".
 5193 
 5194 	* data/skeletons/c.m4 (b4_declare_symbol_enum): Define YYSYMBOL_YYEMPTY.
 5195 	* data/skeletons/yacc.c: Use it.
 5196 
 5197 	* src/parse-gram.y (yyreport_syntax_error): Use YYSYMBOL_YYEMPTY, not
 5198 	YYEMPTY, when dealing with a symbol.
 5199 
 5200 	* tests/regression.at: Adjust.
 5201 
 5202 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5203 
 5204 	yacc.c: use yysymbol_type_t instead of int for yytoken
 5205 	Now that we have a proper type for internal symbol numbers, let's use
 5206 	it.  More code needs conversion, e.g., printers and destructors, but
 5207 	they are shared with glr.c, which is not ready yet for this change.
 5208 
 5209 	It will also help us deal with warnings such as (GCC9 on GNU/Linux):
 5210 
 5211 	    input.c: In function 'int yyparse()':
 5212 	    input.c:475:37: error: enumeral and non-enumeral type in conditional expression [-Werror=extra]
 5213 	      475 |   (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYSYMBOL_YYUNDEF)
 5214 	          |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 5215 	    input.c:1024:17: note: in expansion of macro 'YYTRANSLATE'
 5216 	     1024 |       yytoken = YYTRANSLATE (yychar);
 5217 	          |                 ^~~~~~~~~~~
 5218 
 5219 	* data/skeletons/yacc.c (yytranslate, yysymbol_name)
 5220 	(yyparse_context_t, yyexpected_tokens, yypstate_expected_tokens)
 5221 	(yysyntax_error_arguments):
 5222 	Use yysymbol_type_t instead of int.
 5223 
 5224 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5225 
 5226 	regen
 5227 
 5228 2020-04-01  Akim Demaille  <akim.demaille@gmail.com>
 5229 
 5230 	yacc.c: introduce an enum that defines the symbol's number
 5231 	There's a number of advantage in exposing the symbol (internal)
 5232 	numbers:
 5233 
 5234 	- custom error messages can use them to decide how to represent a
 5235 	  given symbol, or a set of symbols.
 5236 
 5237 	- we need something similar in uses of yyexpected_tokens.  For
 5238 	  instance, currently, bistromathic's completion() reads:
 5239 
 5240 	    int ntokens = expected_tokens (line, tokens, YYNTOKENS);
 5241 	    [...]
 5242 	    for (int i = 0; i < ntokens; ++i)
 5243 	      if (tokens[i] == YYTRANSLATE (TOK_VAR))
 5244 	      [...]
 5245 	      else if (tokens[i] == YYTRANSLATE (TOK_FUN))
 5246 	      [...]
 5247 	      else
 5248 	      [...]
 5249 
 5250 	- now that it's a compile-time expression, we can easily build static
 5251 	  tables, switch, etc.
 5252 
 5253 	- some users depended on the ability to get the token number from a
 5254 	  symbol to write test cases for their scanners.  But Bison 3.5
 5255 	  removed the table this feature depended upon (a reverse
 5256 	  yytranslate).  Now they can check against the actual symbol number,
 5257 	  without having pay (space and time) a conversion.
 5258 	  See https://lists.gnu.org/r/bug-bison/2020-01/msg00001.html, and
 5259 	  https://lists.gnu.org/archive/html/bug-bison/2020-03/msg00015.html.
 5260 
 5261 	- it helps us clearly separate the internal symbol numbers from the
 5262 	  external token numbers, whose difference is sometimes blurred in the
 5263 	  code when values coincide (e.g. "yychar = yytoken = YYEOF").
 5264 
 5265 	- it allows us to get rid of ugly macros with inconsistent names such
 5266 	  as YYUNDEFTOK and YYTERROR, and to group related definitions
 5267 	  together.
 5268 
 5269 	- similarly it provides a clean access to the $accept symbol (which
 5270 	  proves convenient in a current experimentation of mine with several
 5271 	  %start symbols).
 5272 
 5273 	Let's declare this type as a private type (in the *.c file, not
 5274 	the *.h one).  So it does not need to be influenced by the api prefix.
 5275 
 5276 	* data/skeletons/bison.m4 (b4_symbol_sid): New.
 5277 	(b4_symbol): Use it.
 5278 	* data/skeletons/c.m4 (b4_symbol_enum, b4_declare_symbol_enum): New.
 5279 	* data/skeletons/yacc.c: Use b4_declare_symbol_enum.
 5280 	(YYUNDEFTOK, YYTERROR): Remove.
 5281 	Use the corresponding symbol enum instead.
 5282 
 5283 2020-03-30  Akim Demaille  <akim.demaille@gmail.com>
 5284 
 5285 	style: comment changes about token numbers
 5286 	* data/skeletons/bison.m4, data/skeletons/c.m4: here.
 5287 
 5288 2020-03-30  Akim Demaille  <akim.demaille@gmail.com>
 5289 
 5290 	tests: recheck: work properly when the test suite was interrupted
 5291 	* tests/local.mk (recheck): Look at the per-test logs, not the overall
 5292 	log, which, when interrupted, contains only information about... the
 5293 	tests that passed.
 5294 
 5295 2020-03-30  Akim Demaille  <akim.demaille@gmail.com>
 5296 
 5297 	java: move away from _ for internationalization
 5298 	The "_" is becoming a keyword in Java, which causes tons of warnings
 5299 	currently in our test suite.  GNU Gettext is now using "i18n" instead
 5300 	of "_"
 5301 	(https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=e89fea36545f27487d9652a13e6a0adbea1117d0).
 5302 
 5303 	* data/skeletons/java.m4: Use "i18n", not "_".
 5304 	* examples/java/calc/Calc.y, tests/calc.at: Adjust.
 5305 
 5306 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5307 
 5308 	regen
 5309 
 5310 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5311 
 5312 	c: use YYNOMEM instead of -2
 5313 	See 84b1972c96060866b4bd94a33b97711f8f7d0b6c.
 5314 
 5315 	* data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): New.
 5316 	Use it.
 5317 
 5318 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5319 
 5320 	todo: update
 5321 	* TODO (Token Number): We have to clean this.
 5322 	(Naming conventions, Symbol numbers): New.
 5323 	(Bad styling): Addressed in e21ff47f5d0b64da693a47b7dd200a1a44a5bbeb.
 5324 
 5325 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5326 
 5327 	regen
 5328 
 5329 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5330 
 5331 	java: make yysyntaxErrorArguments a private detail
 5332 	* data/skeletons/lalr1.java (yysyntaxErrorArguments): Move it from the
 5333 	context, to the parser object.
 5334 	Generate only for detailed and verbose error messages.
 5335 	* tests/local.at (AT_YYERROR_DEFINE(java)): Use yyexpectedTokens
 5336 	instead.
 5337 
 5338 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5339 
 5340 	skeletons: make yysyntax_error_arguments a private detail
 5341 	We could just "inline yysyntax_error_arguments back" in the routines
 5342 	it was originally extracted from, but I think the code is nicer to
 5343 	read this way.
 5344 
 5345 	* data/skeletons/glr.c (yysyntax_error_arguments): Generate only for
 5346 	detailed and verbose error messages.
 5347 	* data/skeletons/yacc.c: Likewise.
 5348 	* data/skeletons/lalr1.cc (parser::context::yysyntax_error_arguments):
 5349 	Move as...
 5350 	(parser::yysyntax_error_arguments_): this.
 5351 	And only for detailed and verbose error messages.
 5352 
 5353 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5354 
 5355 	lalr1.cc: avoid using yysyntax_error_arguments
 5356 	* data/skeletons/lalr1.cc (context::token): New.
 5357 	* tests/local.at (yyreport_syntax_error): Don't use
 5358 	yysyntax_error_arguments.
 5359 
 5360 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5361 
 5362 	bison: avoid using yysyntax_error_arguments
 5363 	* src/parse-gram.y (yyreport_syntax_error): Use yyparse_context_token
 5364 	and yyexpected_tokens.
 5365 
 5366 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5367 
 5368 	tests: yacc.c: avoid yysyntax_error_arguments
 5369 	Because glr.c shares the same testing routines, we also need to
 5370 	convert it.
 5371 
 5372 	* data/skeletons/glr.c (yyparse_context_token): New.
 5373 	* tests/local.at (yyreport_syntax_error): here.
 5374 
 5375 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5376 
 5377 	examples: don't use yysyntax_error_arguments
 5378 	Suggested by Adrian Vogelsgesang.
 5379 	https://lists.gnu.org/archive/html/bison-patches/2020-02/msg00069.html
 5380 
 5381 	* data/skeletons/lalr1.java (Context.EMPTY, Context.getToken): New.
 5382 	(Context.yyntokens): Rename as...
 5383 	(Context.NTOKENS): this.
 5384 	Because (i) all the Java coding styles recommend upper case for
 5385 	constants, and (ii) the Java Skeleton exposes Lexer.EOF, not
 5386 	Lexer.YYEOF.
 5387 	* data/skeletons/yacc.c (yyparse_context_token): New.
 5388 	* examples/c/bistromathic/parse.y (yyreport_syntax_error): Don't use
 5389 	yysyntax_error_arguments.
 5390 	* examples/java/calc/Calc.y (yyreportSyntaxError): Likewise.
 5391 
 5392 2020-03-28  Akim Demaille  <akim.demaille@gmail.com>
 5393 
 5394 	skeletons: fix incorrect type for translatable tokens
 5395 	* data/skeletons/glr.c, data/skeletons/lalr1.c, data/skeletons/yacc.c:
 5396 	Fix confusion between the "translatable" and the "translate" tables.
 5397 
 5398 2020-03-23  Akim Demaille  <akim.demaille@gmail.com>
 5399 
 5400 	yacc.c: use negative numbers for errors in auxiliary functions
 5401 	yyparse returns 0, 1, 2 since ages (accept, reject, memory exhausted).
 5402 	Some of our auxiliary functions such as yy_lac and
 5403 	yyreport_syntax_error also need to return error codes and also use 0,
 5404 	1, 2.  Because it uses yy_lac, yyexpected_tokens also needs to return
 5405 	"problem", "memory exhausted", but in case of success, it needs to
 5406 	return the number of tokens, so it cannot use 1 and 2 as error code.
 5407 	Currently it uses -1 and -2, which is later converted into 1 and 2 as
 5408 	yacc.c expects it.
 5409 
 5410 	Let's simplify this and use consistently -1 and -2 for auxiliary
 5411 	functions that are not exposed (or not yet exposed) to the user.  In
 5412 	particular this will save the user from having to convert
 5413 	yyexpected_tokens's -2 into yyreport_syntax_error's 2: both return -1
 5414 	or -2.
 5415 
 5416 	* data/skeletons/yacc.c (yy_lac, yyreport_syntax_error)
 5417 	(yy_lac_stack_realloc): Return -1, -2 for errors instead of 1, 2.
 5418 	Adjust callers.
 5419 	* examples/c/bistromathic/parse.y (yyreport_syntax_error): Do take
 5420 	error codes into account.
 5421 	Issue a syntax error message even if we ran out of memory.
 5422 	* src/parse-gram.y, tests/local.at (yyreport_syntax_error): Adjust.
 5423 
 5424 2020-03-23  Akim Demaille  <akim.demaille@gmail.com>
 5425 
 5426 	style: reduce length of private constant
 5427 	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/yacc.c
 5428 	(YYERROR_VERBOSE_ARGS_MAXIMUM): Rename as...
 5429 	(YYARGS_MAX): this.
 5430 	* src/parse-gram.y (YYERROR_VERBOSE_ARGS_MAXIMUM): Rename as...
 5431 	(ARGS_MAX): this.
 5432 
 5433 2020-03-23  Akim Demaille  <akim.demaille@gmail.com>
 5434 
 5435 	doc: c++: promote api.token.raw
 5436 	* doc/bison.texi (Calc++ Parser): Here.
 5437 
 5438 2020-03-22  Akim Demaille  <akim.demaille@gmail.com>
 5439 
 5440 	bench: calc: no need for super long inputs
 5441 	* etc/bench.pl.in ($iterations): Restore initial value, -1, meaning
 5442 	"at least one second".
 5443 	($calc_input): There is no need to generate 400 lines.
 5444 
 5445 2020-03-22  Akim Demaille  <akim.demaille@gmail.com>
 5446 
 5447 	bench: calc: work on a string instead of a file
 5448 	The cost of the file layer is large and makes benchmarks too coarse,
 5449 	as seen for in following example, first with a file, then with a
 5450 	literal string:
 5451 
 5452 	    0. %skeleton "yacc.c" %define parse.lac full
 5453 	    1. %skeleton "yacc-v1.c" %define nofinal %define parse.lac full
 5454 	    2. %skeleton "yacc-v2.c" %define nofinal %define parse.lac full
 5455 	    3. %skeleton "yacc-v3.c" %define nofinal %define parse.lac full
 5456 	    4. %skeleton "yacc.c"
 5457 	    5. %skeleton "yacc-v1.c" %define nofinal
 5458 	    6. %skeleton "yacc-v2.c" %define nofinal
 5459 	    7. %skeleton "yacc-v3.c" %define nofinal
 5460 	    --------------------------------------------------
 5461 	    Benchmark           Time           CPU Iterations
 5462 	    --------------------------------------------------
 5463 	    BM_y0           32558 ns      32537 ns      21228
 5464 	    BM_y1           32400 ns      32369 ns      21233
 5465 	    BM_y2           33485 ns      33464 ns      20625
 5466 	    BM_y3           32139 ns      32125 ns      21446
 5467 	    BM_y4           31343 ns      31329 ns      21747
 5468 	    BM_y5           31344 ns      31317 ns      22035
 5469 	    BM_y6           31287 ns      31255 ns      22039
 5470 	    BM_y7           31387 ns      31373 ns      22178
 5471 	    --------------------------------------------------
 5472 	    Benchmark           Time           CPU Iterations
 5473 	    --------------------------------------------------
 5474 	    BM_y0           10642 ns      10634 ns      63601
 5475 	    BM_y1           10657 ns      10654 ns      63625
 5476 	    BM_y2           10441 ns      10432 ns      65957
 5477 	    BM_y3           10558 ns      10554 ns      64546
 5478 	    BM_y4            9521 ns       9516 ns      72011
 5479 	    BM_y5            9179 ns       9157 ns      75028
 5480 	    BM_y6            9360 ns       9356 ns      73770
 5481 	    BM_y7            9365 ns       9359 ns      72609
 5482 
 5483 	Of course, at the same time it is less realistic: most users read
 5484 	files rather that strings, so it might lead to us to pay attention to
 5485 	costs most people don't see.
 5486 
 5487 	* etc/bench.pl.in (&calc_input): Output into a file given as argument.
 5488 	Output in C syntax.
 5489 	(&generate_grammar_calc): Use it.
 5490 	Simplify the grammar: remove operators we don't care about.
 5491 	Rewrite the scanner to work on a char* instead of a FILE*.
 5492 
 5493 2020-03-22  Akim Demaille  <akim.demaille@gmail.com>
 5494 
 5495 	bench: add a "latest" symlink
 5496 	* etc/bench.pl.in: here.
 5497 
 5498 2020-03-22  Akim Demaille  <akim.demaille@gmail.com>
 5499 
 5500 	bench: use the same prefix in both bench methods
 5501 	* etc/bench.pl.in (&bench_with_timethese): Also use y$i, as in
 5502 	&bench_with_gbenchmark.
 5503 	(&generate_grammar_calc): Don't add a prefix, let the callers do it.
 5504 
 5505 2020-03-22  Akim Demaille  <akim.demaille@gmail.com>
 5506 
 5507 	bench: use a C++-11 compiler
 5508 	See https://github.com/google/benchmark#a-faster-keeprunning-loop.
 5509 
 5510 	* etc/bench.pl.in ($cxx): Be C++11.
 5511 	(&bench_with_gbenchmark): Adjust.
 5512 
 5513 2020-03-22  Akim Demaille  <akim.demaille@gmail.com>
 5514 
 5515 	bench: create a README file with benches
 5516 	* etc/bench.pl.in (&bench_with_gbenchmark): Here.
 5517 
 5518 2020-03-21  Akim Demaille  <akim.demaille@gmail.com>
 5519 
 5520 	bench: calc: add support for google benchmark
 5521 	* etc/bench.pl.in (&compiler): New, extracted from...
 5522 	(&compile): here.
 5523 	Don't link when using gbm.
 5524 	(&calc_input): Don't make massive input for micro
 5525 	benchmarks.
 5526 	(&generate_grammar_calc): When using gbm, use api.prefix to avoid name
 5527 	collisions.
 5528 	Be ready to issue BENCHMARKS instead of a main.
 5529 	(&bench): Rename as...
 5530 	(&bench_with_timethese): this.
 5531 	(&bench_with_gbenchmark): New.
 5532 	(&bench): New.
 5533 	Dispatch on these two.
 5534 
 5535 2020-03-21  Akim Demaille  <akim.demaille@gmail.com>
 5536 
 5537 	bench: better error messages on invalid input
 5538 	* etc/bench.pl.in: here.
 5539 
 5540 2020-03-21  Akim Demaille  <akim.demaille@gmail.com>
 5541 
 5542 	bench: simplify the calc grammar
 5543 	* etc/bench.pl.in (generate_grammar_calc): We don't need global_result
 5544 	etc.
 5545 
 5546 2020-03-21  Akim Demaille  <akim.demaille@gmail.com>
 5547 
 5548 	bench: die clearly on incorrect --grammar arguments
 5549 	* etc/bench.pl.in (getopt): here.
 5550 
 5551 2020-03-17  Akim Demaille  <akim.demaille@gmail.com>
 5552 
 5553 	regen
 5554 
 5555 2020-03-17  Akim Demaille  <akim.demaille@gmail.com>
 5556 
 5557 	yacc.c: style: prefer switch to if
 5558 	* data/skeletons/yacc.c: Prefer switch to decode yy_lac's return value.
 5559 
 5560 2020-03-17  Akim Demaille  <akim.demaille@gmail.com>
 5561 
 5562 	yacc.c: yypstate_expected_tokens
 5563 	In push parsers, when asking for the list of expected tokens at some
 5564 	point, it makes no sense to build a yyparse_context_t: the yypstate
 5565 	alone suffices (the only difference being the lookahead).  Instead of
 5566 	forcing the user to build a useless shell around yypstate, let's offer
 5567 	yypstate_expected_tokens.
 5568 
 5569 	See https://lists.gnu.org/r/bison-patches/2020-03/msg00025.html.
 5570 
 5571 	* data/skeletons/yacc.c (yypstate): Declare earlier, so that we can
 5572 	use it for...
 5573 	(yypstate_expected_tokens): this new function, when in push parsers.
 5574 	Adjust dependencies.
 5575 	* examples/c/bistromathic/parse.y: Simplify: use
 5576 	yypstate_expected_tokens.
 5577 	Style fixes.
 5578 	Reduce scopes (reported by Joel E. Denny).
 5579 
 5580 2020-03-09  Akim Demaille  <akim.demaille@gmail.com>
 5581 
 5582 	examples: bistromathic: simplify
 5583 	* examples/c/bistromathic/parse.y (expected_tokens): Remove useless "break".
 5584 
 5585 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5586 
 5587 	merge branch 'maint'
 5588 	* upstream/maint:
 5589 	  maint: post-release administrivia
 5590 	  version 3.5.3
 5591 	  news: update for 3.5.3
 5592 	  yacc.c: make sure we properly propagated the user's number for error
 5593 	  diagnostics: don't crash because of repeated definitions of error
 5594 	  style: initialize some struct members
 5595 	  diagnostics: beware of zero-width characters
 5596 	  diagnostics: be sure to close the styling when lines are too short
 5597 	  muscles: fix incorrect decoding of $
 5598 	  code: be robust to reference with invalid tags
 5599 	  build: fix typo
 5600 	  doc: update recommandation for libtextstyle
 5601 	  style: comment changes
 5602 	  examples: use consistently the GFDL header for readmes
 5603 	  style: remove useless declarations
 5604 	  typo: succesful -> successful
 5605 	  README: point to tests/bison, and document --trace
 5606 	  gnulib: update
 5607 	  maint: post-release administrivia
 5608 
 5609 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5610 
 5611 	maint: post-release administrivia
 5612 	* NEWS: Add header line for next release.
 5613 	* .prev-version: Record previous version.
 5614 	* cfg.mk (old_NEWS_hash): Auto-update.
 5615 
 5616 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5617 
 5618 	version 3.5.3
 5619 	* NEWS: Record release date.
 5620 
 5621 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5622 
 5623 	news: update for 3.5.3
 5624 
 5625 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5626 
 5627 	yacc.c: make sure we properly propagated the user's number for error
 5628 	* data/skeletons/yacc.c (YYERRCODE): Be truthful.
 5629 	* tests/input.at (Redefining the error token): Check that.
 5630 
 5631 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5632 
 5633 	diagnostics: don't crash because of repeated definitions of error
 5634 	According to https://www.unix.com/man-page/POSIX/1posix/yacc/, the
 5635 	user is allowed to specify her user number for the error token:
 5636 
 5637 	    The token error shall be reserved for error handling. The name
 5638 	    error can be used in grammar rules. It indicates places where the
 5639 	    parser can recover from a syntax error. The default value of error
 5640 	    shall be 256. Its value can be changed using a %token
 5641 	    declaration. The lexical analyzer should not return the value of
 5642 	    error.
 5643 
 5644 	I think this feature is useless, the user should not have to deal with
 5645 	that.  The intend is probably to give the user a means to use 256 if
 5646 	she wants to, but provided "error" cleared the path first by being
 5647 	assigned another number.  In the case of Bison, 256 is assigned to
 5648 	"error" at the end if the user did not use it for a token of hers.  So
 5649 	this feature is useless.
 5650 
 5651 	Yet it is valid, and if the user assigns twice a token number to
 5652 	"error", then the second time we want to complain about it and want to
 5653 	show the original definition.  At this point, we try to display the
 5654 	built-in definition of "error", whose location is NULL, and we crash.
 5655 
 5656 	Rather, the location of the first user definition of "error" should
 5657 	become its defining location.
 5658 
 5659 	Reported byg Ahcheong Lee.
 5660 	https://lists.gnu.org/r/bug-bison/2020-03/msg00007.html
 5661 
 5662 	* src/symtab.c (symbol_class_set): If this is a declaration and the
 5663 	symbol was not declared yet, keep this as defining location.
 5664 	* tests/input.at (Redefining the error token): New.
 5665 
 5666 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5667 
 5668 	style: initialize some struct members
 5669 	* src/symtab.c (sym_content_new): Initialize all the location members.
 5670 	Not needed by the code, but disturbing values when using a debugger.
 5671 
 5672 2020-03-08  Akim Demaille  <akim.demaille@gmail.com>
 5673 
 5674 	diagnostics: beware of zero-width characters
 5675 	Currenly we rely on (visual) width of the characters to decide where
 5676 	to open and close the styling of the quoted lines.  This breaks when
 5677 	we deal with zero-width characters: we cannot just rely on (visual)
 5678 	columns, we need to know whether we are before, inside, or after the
 5679 	highlighted portion.
 5680 
 5681 	* src/location.c (location_caret): col_end: no longer add 1, "regular"
 5682 	characters have a width of 1, only 0-width characters have 0-width.
 5683 	opened: replace with 'state', a three-valued enum.
 5684 	Don't reopen the style if we already did.
 5685 	* tests/diagnostics.at (Zero-width characters): New.
 5686 
 5687 2020-03-07  Akim Demaille  <akim.demaille@gmail.com>
 5688 
 5689 	diagnostics: be sure to close the styling when lines are too short
 5690 	     bar.y:4.12-17: <error>error:</error> redefining user token number of foo
 5691 	    -    4 | %token foo <error>123
 5692 	    +    4 | %token foo <error>123</error>
 5693 	           |            <error>^~~~~~</error>
 5694 
 5695 	* src/location.c (location_caret): Be sure to close.
 5696 	* tests/diagnostics.at (Line is too short, and then you die): New.
 5697 
 5698 2020-03-07  Akim Demaille  <akim.demaille@gmail.com>
 5699 
 5700 	muscles: fix incorrect decoding of $
 5701 	Bug introduced in 458171e6df5a0110a35ee45ad8b2e9f6fb426f1d.
 5702 	https://lists.gnu.org/archive/html/bison-patches/2013-11/msg00009.html
 5703 
 5704 	Reported by Ahcheong Lee.
 5705 	https://lists.gnu.org/r/bug-bison/2020-03/msg00010.html
 5706 
 5707 	* src/muscle-tab.c (COMMON_DECODE): "$" is coded as "$][", not "$[][".
 5708 	* tests/input.at ("%define" enum variables): Check that case.
 5709 
 5710 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5711 
 5712 	code: be robust to reference with invalid tags
 5713 	Because we want to support $<a->b>$, we must accept -> in type tags,
 5714 	and reject $<->$, as it is unfinished.
 5715 	Reported by Ahcheong Lee.
 5716 
 5717 	* src/scan-code.l (yylex): Make sure "tag" does not end with -, since
 5718 	-> does not close the tag.
 5719 	* tests/input.at (Stray $ or @): Check this.
 5720 
 5721 2020-03-06  Akimn Demaille  <akim.demaille@gmail.com>
 5722 
 5723 	build: fix typo
 5724 	* build-aux/cross-options.pl: here.
 5725 
 5726 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5727 
 5728 	doc: update recommandation for libtextstyle
 5729 	* README: here.
 5730 
 5731 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5732 
 5733 	style: comment changes
 5734 	* src/symtab.h, src/lr0.c: here.
 5735 
 5736 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5737 
 5738 	examples: use consistently the GFDL header for readmes
 5739 	* examples/c++/README.md, examples/c++/calc++/README.md,
 5740 	* examples/c/calc/README.md, examples/c/lexcalc/README.md,
 5741 	* examples/c/reccalc/README.md:
 5742 	Prefer the GFDL banner to the GPL one.
 5743 
 5744 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5745 
 5746 	style: remove useless declarations
 5747 	* src/reader.h: Don't duplicate what parse-gram.h already exposes.
 5748 	* src/lr0.h: Remove useless include.
 5749 
 5750 2020-03-06  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 5751 
 5752 	typo: succesful -> successful
 5753 	* data/skeletons/lalr1.cc: here
 5754 	* etc/bench.pl.in: here
 5755 	* src/location.c: and here.
 5756 
 5757 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5758 
 5759 	README: point to tests/bison, and document --trace
 5760 	Reported by Victor Morales Cayuela.
 5761 
 5762 	* README, README-hacking.md: here.
 5763 
 5764 2020-03-06  Akim Demaille  <akim.demaille@gmail.com>
 5765 
 5766 	gnulib: update
 5767 
 5768 2020-03-05  Akim Demaille  <akim.demaille@gmail.com>
 5769 
 5770 	README: point to tests/bison, and document --trace
 5771 	Reported by Victor Morales Cayuela.
 5772 
 5773 	* README, README-hacking.md: here.
 5774 
 5775 2020-03-05  Akim Demaille  <akim.demaille@gmail.com>
 5776 
 5777 	yacc.c: simplify yyparse_context_t member names
 5778 	* data/skeletons/yacc.c (yyparse_context_t): Rename yyes_p and
 5779 	yyes_capacity_p as...
 5780 	(yyes, yyes_capacity): These.
 5781 
 5782 2020-03-05  Akim Demaille  <akim.demaille@gmail.com>
 5783 
 5784 	yacc.c: yyerror_range does not need to be preserved accross calls
 5785 	* data/skeletons/yacc.c (b4_parse_state_variable_macros): Don't define
 5786 	yyerror_range.
 5787 	(yyparse): Add yyerror_range as local variable.
 5788 
 5789 2020-03-05  Akim Demaille  <akim.demaille@gmail.com>
 5790 
 5791 	yacc.c: push: undefine the pstate macros for the epilogue
 5792 	* data/skeletons/yacc.c (b4_macro_define, b4_macro_undef)
 5793 	(b4_pstate_macro_define, b4_parse_state_variable_macros):
 5794 	New.
 5795 	Use them.
 5796 	* examples/c/bistromathic/parse.y: Remove now useless undefs.
 5797 
 5798 2020-03-05  Akim Demaille  <akim.demaille@gmail.com>
 5799 
 5800 	yacc.c: push: initialize the pstate variables in pstate_new
 5801 	Currently pstate_new does not set up its variables, this task is left
 5802 	to yypush_parse.  This was probably to share more code with usual pull
 5803 	parsers, where these (local) variables are indeed initialized by
 5804 	yyparse.
 5805 
 5806 	But as a consequence yyexpected_tokens crashes at the very beginning
 5807 	of the parse, since, for instance, the stacks are not even set up.
 5808 	See https://lists.gnu.org/r/bison-patches/2020-03/msg00001.html.
 5809 
 5810 	The fix could have very simple, but the documentation actually makes
 5811 	it very clear that we can reuse a pstate for several parses:
 5812 
 5813 	    After yypush_parse returns a status other than YYPUSH_MORE, the
 5814 	    parser instance yyps may be reused for a new parse.
 5815 
 5816 	so we need to restore the parser to its pristine state so that (i) it
 5817 	is ready to run the next parse, (ii) it properly supports
 5818 	yyexpected_tokens for the next run.
 5819 
 5820 	* data/skeletons/yacc.c (b4_initialize_parser_state_variables): New,
 5821 	extracted from the top of yyparse/yypush_parse.
 5822 	(yypstate_clear): New.
 5823 	(yypstate_new): Use it when push parsers are enabled.
 5824 	Define after the yyps macros so that we can use the same code as the
 5825 	regular pull parsers.
 5826 	(yyparse): Use it when push parsers are _not_ enabled.
 5827 
 5828 	* examples/c/bistromathic/bistromathic.test: Check the completion on
 5829 	the beginning of the line.
 5830 
 5831 2020-03-04  Akim Demaille  <akim.demaille@gmail.com>
 5832 
 5833 	style: formatting changes
 5834 	* data/skeletons/yacc.c, tests/torture.at: here.
 5835 
 5836 2020-03-04  Akim Demaille  <akim.demaille@gmail.com>
 5837 
 5838 	bistromathic: properly compute the lcp, as expected by readline
 5839 	Currently completion on "at" proposes only "atan", but does not
 5840 	actually complete "at" into "atan".
 5841 
 5842 	* examples/c/bistromathic/parse.y (completion): Install the lcp in
 5843 	matches[0].
 5844 	* examples/c/bistromathic/bistromathic.test: Check that case.
 5845 
 5846 2020-03-04  Akim Demaille  <akim.demaille@gmail.com>
 5847 
 5848 	bistromathic: don't require spaces after operators for completion
 5849 	Currently "(1+<TAB>" does not work as expected, because "+" is not a
 5850 	word breaking character.
 5851 
 5852 	* examples/c/bistromathic/parse.y (init_readline): Specify our word
 5853 	breaking characters.
 5854 	* examples/c/bistromathic/bistromathic.test: Avoid trailing spaces.
 5855 
 5856 2020-03-02  Akim Demaille  <akim.demaille@gmail.com>
 5857 
 5858 	bistromathic: check completion
 5859 	* examples/c/bistromathic/bistromathic.test: here.
 5860 	* examples/c/bistromathic/parse.y (expected_tokens): Fix a memory
 5861 	leak.
 5862 
 5863 2020-03-02  Akim Demaille  <akim.demaille@gmail.com>
 5864 
 5865 	m4: remove b4_function_define and b4_function_declare
 5866 	* data/skeletons/c.m4: here.
 5867 
 5868 2020-03-02  Akim Demaille  <akim.demaille@gmail.com>
 5869 
 5870 	m4: decommission b4_function_declare
 5871 	* data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/yacc.c:
 5872 	Stop using b4_function_declare.
 5873 
 5874 2020-03-02  Akim Demaille  <akim.demaille@gmail.com>
 5875 
 5876 	m4: decommission function generating macro
 5877 	These macros have been extremely useful when we had to support K&R C,
 5878 	which we dropped long ago.  Now, they merely make the code uselessly
 5879 	hard to read.
 5880 
 5881 	* data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/glr.cc,
 5882 	* data/skeletons/yacc.c:
 5883 	Stop using b4_function_define.
 5884 
 5885 2020-03-01  Akim Demaille  <akim.demaille@gmail.com>
 5886 
 5887 	examples: bistromathic: demonstrate the use of yyexpected_tokens
 5888 	Let's use GNU readline and its TAB autocompletion to demonstrate the
 5889 	use of yyexpected_tokens.
 5890 
 5891 	This shows a number of weaknesses in our current approach:
 5892 
 5893 	- some macros (yyssp, etc.) from push parsers "leak" in user code, we
 5894 	  need to undefine them
 5895 
 5896 	- the context needed by yyexpected_tokens does not need the token,
 5897 	  yypstate actually suffices
 5898 
 5899 	- yypstate is not properly setup when first allocated, which results
 5900 	  in a crash of yyexpected_tokens if fired before a first token was
 5901 	  read.  We should move initialization from yypush_parse into
 5902 	  yypstate_new.
 5903 
 5904 	* examples/c/bistromathic/parse.y (yylex): Take input as a string, not
 5905 	a file.
 5906 	(EXIT): New token.
 5907 	(input): Adjust to work only on a line.
 5908 	(line): Remove.
 5909 	(symbol_count, process_line, expected_tokens, completion)
 5910 	(init_readline): New.
 5911 	* examples/c/bistromathic/bistromathic.test: Adjust expectations.
 5912 
 5913 2020-03-01  Akim Demaille  <akim.demaille@gmail.com>
 5914 
 5915 	examples: use consistently the GFDL header for readmes
 5916 	* examples/c++/README.md, examples/c++/calc++/README.md,
 5917 	* examples/c/calc/README.md, examples/c/lexcalc/README.md,
 5918 	* examples/c/pushcalc/README.md, examples/c/reccalc/README.md:
 5919 	Prefer the GFDL banner to the GPL one.
 5920 
 5921 2020-03-01  Akim Demaille  <akim.demaille@gmail.com>
 5922 
 5923 	gnulib: use readline
 5924 
 5925 2020-02-29  Akim Demaille  <akim.demaille@gmail.com>
 5926 
 5927 	examples: bistromathic: don't use Flex
 5928 	This example will soon use GNU readline, so its scanner should be easy
 5929 	to use (concurrently) on strings, not streams.  This is not a place
 5930 	where Flex shines, and anyway, these are examples of Bison, not Flex.
 5931 	There's already lexcalc and reccalc that demonstrate the use of Flex.
 5932 
 5933 	* examples/c/bistromathic/scan.l: Remove.
 5934 	* examples/c/bistromathic/parse.y (yylex): New.
 5935 	Adjust dependencies.
 5936 
 5937 2020-02-29  Akim Demaille  <akim.demaille@gmail.com>
 5938 
 5939 	examples: bistromathic: strengthen tests
 5940 	* examples/c/bistromathic/bistromathic.test: here.
 5941 	* examples/test: Be clearer on failing tests.
 5942 
 5943 2020-02-29  Akim Demaille  <akim.demaille@gmail.com>
 5944 
 5945 	examples: lexcalc: demonstrate location tracking
 5946 	The bistromathic example should not use Flex, it makes it too complex.
 5947 	But it was the only example to show location tracking with Flex.
 5948 
 5949 	* examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/parse.y,
 5950 	* examples/c/lexcalc/scan.l: Demonstrate location tracking as is done
 5951 	in bistromathic.
 5952 
 5953 2020-02-27  Akim Demaille  <akim.demaille@gmail.com>
 5954 
 5955 	c++: don't copy the lookahead
 5956 	The current implementation of parser::context keeps a copy of the
 5957 	lookahead.  This is troublesome since we support move-only types.
 5958 	Besides, while GCC is happy with the current implementation, Clang
 5959 	complains that the ctor it needs to build the copy of the lookahead is
 5960 	not yet available.
 5961 
 5962 	    461. calc.at:1120: testing Calculator C++ %defines %locations parse.error=verbose %name-prefix "calc" %verbose  ...
 5963 	    calc.at:1120: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -Wno-deprecated -o calc.cc calc.y
 5964 	    calc.at:1120: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 5965 	    stderr:
 5966 	    In file included from calc-lex.cc:7:
 5967 	    calc.hh:351:12: error: instantiation of function 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' required here, but no definition is available [-Werror,-Wundefined-func-template]
 5968 	        struct symbol_type : basic_symbol<by_type>
 5969 	               ^
 5970 	    calc.hh:273:7: note: forward declaration of template entity is here
 5971 	          basic_symbol (const basic_symbol& that);
 5972 	          ^
 5973 	    calc.hh:351:12: note: add an explicit instantiation declaration to suppress this warning if 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' is explicitly instantiated in another translation unit
 5974 	        struct symbol_type : basic_symbol<by_type>
 5975 	               ^
 5976 	    1 error generated.
 5977 	    In file included from calc-main.cc:7:
 5978 	    calc.hh:351:12: error: instantiation of function 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' required here, but no definition is available [-Werror,-Wundefined-func-template]
 5979 	        struct symbol_type : basic_symbol<by_type>
 5980 	               ^
 5981 	    calc.hh:273:7: note: forward declaration of template entity is here
 5982 	          basic_symbol (const basic_symbol& that);
 5983 	          ^
 5984 	    calc.hh:351:12: note: add an explicit instantiation declaration to suppress this warning if 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' is explicitly instantiated in another translation unit
 5985 	        struct symbol_type : basic_symbol<by_type>
 5986 	               ^
 5987 	    1 error generated.
 5988 	    stdout:
 5989 	    calc.at:1120: exit code was 1, expected 0
 5990 	    461. calc.at:1120: 461. Calculator C++ %defines %locations parse.error=verbose %name-prefix "calc" %verbose  (calc.at:1120): FAILED (calc.at:1120)
 5991 
 5992 	* data/skeletons/lalr1.cc (context::yyla_): Make it a const-ref.
 5993 	Move the implementation out of the declaration.
 5994 
 5995 2020-02-27  Akim Demaille  <akim.demaille@gmail.com>
 5996 
 5997 	c++: minor fixes
 5998 	Address compiler warnings such as
 5999 
 6000 	    warning: declaration of 'yyla' shadows a member of 'yy::parser::context' [-Wshadow]
 6001 
 6002 	* data/skeletons/lalr1.cc (context): Don't use the same names for
 6003 	variables and members.
 6004 	Use foo_ for private members, as in parser.
 6005 	Also, use the + trick in array accesses to please ICC and provide it
 6006 	with an int.
 6007 
 6008 2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6009 
 6010 	c++: add support for parse.error=custom
 6011 	* data/skeletons/lalr1.cc: added support here
 6012 	* tests/calc.at: added test cases
 6013 	* tests/local.at: added yyreport_syntax_error implementation
 6014 	   for C++ test cases
 6015 
 6016 2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6017 
 6018 	c++: add parser::context for syntax error handling
 6019 	* data/skeletons/lalr1.cc: here
 6020 
 6021 2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6022 
 6023 	c++: add support for parse.error=detailed
 6024 	* data/skeletons/lalr1.cc: added support here
 6025 	* tests/calc.at: added a test case
 6026 
 6027 2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6028 
 6029 	skeletons: prefer b4_parse_error_{case,bmatch} over manual solution
 6030 	Prefer b4_parse_error_case over the adhoc solution
 6031 	`m4_case + b4_percent_define_get`. Same for b4_parse_error_bmatch.
 6032 
 6033 	* data/skeletons/glr.c: here
 6034 	* data/skeletons/yacc.c: here
 6035 
 6036 2020-02-27  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6037 
 6038 	typo: succesful -> successful
 6039 	* data/skeletons/lalr1.cc: here
 6040 	* etc/bench.pl.in: here
 6041 	* src/location.c: here
 6042 	* tests/calc.at: and here
 6043 
 6044 2020-02-24  Akim Demaille  <akim.demaille@gmail.com>
 6045 
 6046 	bench.pl: clean up the dust
 6047 	* etc/bench.pl.in: Adjust to the current use of %define's values.
 6048 	Don't use %error-verbose.
 6049 	Prefer Bison to CPP (e.g., api.value.type).
 6050 	Avoid returning characters directly, so that %define api.token.raw works.
 6051 
 6052 2020-02-23  Akim Demaille  <akim.demaille@gmail.com>
 6053 
 6054 	style: comment changes
 6055 	* src/symtab.h, src/lr0.c: here.
 6056 
 6057 2020-02-23  Akim Demaille  <akim.demaille@gmail.com>
 6058 
 6059 	style: avoid using 'this' as an identifier
 6060 	LLDB insists on parsing 'this' as a C++ keyword, even when debugging a
 6061 	C program.
 6062 
 6063 	* src/symtab.c: Please the dictator.
 6064 
 6065 2020-02-23  Akim Demaille  <akim.demaille@gmail.com>
 6066 
 6067 	style: remove useless declarations
 6068 	* src/reader.h: Don't duplicate what parse-gram.h already exposes.
 6069 	* src/lr0.h: Remove useless include.
 6070 
 6071 2020-02-19  Akim Demaille  <akim.demaille@gmail.com>
 6072 
 6073 	examples: fix c/calc
 6074 	* examples/c/calc/calc.y: Remove experiment traces.
 6075 
 6076 2020-02-19  Akim Demaille  <akim.demaille@gmail.com>
 6077 
 6078 	todo: update
 6079 
 6080 2020-02-15  Akim Demaille  <akim.demaille@gmail.com>
 6081 
 6082 	doc: update recommandation for libtextstyle
 6083 	* README: here.
 6084 
 6085 2020-02-15  Akimn Demaille  <akim.demaille@gmail.com>
 6086 
 6087 	build: fix typo
 6088 	* build-aux/cross-options.pl: here.
 6089 
 6090 2020-02-15  Akim Demaille  <akim.demaille@gmail.com>
 6091 
 6092 	doc: simplify the cross references
 6093 	* doc/bison.texi: here.
 6094 
 6095 2020-02-15  Akim Demaille  <akim.demaille@gmail.com>
 6096 
 6097 	doc: document token internationalization
 6098 	* doc/bison.texi (Parser Internationalization): Move most of its
 6099 	content into...
 6100 	(Enabling I18n): this new node.
 6101 	(Token I18n): New.
 6102 	(Token Decl): Refer to token internationalization.
 6103 	(Error Reporting Function): Promote parse.error detailed.
 6104 
 6105 2020-02-15  Akim Demaille  <akim.demaille@gmail.com>
 6106 
 6107 	regen
 6108 
 6109 2020-02-15  Victor Morales Cayuela  <victor.morales_cayuela@nokia-sbell.com>
 6110 
 6111 	diagnostics: modernize the display of submessages
 6112 	Since Bison 2.7, output was indented four spaces for explanatory
 6113 	statements.  For example:
 6114 
 6115 	    input.y:2.7-13: error: %type redeclaration for exp
 6116 	    input.y:1.7-11:     previous declaration
 6117 
 6118 	Since the introduction of caret-diagnostics, it became less clear.
 6119 	Remove the indentation and display submessages as in GCC:
 6120 
 6121 	    input.y:2.7-13: error: %type redeclaration for exp
 6122 	        2 | %type <float> exp
 6123 	          |       ^~~~~~~
 6124 	    input.y:1.7-11: note: previous declaration
 6125 	        1 | %type <int> exp
 6126 	          |       ^~~~~
 6127 
 6128 	* src/complain.h (SUB_INDENT): Remove.
 6129 	(warnings): Add "note" to the enum.
 6130 	* src/complain.h, src/complain.c (complain_indent): Replace by...
 6131 	(subcomplain): this.
 6132 	Adjust all dependencies.
 6133 	* tests/actions.at, tests/diagnostics.at, tests/glr-regression.at,
 6134 	* tests/input.at, tests/named-refs.at, tests/regression.at:
 6135 	Adjust expectations.
 6136 
 6137 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6138 
 6139 	doc: simplify uses of references
 6140 	This reverts "doc: work around problems with PDF generation", commit
 6141 	d810aa3d8f76b1a4d7d402072f45a0662152ffd4.  Upstream issue is fixed.
 6142 	https://lists.gnu.org/r/bug-texinfo/2020-02/msg00006.html
 6143 
 6144 	* gnulib: Update.
 6145 	* doc/bison.texi: Simplify.
 6146 
 6147 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6148 
 6149 	java: provide a Context ctor
 6150 	This is really a private auxiliary inner class, so it should not
 6151 	matter.  But it's better style.
 6152 
 6153 	* data/skeletons/lalr1.java: here.
 6154 
 6155 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6156 
 6157 	Merge tag 'v3.5.2'
 6158 	bison 3.5.2
 6159 
 6160 	* tag 'v3.5.2':
 6161 	  version 3.5.2
 6162 	  news: 3.5.2
 6163 	  gnulib: update
 6164 	  doc: update Doxygen template
 6165 	  java: avoid trailing white spaces
 6166 	  m4: fix b4_token_format
 6167 	  doc: clearly state that %yacc only makes sense with yacc.c
 6168 	  doc: spell check
 6169 	  examples: be more robust to spaces in paths
 6170 	  larlr1.cc: Reject unsupported values for parse.lac
 6171 
 6172 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6173 
 6174 	maint: post-release administrivia
 6175 	* NEWS: Add header line for next release.
 6176 	* .prev-version: Record previous version.
 6177 	* cfg.mk (old_NEWS_hash): Auto-update.
 6178 
 6179 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6180 
 6181 	version 3.5.2
 6182 	* NEWS: Record release date.
 6183 
 6184 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6185 
 6186 	news: 3.5.2
 6187 	* NEWS: Update.
 6188 
 6189 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6190 
 6191 	gnulib: update
 6192 
 6193 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6194 
 6195 	doc: update Doxygen template
 6196 	* Doxyfile.in: Run doxygen -u on it.
 6197 
 6198 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6199 
 6200 	java: avoid trailing white spaces
 6201 	* data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed.
 6202 	* data/skeletons/lalr1.java: Avoid trailing spaces.
 6203 
 6204 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6205 
 6206 	m4: fix b4_token_format
 6207 	We used to emit:
 6208 
 6209 	    /** Token number,to be returned by the scanner.  */
 6210 	    static final int NUM = 258;
 6211 	    /** Token number,to be returned by the scanner.  */
 6212 	    static final int NEG = 259;
 6213 
 6214 	with no space after the comma.  Fix that.
 6215 
 6216 	* data/skeletons/bison.m4 (b4_token_format): Quote where appropriate.
 6217 
 6218 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6219 
 6220 	doc: clearly state that %yacc only makes sense with yacc.c
 6221 	* doc/bison.texi: here.
 6222 
 6223 2020-02-13  Akim Demaille  <akim.demaille@gmail.com>
 6224 
 6225 	doc: spell check
 6226 	* doc/bison.texi: here.
 6227 
 6228 2020-02-12  Akim Demaille  <akim.demaille@gmail.com>
 6229 
 6230 	examples: bistromathic: demonstrate named references
 6231 	* examples/c/bistromathic/parse.y: here.
 6232 
 6233 2020-02-12  Akim Demaille  <akim.demaille@gmail.com>
 6234 
 6235 	c++: simplify
 6236 	* data/skeletons/stack.hh (ssize): Remove, same as size.
 6237 
 6238 2020-02-12  Akim Demaille  <akim.demaille@gmail.com>
 6239 
 6240 	tests: check calls to yyerror from the user actions
 6241 	This revealed a number of things I had not realized:
 6242 
 6243 	- the Java location tracking was aliasing the same pair of positions
 6244 	  for all the symbols (see previous commit).
 6245 
 6246 	- in impure parsers, it's quite easy to use incorrect locations for
 6247 	  diagnostics, since yyerror uses yylloc, which is the location of the
 6248 	  lookahead, not that of the current lhs.  So we need something like
 6249 
 6250 	    {
 6251 	      YYLTYPE old_yylloc = yylloc;
 6252 	      yylloc = @$;
 6253 	      yyerror (]AT_PARAM_IF([result, count, nerrs, ])[buf);
 6254 	      yylloc = old_yylloc;
 6255 	    }
 6256 
 6257 	  Maybe we should do that little yylloc dance in the skeleton instead
 6258 	  of leaving it to the user?  It might be costly...  But that's only
 6259 	  for users of the impure parsers, which are asking for trouble
 6260 	  anyway.
 6261 
 6262 	- in glr.cc invoking yyerror is somewhat cumbersome: the C++ interface
 6263 	  is not available as we are in yyparse (which in C), and yyerror is
 6264 	  used by glr.cc itself to bind it to the user's parser::error.  If we
 6265 	  call yyerror, we need:
 6266 
 6267 	    yyerror (]AT_LOCATION_IF([[&@$, ]])[yyparser, ]AT_PARAM_IF([result, count, nerrs, ])[msg);
 6268 
 6269 	  However calling yy::parser::error is easier, once we know that the
 6270 	  current parser object is available as 'yyparser'.  Which also saves
 6271 	  us from having to pass the parse-params ourselves:
 6272 
 6273 	    yyparser.error (]AT_LOCATION_IF([[@$, ]])[msg);
 6274 
 6275 	* tests/calc.at: Invoke yyerror by hand, instead of using fprintf etc.
 6276 	Adjust expectations.
 6277 
 6278 2020-02-11  Akim Demaille  <akim.demaille@gmail.com>
 6279 
 6280 	java: beware not to alias the locations of the various symbols
 6281 	* examples/java/calc/Calc.y, tests/calc.at, tests/local.at
 6282 	(getStartPos, getEndPos): Always return a new object.
 6283 	* doc/bison.texi: Clarify this.
 6284 
 6285 2020-02-11  Akim Demaille  <akim.demaille@gmail.com>
 6286 
 6287 	java: check that parse.error custom|detailed work with push parsers
 6288 	* tests/calc.at: here.
 6289 
 6290 2020-02-11  Akim Demaille  <akim.demaille@gmail.com>
 6291 
 6292 	java: don't expose the Context's members
 6293 	* data/skeletons/lalr1.java (Context): Make data members private.
 6294 	(Context.getLocation): New.
 6295 	* examples/java/calc/Calc.y, tests/java.at, tests/local.at: Adjust.
 6296 
 6297 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6298 
 6299 	build: pacify syntax-check
 6300 	* src/complain.c: Fix indentation.
 6301 	* cfg.mk: Using strcmp is ok in the tests.
 6302 	Test cases and examples don't need Bison's PO support.
 6303 
 6304 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6305 
 6306 	regen
 6307 
 6308 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6309 
 6310 	gnulib: update
 6311 
 6312 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6313 
 6314 	build: prefer %D% and %C% to hard coded values
 6315 	* doc/local.mk: here.
 6316 
 6317 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6318 
 6319 	parse.error: document and diagnose the incompatibility with %token-table
 6320 	* doc/bison.texi (Tokens from Literals): Move to code using
 6321 	%token-table to...
 6322 	(Decl Summary: %token-table): here.
 6323 	* data/skeletons/bison.m4: Implement mutual exclusion.
 6324 	* tests/input.at: Check it.
 6325 	* doc/local.mk: Be robust to the removal of doc/.
 6326 
 6327 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6328 
 6329 	doc: spell check
 6330 	* doc/bison.texi: here.
 6331 
 6332 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6333 
 6334 	doc: formatting changes
 6335 	* doc/bison.texi: here.
 6336 
 6337 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6338 
 6339 	doc: work around problems with PDF generation
 6340 	With texinfo.tex 2019-09-24.13, node names with + are not properly
 6341 	handled.
 6342 	https://lists.gnu.org/r/bug-texinfo/2020-02/msg00004.html
 6343 
 6344 	* doc/bison.texi: Always use the three-argument form for references to
 6345 	node with a + in the name.
 6346 
 6347 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6348 
 6349 	java: revert "style: avoid useless initializers"
 6350 	This reverts commit ebab1ffca8a728158051481795ae798231cfd93d.
 6351 	This commit removed "useless" initializers, going from
 6352 
 6353 	    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 6354 	       STATE-NUM.  */
 6355 	    private static final byte yypact_[] = yypact_init ();
 6356 	    private static final byte[] yypact_init ()
 6357 	    {
 6358 	      return new byte[]
 6359 	      {
 6360 	        25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
 6361 	        -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
 6362 	        -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
 6363 	         3,     3
 6364 	      };
 6365 	    }
 6366 
 6367 	to
 6368 
 6369 	    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 6370 	       STATE-NUM.  */
 6371 	    private static final byte[] yypact_ =
 6372 	    {
 6373 	        25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
 6374 	        -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
 6375 	        -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
 6376 	         3,     3
 6377 	    };
 6378 
 6379 	But it turns out that this was on purpose, to work around the 64KB
 6380 	limitation in JVM methods.  It was introduced on the 2008-11-10 by
 6381 	Di-an Jan in 09ccae9b18a7c09ebf7bb8df2a18c8c4a6def248: "Work around
 6382 	Java's ``code too large'' problem for parser tables".  See
 6383 	https://lists.gnu.org/r/help-bison/2008-11/msg00004.html.  A real
 6384 	test, where we would hit the JVM limitation, would be nice.
 6385 
 6386 	To avoid further regressions, add comments.
 6387 
 6388 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6389 
 6390 	skeletons: avoid b4_error_verbose_if, which is confusing
 6391 	parse.error has more than two possible values.
 6392 
 6393 	* data/skeletons/bison.m4 (b4_error_verbose_if, b4_error_verbose_flag):
 6394 	Remove.
 6395 	(b4_parse_error_case, b4_parse_error_bmatch): New.
 6396 	Adjust dependencies.
 6397 
 6398 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6399 
 6400 	skeletons: decorelate %token-table from verbose error messages
 6401 	Reported by Adrian Vogelsgesang.
 6402 
 6403 	* data/skeletons/bison.m4: Here.
 6404 	* data/skeletons/lalr1.cc: Adjust.
 6405 
 6406 2020-02-10  Akim Demaille  <akim.demaille@gmail.com>
 6407 
 6408 	doc: formatting changes
 6409 	* doc/bison.texi: here.
 6410 
 6411 2020-02-09  Akim Demaille  <akim.demaille@gmail.com>
 6412 
 6413 	doc: clearly state that %yacc only makes sense with yacc.c
 6414 	* doc/bison.texi: here.
 6415 	* tests/calc.at: Stop testing %yacc with non yacc.c skeletons.
 6416 
 6417 2020-02-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6418 
 6419 	style: stylistic cleanups in the C skeletons
 6420 	* data/skeletons/glr.c, data/skeletons/yacc.c:
 6421 	Avoid duplicated declaration of yysymbol_name.
 6422 
 6423 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6424 
 6425 	java: provide Context with a more OO interface
 6426 	* data/skeletons/lalr1.java (yyexpectedTokens)
 6427 	(yysyntaxErrorArguments): Make them methods of Context.
 6428 	(Context.yysymbolName): New.
 6429 	* tests/local.at: Adjust.
 6430 
 6431 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6432 
 6433 	java: add support for parse.error custom
 6434 	* data/skeletons/lalr1.java: Add support for custom parse errors.
 6435 	(yyntokens_): Make it public.  Under...
 6436 	(yyntokens): this name.
 6437 	(Context): Capture the location too.
 6438 	* examples/c/bistromathic/parse.y,
 6439 	* examples/c/bistromathic/bistromathic.test:
 6440 	Improve error message.
 6441 	* examples/java/calc/Calc.test, examples/java/calc/Calc.y: Use custom
 6442 	error messages.
 6443 	* tests/calc.at, tests/local.at: Check custom error messages.
 6444 
 6445 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6446 
 6447 	java: let the Context give access to yyntokens
 6448 	* data/skeletons/lalr1.java (Context.yytokens): New.
 6449 
 6450 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6451 
 6452 	java: make the syntax error format string translatable
 6453 	The error format should be translated, but contrary to the case of
 6454 	C/C++, we cannot just depend on macros to adapt on the
 6455 	presence/absence of '_'.  Let's consider that the message format is to
 6456 	be translated iff there are some internationalized tokens.
 6457 
 6458 	* src/output.c (prepare_symbol_names): Define b4_has_translations.
 6459 	* data/skeletons/java.m4 (b4_trans): New.
 6460 	* data/skeletons/lalr1.java: Use it to emit translatable or not the
 6461 	format string.
 6462 
 6463 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6464 
 6465 	java: introduce yyexpectedTokens
 6466 	And allow syntax error messages for 'detailed' and 'verbose' to be
 6467 	translated.
 6468 
 6469 	* data/skeletons/lalr1.java (Context, yyexpectedTokens)
 6470 	(yysyntaxErrorArguments): New.
 6471 	(yysyntax_error): Use it.
 6472 
 6473 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6474 
 6475 	java: add support for parse.error=detailed
 6476 	In Java there is no need for N_ and yytranslate_.  So instead of
 6477 	hard-coding the use of N_ in the table of the symbol names, rely on
 6478 	b4_symbol_translate.
 6479 
 6480 	* src/output.c (prepare_symbol_names): Use b4_symbol_translate instead
 6481 	of N_.
 6482 	* data/skeletons/c.m4 (b4_symbol_translate): New.
 6483 	* data/skeletons/lalr1.java (yysymbolName): New.
 6484 	Use it.
 6485 	* examples/java/calc/Calc.y: Use parse.error=detailed.
 6486 	* tests/calc.at: Check parse.error=detailed.
 6487 
 6488 2020-02-08  Akim Demaille  <akim.demaille@gmail.com>
 6489 
 6490 	m4: fix b4_token_format
 6491 	We used to emit:
 6492 
 6493 	    /** Token number,to be returned by the scanner.  */
 6494 	    static final int NUM = 258;
 6495 	    /** Token number,to be returned by the scanner.  */
 6496 	    static final int NEG = 259;
 6497 
 6498 	with no space after the comma.  Fix that.
 6499 
 6500 	* data/skeletons/bison.m4 (b4_token_format): Quote where appropriate.
 6501 
 6502 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6503 
 6504 	java: tests: remove now redundant tests
 6505 	* tests/javapush.at: here.
 6506 
 6507 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6508 
 6509 	java: tests: check push parsers like the others
 6510 	Currently in javapush.at.
 6511 
 6512 	* tests/calc.at: Here.
 6513 
 6514 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6515 
 6516 	java: tests: remove now redundant tests
 6517 	* tests/java.at: Calculator tests are now in calc.at.
 6518 
 6519 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6520 
 6521 	java: tests: check location tracking in the calculator
 6522 	Unfortunately in the Java skeleton the user cannot override the way
 6523 	locations are displayed, and locations don't know the structure of the
 6524 	positions.  So they cannot implement the tricks used in the C/C++
 6525 	skeletons to display "1.1" instead of "1.1-1.2".
 6526 
 6527 	* tests/local.at (Java): Add support for column tracking in the
 6528 	locations, as we did in examples/java/calc.
 6529 	* tests/calc.at: Use AT_CALC_YYLEX.
 6530 
 6531 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6532 
 6533 	java: tests: prepare the replacement of calculator tests
 6534 	Soon calculator tests for Java will move from java.at to calc.at.
 6535 	Which implies improving the Java testing infrastructure in
 6536 	local.at (for instance really tracking columns in positions, not just
 6537 	token number).  Detach java.at from local.at.
 6538 
 6539 	* tests/java.at (AT_JAVA_POSITION_DEFINE_OLD): New.
 6540 	Use it.
 6541 
 6542 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6543 
 6544 	java: style: avoid useless initializers
 6545 	Instead of
 6546 
 6547 	      /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 6548 	       STATE-NUM.  */
 6549 	      private static final byte yypact_[] = yypact_init ();
 6550 	      private static final byte[] yypact_init ()
 6551 	      {
 6552 	        return new byte[]
 6553 	        {
 6554 	          25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
 6555 	          -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
 6556 	          -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
 6557 	           3,     3
 6558 	        };
 6559 	      }
 6560 
 6561 	generate
 6562 
 6563 	    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 6564 	       STATE-NUM.  */
 6565 	      private static final byte[] yypact_ =
 6566 	      {
 6567 	          25,    -7,    -8,    37,    -8,    40,    -8,    20,    -8,    61,
 6568 	          -8,    -8,     3,     9,    51,    -8,    -8,    -2,    -2,    -2,
 6569 	          -2,    -2,    -2,    -8,    -8,    -8,     1,    66,    66,     3,
 6570 	           3,     3
 6571 	      };
 6572 
 6573 	I have no idea what motivated the previous approach.
 6574 
 6575 	* data/skeletons/java.m4 (b4_typed_parser_table_define): Here.
 6576 
 6577 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6578 
 6579 	java: style: prefer putting the square brackets on the type
 6580 	* examples/java/calc/Calc.y, examples/java/simple/Calc.y,
 6581 	* tests/calc.at, tests/local.at: here.
 6582 
 6583 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6584 
 6585 	java: examples: fix the tracking of locations
 6586 	* examples/java/calc/Calc.y: The StreamTokenizer cannot "peek" for the
 6587 	next character, it reads it, and keeps it for the next call.  So the
 6588 	current location is one passed the end of the current token.  To avoid
 6589 	this, keep the previous position, and use it to end the current token.
 6590 	* examples/java/calc/Calc.test: Adjust.
 6591 
 6592 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6593 
 6594 	java: examples: prefer switch to chains of else-if
 6595 	* examples/java/calc/Calc.y, examples/java/simple/Calc.y: here.
 6596 	* examples/java/simple/Calc.y: Use the tokenizer's handling of blanks.
 6597 
 6598 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6599 
 6600 	java: examples: split in two
 6601 	* examples/java: Split in...
 6602 	* examples/java/simple, examples/java/calc: these.
 6603 
 6604 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6605 
 6606 	traces: don't print the stack before the gotos
 6607 	The C, C++ and D skeletons used to show the stack right after popping
 6608 	the stack during the reduction.  Now that the stack is printed after
 6609 	reaching a new state, that has become useless:
 6610 
 6611 	    Entering state 1
 6612 	    Stack now 0 1
 6613 	    Reducing stack by rule 5 (line 83):
 6614 	       $1 = token "number" (1)
 6615 	    -> $$ = nterm exp (1)
 6616 	    Stack now 0
 6617 	    Entering state 8
 6618 	    Stack now 0 8
 6619 
 6620 	Remove the "Stack now 0" line.
 6621 
 6622 	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
 6623 	* data/skeletons/lalr1.java, data/skeletons/yacc.c:
 6624 	Here.
 6625 
 6626 2020-02-05  Akim Demaille  <akim.demaille@gmail.com>
 6627 
 6628 	traces: show the stack after reading a token
 6629 	Currently, if we have long rules and series of shift, we stack states
 6630 	without showing stack.  Let's be more incremental, and do how the Java
 6631 	skeleton does.
 6632 
 6633 	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
 6634 	* data/skeletons/yacc.c:
 6635 	Here.
 6636 	Adjust test cases.
 6637 	* tests/torture.at (AT_DATA_STACK_TORTURE): Disable stack traces: this
 6638 	test produces a very large stack, and showing the stack each time we
 6639 	shift a token goes quadatric.
 6640 
 6641 2020-02-04  Akim Demaille  <akim.demaille@gmail.com>
 6642 
 6643 	traces: write the "Reading a token" alone on its line
 6644 	The Java skeleton displays
 6645 
 6646 	    Reading a token:
 6647 	    Next token is token "number" (1)
 6648 
 6649 	while the other display
 6650 
 6651 	    Reading a token: Next token is token "number" (1)
 6652 
 6653 	When generating logs in the scanner, the first part is separated from
 6654 	the second, and the end of the scanner logs have the second part
 6655 	pasted in.  So let's propagate the Java way, but with the colon.
 6656 
 6657 	* data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
 6658 	* data/skeletons/lalr1.java, data/skeletons/yacc.c: Do it.
 6659 	Adjust test cases and doc.
 6660 
 6661 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6662 
 6663 	java: use the same calc tests as the other skeletons
 6664 	* tests/local.at (AT_LANG_MATCH): New.
 6665 	(AT_YYERROR_DECLARE(java), AT_YYERROR_DECLARE_EXTERN(java)): New.
 6666 	* tests/calc.at: The grammar file for Java is quite different for the
 6667 	others, and continuing to assemble it from pieces makes the grammar
 6668 	file hard to understand.  Let's also dispatch on the language to
 6669 	assemble it, and isolate Java from the others.
 6670 	Most of this comes from java.at.
 6671 
 6672 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6673 
 6674 	java: add access to the number of errors
 6675 	* data/skeletons/lalr1.java (yynewrrs, getNumberOfErrors): New.
 6676 	Formatting changes.
 6677 
 6678 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6679 
 6680 	java: formatting changes
 6681 	* data/skeletons/java.m4, data/skeletons/lalr1.java: here.
 6682 
 6683 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6684 
 6685 	java: avoid trailing white spaces
 6686 	* data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed.
 6687 	* data/skeletons/lalr1.java: Avoid trailing spaces.
 6688 
 6689 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6690 
 6691 	java: example: properly track the locations
 6692 	This example, so far, was tracking the current token number, not the
 6693 	current column number.  This is not nice for an example...
 6694 
 6695 	* examples/java/Calc.y (PositionReader): New.
 6696 	Use it.
 6697 	* examples/java/Calc.test: Check the output.
 6698 
 6699 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6700 
 6701 	java: example: improve
 6702 	* examples/java/Calc.y: Propagate the exit status.
 6703 	Support -p.
 6704 
 6705 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6706 
 6707 	java: example: rely on autoboxing
 6708 	AFAICT, autoboxing/unboxing was added in Java 5 (September 30, 2004).
 6709 	I think we can afford to use it.  It should help us merge some Java
 6710 	tests with the main ones.
 6711 
 6712 	However, beware that != does not unbox: it compares the object
 6713 	addresses.
 6714 
 6715 	* examples/java/Calc.y, tests/java.at: Simplify.
 6716 	* examples/java/Calc.test, tests/java.at: Improve tests.
 6717 
 6718 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6719 
 6720 	tests: comment changes
 6721 	* tests/calc.at: Shorten titles and reduce redundancy.
 6722 
 6723 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6724 
 6725 	skeletons: add support for %code epilogue
 6726 	When building the test cases, emitting code in the epilogue is very
 6727 	constraining.  Let's make it simpler thanks to %code epilogue.
 6728 
 6729 	However, I don't want to document this: it is bad style to use it (we
 6730 	should avoid having too many ways to write the same thing,
 6731 	TI!MTOWTDI), just put your code in the true epilogue section.
 6732 
 6733 	* data/skeletons/glr.c, data/skeletons/lalr1.d, data/skeletons/lalr1.java,
 6734 	* data/skeletons/yacc.c: Implement support for %code epilogue.
 6735 	Remove useless comments.
 6736 	* tests/calc.at, tests/java.at: Simplify.
 6737 
 6738 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6739 
 6740 	examples: bistromathic: fix location tracking
 6741 	* examples/c/bistromathic/scan.l (LOCATION_STEP): New.
 6742 	Use to properly ignore blanks.
 6743 	* examples/c/bistromathic/bistromathic.test: Check that case.
 6744 
 6745 2020-02-02  Akim Demaille  <akim.demaille@gmail.com>
 6746 
 6747 	doc: document new features of parse.error
 6748 	* doc/bison.texi (Error Reporting): Rename as...
 6749 	(Error Reporting Function): this.
 6750 	Adjust dependencies.
 6751 	Make it a subsection of this...
 6752 	(Error Reporting): new section.
 6753 	(Syntax Error Reporting Function): New.
 6754 	(parse.error): Update description.
 6755 
 6756 2020-01-29  Akim Demaille  <akim.demaille@gmail.com>
 6757 
 6758 	glr.c: add support for parse.error=custom
 6759 	* data/skeletons/glr.c (yyreportSyntaxError): Call the user's
 6760 	yyreport_syntax_error in custom mode.
 6761 	* tests/calc.at: Check it.
 6762 
 6763 2020-01-29  Akim Demaille  <akim.demaille@gmail.com>
 6764 
 6765 	glr.c: add support for parse.error=detailed
 6766 	* data/skeletons/glr.c (yystrlen, yysymbol_name): New.
 6767 	Implement parse.error detailed.
 6768 	* tests/calc.at: Check it.
 6769 
 6770 2020-01-29  Akim Demaille  <akim.demaille@gmail.com>
 6771 
 6772 	glr.c: introduce yyexpected_tokens and yysyntax_error_arguments
 6773 	Modeled after what was done in yacc.c, yet somewhat different since
 6774 	yyGLRStack play the role of the full yyparse_context_t.  It will
 6775 	probably be defined as a alias, to make interfaces compatible.
 6776 
 6777 	LAC is not supported here.  And is somewhat tricky.
 6778 
 6779 	* data/skeletons/glr.c (yyexpected_tokens, yysyntax_error_arguments): New.
 6780 
 6781 2020-01-29  Akim Demaille  <akim.demaille@gmail.com>
 6782 
 6783 	glr.c: move code around
 6784 	* data/skeletons/glr.c: Move the handling of error messages after the
 6785 	definition of types.  Especially after yyGLRStack, which we will need
 6786 	in forthcoming patches.
 6787 	Simplify: yyGLRStack is defined at this point.
 6788 
 6789 2020-01-29  Akim Demaille  <akim.demaille@gmail.com>
 6790 
 6791 	glr.c: rename yyStateNum as yy_state_t
 6792 	* data/skeletons/glr.c: here.
 6793 	For consistency with yacc.c.
 6794 
 6795 2020-01-29  Akim Demaille  <akim.demaille@gmail.com>
 6796 
 6797 	yacc.c: fix misleading indentation
 6798 	* data/skeletons/yacc.c: here.
 6799 
 6800 2020-01-27  Akim Demaille  <akim.demaille@gmail.com>
 6801 
 6802 	doc: simplify uses of @ref
 6803 	The PDF output is more consistent: some nodes were not pointed to with
 6804 	their title.  The HTML output becomes "see section Foo" instead of
 6805 	"see Foo", but this should be addressed in the next Texinfo release.
 6806 	Info output is simplified, as it uses only the node name and not its
 6807 	title.  But it's considered easier to read this way.
 6808 	See https://lists.gnu.org/r/help-texinfo/2020-01/msg00031.html.
 6809 
 6810 	* doc/bison.texi: Set @xrefautomaticsectiontitle on.
 6811 	Simplify all uses of ref.
 6812 
 6813 2020-01-27  Akim Demaille  <akim.demaille@gmail.com>
 6814 
 6815 	examples: be more robust to spaces in paths
 6816 	Reported by Nikki Valen.
 6817 	https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html
 6818 
 6819 	* examples/test ($prog): Remove, replaced by...
 6820 	(prog): This new function, which pays attention to quoting shell
 6821 	variables.
 6822 
 6823 2020-01-27  Akim Demaille  <akim.demaille@gmail.com>
 6824 
 6825 	doc: don't pretend trigonometry is part of arithmetics
 6826 	* doc/bison.texi (arith_funs): Rename as...
 6827 	(funs): this.
 6828 
 6829 2020-01-27  Akim Demaille  <akim.demaille@gmail.com>
 6830 
 6831 	doc: update Doxygen template
 6832 	* Doxyfile.in: Run doxygen -u on it.
 6833 
 6834 2020-01-27  Akim Demaille  <akim.demaille@gmail.com>
 6835 
 6836 	examples: add a complete example with all the bells and whistles
 6837 	* examples/c/bistromathic/Makefile,
 6838 	* examples/c/bistromathic/README.md,
 6839 	* examples/c/bistromathic/bistromathic.test,
 6840 	* examples/c/bistromathic/local.mk,
 6841 	* examples/c/bistromathic/parse.y,
 6842 	* examples/c/bistromathic/scan.l:
 6843 	New.
 6844 
 6845 	* Makefile.am (AM_YFLAGS_WITH_LINES): Add -Wdangling-alias.
 6846 	* examples/test: Make failure errors easier to read.
 6847 
 6848 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6849 
 6850 	examples: add an example of a push parser
 6851 	Add an example to demonstrate the use of push parser.  I'm pleasantly
 6852 	surprised: parse.error=detailed works like a charm with push parsers.
 6853 
 6854 	* examples/c/local.mk, examples/c/pushcalc/Makefile
 6855 	* examples/c/pushcalc/README.md, examples/c/pushcalc/calc.test,
 6856 	* examples/c/pushcalc/calc.y, examples/c/pushcalc/local.mk:
 6857 	New.
 6858 
 6859 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6860 
 6861 	examples: more tests
 6862 	* examples/c/mfcalc/mfcalc.test: here.
 6863 
 6864 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6865 
 6866 	examples: clean up
 6867 	* examples/c/calc/calc.y: Restore to its original state, with
 6868 	parse.error=detailed instead of parse.error=custom (this example
 6869 	should be simple).
 6870 	* examples/c/calc/calc.test: Check syntax errors.
 6871 	* examples/c/lexcalc/parse.y: Add comments.
 6872 
 6873 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6874 
 6875 	tests: check custom error messages and push parsers
 6876 	* tests/local.at (AT_LAC_IF): New.
 6877 	* tests/calc.at: And also check the suppot for LAC.
 6878 
 6879 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6880 
 6881 	style: formatting changes
 6882 	* data/skeletons/lalr1.java: here.
 6883 
 6884 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6885 
 6886 	todo: update
 6887 
 6888 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6889 
 6890 	bison: pretend to 3.6 already
 6891 	* src/parse-gram.y: here.
 6892 
 6893 2020-01-26  Akim Demaille  <akim.demaille@gmail.com>
 6894 
 6895 	git: update ignores
 6896 	* lib/.gitignore: here.
 6897 
 6898 2020-01-23  Akim Demaille  <akim.demaille@gmail.com>
 6899 
 6900 	regen
 6901 
 6902 2020-01-23  Akim Demaille  <akim.demaille@gmail.com>
 6903 
 6904 	diagnostics: modernize bison's syntax errors
 6905 	We used to display the unexpected token first:
 6906 
 6907 	    $ bison foo.y
 6908 	    foo.y:1.8-13: error: syntax error, unexpected %token, expecting character literal or identifier or <tag>
 6909 	        1 | %token %token
 6910 	          |        ^~~~~~
 6911 
 6912 	GCC uses a different format:
 6913 
 6914 	    $ gcc-mp-9 foo.c
 6915 	    foo.c:1:5: error: expected identifier or '(' before ')' token
 6916 	        1 | int()()()
 6917 	          |     ^
 6918 
 6919 	and so does Clang:
 6920 
 6921 	    $ clang-mp-9.0 foo.c
 6922 	    foo.c:1:5: error: expected identifier or '('
 6923 	    int()()()
 6924 	        ^
 6925 	    1 error generated.
 6926 
 6927 	They display the unexpected token last (or not at all).  Also, they
 6928 	don't waste width with "syntax error".  Let's try that.  It gives, for
 6929 	the same example as above:
 6930 
 6931 	    $ bison foo.y
 6932 	    foo.y:1.8-13: error: expected character literal or identifier or <tag> before %token
 6933 	        1 | %token %token
 6934 	          |        ^~~~~~
 6935 
 6936 	* src/complain.h, src/complain.c (syntax_error): New.
 6937 	* src/parse-gram.y (yyreport_syntax_error): Use it.
 6938 
 6939 2020-01-23  Akim Demaille  <akim.demaille@gmail.com>
 6940 
 6941 	regen
 6942 
 6943 2020-01-23  Akim Demaille  <akim.demaille@gmail.com>
 6944 
 6945 	diagnostics: report syntax errors in color
 6946 	* src/parse-gram.y (parse.error): Set to 'custom'.
 6947 	(yyreport_syntax_error): New.
 6948 	* data/bison-default.css (.expected, .unexpected): New.
 6949 	* tests/diagnostics.at: Adjust.
 6950 
 6951 2020-01-23  Akim Demaille  <akim.demaille@gmail.com>
 6952 
 6953 	regen
 6954 
 6955 2020-01-23  Akim Demaille  <akim.demaille@gmail.com>
 6956 
 6957 	diagnostics: translate bison's own tokens
 6958 	As a test case, support translations in Bison itself.
 6959 
 6960 	* src/parse-gram.y: Mark the translatable tokens.
 6961 	While at it, use clearer names.
 6962 	* tests/input.at: Adjust expectations.
 6963 
 6964 2020-01-22  Akim Demaille  <akim.demaille@gmail.com>
 6965 
 6966 	diagnostics: handle -fno-caret in the called functions
 6967 	Don't force callers of location_caret to have to deal with flags that
 6968 	disable it.
 6969 
 6970 	* src/location.h, src/location.c (location_caret)
 6971 	(location_caret_suggestion): Early return if disabled.
 6972 	* src/complain.c: Simplify.
 6973 
 6974 2020-01-22  Akim Demaille  <akim.demaille@gmail.com>
 6975 
 6976 	yacc.c: fixes
 6977 	* data/skeletons/yacc.c: Avoid warnings about unused functions.
 6978 	Fix typo.
 6979 
 6980 2020-01-21  Akim Demaille  <akim.demaille@gmail.com>
 6981 
 6982 	examples: be more robust to spaces in paths
 6983 	Reported by Nikki Valen.
 6984 	https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html
 6985 
 6986 	* examples/test ($prog): Remove, replaced by...
 6987 	(prog): This new function, which pays attention to quoting shell
 6988 	variables.
 6989 
 6990 2020-01-21  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 6991 
 6992 	larlr1.cc: Reject unsupported values for parse.lac
 6993 	Just as the yacc.c skeleton, the lalr1.cc skeleton should reject
 6994 	invalid values for parse.lac.
 6995 
 6996 	* data/skeletons/lalr1.cc: check validity of parse.lac
 6997 	* tests/input.at: new test cases
 6998 
 6999 2020-01-21  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
 7000 
 7001 	larlr1.cc: Reject unsupported values for parse.lac
 7002 	Just as the yacc.c skeleton, the lalr1.cc skeleton should reject
 7003 	invalid values for parse.lac.
 7004 
 7005 	* data/skeletons/lalr1.cc: check validity of parse.lac
 7006 	* tests/input.at: new test cases
 7007 
 7008 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7009 
 7010 	parsers: issue tname with i18n markup
 7011 	Some users would like to avoid having to "parse" the *.y file to find
 7012 	the strings to translate.  Let's issue the translatable tokens with N_
 7013 	to allow "parsing" the generated parsers instead.
 7014 
 7015 	See
 7016 	https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00015.html
 7017 
 7018 	* src/output.c (prepare_symbol_names): Issue symbol_names with N_()
 7019 	markup.
 7020 
 7021 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7022 
 7023 	tests: check token internationalization
 7024 	* tests/calc.at: Check it.
 7025 
 7026 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7027 
 7028 	regen
 7029 
 7030 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7031 
 7032 	parsers: support translatable token aliases
 7033 	In addition to
 7034 
 7035 	    %token NUM "number"
 7036 
 7037 	accept
 7038 
 7039 	    %token NUM _("number")
 7040 
 7041 	in which case the token will be translated in error messages.
 7042 	Do not use _() in the output if there are no translatable tokens.
 7043 
 7044 	* src/symtab.h, src/symtab.c (symbol): Add a 'translatable' member.
 7045 	* src/parse-gram.y (TSTRING): New token.
 7046 	(string_as_id.opt): Replace with...
 7047 	(alias): this.
 7048 	Use it.
 7049 	* src/scan-gram.l (SC_ESCAPED_TSTRING): New start conditions, to match
 7050 	TSTRINGs.
 7051 	* src/output.c (prepare_symbols): Define b4_translatable if there are
 7052 	translatable strings.
 7053 
 7054 	* data/skeletons/glr.c, data/skeletons/lalr1.cc,
 7055 	* data/skeletons/yacc.c (yytnamerr): Receive b4_translatable, and use it.
 7056 
 7057 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7058 
 7059 	tests: check that detailed error messages preserve UTF-8 characters
 7060 	* tests/regression.at: here.
 7061 
 7062 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7063 
 7064 	yacc.c: escape trigraphs in detailed parse.error
 7065 	* src/output.c (escape_trigraphs, xescape_trigraphs): New.
 7066 	(prepare_symbol_names): Use it.
 7067 	* tests/regression.at: Check the handling of trigraphs with
 7068 	parse.error = detailed.
 7069 
 7070 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7071 
 7072 	regen
 7073 
 7074 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7075 
 7076 	bison: use detailed error messages
 7077 	* #: .
 7078 
 7079 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7080 
 7081 	regen
 7082 
 7083 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7084 
 7085 	yacc.c: tests: check detailed error messages
 7086 	* tests/local.at (AT_ERROR_DETAILED_IF): New.
 7087 	(AT_ERROR_SIMPLE_IF): Adjust.
 7088 	* tests/calc.at: Check parse.error=detailed.
 7089 
 7090 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7091 
 7092 	yacc.c: add support for parse.error detailed
 7093 	"detailed" error messages are almost like "verbose", except that we
 7094 	don't double escape them, they don't get inner quotes, we don't use
 7095 	yytnamerr, and we hide the table.
 7096 
 7097 	"custom" is exposed with the "detailed" tokens, not the "verbose"
 7098 	ones: they are not double-quoted.
 7099 
 7100 	Because there's a risk that some people use yytname even without
 7101 	"verbose", let's keep yytname (instead of yys_name) in "simple"
 7102 	parse.error.
 7103 
 7104 	* src/output.c (prepare_symbol_names): Be ready to output symbol names
 7105 	unquoted.
 7106 	(prepare_symbol_names): Output both the old tname table, and the new
 7107 	symbol_names one.
 7108 	* data/skeletons/bison.m4: Accept 'detailed'.
 7109 	* data/skeletons/yacc.c: When parse.error is 'detailed', don't emit
 7110 	yytname and yytnamerr, just yysymbol_name with the table inside.
 7111 	* tests/calc.at: Adjust.
 7112 
 7113 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7114 
 7115 	c: use yysymbol_name in traces
 7116 	Only parse.error verbose and simple will get the original yytname: the
 7117 	other options will rely on a different table.  So let's move on top of
 7118 	the yysymbol_name function.
 7119 
 7120 	* data/skeletons/c.m4 (yy_symbol_print): Use yysymbol_name.
 7121 	* data/skeletons/glr.c (yytokenName): Rename as...
 7122 	(yysymbol_name): this.
 7123 	The change of naming scheme is unfortunate, but it's definitely glr.c
 7124 	which is "wrong".
 7125 
 7126 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7127 
 7128 	glr.c: move some functions after the definition of types
 7129 	Currently yy_symbol_print is defined before yytokenName, although it
 7130 	should use it instead of read yytname directly.  Move blocks around to
 7131 	avoid this.
 7132 
 7133 	* data/skeletons/glr.c (yy_symbol_print): Move its definition after
 7134 	that of yytokenName.
 7135 
 7136 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7137 
 7138 	Merge branch 'maint'
 7139 	* maint:
 7140 	  maint: post-release administrivia
 7141 	  version 3.5.1
 7142 	  news: update
 7143 	  CI: use ICC again
 7144 	  warnings: pacify ICC in lalr1.cc
 7145 	  test: report.at: avoid tiny new failure
 7146 	  git: update ignores
 7147 
 7148 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7149 
 7150 	maint: post-release administrivia
 7151 	* NEWS: Add header line for next release.
 7152 	* .prev-version: Record previous version.
 7153 	* cfg.mk (old_NEWS_hash): Auto-update.
 7154 
 7155 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7156 
 7157 	version 3.5.1
 7158 	* NEWS: Record release date.
 7159 
 7160 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7161 
 7162 	news: update
 7163 
 7164 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7165 
 7166 	CI: use ICC again
 7167 	See https://github.com/nemequ/icc-travis/issues/15.
 7168 	Thanks to Jeff Hammond and Evan Nemerson for their help.
 7169 
 7170 	* configure.ac (warn_common): Disable dubious warnings.
 7171 	* .travis.yml: Use ICC again.
 7172 
 7173 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7174 
 7175 	warnings: pacify ICC in lalr1.cc
 7176 	See 139d0655947c87f90af08718618feaaca0e558d7.
 7177 
 7178 	* data/skeletons/yacc.c: If I might be a char, write a[+I] instead of
 7179 	a[I], so that ICC does not complain.
 7180 
 7181 2020-01-19  Jim Meyering  <meyering@fb.com>
 7182 
 7183 	test: report.at: avoid tiny new failure
 7184 	Be robust to newer versions of Autoconf where the package URL defaults
 7185 	to https instead of http.
 7186 
 7187 	* configure.ac (AC_INIT): Use https.
 7188 	* tests/report.at: Adjust expected output s/http/https/
 7189 	to match updated URL.
 7190 
 7191 2020-01-19  Akim Demaille  <akim.demaille@gmail.com>
 7192 
 7193 	git: update ignores
 7194 
 7195 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7196 
 7197 	regen
 7198 
 7199 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7200 
 7201 	yacc.c: portability to G++ 4.8
 7202 	Currently we get warnings with GCC 4.8 when running the
 7203 	maintainer-check-g++ tests:
 7204 
 7205 	    143. skeletons.at:85: testing Installed skeleton file names ...
 7206 	    ../../tests/skeletons.at:120: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret --skeleton=yacc.c -o input-cmd-line.c input-cmd-line.y
 7207 	    ../../tests/skeletons.at:121: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o input-cmd-line input-cmd-line.c $LIBS
 7208 	    stderr:
 7209 	    input-cmd-line.c: In function 'int yysyntax_error(long int*, char**, const yyparse_context_t*)':
 7210 	    input-cmd-line.c:977:52: error: conversion to 'int' from 'long int' may alter its value [-Werror=conversion]
 7211 	                                       YYSIZEOF (yyarg) / YYSIZEOF (*yyarg));
 7212 	                                                        ^
 7213 	    cc1plus: all warnings being treated as errors
 7214 	    stdout:
 7215 	    ../../tests/skeletons.at:121: exit code was 1, expected 0
 7216 
 7217 	and
 7218 
 7219 	    429. calc.at:823: testing Calculator parse.error=custom %locations api.prefix={calc}  ...
 7220 	    ../../tests/calc.at:823: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y
 7221 	    ../../tests/calc.at:823: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.c $LIBS
 7222 	    stderr:
 7223 	    calc.y: In function 'int yyreport_syntax_error(const yyparse_context_t*)':
 7224 	    calc.y:157:58: error: conversion to 'int' from 'long unsigned int' may alter its value [-Werror=conversion]
 7225 	       int n = yysyntax_error_arguments (ctx, arg, sizeof arg / sizeof *arg);
 7226 	                                                              ^
 7227 	    cc1plus: all warnings being treated as errors
 7228 	    stdout:
 7229 	    ../../tests/calc.at:823: exit code was 1, expected 0
 7230 
 7231 	We could use a cast to avoid the warning, but it becomes too
 7232 	cluttered.  We can also use YYPTRDIFF_T, but that forces the user to
 7233 	use YYPTRDIFF_T too, although this is an array of tokens, which is
 7234 	limited by YYNTOKENS, an int.  So let's completely avoid this warning.
 7235 
 7236 	* data/skeletons/yacc.c, tests/local.at (yyreport_syntax_error): Avoid
 7237 	relying on sizeof to compute the array capacity.
 7238 
 7239 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7240 
 7241 	yacc.c: pass the parse-params to yyreport_syntax_error
 7242 	Enhance the calculator tests: show that passing arguments to yyerror
 7243 	works.
 7244 
 7245 	* tests/calc.at: Add a new parse-param, nerrs, which counts the number
 7246 	of syntax errors in a run.
 7247 	* tests/local.at: Adjust to handle the new 'nerrs' argument, when
 7248 	present.
 7249 
 7250 	The custom error reporting function show sees the user's additional
 7251 	arguments.  Let's experiment with passing them as arguments to
 7252 	yyreport_syntax_error, but maybe storing them in the context would be
 7253 	a bettter alternative.
 7254 
 7255 	* data/skeletons/yacc.c (yyreport_syntax_error): Handle the
 7256 	parse-params.
 7257 	* tests/calc.at, tests/local.at: Adjust.
 7258 
 7259 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7260 
 7261 	tests: a clearer test for parse-params
 7262 	Currently the parse-params are tested in calc.at by checking that the
 7263 	global variable and the parse-params have the same value.  But it does
 7264 	not check that value, that could remain being 0 just as well.
 7265 
 7266 	* tests/calc.at: Don't define the params when they are not used.
 7267 	Check the final value of result and count.
 7268 	Also, do count the number of line of logs.
 7269 
 7270 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7271 
 7272 	yacc.c: check custom error messages with parse-params
 7273 	* tests/calc.at: Check with prefix and parse-params.
 7274 
 7275 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7276 
 7277 	yacc.c: let custom error messages see the location
 7278 	* data/skeletons/yacc.c (yyparse_context_t): Add yylloc when
 7279 	applicable.
 7280 	(yyparse_context_location): New.
 7281 	* tests/local.at (AT_YYERROR_DEFINE(c)): Handle the location.
 7282 	* tests/calc.at: Check it.
 7283 
 7284 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7285 
 7286 	yacc.c: isolate yyexpected_tokens
 7287 	Provide users with a means to query for the currently allowed tokens.
 7288 	Could be used for autocompletion for instance.
 7289 
 7290 	* data/skeletons/yacc.c (yyexpected_tokens): New, extracted from
 7291 	yysyntax_error_arguments.
 7292 	* examples/c/calc/calc.y (PRINT_EXPECTED_TOKENS): New.
 7293 	Use it.
 7294 
 7295 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7296 
 7297 	tests: compute verbose error messages from the custom ones
 7298 	We use a different format to check parse.error custom.  Compute the
 7299 	"verbose" one from it instead of forcing the test author to provide
 7300 	the various formats of expected error messages.
 7301 
 7302 	* tests/calc.at (_AT_CHECK_CALC_ERROR): Handle this transformation
 7303 	when needed.
 7304 	Simplify callers.
 7305 
 7306 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7307 
 7308 	yacc.c: check custom error messages
 7309 	* tests/local.at (AT_ERROR_CUSTOM_IF, AT_ERROR_VERBOSE_IF)
 7310 	(AT_ERROR_SIMPLE_IF): New.
 7311 	(AT_YYERROR_DEFINE(c)): Generate yyreport_syntax_error.
 7312 	* tests/calc.at (_AT_CHECK_CALC_ERROR): Accept custom error messages
 7313 	as additional test case.
 7314 	Use it.
 7315 	Add a new test case for %define parse.error custom.
 7316 
 7317 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7318 
 7319 	yacc.c: add custom error message generation
 7320 	When parse.error is custom, let users define a yyreport_syntax_error
 7321 	function, and use it.
 7322 
 7323 	* data/skeletons/bison.m4 (b4_error_verbose_if): Accept 'custom'.
 7324 	* data/skeletons/yacc.c: Implement it.
 7325 	* examples/c/calc/calc.y: Experiment with it.
 7326 
 7327 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7328 
 7329 	yacc.c: style: avoid macros
 7330 	* data/skeletons/yacc.c (YYSYNTAX_ERROR): Remove, the call is now
 7331 	sufficiently small so that we can afford to duplicate it.
 7332 
 7333 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7334 
 7335 	yacc.c: store token numbers, not token strings
 7336 	That allows users to cover more cases, such as easily filtering some
 7337 	arguments they don't want to expose.  But they now have to call
 7338 	yysymbol_name explicitly.
 7339 
 7340 	* data/skeletons/yacc.c (yysyntax_error_arguments, yysyntax_error):
 7341 	Deal with symbol numbers instead of symbol names.
 7342 
 7343 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7344 
 7345 	yacc.c: extract yyerror_message_arguments
 7346 	Isolate a function that returns the list of expected and unexpected
 7347 	tokens.  It will be exposed to users willing to customize their error
 7348 	messages.
 7349 
 7350 	* data/skeletons/yacc.c (yyparse_context_t): New.
 7351 	(yyerror_message_arguments): New, extracted from yysyntax_error.
 7352 
 7353 2020-01-17  Akim Demaille  <akim.demaille@gmail.com>
 7354 
 7355 	regen
 7356 
 7357 2020-01-15  Akim Demaille  <akim.demaille@gmail.com>
 7358 
 7359 	tests: make AT_PARSE_PARAMS usable at the end of arguments
 7360 	When not empty, AT_PARSE_PARAMS was guaranteed to end with a comma.
 7361 	Remove the trailing comma, so that we can use AT_PARSE_PARAMS at the
 7362 	end of the arguments, not only at the beginning.
 7363 
 7364 	* tests/local.at: here.
 7365 	Unfortunately, m4_append relies on the macro not being defined whereas
 7366 	we would have preferred it to check for emptiness.  So use
 7367 	m4_define/m4_undefine instead of m4_pushdef/m4_popdef.
 7368 
 7369 2020-01-15  Akim Demaille  <akim.demaille@gmail.com>
 7370 
 7371 	tests: fix AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS pairs
 7372 	* tests/glr-regression.at, tests/java.at, tests/javapush.at:
 7373 	Close properly what is opened.
 7374 	Do not nest.
 7375 
 7376 2020-01-15  Akim Demaille  <akim.demaille@gmail.com>
 7377 
 7378 	d, java: use traces more alike that of C
 7379 	Same order, same places, same content.
 7380 
 7381 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: here.
 7382 
 7383 2020-01-15  Akim Demaille  <akim.demaille@gmail.com>
 7384 
 7385 	c++: report the stack at the same places as in C
 7386 	Let's have C be the reference, and match it elsewhere.  Maybe C is too
 7387 	verbose and some adjustments are needed, but then that would be done
 7388 	in another batch of patches.
 7389 
 7390 	* data/skeletons/lalr1.cc: Print the stack once we popped after
 7391 	YYERROR, and before emptying the stack at the end of parsing.
 7392 
 7393 2020-01-15  Akim Demaille  <akim.demaille@gmail.com>
 7394 
 7395 	c++: display the stack in the same order as in C
 7396 	Currently the C and C++ parse traces differ in the order in which the
 7397 	stack is displayed: bottom up in C, top down in C++.  Let's stick to
 7398 	the C order.
 7399 
 7400 	* data/skeletons/stack.hh (stack::iterator, stack::const_iterator)
 7401 	(begin, end): Be forward, not backward.
 7402 
 7403 2020-01-15  Akim Demaille  <akim.demaille@gmail.com>
 7404 
 7405 	style: avoid redundancy in the tests
 7406 	* tests/local.at (m4_rpatsubst): New.
 7407 	Use it to handle %parse-params.
 7408 	* tests/calc.at: Use %parse-params with several arguments.
 7409 
 7410 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7411 
 7412 	yacc.c: comment changes
 7413 	In particular, import Adrian Vogelsgesang's comments about LAC from
 7414 	lalr1.cc.
 7415 
 7416 	* data/skeletons/yacc.c: here.
 7417 
 7418 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7419 
 7420 	yacc.c: style: double-quote the argument of b4_percent_define_get
 7421 	* data/skeletons/yacc.c: Here, for consistency.
 7422 
 7423 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7424 
 7425 	yacc.c: introduce yysymbol_name
 7426 	Provide the users with a public API to get the name of the tokens.  A
 7427 	thin wrapper around yytname.
 7428 
 7429 	* data/skeletons/yacc.c (yysymbol_name): New.
 7430 	Use it.
 7431 
 7432 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7433 
 7434 	CI: check on PPC64le, ARM64 and s390x
 7435 	I was hoping it would help us catch warnings when char is
 7436 	unsigned (see 78bb152a63f711af65364881c434af4c198e1ee0), but it does
 7437 	not seem to help.  It's a pity that the compiler is the same all over
 7438 	the place, I would have preferred testing others.
 7439 
 7440 	* .travis.yml: here.
 7441 
 7442 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7443 
 7444 	todo: update
 7445 
 7446 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7447 
 7448 	Merge branch 'maint' into HEAD
 7449 	* maint:
 7450 	  gnulib: update
 7451 	  lalr1.cc: avoid static_cast
 7452 	  glr.c: add missing cast
 7453 	  regen
 7454 	  package: bump copyrights to 2020
 7455 	  gitignore: update
 7456 
 7457 2020-01-11  Akim Demaille  <akim.demaille@gmail.com>
 7458 
 7459 	gnulib: update
 7460 
 7461 2020-01-10  Akim Demaille  <akim.demaille@gmail.com>
 7462 
 7463 	lalr1.cc: avoid static_cast
 7464 	Reported by donmac703.
 7465 	Fixes https://github.com/akimd/bison/issues/20.
 7466 
 7467 	* data/skeletons/lalr1.cc: here.
 7468 
 7469 2020-01-10  Akim Demaille  <akim.demaille@gmail.com>
 7470 
 7471 	glr.c: add missing cast
 7472 	Reported by psjo.
 7473 	Fixes https://github.com/akimd/bison/issues/19.
 7474 
 7475 	* data/skeletons/glr.c (yyprocessOneStack): Here.
 7476 
 7477 2020-01-10  Akim Demaille  <akim.demaille@gmail.com>
 7478 
 7479 	regen
 7480 
 7481 2020-01-10  Akim Demaille  <akim.demaille@gmail.com>
 7482 
 7483 	package: bump copyrights to 2020
 7484 	Run 'make update-copyright'.
 7485 
 7486 2020-01-10  Akim Demaille  <akim.demaille@gmail.com>
 7487 
 7488 	gitignore: update
 7489 
 7490 2020-01-10  Akim Demaille  <akim.demaille@gmail.com>
 7491 
 7492 	regen
 7493 
 7494 2020-01-09  Akim Demaille  <akim.demaille@gmail.com>
 7495 
 7496 	yacc.c: simplify use of YYDPRINTF
 7497 	* data/skeletons/yacc.c (YYDPRINTF): Expand to no-op (instead of
 7498 	nothing) when disabled.
 7499 	Simplify callers.
 7500 
 7501 2020-01-05  Akim Demaille  <akim.demaille@gmail.com>
 7502 
 7503 	package: bump copyrights to 2020
 7504 	Run 'make update-copyright'.
 7505 
 7506 2020-01-05  Akim Demaille  <akim.demaille@gmail.com>
 7507 
 7508 	gitignore: update
 7509 
 7510 2020-01-04  Akim Demaille  <akim.demaille@gmail.com>
 7511 
 7512 	doc: YYERROR_VERBOSE is no longer supported
 7513 	* doc/bison.texi (Table of Symbols): Remove last reference to it.
 7514 	* NEWS: Be clear about that.
 7515 
 7516 2020-01-04  Akim Demaille  <akim.demaille@gmail.com>
 7517 
 7518 	glr.c: no longer support YYERROR_VERBOSE
 7519 	* data/skeletons/glr.c: Rather, dispatch directly on parse.error's
 7520 	value.
 7521 
 7522 2020-01-04  Akim Demaille  <akim.demaille@gmail.com>
 7523 
 7524 	yacc.c: no longer support YYERROR_VERBOSE
 7525 	Supporting YYERROR_VERBOSE via cpp is a nuisance: m4 is in charge of
 7526 	handling alternatives.  When adding more options for %define
 7527 	parse.error, supporting both CPP and M4 is too complex.  Anyway,
 7528 	YYERROR_VERBOSE was deprecated long ago.
 7529 
 7530 	* data/skeletons/yacc.c: Use m4 only to handle verbose/simple error
 7531 	messages.
 7532 
 7533 2020-01-03  Akim Demaille  <akim.demaille@gmail.com>
 7534 
 7535 	yacc.c: avoid negations
 7536 	* data/skeletons/yacc.c (yyerrlab): here.
 7537 
 7538 2019-12-31  Akim Demaille  <akim.demaille@gmail.com>
 7539 
 7540 	glr.c: clarify yyreportSyntaxError
 7541 	See the previous commit.
 7542 
 7543 	* data/skeletons/glr.c (yyreportSyntaxError): First compute the
 7544 	arguments of the error message, _then_ th error message size.
 7545 
 7546 2019-12-31  Akim Demaille  <akim.demaille@gmail.com>
 7547 
 7548 	yacc: restructure and fix yysyntax_error
 7549 	I would like to offer new ways to build the error message.  As a first
 7550 	step, let's simplify yysyntax_error whose first loop does two things
 7551 	at the same time: (i) collect the tokens to be reported in the error
 7552 	message, and (ii) accumulate their sizes and possibly return
 7553 	"overflow".  Let's pull (ii) in a second step.
 7554 
 7555 	Then test 525 (regression.at:1193: parse.error=verbose overflow)
 7556 	failed.  This test checks that we correctly report "memory overflow"
 7557 	when the error message is too large.  However the test is mistaken: it
 7558 	is triggered in a place where there are five (large) expected tokens,
 7559 	so anyway we would not display them, so there is no (memory) overflow
 7560 	here!  Transform this test to (i) check that indeed there is no
 7561 	overflow, and (ii) create syntax_error3 which does check the intended
 7562 	behavior, but with four expected tokens.
 7563 
 7564 	* data/skeletons/yacc.c (yysyntax_error): First compute the list of
 7565 	arguments, then compute yysize.
 7566 	* tests/regression.at (parse.error=verbose overflow): Enhance and fix.
 7567 
 7568 2019-12-31  Akim Demaille  <akim.demaille@gmail.com>
 7569 
 7570 	tests: also check -Wchar-subscripts
 7571 	GCC's -Wchar-subscripts may report issues on platforms where char is
 7572 	unsigned.  Unfortunately the current CI does not reproduce the
 7573 	problem.  But that would allow contributors to report issues if the
 7574 	warning appears somewhere.
 7575 
 7576 	See 139d0655947c87f90af08718618feaaca0e558d7.
 7577 	Problem reported by Andy Fiddaman in:
 7578 	https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html
 7579 
 7580 	* configure.ac (warn_common): Add -Wchar-subscripts.
 7581 
 7582 2019-12-30  Akim Demaille  <akim.demaille@gmail.com>
 7583 
 7584 	CI: do not specify the language
 7585 	When we give travis the langugage, it overrides our envvars.  Instead
 7586 	of the MATRIX_EVAL trick, just stop specifying the language.
 7587 
 7588 2019-12-30  Akim Demaille  <akim.demaille@gmail.com>
 7589 
 7590 	CI: remove ICC support, we can no longer use it
 7591 	https://github.com/nemequ/icc-travis/issues/15
 7592 
 7593 2019-12-29  Akim Demaille  <akim.demaille@gmail.com>
 7594 
 7595 	doc: clean up the description of YYDEBUG
 7596 	* doc/bison.texi: Make it clearer that %define parse.trace is the
 7597 	preferred options.
 7598 	Fix a typo about api.prefix.
 7599 
 7600 2019-12-29  Akim Demaille  <akim.demaille@gmail.com>
 7601 
 7602 	glr.cc: avoid compiler warnings
 7603 	    381. types.at:366: testing glr.cc api.value.type={double} ...
 7604 	    test.cc:207:57: error: "__clang_major__" is not defined, evaluates to 0 [-Werror=undef]
 7605 	      207 | #if defined __APPLE__ && YY_CPLUSPLUS < 201103L && 4 <= __clang_major__
 7606 	          |                                                         ^~~~~~~~~~~~~~~
 7607 
 7608 	* data/skeletons/glr.cc: Check __clang_major__ before using it.
 7609 
 7610 2019-12-18  Paul Eggert  <eggert@cs.ucla.edu>
 7611 
 7612 	warnings: pacify ‘gcc -Wchar-subscripts’ in yacc.c
 7613 	Problem reported by Andy Fiddaman in:
 7614 	https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html
 7615 	* data/skeletons/yacc.c (yy_reduce_print, yy_lac, yysyntax_error)
 7616 	(yyreturn): If I might be a char, write a[+I] instead of a[I],
 7617 	so that ‘gcc -Wchar-subscripts’ does not complain.
 7618 
 7619 2019-12-14  Akim Demaille  <akim.demaille@gmail.com>
 7620 
 7621 	doc: formatting changes
 7622 	* doc/bison.texi: No output changes.
 7623 
 7624 2019-12-14  Akim Demaille  <akim.demaille@gmail.com>
 7625 
 7626 	tests: don't fail if seq is no available
 7627 	As is the case on Solaris.
 7628 	Reported by Dennis Clarke.
 7629 	https://lists.gnu.org/archive/html/bug-bison/2019-12/msg00011.html
 7630 
 7631 	* examples/c/reccalc/reccalc.test: Skip if there is no seq.
 7632 
 7633 2019-12-11  Akim Demaille  <akim.demaille@gmail.com>
 7634 
 7635 	maint: post-release administrivia
 7636 	* NEWS: Add header line for next release.
 7637 	* .prev-version: Record previous version.
 7638 	* cfg.mk (old_NEWS_hash): Auto-update.
 7639 
 7640 2019-12-11  Akim Demaille  <akim.demaille@gmail.com>
 7641 
 7642 	version 3.5
 7643 	* NEWS: Record release date.
 7644 
 7645 2019-12-10  Akim Demaille  <akim.demaille@gmail.com>
 7646 
 7647 	news: prepare for 3.5
 7648 
 7649 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7650 
 7651 	glr.cc: disable warnings from Clang on macOS
 7652 	    $ cat test.cc
 7653 	    #include <stddef.h>
 7654 	    #include <stdint.h>
 7655 
 7656 	    ptrdiff_t half_max_capacity = PTRDIFF_MAX;
 7657 	    $ clang++-mp-9.0 -pedantic -std=c++98 /tmp/test.cc -c
 7658 	    /tmp/test.cc:4:31: warning: 'long long' is a C++11 extension [-Wc++11-long-long]
 7659 	    ptrdiff_t half_max_capacity = PTRDIFF_MAX;
 7660 	                                  ^
 7661 	    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:149:23:
 7662 	            note: expanded from macro 'PTRDIFF_MAX'
 7663 	    #define PTRDIFF_MAX       INT64_MAX
 7664 	                              ^
 7665 	    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:75:26:
 7666 	            note: expanded from macro 'INT64_MAX'
 7667 	    #define INT64_MAX        9223372036854775807LL
 7668 	                             ^
 7669 	    1 warning generated.
 7670 
 7671 	* data/skeletons/glr.cc: here.
 7672 
 7673 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7674 
 7675 	api.token.raw: fix it in C++
 7676 	Another breakage revealed by vcsn.
 7677 
 7678 	* data/skeletons/c++.m4 (yytranslate_): Do not hard code "yy" and
 7679 	"parser", both can be changed by the user.
 7680 	Actually, since we are in the parser itself, there's really no need to
 7681 	qualify the type.
 7682 
 7683 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7684 
 7685 	c++: fix comments for %code blocks
 7686 	In a project of mine, vcsn, this commit fixes the following comments.
 7687 
 7688 	    --- /tmp/parse.hh	2019-12-08 15:51:24.792934703 +0100
 7689 	    +++ lib/vcsn/rat/parse.hh	2019-12-08 16:00:59.137107503 +0100
 7690 	    @@ -43,7 +43,7 @@
 7691 
 7692 	     #ifndef YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
 7693 	     # define YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
 7694 	    -// //                    "%code requires" blocks.
 7695 	    +// "%code requires" blocks.
 7696 	     #line 20 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy"
 7697 
 7698 	       #include <iostream>
 7699 	    @@ -1851,7 +1851,7 @@
 7700 
 7701 	    -// //                    "%code provides" blocks.
 7702 	    +// "%code provides" blocks.
 7703 	     #line 60 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy"
 7704 
 7705 	       #define YY_DECL_(Class) \
 7706 
 7707 	* data/skeletons/bison.m4 (b4_percent_code_get): Pass an expanded
 7708 	string to b4_comment.
 7709 
 7710 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7711 
 7712 	parser: pretend we are Bison 3.5
 7713 	* src/parse-gram.y: Accept we're Bison 3.5.
 7714 
 7715 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7716 
 7717 	c++: fix spello
 7718 	* data/skeletons/lalr1.cc: here.
 7719 
 7720 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7721 
 7722 	todo: update
 7723 	* TODO: Schedule some features for 3.6.
 7724 	Remove obsolete stuff.
 7725 
 7726 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7727 
 7728 	maint: post-release administrivia
 7729 	* NEWS: Add header line for next release.
 7730 	* .prev-version: Record previous version.
 7731 	* cfg.mk (old_NEWS_hash): Auto-update.
 7732 
 7733 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7734 
 7735 	version 3.4.92
 7736 	* NEWS: Record release date.
 7737 
 7738 2019-12-08  Akim Demaille  <akim.demaille@gmail.com>
 7739 
 7740 	news: fixes
 7741 	Reported by Paul Eggert.
 7742 	https://lists.gnu.org/archive/html/bison-patches/2019-12/msg00014.html
 7743 
 7744 	* NEWS: here.
 7745 
 7746 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7747 
 7748 	doc: minor changes
 7749 	* README-hacking.md: here.
 7750 
 7751 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7752 
 7753 	gnulib: update
 7754 
 7755 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7756 
 7757 	doc: clearly deprecate YYPRINT
 7758 	* doc/bison.texi (Prologue): Stop using YYPRINT as an example.
 7759 	(The YYPRINT Macro): Clearly show this macro is deprecated.
 7760 
 7761 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7762 
 7763 	doc: formatting changes
 7764 	* doc/bison.texi: here.
 7765 	No change in content.
 7766 
 7767 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7768 
 7769 	news: update
 7770 
 7771 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7772 
 7773 	d: obey parse.error
 7774 	* data/skeletons/lalr1.d (yysyntax_error): Let the dispatch be
 7775 	bison-time, not runtime.
 7776 
 7777 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7778 
 7779 	c++: also prefer YY_ASSERT to YYASSERT
 7780 	Like the other skeletons.
 7781 
 7782 	* data/skeletons/variant.hh: here.
 7783 
 7784 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7785 
 7786 	glr.c: obey the parse.assert %define variable
 7787 	* data/skeletons/glr.c (YYASSERT): Rename as...
 7788 	(YY_ASSERT): this, for consistency with yacc.c, and also to emphasize
 7789 	the fact that this is not for the end user (YY_ prefix).
 7790 	* tests/glr-regression.at: Define parse.assert.
 7791 
 7792 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7793 
 7794 	c++: beware of short ranges for state numbers
 7795 	Now that we use small integral types, possibly unsigned (e.g.,
 7796 	unsigned char), to store state numbers, using -1 to denote an empty
 7797 	state (i.e., a state that stores no semantical value) is very
 7798 	dangerous: it will be confused with state 255, which might be
 7799 	non-empty.
 7800 
 7801 	Rather than allocating a larger range of state numbers to keep the
 7802 	empty-state apart, let's use the number of a state known to store no
 7803 	value.  The initial state, numbered 0, seems to fit perfectly the job.
 7804 
 7805 	Reported by Frank Heckenbach.
 7806 	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html
 7807 
 7808 	* data/skeletons/lalr1.cc (empty_state): Be 0.
 7809 
 7810 2019-12-07  Akim Demaille  <akim.demaille@gmail.com>
 7811 
 7812 	api.token.raw: check it against api.token.constructor
 7813 	* tests/scanner.at: here.
 7814 
 7815 2019-12-06  Akim Demaille  <akim.demaille@gmail.com>
 7816 
 7817 	regen
 7818 
 7819 2019-12-06  Akim Demaille  <akim.demaille@gmail.com>
 7820 
 7821 	warnings: enable -Wuseless-cast, and eliminate warnings
 7822 	Prompted by Frank Heckenbach.
 7823 	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html.
 7824 
 7825 	* configure.ac (warn_cxx): Add -Wuseless-cast.
 7826 	* data/skeletons/c.m4 (b4_attribute_define): Define
 7827 	YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END.
 7828 	* data/skeletons/glr.c (YY_FPRINTF): New, replaces YYFPRINTF, wrapped
 7829 	with YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END.
 7830 	(YY_DPRINTF): Likewise.
 7831 	* tests/actions.at: Remove useless cast.
 7832 	* tests/headers.at: Adjust.
 7833 
 7834 2019-12-02  Akim Demaille  <akim.demaille@gmail.com>
 7835 
 7836 	diagnostics: style changes
 7837 	* src/complain.h, src/complain.c: Comment changes.
 7838 	* src/scan-skel.l: Reduce scopes.
 7839 	* data/skeletons/bison.m4: Factor diagnostic functions.
 7840 
 7841 2019-12-02  Akim Demaille  <akim.demaille@gmail.com>
 7842 
 7843 	glr.c: style changes
 7844 	* data/skeletons/glr.c (yysplitStack): Reduce scopes.
 7845 	* tests/atlocal.in: Formatting changes.
 7846 
 7847 2019-12-01  Akim Demaille  <akim.demaille@gmail.com>
 7848 
 7849 	c++: get rid of symbol_type::token ()
 7850 	It is not used.  And its implementation was wrong when api.token.raw
 7851 	was defined, as it was still mapping to the external token numbers,
 7852 	instead of the internal ones.  Besides it was provided only when
 7853 	api.token.constructor is defined, yet always declared.
 7854 
 7855 	* data/skeletons/c++.m4 (by_type::token): Remove, useless.
 7856 
 7857 2019-12-01  Akim Demaille  <akim.demaille@gmail.com>
 7858 
 7859 	c++: remove useless cast about user_token_number_max_
 7860 	Reported by Frank Heckenbach.
 7861 	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html
 7862 
 7863 	The cast is needed when yytranslate_'s argument type is token_type,
 7864 	i.e., when api.token.constructor is defined.
 7865 
 7866 	    373. types.at:138: testing lalr1.cc api.value.type=variant api.token.constructor ...
 7867 	    ======== Testing with C++ standard flags: ''
 7868 	    ../../tests/types.at:138: bison --color=no -fno-caret  -o test.cc test.y
 7869 	    ../../tests/types.at:138: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
 7870 	    stderr:
 7871 	    test.cc:966:16: error: result of comparison of constant 257 with
 7872 	                    expression of type 'yy::parser::token_type'
 7873 	                   (aka 'yy::parser::token::yytokentype') is always true
 7874 	                   [-Werror,-Wtautological-constant-out-of-range-compare]
 7875 	        else if (t <= user_token_number_max_)
 7876 	                 ~ ^  ~~~~~~~~~~~~~~~~~~~~~~
 7877 	    1 error generated.
 7878 
 7879 	It is because it is expected that when api.token.constructor is
 7880 	defined, only symbol constructors will be used, that yytranslate_ then
 7881 	takes a token_type.  But it is wrong: we still allow literal
 7882 	characters in this case, as demonstrated by test 373 for instance.
 7883 
 7884 	    %define api.value.type variant
 7885 	    %define api.token.constructor
 7886 	    %token <std::pair<int, int>> '1' '2';
 7887 	    [...]
 7888 	    static yy::parser::symbol_type yylex ()
 7889 	    {
 7890 	      static char const input[] = "12";
 7891 	      int res = input[toknum++];
 7892 	      typedef yy::parser::symbol_type symbol;
 7893 	      if (res)
 7894 	        return symbol (res, std::make_pair (res - '0', res - '0' + 1));
 7895 	      else
 7896 	        return symbol (res);
 7897 	    }
 7898 
 7899 	So let yytranslate_ always take an int, which makes the cast truly
 7900 	useless.
 7901 
 7902 	* data/skeletons/c++.m4, data/skeletons/lalr1.cc (yytranslate_): here.
 7903 
 7904 2019-12-01  Akim Demaille  <akim.demaille@gmail.com>
 7905 
 7906 	c++: clean a few issues wrt special tokens
 7907 	The C++ implementation of LAC did not skip the $undefined token,
 7908 	probably because it was not exposed.  Expose it, and use clearer
 7909 	names.
 7910 
 7911 	* data/skeletons/c++.m4: Don't define undef_token_ in yytranslate_,
 7912 	but...
 7913 	* data/skeletons/lalr1.cc (yy_undef_token_): here.
 7914 	Use a more precise type to define yy_undef_token_ and yy_error_token_.
 7915 	Unfortunately we move from a compile-time value defined via an enum to
 7916 	a static const member.  Eventually we should make it constexpr.
 7917 	Make LAC implementation more alike yacc.c's one.
 7918 
 7919 2019-12-01  Akim Demaille  <akim.demaille@gmail.com>
 7920 
 7921 	d, java: improve yytranslate and neighbors
 7922 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: Don't expose
 7923 	yyuser_token_number_max_ and yyundef_token_.  Do as in C++: scope them
 7924 	into yytranslate_, and only when api.token.raw is not defined.
 7925 	(yyterror_): Rename as...
 7926 	(yy_error_token_): this.
 7927 	* data/skeletons/lalr1.d (token_number_type): New.
 7928 	Use it.
 7929 	Can't be done in the Java backend, as Java does not have type aliases.
 7930 
 7931 2019-12-01  Akim Demaille  <akim.demaille@gmail.com>
 7932 
 7933 	d, java: get rid of a useless table
 7934 	* data/skeletons/lalr1.d, data/skeletons/lalr1.java (yytoken_number_):
 7935 	Remove, useless.
 7936 	Was used in ancient C skeletons to support YYPRINT, long obsoleted by
 7937 	%printer.
 7938 
 7939 2019-11-30  Akim Demaille  <akim.demaille@gmail.com>
 7940 
 7941 	c++, d, java: remove yyerrcode
 7942 	It is not used at all.  We will remove it also from yacc.c, but
 7943 	later (see TODO).
 7944 
 7945 	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
 7946 	* data/skeletons/lalr1.java (yyerrcode_):
 7947 	Remove.
 7948 
 7949 2019-11-30  Akim Demaille  <akim.demaille@gmail.com>
 7950 
 7951 	c++: improve typing
 7952 	* data/skeletons/lalr1.cc (yysyntax_error_): symbol_type::type_get
 7953 	returns a symbol_number_type (which is indeed an int).
 7954 
 7955 2019-11-30  Akim Demaille  <akim.demaille@gmail.com>
 7956 
 7957 	c++: remove useless cast about yyeof_
 7958 	Reported by Frank Heckenbach.
 7959 	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html
 7960 
 7961 	* data/skeletons/c++.m4 (b4_yytranslate_define): Don't use yyeof_ as
 7962 	if it had two different types.
 7963 	It is used once against the input argument, which is the value
 7964 	returned by yylex, which is an "external token number", typically an
 7965 	int.  It is also used as output type, an "internal symbol number".
 7966 	It turns out that in both cases we mean "0", but let's keep yyeof_
 7967 	only for the case "internal symbol number", i.e., _after_ conversion
 7968 	by yytranslate.
 7969 	This frees us from one cast.
 7970 
 7971 2019-11-30  Akim Demaille  <akim.demaille@gmail.com>
 7972 
 7973 	glr: style change
 7974 	* data/skeletons/glr.c (YYDPRINTF): Expand into an empty statement,
 7975 	instead of nothing.
 7976 	Simplify callers.
 7977 
 7978 2019-11-30  Akim Demaille  <akim.demaille@gmail.com>
 7979 
 7980 	glr: remove useless casts
 7981 	Reported by GCC's -Wuseless-cast.
 7982 
 7983 	* data/skeletons/glr.c: Don't cast to yybool, it's useless.
 7984 
 7985 2019-11-29  Akim Demaille  <akim.demaille@gmail.com>
 7986 
 7987 	yacc.c, glr.c: fix crash when reporting errors in consistent states
 7988 	The current code for yysyntax_error for %define parse.error verbose is
 7989 	fishy (given that YYEMPTY is -2, invalid argument for yytname[]):
 7990 
 7991 	    static int
 7992 	    yysyntax_error ([...])
 7993 	    {
 7994 	      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
 7995 	    [...]
 7996 	      if (yytoken != YYEMPTY)
 7997 
 7998 	A nearby comment reports
 7999 
 8000 	    The only way there can be no lookahead present (in yychar) is if
 8001 	    this state is a consistent state with a default action.  Thus,
 8002 	    detecting the absence of a lookahead is sufficient to determine
 8003 	    that there is no unexpected or expected token to report.  In that
 8004 	    case, just report a simple "syntax error".
 8005 
 8006 	So it _is_ possible to call yysyntax_error with yytoken == YYEMPTY,
 8007 	albeit quite difficult when meaning to, so virtually impossible by
 8008 	accident (after all, there was never a bug report about this).
 8009 
 8010 	I failed to produce a test case, but Joel E. Denny provided me with
 8011 	one (added to the test suite below).  The yacc.c skeleton fails on
 8012 	this, and once fixed dies on a second problem.  The glr.c skeleton was
 8013 	also dying, but immediately of this second problem.
 8014 
 8015 	Indeed we were not allocating space for the error message's final \0.
 8016 	This was hidden by the fact that we only had error messages with at
 8017 	least an unexpected token displayed, so with at least one "%s" in the
 8018 	format string, whose size (2) was included (incorrectly) in the final
 8019 	size of the message (where the %s have been replaced by the actual
 8020 	content).
 8021 
 8022 	* data/skeletons/glr.c, data/skeletons/yacc.c (yysyntax_error):
 8023 	Do not invoke yytnamerr on YYEMPTY.
 8024 	Clarify the computation of the length of the _final_ error message,
 8025 	with the NUL terminator but without the '%s's.
 8026 	* tests/conflicts.at (Syntax error in consistent error state):
 8027 	New, contributed by Joel E. Denny.
 8028 
 8029 2019-11-26  Akim Demaille  <akim.demaille@gmail.com>
 8030 
 8031 	tests: avoid creating files whose name collide with standard headers
 8032 	Having a file named "exception" is risky: the compiler might use that
 8033 	file in #include.
 8034 	Reported by 马俊 <majun123@whu.edu.cn>.
 8035 
 8036 	* tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): Generate
 8037 	'exceptions', not 'exception'.
 8038 
 8039 2019-11-22  Akim Demaille  <akim.demaille@gmail.com>
 8040 
 8041 	doc: more details about the test suite
 8042 	* README-hacking.md: here.
 8043 
 8044 2019-11-20  Akim Demaille  <akim.demaille@gmail.com>
 8045 
 8046 	maint: post-release administrivia
 8047 	* NEWS: Add header line for next release.
 8048 	* .prev-version: Record previous version.
 8049 	* cfg.mk (old_NEWS_hash): Auto-update.
 8050 
 8051 2019-11-20  Akim Demaille  <akim.demaille@gmail.com>
 8052 
 8053 	version 3.4.91
 8054 	* NEWS: Record release date.
 8055 
 8056 2019-11-20  Akim Demaille  <akim.demaille@gmail.com>
 8057 
 8058 	style: pacify syntax-check
 8059 	* cfg.mk: No need to translate *.md files.
 8060 	* data/skeletons/glr.c, data/skeletons/yacc.c: Fix space issues.
 8061 
 8062 2019-11-19  Akim Demaille  <akim.demaille@gmail.com>
 8063 
 8064 	gnulib: update
 8065 
 8066 2019-11-18  Akim Demaille  <akim.demaille@gmail.com>
 8067 
 8068 	doc: don't promote dangling aliases
 8069 	String literals as tokens serve two distinct purposes: freeing from
 8070 	having to implement the keyword matching in the scanner, and improving
 8071 	error messages.  Most of the time both can be achieved at the same
 8072 	time, but on occasions, it does not work so well.
 8073 
 8074 	We promote their use for error messages.  We will also still support
 8075 	the former case, but it is _not_ the recommended approach.
 8076 
 8077 	* doc/bison.texi (Tokens from Literals): Clearly state that we don't
 8078 	recommend looking up the token types in the list of token names.
 8079 
 8080 2019-11-17  Akim Demaille  <akim.demaille@gmail.com>
 8081 
 8082 	diagnostics: complain about undeclared string tokens
 8083 	String literals, which allow for better error messages, are (too)
 8084 	liberally accepted by Bison, which might result in silent errors.  For
 8085 	instance
 8086 
 8087 	    %type <exVal> cond "condition"
 8088 
 8089 	does not define “condition” as a string alias to 'cond' (nonterminal
 8090 	symbols do not have string aliases).  It is rather equivalent to
 8091 
 8092 	    %nterm <exVal> cond
 8093 	    %token <exVal> "condition"
 8094 
 8095 	i.e., it gives the type 'exVal' to the "condition" token, which was
 8096 	clearly not the intention.
 8097 
 8098 	Introduce -Wdangling-alias to catch this.
 8099 
 8100 	* src/complain.h, src/complain.c: Add support for -Wdangling-alias.
 8101 	(argmatch_warning_args): Sort.
 8102 	* src/symtab.c (symbol_check_defined): Complain about dangling
 8103 	aliases.
 8104 	* doc/bison.texi: Document it.
 8105 	* tests/input.at (Dangling aliases): New test.
 8106 
 8107 2019-11-17  Akim Demaille  <akim.demaille@gmail.com>
 8108 
 8109 	diagnostics: yacc reserves %type to nonterminals
 8110 	On
 8111 
 8112 	    %token TOKEN1
 8113 	    %type  <ival> TOKEN1 TOKEN2 't'
 8114 	    %token TOKEN2
 8115 	    %%
 8116 	    expr:
 8117 
 8118 	bison -Wyacc gives
 8119 
 8120 	    input.y:2.15-20: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
 8121 	        2 | %type  <ival> TOKEN1 TOKEN2 't'
 8122 	          |               ^~~~~~
 8123 	    input.y:2.29-31: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
 8124 	        2 | %type  <ival> TOKEN1 TOKEN2 't'
 8125 	          |                             ^~~
 8126 	    input.y:2.22-27: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
 8127 	        2 | %type  <ival> TOKEN1 TOKEN2 't'
 8128 	          |                      ^~~~~~
 8129 
 8130 	The messages appear to be out of order, but they are emitted when the
 8131 	error is found.
 8132 
 8133 	* src/symtab.h (symbol_class): Add pct_type_sym, used to denote
 8134 	symbols appearing in %type.
 8135 	* src/symtab.c (complain_pct_type_on_token): New.
 8136 	(symbol_class_set): Check that %type is not applied to tokens.
 8137 	(symbol_check_defined): pct_type_sym also means undefined.
 8138 	* src/parse-gram.y (symbol_decl.1): Set the class to pct_type_sym.
 8139 	* src/reader.c (grammar_current_rule_begin): pct_type_sym also means
 8140 	undefined.
 8141 	* tests/input.at (Yacc's %type): New.
 8142 
 8143 2019-11-16  Akim Demaille  <akim.demaille@gmail.com>
 8144 
 8145 	doc: promote %nterm over %type
 8146 	As an extension to POSIX Yacc, Bison's %type accepts tokens.
 8147 	Unfortunately with string literals as implicit tokens, this is
 8148 	misleading, and led some users to write
 8149 
 8150 	    %type <exVal> cond "condition"
 8151 
 8152 	believing that "condition" would be associated to the 'cond'
 8153 	nonterminal (see https://github.com/apache/httpd/pull/72).
 8154 
 8155 	* doc/bison.texi: Promote %nterm rather than %type to declare the type
 8156 	of nonterminals.
 8157 
 8158 2019-11-16  Akim Demaille  <akim.demaille@gmail.com>
 8159 
 8160 	doc: formatting changes
 8161 	* doc/bison.texi: No visible changes.
 8162 
 8163 2019-11-16  Akim Demaille  <akim.demaille@gmail.com>
 8164 
 8165 	doc: work around warnings when Flex C output is compiled in C++
 8166 	* doc/bison.texi (calc++/scanner.ll): here.
 8167 	While at it, clarify clang vs. warnings.
 8168 
 8169 2019-11-16  Akim Demaille  <akim.demaille@gmail.com>
 8170 
 8171 	tests: be robust to old Perl versions on Cygwin
 8172 	Reported by Denis Excoffier.
 8173 	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00008.html.
 8174 
 8175 	* tests/output.at: Be sure to remove back up files.
 8176 
 8177 2019-11-16  Akim Demaille  <akim.demaille@gmail.com>
 8178 
 8179 	regen
 8180 
 8181 2019-11-12  kaneko y  <spiketeika@gmail.com>
 8182 
 8183 	gram.c: Fix condition of aver
 8184 	* src/gram.c (grammar_dump): Fix condition of aver.
 8185 	What we want to check is that rhs is followed by its rule.
 8186 
 8187 2019-11-11  Akim Demaille  <akim.demaille@gmail.com>
 8188 
 8189 	doc: clarify build instructions
 8190 	* README: A few fixes.
 8191 	Explain how to install color support.
 8192 	* README-hacking: Rename as...
 8193 	* README-hacking.md: this, and convert to Markdown.
 8194 	Improve typography.
 8195 	Improve explanations about update-test.
 8196 
 8197 2019-11-11  Akim Demaille  <akim.demaille@gmail.com>
 8198 
 8199 	gnulib: update
 8200 
 8201 2019-11-11  Yuichiro Kaneko  <spiketeika@gmail.com>
 8202 
 8203 	gram.c: also print terminals in grammar_dump
 8204 	* src/gram.c (grammar_dump): Print terminals likewise non terminals.
 8205 	* tests/sets.at (Reduced Grammar): Update test case to catch up the
 8206 	change and add a test case where prec and assoc are used.
 8207 
 8208 2019-11-10  Akim Demaille  <akim.demaille@gmail.com>
 8209 
 8210 	doc: work around Texinfo 6.7 bug
 8211 	When @code is used in a @deftype... definition, it issues quotes.
 8212 	Remove them.
 8213 	See https://lists.gnu.org/archive/html/help-texinfo/2019-11/msg00004.html.
 8214 
 8215 	* doc/local.mk: here.
 8216 
 8217 2019-11-09  Akim Demaille  <akim.demaille@gmail.com>
 8218 
 8219 	doc: formatting changes
 8220 	* doc/bison.texi: Wrap lines.
 8221 	No semantical difference.
 8222 
 8223 2019-11-09  Akim Demaille  <akim.demaille@gmail.com>
 8224 
 8225 	doc: use upper case for tokens
 8226 	* doc/bison.texi: here.
 8227 
 8228 2019-11-07  Akim Demaille  <akim.demaille@gmail.com>
 8229 
 8230 	doc: type-face fixes
 8231 	* doc/bison.texi: Use @code for types in function definitions.
 8232 
 8233 2019-11-06  Akim Demaille  <akim.demaille@gmail.com>
 8234 
 8235 	c++: expose the type used to store line and column numbers
 8236 	* data/skeletons/location.cc (position::counter_type)
 8237 	(location::counter_type): New.
 8238 	Use them.
 8239 	* doc/bison.texi (C++ position, C++ location): Adjust.
 8240 
 8241 2019-11-03  Akim Demaille  <akim.demaille@gmail.com>
 8242 
 8243 	tests: fix comment and adjust to locale names on GNU/Linux
 8244 	Reported by Denis Excoffier.
 8245 
 8246 	* tests/diagnostics.at: here.
 8247 
 8248 2019-11-03  Akim Demaille  <akim.demaille@gmail.com>
 8249 
 8250 	tests: really check complaints from m4
 8251 	* tests/diagnostics.at (Locations from M4, Tabulations and multibyte
 8252 	characters from M4): These tests are actually checking a message
 8253 	coming from C, not from M4.  Replace with...
 8254 	(Complaints from M4): This.
 8255 
 8256 2019-11-03  Akim Demaille  <akim.demaille@gmail.com>
 8257 
 8258 	tests: simplify prologue
 8259 	* tests/testsuite.h: We no longer load gnulib in the tests.
 8260 
 8261 2019-11-03  Akim Demaille  <akim.demaille@gmail.com>
 8262 
 8263 	diagnostics: add missing translation
 8264 	* src/muscle-tab.c (muscle_percent_define_check_kind): Here.
 8265 
 8266 2019-11-02  Akim Demaille  <akim.demaille@gmail.com>
 8267 
 8268 	c++: fix old cast warnings
 8269 	We still have a few old C casts in lalr1.cc, let's get rid of them.
 8270 	Reported by Frank Heckenbach.
 8271 
 8272 	Actually, let's monitor all our casts using easy to grep macros.
 8273 	Let's use these macros to use the C++ standard casts when we are in
 8274 	C++.
 8275 
 8276 	* data/skeletons/c.m4 (b4_cast_define): New.
 8277 	* data/skeletons/glr.c, data/skeletons/glr.cc,
 8278 	* data/skeletons/lalr1.cc, data/skeletons/stack.hh,
 8279 	* data/skeletons/yacc.c:
 8280 	Use it and/or its casts.
 8281 
 8282 	* tests/actions.at, tests/cxx-type.at,
 8283 	* tests/glr-regression.at, tests/headers.at, tests/torture.at,
 8284 	* tests/types.at:
 8285 	Use YY_CAST instead of C casts.
 8286 
 8287 	* configure.ac (warn_cxx): Add -Wold-style-cast.
 8288 	* doc/bison.texi: Disable it.
 8289 
 8290 2019-11-01  Akim Demaille  <akim.demaille@gmail.com>
 8291 
 8292 	tests: be robust to tput errors
 8293 	Reported by Denis Excoffier.
 8294 
 8295 	* tests/bison.in: here.
 8296 
 8297 2019-11-01  Akim Demaille  <akim.demaille@gmail.com>
 8298 
 8299 	git: update ignores
 8300 	I don't understand what happened in
 8301 	10acc148bb90fac8a52a5d35f2bd18bd824c1639.
 8302 
 8303 2019-10-29  Akim Demaille  <akim.demaille@gmail.com>
 8304 
 8305 	maint: post-release administrivia
 8306 	* NEWS: Add header line for next release.
 8307 	* .prev-version: Record previous version.
 8308 	* cfg.mk (old_NEWS_hash): Auto-update.
 8309 
 8310 2019-10-29  Akim Demaille  <akim.demaille@gmail.com>
 8311 
 8312 	version 3.4.90
 8313 	* NEWS: Record release date.
 8314 
 8315 2019-10-29  Akim Demaille  <akim.demaille@gmail.com>
 8316 
 8317 	C++: finish propagating the unsigned->signed conversion in locations
 8318 	* data/skeletons/location.cc: Remove the u (for unsigned) suffix from
 8319 	the initial line and column.
 8320 	* NEWS: AFAICT, only C++ backends have their location types changed.
 8321 
 8322 2019-10-29  Akim Demaille  <akim.demaille@gmail.com>
 8323 
 8324 	style: fix cpp indentation
 8325 	Reported by syntax-check.
 8326 
 8327 	* src/system.h: here.
 8328 
 8329 2019-10-29  Akim Demaille  <akim.demaille@gmail.com>
 8330 
 8331 	style: glr.c: comment changes
 8332 	* data/skeletons/glr.c: here.
 8333 
 8334 2019-10-26  Akim Demaille  <akim.demaille@gmail.com>
 8335 
 8336 	CI: pass -O1 to GCC8 with sanitizers
 8337 	This build never finishes in the 50min credit given by Travis.  See if
 8338 	with optimizations it works better.
 8339 
 8340 	* .travis.yml: here.
 8341 
 8342 2019-10-26  Akim Demaille  <akim.demaille@gmail.com>
 8343 
 8344 	reader: reduce the "scope" of global variables
 8345 	We have too many global variables, adding structure would help.  For a
 8346 	start, let's hide some of the variables closer to their usage.
 8347 
 8348 	* src/getargs.c, src/files.h (current_file): Move to...
 8349 	* src/scan-gram.c: here.
 8350 	* src/scan-gram.h (gram_in, gram__flex_debug): Remove, make them
 8351 	private to the scanner.
 8352 	* src/reader.h, src/reader.c (reader): Take a grammar file as argument.
 8353 	Move the handling of scanner variables to...
 8354 	* src/scan-gram.l (gram_scanner_open, gram_scanner_close): here.
 8355 	(gram_scanner_initialize): Remove, replaced by gram_scanner_open.
 8356 	* src/main.c: Adjust.
 8357 
 8358 2019-10-26  Akim Demaille  <akim.demaille@gmail.com>
 8359 
 8360 	regen
 8361 
 8362 2019-10-26  Akim Demaille  <akim.demaille@gmail.com>
 8363 
 8364 	parser: use grammar_file instead of current_file
 8365 	* src/parse-gram (%initial-action): here.
 8366 	(handle_skeleton): Don't depend on the current file name to look for
 8367 	"local" skeletons (subject to changes coming from "#lines"): depend
 8368 	only on the initial file name, the one given on the command line.
 8369 
 8370 2019-10-26  Akim Demaille  <akim.demaille@gmail.com>
 8371 
 8372 	diagnostics: use grammar_file instead of current_file
 8373 	Currently there are two globals denoting the input file: grammar_file
 8374 	is the one from the command line, and current_file which might change
 8375 	because of #line.  Use only the former.
 8376 
 8377 	* src/complain.c (error_message): here.
 8378 	* tests/diagnostics.at: Adjust.
 8379 
 8380 2019-10-25  Akim Demaille  <akim.demaille@gmail.com>
 8381 
 8382 	reader: let symtab deal with the symbols
 8383 	* src/reader.c (reader): Move the setting up of the builtin symbols to...
 8384 	* src/symtab.c (symbols_new): here.
 8385 
 8386 2019-10-25  Akim Demaille  <akim.demaille@gmail.com>
 8387 
 8388 	style: remove incorrect comment
 8389 	Reported by Paul Eggert.
 8390 
 8391 	* src/system.h: here.
 8392 
 8393 2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
 8394 
 8395 	lalr1.cc: fix previous commit: printing of state numbers
 8396 	* data/skeletons/lalr1.cc: Printing a char prints... a char.
 8397 	Print ints instead.
 8398 
 8399 2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
 8400 
 8401 	lalr1.cc: use computed state types
 8402 	This skeleton uses a single stack of state structures, so it is less
 8403 	likely to benefit from a stack size reduction than yacc.c (which uses
 8404 	several stacks: state number, value and location).  But it will reduce
 8405 	the size of the LAC stack.
 8406 
 8407 	This skeleton was already using int for state numbers, so, contrary to
 8408 	yacc.c, this brings nothing for large automata.
 8409 
 8410 	Overall, it is still nicer to make the skeletons alike.
 8411 
 8412 	* data/skeletons/lalr1.cc (state_type): Here.
 8413 
 8414 2019-10-24  kaneko y  <spiketeika@gmail.com>
 8415 
 8416 	README: Fix a typo
 8417 	* README: Fix a typo. Git command name is submodule.
 8418 
 8419 2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
 8420 
 8421 	examples: fix missing dependencies
 8422 	Reported by Thomas Petazzoni.
 8423 	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00000.html
 8424 
 8425 	* examples/c/reccalc/local.mk: Complete dependencies, including for
 8426 	earlier versions of Automake (for sake of our CI, on top of Ubuntu
 8427 	Xenial/Bionic, which feature only Automake 1.15).
 8428 	(%D%/scan.c %D%/scan.h): Upgrade to the full version provided in
 8429 	Automake's documentation.
 8430 
 8431 2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
 8432 
 8433 	diagnostics: simplify location handling
 8434 	Locations start at line 1.  Don't accept line 0.
 8435 
 8436 	* src/location.c (location_print): Don't print locations with line 0.
 8437 	(location_caret): Simplify.
 8438 
 8439 2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
 8440 
 8441 	build: reenable -Wtype-limits
 8442 	See https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html
 8443 	to https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00073.html.
 8444 
 8445 	Paul Eggert's changes in gnulib do fix the issue for modern GCCs (7,
 8446 	8, 9) on macOS.  Unfortunately these warnings are back on the
 8447 	CI (GNU/Linux) with GCC 4.6, 4.7, (not 4.8) and 4.9.
 8448 
 8449 	Disable the warning locally.
 8450 
 8451 	* configure.ac (warn_common, warn_tests): Remove -Wtype-limits.
 8452 	* src/system.h (IGNORE_TYPE_LIMITS_BEGIN, IGNORE_TYPE_LIMITS_END): New.
 8453 	* src/InadequacyList.c, src/parse-gram.c, src/parse-gram.y,
 8454 	* src/symtab.c: Use it.
 8455 
 8456 2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
 8457 
 8458 	build: remove dmalloc support
 8459 	Today sanitizers are a better alternative.
 8460 
 8461 	* m4/dmalloc.m4: Remove.
 8462 	* configure.ac, src/system.h: Adjust.
 8463 
 8464 2019-10-23  Akim Demaille  <akim.demaille@gmail.com>
 8465 
 8466 	gitignore: update
 8467 
 8468 2019-10-23  Paul Eggert  <eggert@cs.ucla.edu>
 8469 
 8470 	build: update gnulib submodule to latest
 8471 
 8472 2019-10-23  Yuichiro Kaneko  <spiketeika@gmail.com>
 8473 
 8474 	style: update comment in reader.c
 8475 	rrhs and rlhs were removed by b2ed6e5826e772162719db595446b2c58e4ac5d6.
 8476 
 8477 	* src/reader.c (packgram): Update comment.
 8478 
 8479 2019-10-22  kaneko y  <spiketeika@gmail.com>
 8480 
 8481 	yacc.c: fix a typo
 8482 	* data/skeletons/yacc.c (yysetstate): fix comment.
 8483 
 8484 2019-10-22  Akim Demaille  <akim.demaille@gmail.com>
 8485 
 8486 	style: pacify syntax-check
 8487 	* doc/.gitignore, src/complain.c, src/getargs.c,
 8488 	* src/output.c: here.
 8489 
 8490 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8491 
 8492 	main: also free memory on errors
 8493 	* src/derives.c (derives_free): Beware of NULL.
 8494 	* src/main.c (main): Let the 'finish' label include memory release.
 8495 
 8496 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8497 
 8498 	gnulib: update
 8499 	To get bitset_free accept NULL.  See
 8500 	https://lists.gnu.org/archive/html/bug-gnulib/2019-10/msg00054.html
 8501 
 8502 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8503 
 8504 	style: reduce scope in derives
 8505 	* src/derives.c: here.
 8506 	And prefer prefix to postfix increment.
 8507 
 8508 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8509 
 8510 	build: disable -Wtautological-constant-out-of-range-compare
 8511 	Also see e31f92495ce14a5d924b148c8ea1470003cc47c1 and
 8512 	https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html
 8513 
 8514 	* configure.ac (warn_common): Disable
 8515 	-Wtautological-constant-out-of-range-compare.
 8516 	(warn_tests): Restore it.
 8517 
 8518 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8519 
 8520 	CI: formatting changes
 8521 	* .travis.yml: Use the single line form of lists, when reduced to a
 8522 	singletons.
 8523 
 8524 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8525 
 8526 	CI: rename jobs
 8527 	* .travis.yml (compile, test): Rename as...
 8528 	(dist, check): these, which are more traditional for GNU projects.
 8529 
 8530 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8531 
 8532 	doc: update README
 8533 	* README: Be clearer that README-hacking _must_ be read.
 8534 	Convert to Markdown.
 8535 
 8536 2019-10-21  Akim Demaille  <akim.demaille@gmail.com>
 8537 
 8538 	bootstrap: relieve developpers from Gettext version mismatch issues
 8539 	* .travis.yml (compile): Move the workaround from here...
 8540 	* bootstrap.conf (bootstrap_epilogue): to there.
 8541 
 8542 2019-10-20  Akim Demaille  <akim.demaille@gmail.com>
 8543 
 8544 	tests: beware of GCC9 warnings in push mode
 8545 	This is really weird: GCC points to the LHS of the assignment...
 8546 
 8547 	    260. headers.at:184: testing Sane headers: api.pure api.push-pull=both ...
 8548 	    tests/headers.at:184: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -d -o input.c input.y
 8549 	    tests/headers.at:184: $CC $CFLAGS $CPPFLAGS  -c -o input.o input.c
 8550 	    stderr:
 8551 	    input.c: In function 'yyparse':
 8552 	    input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
 8553 	     1276 |         yylval = *yypushed_val;
 8554 	          |         ~~~~~~~^~~~~~~~~~~~~~~
 8555 	    input.c: In function 'yypull_parse':
 8556 	    input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
 8557 	     1276 |         yylval = *yypushed_val;
 8558 	          |         ~~~~~~~^~~~~~~~~~~~~~~
 8559 	    cc1: all warnings being treated as errors
 8560 	    stdout:
 8561 	    tests/headers.at:184: exit code was 1, expected 0
 8562 
 8563 	See also d87c8ac79ab844d6a7a4f5103dcf7a842d18b611
 8564 	and 9645a2b20ee7cbfa8bb4ac2237f87d598afe349c.
 8565 
 8566 	* tests/headers.at (Several parsers, Several parsers): Disable these
 8567 	warnings when in push parser.
 8568 
 8569 2019-10-20  Akim Demaille  <akim.demaille@gmail.com>
 8570 
 8571 	CI: try GCC9 and Clang9
 8572 	The logs show:
 8573 
 8574 	    Disallowing sources: llvm-toolchain-bionic-8, ubuntu-toolchain-r-test
 8575 	    To add unlisted APT sources, follow instructions in
 8576 	    https://docs.travis-ci.com/user/installing-dependencies#Installing-Packages-with-the-APT-Addon
 8577 
 8578 	* .travis.yml: Remove a few apt sources which are ignored in
 8579 	Bionic (e.g., see
 8580 	https://github.com/travis-ci/apt-source-safelist/issues/410).
 8581 	Where needed, use sources/sourceline instead.
 8582 	Also, don't use -DNDEBUG with older builds.
 8583 
 8584 2019-10-20  Akim Demaille  <akim.demaille@gmail.com>
 8585 
 8586 	parser: clarify version checking
 8587 	* src/parse-gram.y: Use the same conventions for gnulib as elsewhere:
 8588 	<header.h>.
 8589 	(str_to_version): New.
 8590 	(handle_require): Use it.
 8591 	Prefer < to >.
 8592 
 8593 2019-10-20  Akim Demaille  <akim.demaille@gmail.com>
 8594 
 8595 	build: disable -Wtype-limits, except in the test suite
 8596 	The current implementation of lib/intprops.h results in "unsigned < 0"
 8597 	comparisons, which triggers warnings.  See
 8598 
 8599 	https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html
 8600 
 8601 	* configure.ac (warn_common): Disable -Wtype-limits.
 8602 	(warn_tests): Restore it.
 8603 
 8604 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8605 
 8606 	c++: port to Sun C++ 5.12
 8607 	The documentation for Oracle Solaris Studio 12.3 (Sun C++ 5.12
 8608 	2011/11/16) says it supports C++03.  This compiler rejects the
 8609 	location.cc use of std::max for some reason; I don’t know why
 8610 	since I don’t use C++ as a rule.  The simplest workaround is to
 8611 	open-code ‘max’.
 8612 	* data/skeletons/location.cc (add_):
 8613 	Do max by hand rather than relying on std::max.
 8614 	Don’t include <algorithm.h>; no longer needed.
 8615 
 8616 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8617 
 8618 	regen
 8619 
 8620 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8621 
 8622 	tests: port to Solaris 10 grep
 8623 	* tests/scanner.at (Token numbers: $1): Use $EGREP, not grep -E.
 8624 
 8625 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8626 
 8627 	tests: port to Solaris 10 sed
 8628 	As documented in the Autoconf manual, Solaris 10 sed rejects
 8629 	script labels contianing more than 7 characters.  POSIX requires
 8630 	support for at least 8 characters, but we might as well be portable
 8631 	to Solaris 10 which is still supported.
 8632 	* tests/local.at (AT_SETS_CHECK): Use only the first 7 characters
 8633 	in sed labels.
 8634 
 8635 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8636 
 8637 	bison: check for int overflow in token numbers
 8638 	* src/symtab.c: Include intprops.h
 8639 	(symbol_user_token_number_set): Don’t allow user_token_number ==
 8640 	INT_MAX because too much other code adds 1 to the user token number.
 8641 	(symbols_token_translations_init): Complain on integer overflow
 8642 	instead of indulging in undefined behavior.
 8643 
 8644 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8645 
 8646 	bison: check for int overflow when scanning
 8647 	* src/scan-gram.l: Include errno.h, for errno.
 8648 	(scan_integer, handle_syncline): Check for integer overflow.
 8649 	* tests/input.at (too-large.y): Adjust to match new diagnostics.
 8650 
 8651 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8652 
 8653 	bison: check version numbers more carefully
 8654 	* src/parse-gram.y: Include intprops.h.
 8655 	(handle_require): Don’t indulge in undefined behavior if the major
 8656 	or minor number is out of range.  Instead, check that the
 8657 	resulting value is nonnegative, fits in int, and that the minor
 8658 	number is less than 100.  Also, check that a number was parsed.
 8659 
 8660 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8661 
 8662 	c: port YY_ATTRIBUTE_UNUSED to Sun C 5.12
 8663 	Sun C 5.12 defines __SUNPRO_C to 0x5120 but diagnoses
 8664 	‘__attribute__ ((__unused__))’.  Change the ifdefs to use
 8665 	the same method as Gnulib in this area.
 8666 	* data/skeletons/c.m4 (YY_ATTRIBUTE): Remove, since
 8667 	not all attributes were added in the same compiler version.
 8668 	(YY_ATTRIBUTE_PURE, YY_ATTRIBUTE_UNUSED):
 8669 	Use specific GCC version for each attribute.
 8670 	Pay no attention to __SUNPRO_C.
 8671 	* tests/headers.at (Several parsers): Tighten tests accordingly.
 8672 
 8673 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8674 
 8675 	c: improve port of stdint.h usage to pre-C99
 8676 	Oracle Solaris Studio 12.3 (Sun C 5.12 2011/11/16) by default does
 8677 	not conform to C99; it defines __STDC_VERSION__ to be 199409L, so
 8678 	the Bison code does not include <stdint.h> (not required by C89
 8679 	amendment 1) even though this compiler does have <stdint.h>.  On
 8680 	this platform <limits.h> defines INT_LEAST8_MAX (POSIX allows
 8681 	this) so the skeleton got confused and thought that <stdint.h> had
 8682 	been included even though it wasn’t.
 8683 	* data/skeletons/c.m4 (b4_c99_int_type_define) [!__PTRDIFF_MAX__]:
 8684 	Always include <limits.h>.
 8685 	(YY_STDINT_H): Define when <stdint.h> was included.
 8686 	All uses of expressions like ‘defined INT_LEAST8_MAX’ changed to
 8687 	‘defined YY_STDINT_H’, since Sun C 5.12 <limits.h> defines macros
 8688 	like INT_LEAST8_MAX but does not declare types like int_least8_t.
 8689 
 8690 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8691 
 8692 	gnulib:update
 8693 
 8694 2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>
 8695 
 8696 	autoconf:update
 8697 
 8698 2019-10-15  Akim Demaille  <akim.demaille@gmail.com>
 8699 
 8700 	TODO: more updates
 8701 
 8702 2019-10-15  Akim Demaille  <akim.demaille@gmail.com>
 8703 
 8704 	TODO: update
 8705 
 8706 2019-10-15  Akim Demaille  <akim.demaille@gmail.com>
 8707 
 8708 	yacc: rename types for states
 8709 	* data/skeletons/yacc.c (yy_state_num): Rename as...
 8710 	(yy_state_t): this.
 8711 	(yy_state_fast_t): New.
 8712 	Use it.
 8713 
 8714 2019-10-15  Akim Demaille  <akim.demaille@gmail.com>
 8715 
 8716 	glr: style changes
 8717 	* data/skeletons/glr.c (yytnamerr): here.
 8718 	(yyprocessOneStack): Initialize variables.
 8719 
 8720 2019-10-15  Akim Demaille  <akim.demaille@gmail.com>
 8721 
 8722 	yacc: style changes
 8723 	* data/skeletons/yacc.c: Move call to lac discard to clarify the
 8724 	shifting of the token.
 8725 	Like in lalr1.cc.
 8726 
 8727 2019-10-15  Akim Demaille  <akim.demaille@gmail.com>
 8728 
 8729 	tests: avoid $(...)
 8730 	Reported by Paul Eggert.
 8731 
 8732 	* tests/local.at (AT_DATA_NO_FINAL_EOL): here.
 8733 
 8734 2019-10-14  Akim Demaille  <akim.demaille@gmail.com>
 8735 
 8736 	tests: use a portable 'truncate' implementation
 8737 	Suggested by Paul Eggert.
 8738 	https://lists.gnu.org/archive/html/bison-patches/2019-10/msg00044.html
 8739 
 8740 	* tests/local.at (AT_DATA_NO_FINAL_EOL): Use dd instead of perl.
 8741 
 8742 2019-10-13  Akim Demaille  <akim.demaille@gmail.com>
 8743 
 8744 	tests: factor the generation of files without the final eol
 8745 	AFAICT Autotest 2.69 still does not support AT_DATA without the final
 8746 	eol.
 8747 
 8748 	* tests/local.at (AT_DATA_NO_FINAL_EOL): New.
 8749 	* tests/input.at: Use it.
 8750 
 8751 2019-10-13  Akim Demaille  <akim.demaille@gmail.com>
 8752 
 8753 	tests: refactor the handling of Perl
 8754 	Let's make a difference between places where Perl is required for the
 8755 	test (AT_PERL_REQUIRE), and the places where it's used to run the
 8756 	test, but it's not not to run the test (AT_PERL_CHECK).
 8757 
 8758 	* tests/local.at (AT_REQUIRE): New.
 8759 	(AT_PERL_CHECK, AT_PERL_REQUIRE): New.
 8760 	Use them where appropriate.
 8761 
 8762 	* tests/local.mk ($(TESTSUITE)): Beware not to start the line with
 8763 	'-pi' if Perl is empty, as Make understands this as "it's ok to fail".
 8764 	Which it is not.
 8765 
 8766 2019-10-12  Akim Demaille  <akim.demaille@gmail.com>
 8767 
 8768 	d: comment changes
 8769 	* data/skeletons/lalr1.d: Here.
 8770 
 8771 2019-10-12  Akim Demaille  <akim.demaille@gmail.com>
 8772 
 8773 	i18n: don't push too hard for '…'
 8774 	Suggested by Paul Eggert.
 8775 
 8776 	* src/location.c (ellipsis): Clarify comment for translators.
 8777 
 8778 2019-10-11  Akim Demaille  <akim.demaille@gmail.com>
 8779 
 8780 	regen
 8781 
 8782 2019-10-11  Akim Demaille  <akim.demaille@gmail.com>
 8783 
 8784 	glr: display line numbers in traces
 8785 	Suggested by Lars Maier.
 8786 
 8787 	* data/skeletons/glr.c: Also display rule locations when rules are
 8788 	deferred, and rejected.
 8789 
 8790 2019-10-11  Akim Demaille  <akim.demaille@gmail.com>
 8791 
 8792 	tests: be really robust to Perl missing
 8793 	My previous tests (with ./configure PERL=false) have been fooled by
 8794 	configure, that managed to find perl anyway.  This time, I ran this on
 8795 	a Fedora in Docker, without Perl.
 8796 
 8797 	* tests/calc.at, tests/diagnostics.at, tests/headers.at,
 8798 	* tests/input.at, tests/local.at, tests/named-refs.at,
 8799 	* tests/output.at, tests/regression.at, tests/skeletons.at,
 8800 	* tests/synclines.at, tests/torture.at: Don't require Perl.
 8801 
 8802 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8803 
 8804 	configure: perl is not required
 8805 	But it's used in various places, including in some tests.
 8806 
 8807 	* configure.ac: here.
 8808 
 8809 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8810 
 8811 	news: update
 8812 
 8813 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8814 
 8815 	diagnostics: prefer "…" to "..." if the locale supports it
 8816 	* src/location.c (ellipsis, ellipsize): New.
 8817 	Use them.
 8818 
 8819 2019-10-10  Paul Eggert  <eggert@cs.ucla.edu>
 8820 
 8821 	c: improve patch for UCHAR_MAX etc. problem
 8822 	* data/skeletons/c.m4 (b4_c99_int_type_define): Reorder to put the
 8823 	signed types first, since they’re simpler and this keeps similar
 8824 	code closer.  For signed types, don’t bother checking whether the
 8825 	type promotes to int since the type must be signed anyway.  For
 8826 	unsigned types, protect a test like ‘UCHAR_MAX <= INT_MAX’ with
 8827 	‘!defined __UINT_LEAST8_MAX__’, as otherwise the logic is wrong
 8828 	for oddball platforms; and once we do that, there should no need
 8829 	for ‘defined INT_MAX’ so remove that.
 8830 
 8831 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8832 
 8833 	tests: do not depend on config.h
 8834 	Currently we face test suite failures in different environments,
 8835 	because of a conflict between the definitions of isnan by gnulib, and
 8836 	by the C++ library:
 8837 
 8838 	    262. headers.at:186: testing Sane headers: %locations %debug c++ ...
 8839 	    ./headers.at:186: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -d -o input.cc input.y
 8840 	    ./headers.at:186: $CXX $CXXFLAGS $CPPFLAGS  -c -o input.o input.cc
 8841 	    stderr:
 8842 	    In file included from /usr/include/c++/4.8.2/cmath:44:0,
 8843 	                     from /usr/include/c++/4.8.2/random:38,
 8844 	                     from /usr/include/c++/4.8.2/bits/stl_algo.h:65,
 8845 	                     from /usr/include/c++/4.8.2/algorithm:62,
 8846 	                     from location.hh:41,
 8847 	                     from input.hh:90,
 8848 	                     from input.cc:50:
 8849 	    /u/cs/fac/eggert/src/gnu/bison/lib/math.h: In function 'bool isnan(double)':
 8850 	    /u/cs/fac/eggert/src/gnu/bison/lib/math.h:2849:1: error: new declaration 'bool isnan(double)'
 8851 	     _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool)
 8852 	     ^
 8853 	    In file included from /usr/include/features.h:375:0,
 8854 	                     from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/os_defines.h:39,
 8855 	                     from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h:2097,
 8856 	                     from /usr/include/c++/4.8.2/cstdlib:41,
 8857 	                     from input.hh:48,
 8858 	                     from input.cc:50:
 8859 	    /usr/include/bits/mathcalls.h:235:1: error: ambiguates old declaration 'int isnan(double)'
 8860 	     __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
 8861 	     ^
 8862 
 8863 	There might be something to do in gnulib about this, but I believe
 8864 	that gnulib should not be used in the test suite in the first place.
 8865 
 8866 	The test suite should work with other compilers than the one used to
 8867 	compile the package.  For a start, Bison sources are more
 8868 	demanding (C99) than the generated parsers.  Last time I tried, tcc
 8869 	for example, was not able to compile Bison, yet our generated parsers
 8870 	should compile cleanly with it.
 8871 
 8872 	Besides the problem at hand is with the C++ compiler, with is not the
 8873 	one used to set up gnulib at configuration-time (config.h is mainly
 8874 	built from probing the C compiler).
 8875 
 8876 	We should really not depend on gnulib in tests.
 8877 
 8878 	This was introduced in 2001 to check whether including
 8879 	stdlib.h/string.h is safe thanks to STDC_HEADERS
 8880 	(2ce1014469742b5c6618daf8506b69e38787c7d5).  Today, we assume at least
 8881 	a C90 compiler, it should be safe enough.
 8882 
 8883 	* tests/local.at, tests/testsuite.h: Do not include config.h.
 8884 	* tests/atlocal.in (conftest.cc): Likewise.
 8885 	(CPPFLAGS): Do not expose lib/, as because of this we might picked up
 8886 	gnulib replacement headers for system headers.
 8887 
 8888 	* tests/input.at: Use int instead of ptrdiff_t, for easier portability
 8889 	(some machine on the CI did not find ptrdiff_t).
 8890 	* tests/c++.at: Add missing include for getchar.
 8891 
 8892 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8893 
 8894 	doc: spell check
 8895 	* doc/bison.texi: Remove the index about yyoutput, it is no longer
 8896 	documented.
 8897 	Spell check.
 8898 
 8899 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8900 
 8901 	tests: style changes
 8902 	* tests/actions.at: Prefer printf to fprintf.
 8903 	Prefer yyo to yyoutput in %printer.
 8904 
 8905 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8906 
 8907 	tests: formatting changes
 8908 	* tests/actions.at, tests/local.at: here.
 8909 
 8910 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8911 
 8912 	tests: add missing includes
 8913 	* tests/actions.at, tests/c++.at, tests/headers.at,
 8914 	* tests/regression.at: here.
 8915 
 8916 2019-10-10  Akim Demaille  <akim.demaille@gmail.com>
 8917 
 8918 	c: don't assume that UCHAR_MAX, etc. are defined
 8919 	A number of portability issues with GCC 4.6 .. 4.9 (inclusive):
 8920 
 8921 	    input.c:184:7: error: "UCHAR_MAX" is not defined [-Werror=undef]
 8922 	     #elif UCHAR_MAX <= INT_MAX
 8923 	           ^
 8924 	    input.c:184:20: error: "INT_MAX" is not defined [-Werror=undef]
 8925 	     #elif UCHAR_MAX <= INT_MAX
 8926 	                        ^
 8927 	    input.c:202:7: error: "USHRT_MAX" is not defined [-Werror=undef]
 8928 	     #elif USHRT_MAX <= INT_MAX
 8929 	           ^
 8930 	    input.c:202:20: error: "INT_MAX" is not defined [-Werror=undef]
 8931 	     #elif USHRT_MAX <= INT_MAX
 8932 	                        ^
 8933 
 8934 	* data/skeletons/c.m4 (b4_c99_int_type_define): Don't assume they are
 8935 	defined.
 8936 
 8937 2019-10-09  Akim Demaille  <akim.demaille@gmail.com>
 8938 
 8939 	configure: don't require Flex
 8940 	Flex should not be required to build Bison or run the test suite (of
 8941 	course it is needed for maintaining Bison).  Yet the Automake
 8942 	conditional FLEX_WORKS does not work.
 8943 
 8944 	* m4/flex.m4 (_AC_PROG_LEX_YYTEXT_DECL): Since this is called
 8945 	conditionally, don't define LEX_IS_FLEX here, but rather...
 8946 	(AC_PROG_LEX): here.
 8947 	* configure.ac: Be more cautious about possibly undefined variables.
 8948 
 8949 2019-10-07  Paul Eggert  <eggert@cs.ucla.edu>
 8950 
 8951 	Move the integer-type selection into c.m4
 8952 	That way, glr.c can use it too.
 8953 	* data/skeletons/c.m4 (b4_int_type):
 8954 	Do not special-case ‘char’; it’s not worth the trouble,
 8955 	as clang complains about char subscripts.
 8956 	(b4_c99_int_type, b4_c99_int_type_define): New macros,
 8957 	taken from yacc.c.
 8958 	* data/skeletons/glr.c: Use b4_int_type_define.
 8959 	* data/skeletons/yacc.c (b4_int_type): Remove, since there’s
 8960 	no longer any need to redefine it.
 8961 	Use b4_c99_int_type_define rather than its body.
 8962 
 8963 2019-10-07  Paul Eggert  <eggert@cs.ucla.edu>
 8964 
 8965 	Use “least” types for integers in Yacc tables
 8966 	This changes the Yacc skeleton to use “least” integer types to
 8967 	keep tables smaller on some platforms, which should lessen cache
 8968 	pressure.  Since Bison uses the Yacc skeleton, it follows suit.
 8969 	* data/skeletons/yacc.c: Include limits.h and stdint.h if this
 8970 	seems to be needed.
 8971 	(yytype_uint8, yytype_int8, yytype_uint16, yytype_int16):
 8972 	If available, use GCC predefined macros __INT_MAX__ etc. to select
 8973 	a “least” type, as this avoids namespace hassles.  Otherwise, if
 8974 	available fall back on selecting a “least” type via the C99 macros
 8975 	INT_MAX, INT_LEAST8_MAX, etc.  Otherwise, fall further back on one of
 8976 	the builtin C99 types signed char, short, and int.  Make sure that
 8977 	any selected type promotes to int.  Ignore any macros YYTYPE_INT16,
 8978 	YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8 defined by the user.
 8979 	(ptrdiff_t, PTRDIFF_MAX): Simplify in the light of the above.
 8980 	(yytype_uint8, yytype_uint16): Do not assume that unsigned char
 8981 	and unsigned short promote to int, as this isn’t true on some
 8982 	platforms (e.g., TI TMS320C55x).
 8983 	* src/parse-gram.y (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16)
 8984 	(YYTYPE_UINT8): Remove, as these are no longer effective.
 8985 
 8986 2019-10-06  Paul Eggert  <eggert@cs.ucla.edu>
 8987 
 8988 	Port better to C++ platforms
 8989 	* data/skeletons/yacc.c (YYPTRDIFF_T, YYPTRDIFF_MAXIMUM):
 8990 	Default to long, not int.
 8991 	(yy_lac_stack_realloc, yy_lac, yytnamerr, yyparse):
 8992 	Avoid casts to YYPTRDIFF_T that were masking the problem.
 8993 
 8994 2019-10-06  Paul Eggert  <eggert@cs.ucla.edu>
 8995 
 8996 	Work around GCC 4.8 false alarms without casts
 8997 	* data/skeletons/yacc.c (yyparse):
 8998 	Initialize yyes_capacity with a signed expression.
 8999 	* tests/local.at (AT_YYLEX_DEFINE(c)):
 9000 	Use enum to avoid cast.
 9001 
 9002 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9003 
 9004 	regen
 9005 
 9006 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9007 
 9008 	tests: make recheck
 9009 	* tests/local.mk (recheck): New.
 9010 
 9011 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9012 
 9013 	diagnostics: also show suggested %empty
 9014 	* src/reader.c (grammar_rule_check_and_complete): Suggest to add %empty.
 9015 	* tests/actions.at, tests/diagnostics.at: Adjust expectations.
 9016 
 9017 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9018 
 9019 	diagnostics: sort symbols per location
 9020 	Because the checking of the grammar is made by phases after the whole
 9021 	grammar was read, we sometimes have diagnostics that look weird.  In
 9022 	some case, within one type of checking, the entities are not checked
 9023 	in the order in which they appear in the file.  For instance, checking
 9024 	symbols is done on the list of symbols sorted by tag:
 9025 
 9026 	    foo.y:1.20-22: warning: symbol BAR is used, but is not defined as a token and has no rules [-Wother]
 9027 	        1 | %destructor {} QUX BAR
 9028 	          |                    ^~~
 9029 	    foo.y:1.16-18: warning: symbol QUX is used, but is not defined as a token and has no rules [-Wother]
 9030 	        1 | %destructor {} QUX BAR
 9031 	          |                ^~~
 9032 
 9033 	Let's sort them by location instead:
 9034 
 9035 	    foo.y:1.16-18: warning: symbol 'QUX' is used, but is not defined as a token and has no rules [-Wother]
 9036 	        1 | %destructor {} QUX BAR
 9037 	          |                ^~~
 9038 	    foo.y:1.20-22: warning: symbol 'BAR' is used, but is not defined as a token and has no rules [-Wother]
 9039 	        1 | %destructor {} QUX BAR
 9040 	          |                    ^~~
 9041 
 9042 	* src/location.h (location_cmp): Be robust to empty file names.
 9043 	* src/symtab.c (symbol_cmp): Sort by location.
 9044 	* tests/input.at: Adjust expectations.
 9045 
 9046 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9047 
 9048 	diagnostics: suggest fixes for undeclared symbols
 9049 	From
 9050 
 9051 	    input.y:1.17-19: warning: symbol baz is used, but is not defined as a token and has no rules [-Wother]
 9052 	         1 | %printer {} foo baz
 9053 	           |                 ^~~
 9054 
 9055 	to
 9056 
 9057 	    input.y:1.17-19: warning: symbol 'baz' is used, but is not defined as a token and has no rules; did you mean 'bar'? [-Wother]
 9058 	        1 | %printer {} foo baz
 9059 	          |                 ^~~
 9060 	          |                 bar
 9061 
 9062 	* bootstrap.conf: We need fstrcmp.
 9063 	* src/symtab.c (symbol_from_uniqstr_fuzzy): New.
 9064 	(complain_symbol_undeclared): Use it.
 9065 	* tests/diagnostics.at (Suggestions): New.
 9066 	* data/bison-default.css (insertion): Rename as...
 9067 	(fixit-insert): this, as this is what GCC uses.
 9068 
 9069 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9070 
 9071 	style: isolate complain_symbol_undeclared
 9072 	* src/symtab.c (complain_symbol_undeclared): New.
 9073 	Use it.
 9074 	Use quote on the guilty symbol (like GCC does, and we also do
 9075 	elsewhere).
 9076 	* tests/input.at: Adjust.
 9077 
 9078 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9079 
 9080 	style: simplify the handling of symbol and semantic_type tables
 9081 	Both are stored in a hash, and back in the days, we used to iterate
 9082 	over these tables using hash_do_for_each.  However, the order of
 9083 	traversal was not deterministic, which was a nuisance for
 9084 	deterministic output (and therefore also a problem for tests).  So at
 9085 	some point (83b60c97ee1f98bb1f15ffa38acdc4cc765515f5) we generated a
 9086 	sorted list of these symbols, and symbols_do actually iterated on that
 9087 	list.  But we kept the constraints of using hash_do_for_each, which
 9088 	requires a lot of ceremonial code, and makes it hard/unnatural to
 9089 	preserve data between iterations (see the next commit).
 9090 
 9091 	Alas, this is C, not C++.
 9092 
 9093 	Let's remove this abstraction, and directly iterate on the sorted
 9094 	tables.
 9095 
 9096 	* src/symtab.c (symbols_do): Remove.
 9097 	Adjust callers to use a simple for-loop instead.
 9098 	(table_sort): New.
 9099 	(symbols_check_defined): Use it.
 9100 	(symbol_check_defined_processor, symbol_pack_processor)
 9101 	(semantic_type_check_defined_processor, symbol_translation_processor):
 9102 	Remove.
 9103 	Simplify the corresponding functions (that no longer need to return a
 9104 	bool).
 9105 
 9106 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9107 
 9108 	diagnostics: display suggested update after the caret-info
 9109 	This commit adds the suggestion in green, on the line below the
 9110 	caret-and-tildes.
 9111 
 9112 	    foo.y:1.1-14: warning: deprecated directive: '%error-verbose', use '%define parse.error verbose' [-Wdeprecated]
 9113 	        1 | %error-verbose
 9114 	          | ^~~~~~~~~~~~~~
 9115 	          | %define parse.error verbose
 9116 
 9117 	The current approach, with location_caret_suggestion, is fragile:
 9118 	there's a protocol of calls to the complain functions which is strict.
 9119 	We should rather have a richer structure describing the diagnostics,
 9120 	including with submessages such as the suggestions, passed in the end
 9121 	to the routines in charge of formatting and printing them.
 9122 
 9123 	* src/location.h, src/location.c (location_caret_suggestion): New.
 9124 	* src/complain.c (deprecated_directive): Use it.
 9125 	* tests/diagnostics.at, tests/input.at: Adjust expectations.
 9126 
 9127 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9128 
 9129 	diagnostics: isolate caret_set_column
 9130 	* src/location.c (caret_info): Add width and skip members.
 9131 	(caret_set_column): New.
 9132 	Use it.
 9133 
 9134 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9135 
 9136 	diagnostics: isolate caret_set_file
 9137 	* src/location.c (caret_set_file): New.
 9138 	Store the current line's length in caret_info.line_len.
 9139 	Pay attention to fseek's return value.
 9140 	Extracted from...
 9141 	(location_caret): here.
 9142 
 9143 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9144 
 9145 	tests: use tput to get the number of columns
 9146 	* tests/bison.in: here.
 9147 
 9148 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9149 
 9150 	TODO: update
 9151 	I no longer agree with that item, there are indeed two things to
 9152 	report: lack of definition, and being useless.  We could have either
 9153 	one without the other, they are not directly related.
 9154 
 9155 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9156 
 9157 	yacc.c: work around warnings from G++ 4.8
 9158 	input.c: In function 'int yyparse()':
 9159 	input.c: error: conversion to 'long int' from 'long unsigned int'
 9160 	                may change the sign of the result [-Werror=sign-conversion]
 9161 	   yyes_capacity = sizeof yyesa / sizeof *yyes;
 9162 	                                ^
 9163 	cc1plus: all warnings being treated as errors
 9164 
 9165 	* data/skeletons/yacc.c: here.
 9166 
 9167 2019-10-06  Akim Demaille  <akim.demaille@gmail.com>
 9168 
 9169 	yacc.c: work around warnings from Clang++ 3.3 and 3.4
 9170 	When we run the test suite with these C++ compilers to compile C code,
 9171 	we get:
 9172 
 9173 	    239. synclines.at:440: testing syncline escapes: yacc.c ...
 9174 	    ../../tests/synclines.at:440: $CC $CFLAGS $CPPFLAGS \"\\\"\".c -o \"\\\"\" ||
 9175 	              exit 77
 9176 	    stderr:
 9177 	    stdout:
 9178 	    ../../tests/synclines.at:440: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret  -o \"\\\"\".c \"\\\"\".y
 9179 	    ../../tests/synclines.at:440: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o \"\\\"\" \"\\\"\".c $LIBS
 9180 	    stderr:
 9181 	    "\"".c:1102:41: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
 9182 	          YYPTRDIFF_T yysize = yyssp - yyss + 1;
 9183 	                      ~~~~~~   ~~~~~~~~~~~~~^~~
 9184 	    1 error generated.
 9185 
 9186 	    193. conflicts.at:545: testing parse.error=verbose and consistent errors: lr.type=canonical-lr parse.lac=full ...
 9187 	    input.c:737:75: error: implicit conversion loses integer precision: 'long' to 'int'
 9188 	                           [-Werror,-Wshorten-64-to-32]
 9189 	      YYPTRDIFF_T yysize_old = *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1;
 9190 	                  ~~~~~~~~~~                               ~~~~~~~~~~~~~~~~~~~^~~
 9191 	    input.c:901:48: error: implicit conversion loses integer precision: 'long' to 'int'
 9192 	                           [-Werror,-Wshorten-64-to-32]
 9193 	                YYPTRDIFF_T yysize = yyesp - *yyes + 1;
 9194 	                            ~~~~~~   ~~~~~~~~~~~~~~^~~
 9195 
 9196 	* data/skeletons/yacc.c: Add more casts.
 9197 
 9198 2019-10-05  Akim Demaille  <akim.demaille@gmail.com>
 9199 
 9200 	tests: avoid a GCC 4.8 warning
 9201 	GCC 4.8 reports:
 9202 
 9203 	    input.y:57:33: error: conversion to 'int' from 'long unsigned int'
 9204 	                          may alter its value [-Werror=conversion]
 9205 	       int input_elts = sizeof input / sizeof input[0];
 9206 	                                     ^
 9207 
 9208 	* tests/local.at (AT_YYLEX_DEFINE(c)): Add a cast (sorry, Paul!).
 9209 
 9210 2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 9211 
 9212 	* data/skeletons/glr.c (yysplitStack): Pacify Clang 8.
 9213 
 9214 2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 9215 
 9216 	Avoid quiet conversion of pointer to bool
 9217 	* src/location.c (caret_set_file):
 9218 	* src/scan-code.l (contains_dot_or_dash):
 9219 	Do not quietly convert pointer to bool, as Oracle Developer Studio
 9220 	12.6 complains and it is arguably confusing style anyway.
 9221 
 9222 2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 9223 
 9224 	Port ARGMATCH_DEFINE_GROUP calls to C99
 9225 	* src/complain.c, src/getargs.c: Omit ‘;’ after call
 9226 	to ARGMATCH_DEFINE_GROUP, as C99 does not allow ‘;’ there.
 9227 
 9228 2019-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 9229 
 9230 	Port lexcalc scan.l to Solaris 10
 9231 	* examples/c/lexcalc/scan.l: Include errno.h.
 9232 
 9233 2019-10-05  Akim Demaille  <akim.demaille@gmail.com>
 9234 
 9235 	yacc.c: use casts instead of pragmas when losing integer width
 9236 	For instance with Clang 4, 8, etc.:
 9237 
 9238 	    input.c:1166:12: error: implicit conversion loses integer precision: 'int' to 'yy_state_num' (aka 'signed char') [-Werror,-Wconversion]
 9239 	      *yyssp = yystate;
 9240 	             ~ ^~~~~~~
 9241 
 9242 	And GCC 8:
 9243 
 9244 	    input.c:1166:12: error: implicit conversion loses integer precision: 'int' to 'yy_state_num' (aka 'signed char') [-Werror,-Wimplicit-int-conversion]
 9245 	      *yyssp = yystate;
 9246 	             ~ ^~~~~~~
 9247 
 9248 	* data/skeletons/yacc.c (YY_CONVERT_INT_BEGIN): Remove.
 9249 	Adjust callers.
 9250 
 9251 2019-10-04  Akim Demaille  <akim.demaille@gmail.com>
 9252 
 9253 	yacc.c: fix warnings about undefined macros
 9254 	For instance with GCC 4.9 and --enable-gcc-warnings:
 9255 
 9256 	    25. input.at:1201: testing Torturing the Scanner ...
 9257 	    ../../tests/input.at:1344: $CC $CFLAGS $CPPFLAGS  -c -o input.o input.c
 9258 	    stderr:
 9259 	    input.c:239:18: error: "__STDC_VERSION__" is not defined [-Werror=undef]
 9260 	     # elif 199901 <= __STDC_VERSION__
 9261 	                      ^
 9262 	    input.c:256:18: error: "__STDC_VERSION__" is not defined [-Werror=undef]
 9263 	     # elif 199901 <= __STDC_VERSION__
 9264 	                      ^
 9265 
 9266 	* data/skeletons/yacc.c: Check that __STDC_VERSION__ is defined before
 9267 	using it.
 9268 
 9269 2019-10-04  Akim Demaille  <akim.demaille@gmail.com>
 9270 
 9271 	tests: check more state numbers
 9272 	* tests/torture.at (State number type): Also check 128, 129 and
 9273 	32768.
 9274 
 9275 2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 9276 
 9277 	* doc/bison.texi (Table of Symbols): Mention memory exhaustion.
 9278 
 9279 2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 9280 
 9281 	Simplify mfcalc error handling
 9282 	* doc/bison.texi (Mfcalc Symbol Table, Mfcalc Lexer):
 9283 	Don’t abort on memory allocation failure or integer overflow.
 9284 	Instead, comment that these things aren’t checked for.
 9285 
 9286 2019-10-03  Akim Demaille  <akim.demaille@gmail.com>
 9287 
 9288 	c++: fix comments suggesting to use %require
 9289 	* data/skeletons/location.cc, data/skeletons/stack.hh: Here.
 9290 
 9291 2019-10-03  Akim Demaille  <akim.demaille@gmail.com>
 9292 
 9293 	lalr1.cc: simplify uses of size_t
 9294 	* data/skeletons/stack.hh (stack::index_type): New type.
 9295 	(stack::size, stack::operator[]): Be about an index_type rather than a
 9296 	size_type and an int.
 9297 
 9298 2019-10-03  Akim Demaille  <akim.demaille@gmail.com>
 9299 
 9300 	c++: fixes for old compilers
 9301 	On the CI with GCC 6:
 9302 
 9303 	    examples/c++/calc++/parser.cc:845:5: error: 'ptrdiff_t' was not declared in this scope
 9304 	         ptrdiff_t yycount = 0;
 9305 	         ^~~~~~~~~
 9306 	    examples/c++/calc++/parser.cc:845:5: note: suggested alternatives:
 9307 	    /usr/include/x86_64-linux-gnu/c++/6/bits/c++config.h:202:28: note:   'std::ptrdiff_t'
 9308 	       typedef __PTRDIFF_TYPE__ ptrdiff_t;
 9309 	                                ^~~~~~~~~
 9310 
 9311 	* data/skeletons/lalr1.cc: Qualify ptrdiff_t and size_t with std::.
 9312 
 9313 2019-10-03  Akim Demaille  <akim.demaille@gmail.com>
 9314 
 9315 	tests: be robust to -DNDEBUG
 9316 	input.y: In function 'yylex':
 9317 	input.y:67:7: error: unused variable 'input_elts' [-Werror=unused-variable]
 9318 	   int input_elts = sizeof input / sizeof input[0];
 9319 	       ^~~~~~~~~~
 9320 	cc1: all warnings being treated as errors
 9321 
 9322 	* tests/input.at, tests/local.at: Avoid that.
 9323 
 9324 2019-10-03  Akim Demaille  <akim.demaille@gmail.com>
 9325 
 9326 	CI: remove the symlink before creating it
 9327 	Currently we fail if we rerun a job that succeeded to push the
 9328 	tarball.
 9329 
 9330 2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 9331 
 9332 	Adjust ‘Big horizontal’ test case
 9333 	* tests/torture.at (Big horizontal): Adjust to recent changes with
 9334 	integers.  If there are states 0..256, Bison now uses a signed
 9335 	rather than an unsigned 16-bit integer.
 9336 
 9337 2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 9338 
 9339 	regen
 9340 
 9341 2019-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 9342 
 9343 	Prefer signed to unsigned integers
 9344 	This patch contains more fixes to prefer signed to unsigned
 9345 	integer types, as modern tools like 'gcc -fsanitize=undefined'
 9346 	can check for signed integer overflow but not unsigned overflow.
 9347 	* NEWS: Document the API change.
 9348 	* boostrap.conf (gnulib_modules): Add intprops.
 9349 	* data/skeletons/glr.c: Include stddef.h and stdint.h,
 9350 	since this skeleton can assume C99 or later.
 9351 	(YYSIZEMAX): Now signed, and the minimum of SIZE_MAX and PTRDIFF_MAX.
 9352 	(yybool) [!__cplusplus]: Now signed (which is how bool behaves).
 9353 	(YYTRANSLATE): Avoid use of unsigned, and make the macro
 9354 	safe even for values greater than UINT_MAX.
 9355 	(yytnamerr, struct yyGLRState, struct yyGLRStateSet, struct yyGLRStack)
 9356 	(yyaddDeferredAction, yyinitStateSet, yyinitGLRStack)
 9357 	(yyexpandGLRStack, yymarkStackDeleted, yyremoveDeletes)
 9358 	(yyglrShift, yyglrShiftDefer, yy_reduce_print, yydoAction)
 9359 	(yyglrReduce, yysplitStack, yyreportTree, yycompressStack)
 9360 	(yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError)
 9361 	(yyparse, yy_yypstack, yypstack, yypdumpstack):
 9362 	* tests/input.at (Torturing the Scanner):
 9363 	Prefer ptrdiff_t to size_t.
 9364 	* data/skeletons/c++.m4 (b4_yytranslate_define):
 9365 	* src/AnnotationList.c (AnnotationList__computePredecessorAnnotations):
 9366 	* src/AnnotationList.h (AnnotationIndex):
 9367 	* src/InadequacyList.h (InadequacyListNodeCount):
 9368 	* src/closure.c (closure_new):
 9369 	* src/complain.c (error_message, complains, complain_indent)
 9370 	(complain_args, duplicate_directive, duplicate_rule_directive):
 9371 	* src/gram.c (nritems, ritem_print, grammar_dump):
 9372 	* src/ielr.c (ielr_compute_ritem_sees_lookahead_set)
 9373 	(ielr_item_has_lookahead, ielr_compute_annotation_lists)
 9374 	(ielr_compute_lookaheads):
 9375 	* src/location.c (columns, boundary_print, location_print):
 9376 	* src/muscle-tab.c (muscle_percent_define_insert)
 9377 	(muscle_percent_define_check_values):
 9378 	* src/output.c (prepare_rules, prepare_actions):
 9379 	* src/parse-gram.y (id, handle_require):
 9380 	* src/reader.c (record_merge_function_type, packgram):
 9381 	* src/reduce.c (nuseless_productions, nuseless_nonterminals)
 9382 	(inaccessable_symbols):
 9383 	* src/relation.c (relation_print):
 9384 	* src/scan-code.l (variant, variant_table_size, variant_count)
 9385 	(variant_add, get_at_spec, show_sub_message, show_sub_messages)
 9386 	(parse_ref):
 9387 	* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>)
 9388 	(scan_integer, convert_ucn_to_byte, handle_syncline):
 9389 	* src/scan-skel.l (at_complain):
 9390 	* src/symtab.c (complain_symbol_redeclared)
 9391 	(complain_semantic_type_redeclared, complain_class_redeclared)
 9392 	(symbol_class_set, complain_user_token_number_redeclared):
 9393 	* src/tables.c (conflict_tos, conflrow, conflict_table)
 9394 	(conflict_list, save_row, pack_vector):
 9395 	* tests/local.at (AT_YYLEX_DEFINE(c)):
 9396 	Prefer signed to unsigned integer.
 9397 	* data/skeletons/lalr1.cc (yy_lac_check_):
 9398 	* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
 9399 	* tests/local.at (AT_YYLEX_DEFINE(c)):
 9400 	Omit now-unnecessary casts.
 9401 	* data/skeletons/location.cc (b4_location_define):
 9402 	* doc/bison.texi (Mfcalc Lexer, C++ position, C++ location):
 9403 	Prefer int to unsigned for line and column numbers.
 9404 	Change example to abort explicitly on memory exhaustion,
 9405 	and fix an off-by-one bug that led to undefined behavior.
 9406 	* data/skeletons/stack.hh (stack::operator[]):
 9407 	Also allow ptrdiff_t indexes.
 9408 	(stack::pop, slice::slice, slice::operator[]):
 9409 	Index arg is now ptrdiff_t, not int.
 9410 	(stack::ssize): New method.
 9411 	(slice::range_): Now ptrdiff_t, not int.
 9412 	* data/skeletons/yacc.c (b4_state_num_type): Remove.
 9413 	All uses replaced by b4_int_type.
 9414 	(YY_CONVERT_INT_BEGIN, YY_CONVERT_INT_END): New macros.
 9415 	(yylac, yyparse): Use them around conversions that -Wconversion
 9416 	would give false alarms about. 	Omit unnecessary casts.
 9417 	(yy_stack_print): Use int rather than unsigned, and omit
 9418 	a cast that doesn’t seem to be needed here any more.
 9419 	* examples/c++/variant.yy (yylex):
 9420 	* examples/c++/variant-11.yy (yylex):
 9421 	Omit no-longer-needed conversions to unsigned.
 9422 	* src/InadequacyList.c (InadequacyList__new_conflict):
 9423 	Don’t assume *node_count is unsigned.
 9424 	* src/output.c (muscle_insert_unsigned_table):
 9425 	Remove; no longer used.
 9426 
 9427 2019-10-02  Paul Eggert  <eggert@cs.ucla.edu>
 9428 
 9429 	Prefer signed types for indexes in skeletons
 9430 	* NEWS: Mention this.
 9431 	* data/skeletons/c.m4 (b4_int_type):
 9432 	Prefer char if it will do, and prefer signed types to unsigned if
 9433 	either will do.
 9434 	* data/skeletons/glr.c (yy_reduce_print): No need to
 9435 	convert rule line to unsigned long.
 9436 	(yyrecoverSyntaxError): Put action into an int to
 9437 	avoid GCC warning of using a char subscript.
 9438 	* data/skeletons/lalr1.cc (yy_lac_check_, yysyntax_error_):
 9439 	Prefer ptrdiff_t to size_t.
 9440 	* data/skeletons/yacc.c (b4_int_type):
 9441 	Prefer signed types to unsigned if either will do.
 9442 	* data/skeletons/yacc.c (b4_declare_parser_state_variables):
 9443 	(YYSTACK_RELOCATE, YYCOPY, yy_lac_stack_realloc, yy_lac)
 9444 	(yytnamerr, yysyntax_error, yyparse): Prefer ptrdiff_t to size_t.
 9445 	(YYPTRDIFF_T, YYPTRDIFF_MAXIMUM): New macros.
 9446 	(YYSIZE_T): Fix "! defined YYSIZE_T" typo.
 9447 	(YYSIZE_MAXIMUM): Take the minimum of PTRDIFF_MAX and SIZE_MAX.
 9448 	(YYSIZEOF): New macro.
 9449 	(YYSTACK_GAP_MAXIMUM, YYSTACK_BYTES, YYSTACK_RELOCATE)
 9450 	(yy_lac_stack_realloc, yyparse): Use it.
 9451 	(YYCOPY, yy_lac_stack_realloc): Cast to YYSIZE_T to pacify GCC.
 9452 	(yy_reduce_print): Use int instead of unsigned long when int
 9453 	will do.
 9454 	(yy_lac_stack_realloc): Prefer long to unsigned long when
 9455 	either will do.
 9456 	* tests/regression.at: Adjust to these changes.
 9457 
 9458 2019-09-30  Akim Demaille  <akim.demaille@gmail.com>
 9459 
 9460 	yacc: use the most appropriate integral type for state numbers
 9461 	Currently we properly use the "best" integral type for tables,
 9462 	including those storing state numbers.  However the variables for
 9463 	state numbers used in yyparse (and its dependencies such as
 9464 	yy_stack_print) still use int16_t invariably.  As a consequence, very
 9465 	large models overflow these variables.
 9466 
 9467 	Let's use the "best" type for these variables too.  It turns out that
 9468 	we can still use 16 bits for twice larger automata: stick to unsigned
 9469 	types.
 9470 
 9471 	However using 'unsigned' when 16 bits are not enough is troublesome
 9472 	and generates tons of warnings about signedness issues.  Instead,
 9473 	let's use 'int'.
 9474 
 9475 	Reported by Tom Kramer.
 9476 	https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00018.html
 9477 
 9478 	* data/skeletons/yacc.c (b4_state_num_type): New.
 9479 	(yy_state_num): Be computed from YYNSTATES.
 9480 	* tests/linear: New.
 9481 	* tests/torture.at (State number type): New.
 9482 	Use it.
 9483 
 9484 2019-09-30  Akim Demaille  <akim.demaille@gmail.com>
 9485 
 9486 	yacc: introduce a type for states
 9487 	* data/skeletons/yacc.c (yy_state_num): New.
 9488 	Use it for arrays of states.
 9489 
 9490 2019-09-30  Akim Demaille  <akim.demaille@gmail.com>
 9491 
 9492 	style: prefer symbolic values rather than litterals
 9493 	Instead of
 9494 
 9495 	    #define YYPACT_NINF -130
 9496 	    #define yypact_value_is_default(Yystate) \
 9497 	      (!!((Yystate) == (-130)))
 9498 
 9499 	generate
 9500 
 9501 	    #define YYPACT_NINF (-130)
 9502 	    #define yypact_value_is_default(Yyn) \
 9503 	      ((Yyn) == YYPACT_NINF)
 9504 
 9505 	* data/skeletons/c.m4 (b4_table_value_equals): Add support for $4.
 9506 	* data/skeletons/glr.c, data/skeletons/yacc.c: Use it.
 9507 	Also, use shorter macro argument names, the name of the macro is clear
 9508 	enough.
 9509 
 9510 2019-09-30  Akim Demaille  <akim.demaille@gmail.com>
 9511 
 9512 	style: change misleading macro argument name
 9513 	* data/skeletons/glr.c, data/skeletons/yacc.c
 9514 	(yypact_value_is_default): It does not take a rule number as argument.
 9515 
 9516 2019-09-28  Akim Demaille  <akim.demaille@gmail.com>
 9517 
 9518 	Merge remote-tracking branch 'upstream/maint'
 9519 	* upstream/maint:
 9520 	  c++: add copy ctors for compatibility with the IAR compiler
 9521 	  CI: show git status
 9522 	  CI: disable ICC
 9523 	  tests: pass -jN from Make to the test suite
 9524 	  quotearg: avoid leaks
 9525 	  maint: post-release administrivia
 9526 
 9527 2019-09-27  Akim Demaille  <akim.demaille@gmail.com>
 9528 
 9529 	c++: add copy ctors for compatibility with the IAR compiler
 9530 	Reported by Andreas Damm.
 9531 	https://savannah.gnu.org/support/?110032
 9532 
 9533 	* data/skeletons/lalr1.cc (stack_symbol_type::operator=): New
 9534 	overload, const, to please the IAR C++ compiler (version ca 2013).
 9535 
 9536 2019-09-23  Akim Demaille  <akim.demaille@gmail.com>
 9537 
 9538 	CI: show git status
 9539 
 9540 2019-09-23  Akim Demaille  <akim.demaille@gmail.com>
 9541 
 9542 	CI: disable ICC
 9543 	It seems that Intel changed something in their license management.
 9544 	https://github.com/nemequ/icc-travis/issues/15
 9545 
 9546 2019-09-23  Akim Demaille  <akim.demaille@gmail.com>
 9547 
 9548 	tests: pass -jN from Make to the test suite
 9549 	I am sooooo tired of typing "make -j5 TESTSUITEFLAGS=-j5"...
 9550 	Should have done this years ago.
 9551 
 9552 	* cfg.mk (TESTSUITEFLAGS): here.
 9553 
 9554 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9555 
 9556 	quotearg: avoid leaks
 9557 	Reported by Tomasz Kłoczko.
 9558 	https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00008.html
 9559 
 9560 	* src/main.c (main): Free quotearg's memory later.
 9561 
 9562 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9563 
 9564 	diagnostics: get the screen width from the terminal
 9565 	* bootstrap.conf: We need winsz-ioctl and winsz-termios.
 9566 	* src/location.c (columns): Use winsize to get the number of
 9567 	columns.
 9568 	Code taken from the GNU Coreutils.
 9569 	* src/location.h, src/location.c (caret_init): New.
 9570 	* src/complain.c (complain_init): Call it.
 9571 	* tests/bison.in: Export COLUMNS so that users of tests/bison can
 9572 	enjoy proper line truncation.
 9573 
 9574 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9575 
 9576 	diagnostics: don't print ellipsis on the caret line
 9577 	From
 9578 
 9579 	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHIJKL
 9580 	      | ...         ^~~~~~~~~~~~~~~~~~~~~~~~~~
 9581 
 9582 	to
 9583 
 9584 	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHI...
 9585 	      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
 9586 
 9587 	* src/location.c (location_caret): here.
 9588 	* tests/diagnostics.at: Adjust expectations.
 9589 
 9590 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9591 
 9592 	diagnostics: also show truncation at the end of line with "..."
 9593 	From
 9594 
 9595 	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHIJKL
 9596 	      | ...         ^~~~~~~~~~~~~~~~~~~~~~~~~~
 9597 
 9598 	to
 9599 
 9600 	    9 | ...TUVWXYZ  ABCDEFGHIJKLMNOPQRSTUVWXYZ  ABCDEFGHI...
 9601 	      | ...         ^~~~~~~~~~~~~~~~~~~~~~~~~~
 9602 
 9603 	* src/location.c (location_caret): here.
 9604 	* tests/diagnostics.at: Adjust expectations.
 9605 
 9606 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9607 
 9608 	diagnostics: check that quoted lines are truncated
 9609 	* tests/diagnostics.at (Screen width: 60 columns, Screen width: 80
 9610 	columns, Screen width: 200 columns): New tests.
 9611 
 9612 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9613 
 9614 	diagnostics: truncate quoted sources to fit the screen
 9615 	* src/location.c (min_int, columns): New.
 9616 	(location_caret): Compute the line width.  Based on it, compute how
 9617 	many columns must be skipped before the quoted location and truncated
 9618 	after, to fit the sceen width.
 9619 	* tests/local.at (AT_QUELL_VALGRIND): Transform into...
 9620 	(AT_SET_ENV_IF, AT_SET_ENV): these.
 9621 	Define COLUMNS to protect the test suite from the user's environment.
 9622 
 9623 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9624 
 9625 	diagnostics: learn how to count column number with multibyte chars
 9626 	So far diagnostics were cheating: in addition to the 'column' field of
 9627 	locations (based on actual screen width per multibyte characters and
 9628 	on tabulation expansion), the scanner sets the 'byte' field.
 9629 	Diagnostics used this byte count to decide where to insert (color)
 9630 	style.
 9631 
 9632 	We want to be able to truncate the quoted lines when there are too
 9633 	wide to fit the screen.  This requires that the diagnostics learn how
 9634 	to count columns, the byte-in-boundary trick no longer works.
 9635 
 9636 	Bytes are still used for fix-its.
 9637 
 9638 	* bootstrap.conf: We need mbfile for mbf_getc.
 9639 	* src/location.c (caret_info): We need an mbfile.
 9640 	(caret_set_file): Initialize it.
 9641 	(caret_getc): Convert to mbfile.
 9642 	(location_caret): Instead of relying on the byte position to decide
 9643 	where to insert the color style, count the current column using
 9644 	boundary_compute.
 9645 
 9646 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9647 
 9648 	diagnostics: style: rename member for clariy
 9649 	* src/location.c (caret_info): Now that we no longer have a 'file'
 9650 	member (see previous commit), rename 'source' as 'file'.
 9651 
 9652 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9653 
 9654 	diagnostics: style: use a boundary to track the caret_info
 9655 	* src/location.c (caret_info): Replace file and line with pos, a
 9656 	boundary.  This will allow us to use features of the boundary type,
 9657 	such as boundary_compute.
 9658 
 9659 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9660 
 9661 	diagnostics: extract boundary_compute from location_compute
 9662 	The handling of the contributions of the tabulations in the columns is
 9663 	burried inside location_compute.  We will soon be willing to use the
 9664 	boundary part of the computation (to compute the current column number
 9665 	each time we read a multibyte char).
 9666 
 9667 	* src/location.c (boundary_compute): New, extracted from...
 9668 	(location_compute): here.
 9669 
 9670 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9671 
 9672 	diagnostics: style: add caret_set_file
 9673 	To make the following commits easier to read.
 9674 
 9675 	* src/location.c (caret_set_file): New.
 9676 
 9677 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9678 
 9679 	diagnostics: style: minor changes
 9680 	* src/location.c (location_caret): Factor two branches of an if.
 9681 
 9682 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9683 
 9684 	CI: show git status
 9685 
 9686 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9687 
 9688 	git: update ignores
 9689 
 9690 2019-09-22  Akim Demaille  <akim.demaille@gmail.com>
 9691 
 9692 	git: update ignores
 9693 
 9694 2019-09-21  Akim Demaille  <akim.demaille@gmail.com>
 9695 
 9696 	quotearg: avoid leaks
 9697 	Reported by Tomasz Kłoczko.
 9698 	https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00008.html
 9699 
 9700 	* src/main.c (main): Free quotearg's memory later.
 9701 
 9702 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9703 
 9704 	tests: pass -jN from Make to the test suite
 9705 	I am sooooo tired of typing "make -j5 TESTSUITEFLAGS=-j5"...
 9706 	Should have done this years ago.
 9707 
 9708 	* cfg.mk (TESTSUITEFLAGS): here.
 9709 
 9710 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9711 
 9712 	java: handle eof in yytranslate
 9713 	* data/skeletons/lalr1.java (yytranslate_): Handle eof here, as is done
 9714 	in lalr1.cc.
 9715 	* tests/javapush.at: Adjust.
 9716 
 9717 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9718 
 9719 	d: handle eof in yytranslate
 9720 	This changes the traces from
 9721 
 9722 	    Reading a token:
 9723 	    Now at end of input.
 9724 
 9725 	to
 9726 
 9727 	    Reading a token:
 9728 	    Next token is token $end (7FFEE56E6474)
 9729 
 9730 	which is ok.  Actually it is even better, as it gives the location
 9731 	when locations are enabled, and is clearer when rules explicitly use
 9732 	the EOF token.
 9733 
 9734 	* data/skeletons/lalr1.d (yytranslate_): Handle eof here, as is done
 9735 	in lalr1.cc.
 9736 
 9737 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9738 
 9739 	regen
 9740 
 9741 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9742 
 9743 	parser: use api.token.raw
 9744 	* src/parse-gram.y: Here.
 9745 
 9746 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9747 
 9748 	api.token.raw: document it
 9749 	* doc/bison.texi: here.
 9750 
 9751 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9752 
 9753 	api.token.raw: cannot be used with character literals
 9754 	* src/parse-gram.y (CHAR): api.token.raw and character literals are
 9755 	mutually exclusive.
 9756 	* tests/input.at (Character literals and api.token.raw): New.
 9757 
 9758 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9759 
 9760 	api.token.raw: apply to the other skeletons
 9761 	* data/skeletons/c++.m4, data/skeletons/glr.c,
 9762 	* data/skeletons/lalr1.c, data/skeletons/lalr1.java:
 9763 	Add support for api.token.raw.
 9764 
 9765 	* tests/scanner.at: Check them.
 9766 
 9767 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9768 
 9769 	api.token.raw: check it
 9770 	* tests/local.at (AT_TOKEN_RAW_IF): New.
 9771 	* tests/local.mk: New.
 9772 	Use it.
 9773 
 9774 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9775 
 9776 	api.token.raw: implement
 9777 	Bison used to feature %raw, documented as follows:
 9778 
 9779 	    @item %raw
 9780 	    The output file @file{@var{name}.h} normally defines the tokens with
 9781 	    Yacc-compatible token numbers.  If this option is specified, the
 9782 	    internal Bison numbers are used instead.  (Yacc-compatible numbers start
 9783 	    at 257 except for single character tokens; Bison assigns token numbers
 9784 	    sequentially for all tokens starting at 3.)
 9785 
 9786 	Unfortunately, as far as I can tell, it never worked: token numbers
 9787 	are indeed changed in the generated tables (from external token number
 9788 	to internal), yet the code was still applying the mapping from
 9789 	external token numbers to internal token numbers.
 9790 
 9791 	This commit reintroduces the feature as it was expected to be.
 9792 
 9793 	* data/skeletons/bison.m4 (b4_token_format): When api.token.raw is
 9794 	enabled, use the internal token number.
 9795 	* data/skeletons/yacc.c (yytranslate): Don't emit if api.token.raw is
 9796 	enabled.
 9797 	(YYTRANSLATE): Adjust.
 9798 
 9799 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9800 
 9801 	style: tidy yacc.c
 9802 	* data/skeletons/yacc.c: Include 'c.m4' first.
 9803 	Then sort the handling of %define variables.
 9804 	* tests/input.at: Adjust.
 9805 
 9806 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9807 
 9808 	CI: disable ICC
 9809 	It seems that Intel changed something in their license management.
 9810 	https://github.com/nemequ/icc-travis/issues/15
 9811 
 9812 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9813 
 9814 	diagnostics: fix use of complain_indent
 9815 	* src/symtab.c (symbol_class_set): Here.
 9816 	* tests/diagnostics.at, tests/input.at, tests/regression.at: Adjust
 9817 	expectations.
 9818 
 9819 2019-09-14  Akim Demaille  <akim.demaille@gmail.com>
 9820 
 9821 	input: stop treating lone CRs as end-of-lines
 9822 	We used to treat lone CRs (\r, aka ^M) as regular NLs (\n), probably
 9823 	to please Classic MacOS.  As of today, it makes more sense to treat \r
 9824 	like a plain white space character.
 9825 
 9826 	https://lists.gnu.org/archive/html/bison-patches/2019-09/msg00027.html
 9827 
 9828 	* src/scan-gram.l (no_cr_read): Remove.  Instead, use...
 9829 	(eol): this new abbreviation denoting end-of-line.
 9830 	* src/location.c (caret_getc): New.
 9831 	(location_caret): Use it.
 9832 	* tests/diagnostics.at (Carriage return): Adjust expectations.
 9833 	(CR NL): New.
 9834 
 9835 2019-09-12  Akim Demaille  <akim.demaille@gmail.com>
 9836 
 9837 	Merge tag 'v3.4.2' into HEAD
 9838 	bison 3.4.2
 9839 
 9840 	* tag 'v3.4.2': (24 commits)
 9841 	  version 3.4.2
 9842 	  CI: always uninstall icc
 9843 	  news: more bug fixes thanks to Marc Schönefeld
 9844 	  diagnostics: beware of unexpected EOF when quoting the source file
 9845 	  gnulib: update
 9846 	  build: fix distcheck
 9847 	  tests: add noexcept to please GCC 9
 9848 	  news: update
 9849 	  fix: don't die when EOF token is defined twice
 9850 	  tests: check token redeclaration
 9851 	  yacc.c: beware of GCC's -Wmaybe-uninitialized
 9852 	  glr.c: initialize vector of bools
 9853 	  gnulib: update
 9854 	  check for memory exhaustion
 9855 	  diagnostics: avoid global variables
 9856 	  diagnostics: fix invalid error message indentation
 9857 	  git: ignore files generated in gnulib-po
 9858 	  c++: avoid duplicate definition of YYUSE
 9859 	  gnulib: update
 9860 	  CI: more compilers
 9861 	  ...
 9862 
 9863 2019-09-12  Akim Demaille  <akim.demaille@gmail.com>
 9864 
 9865 	maint: post-release administrivia
 9866 	* NEWS: Add header line for next release.
 9867 	* .prev-version: Record previous version.
 9868 	* cfg.mk (old_NEWS_hash): Auto-update.
 9869 
 9870 2019-09-12  Akim Demaille  <akim.demaille@gmail.com>
 9871 
 9872 	version 3.4.2
 9873 	* NEWS: Record release date.
 9874 
 9875 2019-09-12  Akim Demaille  <akim.demaille@gmail.com>
 9876 
 9877 	CI: always uninstall icc
 9878 
 9879 2019-09-12  Akim Demaille  <akim.demaille@gmail.com>
 9880 
 9881 	news: more bug fixes thanks to Marc Schönefeld
 9882 
 9883 2019-09-12  Akim Demaille  <akim.demaille@gmail.com>
 9884 
 9885 	diagnostics: beware of unexpected EOF when quoting the source file
 9886 	When the input file contains lone CRs (aka, ^M, \r), the locations see
 9887 	a new line.  Diagnostics look only at \n as end-of-line, so sometimes
 9888 	there is an offset in diagnostics.  Worse yet: sometimes we loop
 9889 	endlessly waiting for \n to come from a continuous stream of EOF.
 9890 
 9891 	Fix that:
 9892 	- check for EOF
 9893 	- beware not to call end_use_class if begin_use_class was not
 9894 	  called (which would abort).  This could happen if the actual
 9895 	  line is shorter that the expected one.
 9896 
 9897 	Prompted by a (private) report from Marc Schönefeld.
 9898 
 9899 	* src/location.c (location_caret): here.
 9900 	* tests/diagnostics.at (Carriage return): New.
 9901 
 9902 2019-09-11  Akim Demaille  <akim.demaille@gmail.com>
 9903 
 9904 	gnulib: update
 9905 	Contains the creation of the xhash module.
 9906 	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00046.html
 9907 
 9908 	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
 9909 	Use hash_xinitialize.
 9910 
 9911 2019-09-11  Akim Demaille  <akim.demaille@gmail.com>
 9912 
 9913 	build: fix distcheck
 9914 	* configure.ac (gl_LIBOBJS): Adjust so that the generated files are
 9915 	indeed the expected ones.
 9916 
 9917 2019-09-10  Akim Demaille  <akim.demaille@gmail.com>
 9918 
 9919 	diagnostics: beware of unexpected EOF when quoting the source file
 9920 	When the input file contains lone CRs (aka, ^M, \r), the locations see
 9921 	a new line.  Diagnostics look only at \n as end-of-line, so sometimes
 9922 	there is an offset in diagnostics.  Worse yet: sometimes we loop
 9923 	endlessly waiting for \n to come from a continuous stream of EOF.
 9924 
 9925 	Fix that:
 9926 	- check for EOF
 9927 	- beware not to call end_use_class if begin_use_class was not
 9928 	  called (which would abort).  This could happen if the actual
 9929 	  line is shorter that the expected one.
 9930 
 9931 	Prompted by a (private) report from Marc Schönefeld.
 9932 
 9933 	* src/location.c (location_caret): here.
 9934 	* tests/diagnostics.at (Carriage return): New.
 9935 
 9936 2019-09-10  Akim Demaille  <akim.demaille@gmail.com>
 9937 
 9938 	gnulib: update
 9939 	Contains the creation of the xhash module.
 9940 	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00046.html
 9941 
 9942 	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
 9943 	Use hash_xinitialize.
 9944 
 9945 2019-09-10  Akim Demaille  <akim.demaille@gmail.com>
 9946 
 9947 	build: fix distcheck
 9948 	* configure.ac (gl_LIBOBJS): Adjust so that the generated files are
 9949 	indeed the expected ones.
 9950 
 9951 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
 9952 
 9953 	tests: add noexcept to please GCC 9
 9954 	    bison/tests/c++.at:552: bison --color=no -fno-caret  -o list.cc list.y
 9955 	    bison/tests/c++.at:552: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o list list.cc $LIBS
 9956 	    stderr:
 9957 	    gcc9/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string]':
 9958 	    gcc9/c++/bits/alloc_traits.h:482:2:   required from 'static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<string>]'
 9959 	    gcc9/c++/bits/stl_uninitialized.h:888:67:   required from 'void std::__relocate_object_a(_Tp*, _Up*, _Allocator&) [with _Tp = string; _Up = string; _Allocator = std::allocator<string>]'
 9960 	    gcc9/c++/bits/stl_uninitialized.h:920:47:   required from '_ForwardIterator std::__relocate_a_1(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
 9961 	    gcc9/c++/bits/stl_uninitialized.h:942:37:   required from '_ForwardIterator std::__relocate_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
 9962 	    gcc9/c++/bits/stl_vector.h:430:35:   required from 'static constexpr bool std::vector<_Tp, _Alloc>::_S_nothrow_relocate(std::true_type) [with _Tp = string; _Alloc = std::allocator<string>; std::true_type = std::integral_constant<bool, true>]'
 9963 	    gcc9/c++/bits/stl_vector.h:446:28:   required from 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const string&}; _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<string*, std::vector<string> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = string*]'
 9964 	    gcc9/c++/bits/stl_vector.h:1195:4:   required from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::value_type = string]'
 9965 	    list.y:126:110:   required from here
 9966 	    gcc9/c++/bits/vector.tcc:459:44:   in 'constexpr' expansion of 'std::vector<string>::_S_use_relocate()'
 9967 	    list.y:41:7: error: but 'string::string(string&&)' does not throw; perhaps it should be declared 'noexcept' [-Werror=noexcept]
 9968 	       41 |       string (string&& s)
 9969 	          |       ^~~~~~
 9970 
 9971 	* tests/c++.at (Variants): Add noexcept where appropriate.
 9972 
 9973 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
 9974 
 9975 	tests: add noexcept to please GCC 9
 9976 	    bison/tests/c++.at:552: bison --color=no -fno-caret  -o list.cc list.y
 9977 	    bison/tests/c++.at:552: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o list list.cc $LIBS
 9978 	    stderr:
 9979 	    gcc9/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string]':
 9980 	    gcc9/c++/bits/alloc_traits.h:482:2:   required from 'static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<string>]'
 9981 	    gcc9/c++/bits/stl_uninitialized.h:888:67:   required from 'void std::__relocate_object_a(_Tp*, _Up*, _Allocator&) [with _Tp = string; _Up = string; _Allocator = std::allocator<string>]'
 9982 	    gcc9/c++/bits/stl_uninitialized.h:920:47:   required from '_ForwardIterator std::__relocate_a_1(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
 9983 	    gcc9/c++/bits/stl_uninitialized.h:942:37:   required from '_ForwardIterator std::__relocate_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]'
 9984 	    gcc9/c++/bits/stl_vector.h:430:35:   required from 'static constexpr bool std::vector<_Tp, _Alloc>::_S_nothrow_relocate(std::true_type) [with _Tp = string; _Alloc = std::allocator<string>; std::true_type = std::integral_constant<bool, true>]'
 9985 	    gcc9/c++/bits/stl_vector.h:446:28:   required from 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const string&}; _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<string*, std::vector<string> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = string*]'
 9986 	    gcc9/c++/bits/stl_vector.h:1195:4:   required from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::value_type = string]'
 9987 	    list.y:126:110:   required from here
 9988 	    gcc9/c++/bits/vector.tcc:459:44:   in 'constexpr' expansion of 'std::vector<string>::_S_use_relocate()'
 9989 	    list.y:41:7: error: but 'string::string(string&&)' does not throw; perhaps it should be declared 'noexcept' [-Werror=noexcept]
 9990 	       41 |       string (string&& s)
 9991 	          |       ^~~~~~
 9992 
 9993 	* tests/c++.at (Variants): Add noexcept where appropriate.
 9994 
 9995 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
 9996 
 9997 	news: update
 9998 
 9999 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10000 
10001 	fix: don't die when EOF token is defined twice
10002 	With
10003 
10004 	    %token EOF 0 EOF 0
10005 
10006 	we get
10007 
10008 	    input.y:3.14-16: warning: symbol EOF redeclared [-Wother]
10009 	        3 | %token EOF 0 EOF 0
10010 	          |              ^~~
10011 	    input.y:3.8-10: previous declaration
10012 	        3 | %token EOF 0 EOF 0
10013 	          |        ^~~
10014 	    Assertion failed: (nsyms == ntokens + nvars), function check_and_convert_grammar,
10015 	        file /Users/akim/src/gnu/bison/src/reader.c, line 839.
10016 
10017 	Reported by Marc Schönefeld.
10018 
10019 	* src/symtab.c (symbol_user_token_number_set): Register only the
10020 	first definition of the end of input token.
10021 	* tests/input.at (Symbol redeclared): Check that case.
10022 
10023 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10024 
10025 	tests: check token redeclaration
10026 	* src/symtab.c (symbol_class_set): Report previous definitions when
10027 	redeclared.
10028 	* tests/input.at (Symbol redeclared): New.
10029 
10030 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10031 
10032 	yacc.c: beware of GCC's -Wmaybe-uninitialized
10033 	Test 400 (calc.at:773: testing Calculator api.push-pull=both
10034 	api.pure=full parse.error=verbose %debug %locations %defines
10035 	api.prefix={calc} %verbose %yacc) fails on the CI with GCC 8 on
10036 	Bionic:
10037 
10038 	    400. calc.at:773: testing Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  ...
10039 	    ../../tests/calc.at:773: bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y
10040 	    ../../tests/calc.at:773: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
10041 	    stderr:
10042 	    calc.y: In function 'int calcpush_parse(calcpstate*, int, const CALCSTYPE*, CALCLTYPE*)':
10043 	    calc.y:26:20: error: 'yylval.CALCSTYPE::ival' may be used uninitialized in this function [-Werror=maybe-uninitialized]
10044 	     %printer { fprintf (yyo, "%d", $$); } <ival>;
10045 	                        ^
10046 	    calc.c:1272:9: note: 'yylval.CALCSTYPE::ival' was declared here
10047 	     YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
10048 	             ^~~~~~
10049 	    cc1plus: all warnings being treated as errors
10050 	    stdout:
10051 	    ../../tests/calc.at:773: exit code was 1, expected 0
10052 	    400. calc.at:773: 400. Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  (calc.at:773): FAILED (calc.at:773)
10053 
10054 	* data/skeletons/c.m4 (yy_symbol_value_print): Disable the warning
10055 	locally.
10056 
10057 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10058 
10059 	glr.c: initialize vector of bools
10060 	The CI, with CC='gcc-7 -fsanitize=undefined,address
10061 	-fno-omit-frame-pointer', reports:
10062 
10063 	    calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
10064 	    ../../tests/calc.at:867: cat stderr
10065 	    --- expout	2019-09-05 20:30:37.887257545 +0000
10066 	    +++ /home/travis/build/bison-3.4.1.72-79a1-dirty/_build/tests/testsuite.dir/at-groups/438/stdout	2019-09-05 20:30:37.887257545 +0000
10067 	    @@ -1 +1,2 @@
10068 	     syntax error
10069 	    +calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
10070 	    438. calc.at:867: 438. Calculator glr.cc  (calc.at:867): FAILED (calc.at:867)
10071 
10072 	The problem is that yylookaheadNeeds is not initialized in
10073 	yyinitStateSet, and when it is copied, the value is not 0 or 1.
10074 
10075 	* data/skeletons/glr.c (yylookaheadNeeds): Initialize yylookaheadNeeds.
10076 
10077 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10078 
10079 	gnulib: update
10080 	Contains a fix for
10081 	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html.
10082 	See
10083 	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00005.html.
10084 	Reported by 江 祖铭 (Zu-Ming Jiang).
10085 
10086 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10087 
10088 	check for memory exhaustion
10089 	hash_initialize returns NULL when out of memory.  Check for it, and
10090 	die cleanly instead of crashing.
10091 
10092 	Reported by 江 祖铭 (Zu-Ming Jiang).
10093 	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00015.html
10094 
10095 	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
10096 	Check the value returned by hash_initialize.
10097 
10098 2019-09-08  László Várady  <laszlo.varady93@gmail.com>
10099 
10100 	diagnostics: avoid global variables
10101 	* src/complain.c (indent_ptr): Remove.
10102 	(error_message, complains): Take indent as an argument.
10103 	Adjust callers.
10104 
10105 2019-09-08  László Várady  <laszlo.varady93@gmail.com>
10106 
10107 	diagnostics: fix invalid error message indentation
10108 	https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html
10109 
10110 	When Bison is started with a flag that suppresses warning messages, the
10111 	error_message() function can produce a few gigabytes of indentation
10112 	because of a dangling pointer.
10113 
10114 	* src/complain.c (error_message): Don't reset indent_ptr here, but...
10115 	(complain_indent): here.
10116 	* tests/diagnostics.at (Indentation with message suppression): Check
10117 	this case.
10118 
10119 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10120 
10121 	git: ignore files generated in gnulib-po
10122 	Because of them, the CI generates "-dirty" tarballs.
10123 
10124 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10125 
10126 	c++: avoid duplicate definition of YYUSE
10127 	Reported by Frank Heckenbach.
10128 	https://lists.gnu.org/archive/html/bug-bison/2019-06/msg00009.html
10129 
10130 	* data/skeletons/lalr1.cc (b4_shared_declarations): Remove the
10131 	duplicate definition of YYUSE, the other one coming from
10132 	b4_attribute_define.
10133 
10134 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10135 
10136 	gnulib: update
10137 	This update brings file from Gettext 0.20, which is not available on
10138 	the CI yet.
10139 
10140 	.travis.yml: Adjust.
10141 	Use Bionic now that it's available.
10142 
10143 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10144 
10145 	CI: more compilers
10146 	* .travis.yml: Bionic is now available, with GCC8.
10147 	GCC7 sanitizers work, but they are too longer: cover only part 1.
10148 	Redefine part 1 and part 2 so that part 1 is really the core of the
10149 	tests: not playing with POSIX and C++ compiler for C code.
10150 
10151 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10152 
10153 	CI: fail fast
10154 
10155 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10156 
10157 	CI: propagate sftp failures
10158 	* .travis.yml (stage: "compile"): here.
10159 
10160 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10161 
10162 	CI: avoid useless git costs
10163 	Travis answered favorably to my suggestion to provide a means to
10164 	disable git clone on some jobs (issue 7542).  See
10165 	https://docs.travis-ci.com/user/customizing-the-build/#disabling-git-clone.
10166 
10167 	* .travis.yml: Disable git globally, enable it for i. the compile job,
10168 	and ii. the test job on ICC which needs the install-icc.sh script.
10169 
10170 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10171 
10172 	CI: factor
10173 	* .travis.yml (Clang 7 libc++ and ASAN part 2): Reuse bits from "Clang
10174 	7 libc++ and ASAN part 1".
10175 
10176 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10177 
10178 	regen
10179 
10180 2019-09-08  Akim Demaille  <akim.demaille@gmail.com>
10181 
10182 	gnulib: update
10183 	Contains a fix for
10184 	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html.
10185 	See
10186 	https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00005.html.
10187 	Reported by 江 祖铭 (Zu-Ming Jiang).
10188 
10189 2019-09-07  Akim Demaille  <akim.demaille@gmail.com>
10190 
10191 	fix: don't die when EOF token is defined twice
10192 	With
10193 
10194 	    %token EOF 0 EOF 0
10195 
10196 	we get
10197 
10198 	    input.y:3.14-16: warning: symbol EOF redeclared [-Wother]
10199 	        3 | %token EOF 0 EOF 0
10200 	          |              ^~~
10201 	    input.y:3.8-10: previous declaration
10202 	        3 | %token EOF 0 EOF 0
10203 	          |        ^~~
10204 	    Assertion failed: (nsyms == ntokens + nvars), function check_and_convert_grammar,
10205 	        file /Users/akim/src/gnu/bison/src/reader.c, line 839.
10206 
10207 	Reported by Marc Schönefeld.
10208 
10209 	* src/symtab.c (symbol_user_token_number_set): Register only the
10210 	first definition of the end of input token.
10211 	* tests/input.at (Symbol redeclared): Check that case.
10212 
10213 2019-09-07  Akim Demaille  <akim.demaille@gmail.com>
10214 
10215 	tests: check token redeclaration
10216 	* src/symtab.c (symbol_class_set): Report previous definitions when
10217 	redeclared.
10218 	* tests/input.at (Symbol redeclared): New.
10219 
10220 2019-09-06  Akim Demaille  <akim.demaille@gmail.com>
10221 
10222 	glr.c: initialize vector of bools
10223 	The CI, with CC='gcc-7 -fsanitize=undefined,address
10224 	-fno-omit-frame-pointer', reports:
10225 
10226 	    calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
10227 	    ../../tests/calc.at:867: cat stderr
10228 	    --- expout	2019-09-05 20:30:37.887257545 +0000
10229 	    +++ /home/travis/build/bison-3.4.1.72-79a1-dirty/_build/tests/testsuite.dir/at-groups/438/stdout	2019-09-05 20:30:37.887257545 +0000
10230 	    @@ -1 +1,2 @@
10231 	     syntax error
10232 	    +calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool'
10233 	    438. calc.at:867: 438. Calculator glr.cc  (calc.at:867): FAILED (calc.at:867)
10234 
10235 	The problem is that yylookaheadNeeds is not initialized in
10236 	yyinitStateSet, and when it is copied, the value is not 0 or 1.
10237 
10238 	* data/skeletons/glr.c (yylookaheadNeeds): Initialize yylookaheadNeeds.
10239 
10240 2019-09-06  Akim Demaille  <akim.demaille@gmail.com>
10241 
10242 	yacc.c: beware of GCC's -Wmaybe-uninitialized
10243 	Test 400 (calc.at:773: testing Calculator api.push-pull=both
10244 	api.pure=full parse.error=verbose %debug %locations %defines
10245 	api.prefix={calc} %verbose %yacc) fails on the CI with GCC 8 on
10246 	Bionic:
10247 
10248 	    400. calc.at:773: testing Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  ...
10249 	    ../../tests/calc.at:773: bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y
10250 	    ../../tests/calc.at:773: $CC $CFLAGS $CPPFLAGS  $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
10251 	    stderr:
10252 	    calc.y: In function 'int calcpush_parse(calcpstate*, int, const CALCSTYPE*, CALCLTYPE*)':
10253 	    calc.y:26:20: error: 'yylval.CALCSTYPE::ival' may be used uninitialized in this function [-Werror=maybe-uninitialized]
10254 	     %printer { fprintf (yyo, "%d", $$); } <ival>;
10255 	                        ^
10256 	    calc.c:1272:9: note: 'yylval.CALCSTYPE::ival' was declared here
10257 	     YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
10258 	             ^~~~~~
10259 	    cc1plus: all warnings being treated as errors
10260 	    stdout:
10261 	    ../../tests/calc.at:773: exit code was 1, expected 0
10262 	    400. calc.at:773: 400. Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc  (calc.at:773): FAILED (calc.at:773)
10263 
10264 	* data/skeletons/c.m4 (yy_symbol_value_print): Disable the warning
10265 	locally.
10266 
10267 2019-09-06  Akim Demaille  <akim.demaille@gmail.com>
10268 
10269 	lalr1.cc: fix LAC support
10270 	* data/skeletons/lalr1.cc (ctor): Initialize yy_lac_established_.
10271 	This is quite painful to write, and ugly to read.
10272 
10273 2019-09-06  Akim Demaille  <akim.demaille@gmail.com>
10274 
10275 	style: fix comment
10276 	* tests/atlocal.in: here.
10277 
10278 2019-09-06  Akim Demaille  <akim.demaille@gmail.com>
10279 
10280 	CI: more compilers
10281 	* .travis.yml: Bionic is now available, with GCC8.
10282 	GCC7 sanitizers work, but they are too longer: cover only part 1.
10283 	Redefine part 1 and part 2 so that part 1 is really the core of the
10284 	tests: not playing with POSIX and C++ compiler for C code.
10285 
10286 2019-09-06  Akim Demaille  <akim.demaille@gmail.com>
10287 
10288 	CI: fail fast
10289 
10290 2019-09-04  Akim Demaille  <akim.demaille@gmail.com>
10291 
10292 	gnulib: update
10293 	This update brings file from Gettext 0.20, which is not available on
10294 	the CI yet.
10295 
10296 	.travis.yml: Adjust.
10297 	Use Bionic now that it's available.
10298 
10299 2019-09-01  Akim Demaille  <akim.demaille@gmail.com>
10300 
10301 	check for memory exhaustion
10302 	hash_initialize returns NULL when out of memory.  Check for it, and
10303 	die cleanly instead of crashing.
10304 
10305 	Reported by 江 祖铭 (Zu-Ming Jiang).
10306 	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00015.html
10307 
10308 	* src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c:
10309 	Check the value returned by hash_initialize.
10310 
10311 2019-08-30  Akim Demaille  <akim.demaille@gmail.com>
10312 
10313 	news: LAC for C++
10314 
10315 2019-08-29  Akim Demaille  <akim.demaille@gmail.com>
10316 
10317 	d: remove useless imports
10318 	* examples/d/calc.y, tests/calc.at: here.
10319 
10320 2019-08-18  László Várady  <laszlo.varady93@gmail.com>
10321 
10322 	diagnostics: avoid global variables
10323 	* src/complain.c (indent_ptr): Remove.
10324 	(error_message, complains): Take indent as an argument.
10325 	Adjust callers.
10326 
10327 2019-08-18  László Várady  <laszlo.varady93@gmail.com>
10328 
10329 	diagnostics: fix invalid error message indentation
10330 	https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html
10331 
10332 	When Bison is started with a flag that suppresses warning messages, the
10333 	error_message() function can produce a few gigabytes of indentation
10334 	because of a dangling pointer.
10335 
10336 	* src/complain.c (error_message): Don't reset indent_ptr here, but...
10337 	(complain_indent): here.
10338 	* tests/diagnostics.at (Indentation with message suppression): Check
10339 	this case.
10340 
10341 2019-08-18  Akim Demaille  <akim.demaille@gmail.com>
10342 
10343 	c++: use resize to shrink a vector
10344 	Suggested by Adrian Vogelsgesang.
10345 	https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00009.html
10346 
10347 	* data/skeletons/lalr1.cc (yy_lac_check_): here.
10348 
10349 2019-08-09  Akim Demaille  <akim.demaille@gmail.com>
10350 
10351 	lalr1.cc: check LAC support
10352 	* tests/conflicts.at, tests/input.at, tests/regression.at: here.
10353 
10354 2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
10355 
10356 	lalr1.cc: add LAC support
10357 	Implement lookahead correction (LAC) for the C++ skeleton.  LAC is a
10358 	mechanism to make sure that we report the correct list of expected
10359 	tokens if a syntax error occurs.  So far, LAC was only supported for
10360 	the C skeleton "yacc.c".
10361 
10362 	* data/skeletons/lalr1.cc: Add LAC support.
10363 	* doc/bison.texi: Update.
10364 
10365 2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
10366 
10367 	style: readability improvements to yacc.c
10368 	* data/skeletons/yacc.c (yysyntax_error): Change the nesting of `m4`
10369 	conditions slightly to make it more readable.
10370 	The generated C code stays unchanged.
10371 
10372 2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
10373 
10374 	lalr1.cc: reduce "scope"
10375 	* data/skeletons/lalr1.cc (yy_lr_goto_state_): Make it static.
10376 
10377 2019-08-09  Adrian Vogelsgesang  <avogelsgesang@tableau.com>
10378 
10379 	lalr1.cc: fix indentation of table declarations in the header
10380 	* data/skeletons/lalr1.cc: Fix indentation of table declarations in
10381 	the generated header.
10382 
10383 2019-08-09  Akim Demaille  <akim.demaille@gmail.com>
10384 
10385 	tests: prepare LAC tests for more languages
10386 	* tests/regression.at: Use %expect to avoid warnings.
10387 	Set the keywords to facilitate running specific tests.
10388 	Use macros such as AT_YYLEX_DECLARE to facilitate tests for other
10389 	languages.
10390 	Likewise for AT_FULL_COMPILE.
10391 
10392 2019-08-09  Akim Demaille  <akim.demaille@gmail.com>
10393 
10394 	git: ignore files generated in gnulib-po
10395 	Because of them, the CI generates "-dirty" tarballs.
10396 
10397 2019-07-26  Akim Demaille  <akim.demaille@gmail.com>
10398 
10399 	diagnostics: use the modern argmatch interface
10400 	* src/complain.h (warnings): Remove Werror.
10401 	Adjust dependencies.
10402 	Sort.
10403 	Remove useless comments (see the doc in argmatch group).
10404 	* src/complain.c (warnings_args, warnings_types): Remove.
10405 	(warning_argmatch): Use argmatch_warning_value.
10406 	(warnings_print_categories): Use argmatch_warning_argument.
10407 
10408 2019-07-19  Akim Demaille  <akim.demaille@gmail.com>
10409 
10410 	doc: avoid spurious empty lines in the option table
10411 	In Texinfo. empty lines in multitable rows generate empty lines in the
10412 	output.  Avoid them altogether.
10413 
10414 	With help from Gavin Smith.
10415 	https://lists.gnu.org/archive/html/bug-texinfo/2019-07/msg00000.html
10416 
10417 	* build-aux/cross-options.pl: Separate rows with empty lines.
10418 	So, to be more readable, generate a single line for each row.
10419 	Use Perl format to this end.
10420 
10421 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10422 
10423 	--fixed-output-files: detach from --yacc
10424 	See the previous commit.  This option should be removed, -o suffices.
10425 
10426 	* src/getargs.c (FIXED_OUTPUT_FILES): New.
10427 	Add support for it.
10428 	(getargs): Define loc, and use it.
10429 	This is safer when we need to pass a pointer to a location.
10430 
10431 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10432 
10433 	%fixed-output-files: detach from %yacc
10434 	The name fixed-output-files is pretty clear: generate y.tab.c, as Yacc
10435 	does.  So let's detach this from %yacc which does more: it requires
10436 	POSIX Yacc behavior.
10437 
10438 	This directive is obsolete since December 29th 2001
10439 	8c9a50bee13474c1491df8f79f075f5214dda0d1.  It does not show in the
10440 	doc.  I don't want to spend more time on improving its diagnostics, it
10441 	could be removed just as well as far as I'm concerned.
10442 
10443 	* src/scan-gram.l, src/parse-gram.y (%fixed-output-files): Detach from
10444 	%yacc.
10445 
10446 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10447 
10448 	style: clarify control flow
10449 	* src/getargs.c (language_argmatch): Initialize msg.
10450 	Check it instead of relying on a return.
10451 
10452 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10453 
10454 	remove MS-DOS support
10455 	DJGPP support was dropped in Bison 3.3
10456 	(c239e53bab8e87b30889ac446d3b513da9951a35).
10457 
10458 	AS_FILE_NAME was introduced in
10459 	ae4048011562c250d2f3c96687422d99a38745ce.
10460 
10461 	* src/getargs.c (AS_FILE_NAME): Remove.
10462 
10463 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10464 
10465 	style: declare options in the same order as in --help
10466 	* src/getargs.c (long_options): here.
10467 
10468 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10469 
10470 	regen
10471 
10472 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10473 
10474 	gnulib: update
10475 	Contains a fix for argmatch to get proper man pages.
10476 	See https://lists.gnu.org/archive/html/bug-gnulib/2019-07/msg00038.html
10477 
10478 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10479 
10480 	style: comment change
10481 	* src/getargs.c: here.
10482 
10483 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10484 
10485 	doc: remove the --report=look-aheads alias
10486 	Years ago we moved from 'look-ahead' to 'lookahead', and that alias
10487 	was kept for backward compatibility.  But now that we use argmatch to
10488 	generate the documentation, that value clutters the doc.
10489 
10490 	* src/getargs.c (argmatch_report_args): Remove the
10491 	--report=look-aheads alias.
10492 
10493 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10494 
10495 	doc: fix inaccuracies wrt --define and --force-define
10496 	The doc says that -Dfoo=bar is the same as %define foo "bar".  It is
10497 	not: the quotes are not added (and it makes a difference).
10498 
10499 	* doc/bison.texi (Tuning the Parser): Fix the definition of -D/-F
10500 	* src/getargs.c (usage): Likewise.
10501 
10502 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10503 
10504 	doc: put diagnostics related options together
10505 	* doc/bison.texi (Diagnostics): New section.
10506 	Move --warning, --color and --style there.
10507 	* src/getargs.c (usage): Likewise.
10508 
10509 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10510 
10511 	doc: move -y's documentation into "Tuning the Parser"
10512 	Let's clarify --help: use clearer "section" names, as in the doc.
10513 	Move --yacc to where it belongs.
10514 
10515 	* src/getargs.c (usage): Rename "Parser" as "Tuning the Parser", as in
10516 	the doc.
10517 	Rename "Output" as "Output Files"
10518 	Move --yacc to "Tuning the Parser".
10519 	* doc/bison.texi: Likewise.
10520 
10521 2019-07-07  Akim Demaille  <akim.demaille@gmail.com>
10522 
10523 	doc: document colorized diagnostics
10524 	* src/getargs.c (argmatch_color_group): New.
10525 	(usage): Document --color and --style.
10526 	* doc/bison.texi (Bison Options): Split into three subsections.
10527 	Document --color and --style.
10528 
10529 2019-07-03  Akim Demaille  <akim.demaille@gmail.com>
10530 
10531 	gnulib: use new features of the argmatch module
10532 	It can now generate the usage message.
10533 
10534 	* src/complain.h (feature_fixit_parsable): Rename as...
10535 	(feature_fixit): this, for column economy.
10536 	Adjust dependencies.
10537 	(warning_usage): New.
10538 	Use it.
10539 	* src/complain.h, src/complain.c, src/getargs.h, src/getargs.c:
10540 	Use ARGMATCH_DEFINE_GROUP instead of the older interface.
10541 
10542 2019-07-02  Akim Demaille  <akim.demaille@gmail.com>
10543 
10544 	preserve the indentation in the ouput
10545 	Preserve the actions' initial indentation.  For instance, on
10546 
10547 	    | %define api.value.type {int}
10548 	    | %%
10549 	    | exp: exp '/' exp { if ($3)
10550 	    |                     $$ = $1 + $3;
10551 	    |                   else
10552 	    |                     $$ = 0; }
10553 
10554 	we used to generate
10555 
10556 	    |     { if (yyvsp[0])
10557 	    |                     yyval = yyvsp[-2] + yyvsp[0];
10558 	    |                   else
10559 	    |                    yyval = 0; }
10560 
10561 	now we produce
10562 
10563 	    |                  { if (yyvsp[0])
10564 	    |                     yyval = yyvsp[-2] + yyvsp[0];
10565 	    |                   else
10566 	    |                     yyval = 0; }
10567 
10568 	See https://lists.gnu.org/archive/html/bison-patches/2019-06/msg00012.html.
10569 
10570 	* data/skeletons/bison.m4 (b4_symbol_action): Output the code in
10571 	column 0, leave indentation matters to the C code.
10572 	* src/output.c (user_actions_output): Preserve the incoming
10573 	indentation in the output.
10574 	(prepare_symbol_definitions): Likewise for %printer/%destructor.
10575 	* tests/synclines.at (Output columns): New.
10576 
10577 2019-07-01  Akim Demaille  <akim.demaille@gmail.com>
10578 
10579 	style: prefer passing locations by pointer
10580 	The code is inconsistent: sometimes we pass by value, sometimes by
10581 	reference.  Let's stick to the last, more conventional for large
10582 	values in C.
10583 
10584 	* src/scan-code.l: Pass locations by reference.
10585 
10586 2019-06-30  Akim Demaille  <akim.demaille@gmail.com>
10587 
10588 	c++: avoid duplicate definition of YYUSE
10589 	Reported by Frank Heckenbach.
10590 	https://lists.gnu.org/archive/html/bug-bison/2019-06/msg00009.html
10591 
10592 	* data/skeletons/lalr1.cc (b4_shared_declarations): Remove the
10593 	duplicate definition of YYUSE, the other one coming from
10594 	b4_attribute_define.
10595 
10596 2019-06-27  Akim Demaille  <akim.demaille@gmail.com>
10597 
10598 	style: comment changes
10599 	* examples/c/lexcalc/local.mk, examples/c/reccalc/local.mk:
10600 	Here.
10601 
10602 2019-06-23  Akim Demaille  <akim.demaille@gmail.com>
10603 
10604 	tests: restructure for clarity
10605 	* tests/calc.at (AT_CALC_MAIN, AT_CALC_LEX): Rewrite on top of
10606 	AT_LANG_DISPATCH.
10607 
10608 2019-06-23  Akim Demaille  <akim.demaille@gmail.com>
10609 
10610 	d: track locations
10611 	* configure.ac (DCFLAGS): Pass -g.
10612 	* data/skeletons/d.m4 (b4_locations_if): Remove, let bison.m4's one do
10613 	its job.
10614 	* data/skeletons/lalr1.d (position): Leave filename empty by default.
10615 	(position::toString): Don't print empty file names.
10616 	(location::this): New ctor.
10617 	(location::toString): Match the implementations of C/C++.
10618 	(yy_semantic_null): Leave undefined, the previous implementation does
10619 	not compile.
10620 	* tests/calc.at: Improve the implementation for D.
10621 	Enable more checks, in particular using locations.
10622 	* tests/local.at (AT_YYERROR_DEFINE(d)): Fix its implementation.
10623 
10624 2019-06-23  Akim Demaille  <akim.demaille@gmail.com>
10625 
10626 	d: style changes
10627 	* data/skeletons/lalr1.d: Use a more traditional quotation scheme.
10628 	Formatting changes.
10629 
10630 2019-06-23  Akim Demaille  <akim.demaille@gmail.com>
10631 
10632 	d: put internal details inside the parser
10633 	Avoid name clashes, etc.
10634 
10635 	* data/skeletons/lalr1.d (YYStackElement, YYStack): Move inside the
10636 	parser.
10637 
10638 2019-06-22  Akim Demaille  <akim.demaille@gmail.com>
10639 
10640 	gnulib: update
10641 
10642 2019-06-22  Akim Demaille  <akim.demaille@gmail.com>
10643 
10644 	remove "experimental" warnings
10645 	Sadly enough, AFAIK, there were never answers to the "More user
10646 	feedback will help to stabilize it" sentences.  Remove them.
10647 
10648 	* src/getargs.c: IELR, canonical LR and XML output are here to stay,
10649 	and they are no more experimental than some other features.
10650 	* doc/bison.texi: Likewise.
10651 	Also remove "experimental" warning for Java, LAC, LR tuning options,
10652 	and named references.
10653 
10654 2019-06-22  Akim Demaille  <akim.demaille@gmail.com>
10655 
10656 	CI: propagate sftp failures
10657 	* .travis.yml (stage: "compile"): here.
10658 
10659 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10660 
10661 	d: honor %define parse.trace
10662 	* data/skeletons/lalr1.d: Don't generate debug code if parse.trace is
10663 	not enabled.
10664 
10665 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10666 
10667 	d: style changes
10668 	* data/skeletons/lalr1.d: here.
10669 
10670 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10671 
10672 	d: prefer delegation to duplication
10673 	* data/skeletons/lalr1.d: Delegate the construction of the scanner.
10674 
10675 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10676 
10677 	d: enable #line output
10678 	* data/skeletons/d.m4 (b4_sync_start): New.
10679 
10680 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10681 
10682 	d: style changes
10683 	* data/skeletons/lalr1.d: here.
10684 	* examples/d/calc.y: Remove incorrect support for decimal numbers.
10685 	Formatting changes.
10686 
10687 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10688 
10689 	style: reduce scopes in glr.c
10690 	* data/skeletons/glr.c: here.
10691 
10692 2019-06-20  Akim Demaille  <akim.demaille@gmail.com>
10693 
10694 	java: honor %define parse.trace
10695 	* data/skeletons/lalr1.java: Don't generate debug code if parse.trace
10696 	is not enabled.
10697 
10698 2019-06-19  Akim Demaille  <akim.demaille@gmail.com>
10699 
10700 	java: fix support for api.prefix
10701 	* data/skeletons/java.m4: here.
10702 	* tests/java.at: Check it.
10703 
10704 2019-06-19  Akim Demaille  <akim.demaille@gmail.com>
10705 
10706 	java: style changes
10707 	* data/skeletons/lalr1.java: Use more conventional function names for
10708 	Java.
10709 	Prefer < and <= to => and >.
10710 	Use the same approach for m4 quotation as in the other skeletons.
10711 	Fix indentation issues.
10712 
10713 	* tests/calc.at, tests/java.at, tests/javapush.at: Fix quotation style.
10714 	(main): Use 'args', not 'argv', the former seems more conventional and
10715 	is used elsewhere in Bison.
10716 	Prefer character literals to integers to denote characters.
10717 	* examples/java/Calc.y: Likewise.
10718 
10719 2019-06-15  Akim Demaille  <akim.demaille@gmail.com>
10720 
10721 	CI: avoid useless git costs
10722 	Travis answered favorably to my suggestion to provide a means to
10723 	disable git clone on some jobs (issue 7542).  See
10724 	https://docs.travis-ci.com/user/customizing-the-build/#disabling-git-clone.
10725 
10726 	* .travis.yml: Disable git globally, enable it for i. the compile job,
10727 	and ii. the test job on ICC which needs the install-icc.sh script.
10728 
10729 2019-06-12  Akim Demaille  <akim.demaille@gmail.com>
10730 
10731 	style: simplify strings to translate
10732 	* src/conflicts.c (log_resolution): Don't translate indentation.
10733 
10734 2019-06-12  Akim Demaille  <akim.demaille@gmail.com>
10735 
10736 	style: reduce scopes, propagate const
10737 	* src/conflicts.c (conflicts_output): here.
10738 
10739 2019-06-12  Akim Demaille  <akim.demaille@gmail.com>
10740 
10741 	style: use clearer types
10742 	* src/conflicts.c (conflicts): Array of Booleans.
10743 
10744 2019-06-11  Akim Demaille  <akim.demaille@gmail.com>
10745 
10746 	tests: prefer %empty
10747 	* tests/regression.at: here.
10748 
10749 2019-06-09  Akim Demaille  <akim.demaille@gmail.com>
10750 
10751 	CI: factor
10752 	* .travis.yml (Clang 7 libc++ and ASAN part 2): Reuse bits from "Clang
10753 	7 libc++ and ASAN part 1".
10754 
10755 2019-06-09  Akim Demaille  <akim.demaille@gmail.com>
10756 
10757 	lr0: more debug traces
10758 	* src/lr0.c (kernel_check): New.
10759 	(new_itemsets, save_reductions): Add traces.
10760 
10761 2019-06-09  Akim Demaille  <akim.demaille@gmail.com>
10762 
10763 	traces: add some colors
10764 	This is an experiment.  Maybe more styles will be used (in which case
10765 	a short-hand function will be useful), maybe it will be just reverted.
10766 	* data/bison-default.css (.traces0): New.
10767 	* src/lalr.c (lalr): Use it.
10768 
10769 2019-06-09  Akim Demaille  <akim.demaille@gmail.com>
10770 
10771 	tests: make sure the default action properly works in C++
10772 	See e3fdc370495ffdedadd6ac621e32e34a0e1a9de0: in C++ we generate
10773 	explicitly the code for the default action instead of simply copying
10774 	blindly the semantic value buffer.  This is important when copying
10775 	raw memory is not enough, as exemplified by move-only types.
10776 
10777 	This is currently tested by examples/c++/variant.yy and variant-11.yy.
10778 	But it is safer to also have a test in the main test suite.
10779 
10780 	* tests/local.at (AT_REQUIRE_CXX_STD): Fix.
10781 	(AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): Define/undefine
10782 	AT_BISON_OPTIONS.
10783 	* tests/c++.at (Default action): New.
10784 
10785 2019-06-09  Akim Demaille  <akim.demaille@gmail.com>
10786 
10787 	tests: main: support -s and -p
10788 	* tests/local.at (AT_MAIN_DEFINE(c), AT_MAIN_DEFINE(c++)): here.
10789 
10790 2019-06-04  Akim Demaille  <akim.demaille@gmail.com>
10791 
10792 	tests: remove useless support of '.' in integers
10793 	* tests/calc.at: here.
10794 	* doc/bison.texi: Avoid uninitialized variables.
10795 
10796 2019-05-29  Akim Demaille  <akim.demaille@gmail.com>
10797 
10798 	tests: refactor checks on sets
10799 	It will be convenient to check sets elsewhere.
10800 
10801 	* tests/sets.at (AT_EXTRACT_SETS): Transform into...
10802 	* tests/local.at (AT_SETS_CHECK): this.
10803 	* tests/sets.at: Adjust.
10804 
10805 2019-05-29  Akim Demaille  <akim.demaille@gmail.com>
10806 
10807 	update-test: some file names have dashes in them
10808 	* build-aux/update-test (log): Rename as...
10809 	(trace): this, to avoid clashes with the log variable.
10810 	(getargs): Clarify the type of the arguments.
10811 
10812 2019-05-26  Akim Demaille  <akim.demaille@gmail.com>
10813 
10814 	tests: take SHELL into account
10815 	Reported by Dennis Clarke.
10816 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00053.html
10817 
10818 	* examples/local.mk, tests/local.mk: here.
10819 
10820 2019-05-26  Akim Demaille  <akim.demaille@gmail.com>
10821 
10822 	gnulib: update to get gnulib translations
10823 	This update contains a fix needed for gnulib-po to work properly.
10824 	https://lists.gnu.org/archive/html/bug-gnulib/2019-05/msg00146.html
10825 
10826 2019-05-25  Akim Demaille  <akim.demaille@gmail.com>
10827 
10828 	doc: clarify the purpose of symbol_type constructors
10829 	Reported by Frank Heckenbach.
10830 	http://lists.gnu.org/archive/html/bug-bison/2019-02/msg00006.html
10831 
10832 	* doc/bison.texi (Complete Symbols): Here.
10833 
10834 2019-05-22  Akim Demaille  <akim.demaille@gmail.com>
10835 
10836 	thanks: fix an address
10837 
10838 2019-05-22  Akim Demaille  <akim.demaille@gmail.com>
10839 
10840 	maint: post-release administrivia
10841 	* NEWS: Add header line for next release.
10842 	* .prev-version: Record previous version.
10843 	* cfg.mk (old_NEWS_hash): Auto-update.
10844 
10845 2019-05-22  Akim Demaille  <akim.demaille@gmail.com>
10846 
10847 	version 3.4.1
10848 	* NEWS: Record release date.
10849 
10850 2019-05-22  Akim Demaille  <akim.demaille@gmail.com>
10851 
10852 	NEWS: update
10853 
10854 2019-05-20  Akim Demaille  <akim.demaille@gmail.com>
10855 
10856 	CI: remove useless apt-get update
10857 	The apt addons already ran it for us, it is not needed.
10858 
10859 	* .travis.yml: here.
10860 
10861 2019-05-20  Akim Demaille  <akim.demaille@gmail.com>
10862 
10863 	c++: beware of to_string portability issues
10864 	Reported by Bruno Haible.
10865 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00033.html
10866 
10867 	* m4/bison-cxx-std.m4 (_BISON_CXXSTD_11_snippet): Check it.
10868 
10869 2019-05-20  Akim Demaille  <akim.demaille@gmail.com>
10870 
10871 	doc: avoid Texinfo portability issues
10872 	Reported by Bruno Haible.
10873 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00024.html
10874 	Fixed by Karl Berry.
10875 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00034.html
10876 
10877 	* doc/bison.texi: Don't specify the langage, rely on the default.
10878 	Avoid blank pages.
10879 
10880 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10881 
10882 	examples: don't run those that require f?lex when it's not available
10883 	Reported by Bruno Haible.
10884 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00026.html
10885 
10886 	* configure.ac (FLEX_WORKS): New.
10887 	* examples/c/lexcalc/local.mk, examples/c/reccalc/local.mk: Use it.
10888 
10889 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10890 
10891 	diagnostics: don't crash when libtextstyle is installed
10892 	Reported by neok m4700.
10893 	https://lists.gnu.org/archive/html/bison-patches/2019-05/msg00025.html
10894 	https://github.com/akimd/bison/pull/11
10895 
10896 	* src/complain.c (complain_init_color): style_file_prepare _needs_ a
10897 	string as second argument.
10898 
10899 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10900 
10901 	CI: avoid useless git costs
10902 	The final gain is small: 2h2min instead 2h9min.  But that is still an
10903 	improvement.
10904 
10905 	* .travis.yml (git.depth): Make the clone very shallow.
10906 	(git.submodules): Don't clone gnulib in test jobs.
10907 	(jobs.include.compile.script): Do it here.
10908 
10909 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10910 
10911 	fix: copyable instead of copiable
10912 	Reported by Frank Heckenbach.
10913 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00020.html
10914 
10915 	* data/skeletons/lalr1.cc, doc/bison.texi: here.
10916 
10917 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10918 
10919 	maint: post-release administrivia
10920 	* NEWS: Add header line for next release.
10921 	* .prev-version: Record previous version.
10922 	* cfg.mk (old_NEWS_hash): Auto-update.
10923 
10924 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10925 
10926 	version 3.4
10927 	* NEWS: Record release date.
10928 
10929 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10930 
10931 	fix: use copiable, not copyable
10932 	Reported by Hans Åberg.
10933 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00017.html
10934 
10935 	* data/skeletons/lalr1.cc, doc/bison.texi: here.
10936 
10937 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10938 
10939 	NEWS: update for 3.4
10940 
10941 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10942 
10943 	tests: adjust to GCC9 diagnostics with a margin
10944 	* tests/synclines.at (_AT_SYNCLINES_COMPILE): Remove the margin.
10945 
10946 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10947 
10948 	regen
10949 
10950 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10951 
10952 	diagnostics: %pure-parser is obsolete
10953 	Reported by Uxio Prego.
10954 	http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00029.html
10955 
10956 	* src/scan-gram.l, src/parse-gram.y (PERCENT_PURE_PARSER)
10957 	(handle_pure_parser): New.
10958 	Issue a deprecation/update notice for %pure-parser.
10959 	* doc/bison.texi (Java Bison Interface): Don't mention %pure-parser.
10960 	* tests/actions.at, tests/input.at: Adjust.
10961 
10962 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10963 
10964 	diagnostics: clean up convention for colored diagnostics
10965 	* data/diagnostics.css: Rename as...
10966 	* data/bison-default.css: this.
10967 	Add the GPL header.
10968 	This is the convention followed by Bruno Haible in gettext.
10969 	Adjust dependencies.
10970 	* src/complain.c (complain_init_color): Use BISON_STYLE instead of
10971 	BISON_DIAGNOSTICS_STYLE.
10972 
10973 2019-05-19  Akim Demaille  <akim.demaille@gmail.com>
10974 
10975 	CI: use a pipeline: first build the tarball, then check it
10976 	Build the tarball in one job, check it in many.
10977 	Unfortunately no real gain in overall duration.
10978 	With help from Clément Démoulins.
10979 
10980 	* .travis.yml: here.
10981 	Remove all the tricks that were used to be able to boostrap on old
10982 	distros.
10983 	(before_install): Merge into 'script', because before_install applies
10984 	to all the jobs, and we don't want to run it for the 'compile' job.
10985 
10986 2019-05-18  Akim Demaille  <akim.demaille@gmail.com>
10987 
10988 	examples: fix srcdir/builddir issues
10989 	* examples/d/local.mk, examples/java/local.mk: here.
10990 
10991 2019-05-18  Akim Demaille  <akim.demaille@gmail.com>
10992 
10993 	gnulib: update
10994 	In preparation for Bison 3.4, revert to the version before this
10995 	commit:
10996 
10997 	    commit 03752516b21091cf3c4beea7e8b9bcad462d50ed
10998 	    Author: John Darrington <john@darrington.wattle.id.au>
10999 	    Date:   Sun May 12 00:42:36 2019 +0200
11000 
11001 	    version-etc: Ease translation.
11002 
11003 	    * lib/version-etc.c (version_etc_arn, emit_bug_reporting_address):
11004 	    Move URLs and formatting newlines out of translatable string.
11005 
11006 	because it changes the messages for --version, translated in
11007 	gnulib.po.  These changes are not yet available on the translation
11008 	project, so we would have a regression in the set of translated
11009 	strings.
11010 
11011 2019-05-13  Akim Demaille  <akim.demaille@gmail.com>
11012 
11013 	build: do not use $< in plain rules
11014 	It works only in implicit rules (or with GNU Make, but not with
11015 	Solaris Make).
11016 
11017 	Reported by Bruno Haible.
11018 	http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00009.html
11019 	Diagnosed thanks to Kiyoshi Kanazawa.
11020 
11021 	* examples/c/reccalc/local.mk, examples/d/local.mk,
11022 	* examples/java/local.mk: Don't use $< in non implicit rules.
11023 
11024 2019-05-12  Akim Demaille  <akim.demaille@gmail.com>
11025 
11026 	maint: post-release administrivia
11027 	* NEWS: Add header line for next release.
11028 	* .prev-version: Record previous version.
11029 	* cfg.mk (old_NEWS_hash): Auto-update.
11030 
11031 2019-05-12  Akim Demaille  <akim.demaille@gmail.com>
11032 
11033 	version 3.3.91
11034 	* NEWS: Record release date.
11035 
11036 2019-05-12  Akim Demaille  <akim.demaille@gmail.com>
11037 
11038 	NEWS: update
11039 
11040 2019-05-12  Akim Demaille  <akim.demaille@gmail.com>
11041 
11042 	gnulib: update
11043 
11044 2019-05-11  Akim Demaille  <akim.demaille@gmail.com>
11045 
11046 	style: remove incorrect comment
11047 	* src/getargs.c: here.
11048 	It's documented in getargs.h anyway.
11049 
11050 2019-05-09  Akim Demaille  <akim.demaille@gmail.com>
11051 
11052 	doc: use colors for diagnostics in TeX too
11053 	Thanks to Gavin Smith and Patrice Dumas.
11054 	http://lists.gnu.org/archive/html/help-texinfo/2019-04/msg00015.html
11055 
11056 	* doc/bison.texi (@colorWarning, @colorError, @colorNotice)
11057 	(@colorOff): Define for TeX and HTML.
11058 	(@dwarning, @derror, @dnotice): Use them.
11059 
11060 2019-05-08  Akim Demaille  <akim.demaille@gmail.com>
11061 
11062 	gnulib: update to fix location tracking in UTF-8 on Solaris
11063 	This update contains Bruno Haible's fix for the location tracking
11064 	issue reported by Kiyoshi Kanazawa.
11065 
11066 	https://lists.gnu.org/archive/html/bug-gnulib/2019-05/msg00020.html
11067 	https://lists.gnu.org/archive/html/bug-bison/2019-04/msg00020.html
11068 
11069 2019-05-08  Akim Demaille  <akim.demaille@gmail.com>
11070 
11071 	diagnostics: rename --style=debug as --color=debug
11072 	It is more consistent with --color=html, --color=test, etc.
11073 
11074 	* src/getargs.h, src/getargs.c (style_debug): Rename as...
11075 	(color_debug): this.
11076 	(getargs_colors): Rename --style=debug as --color=debug.
11077 	Adjust dependencies.
11078 
11079 2019-05-08  Akim Demaille  <akim.demaille@gmail.com>
11080 
11081 	diagnostics: support --color=html
11082 	Based on a message from Bruno Haible.
11083 	https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=fe18e92743b7226791a5f28d7c786941a1bf8cc9
11084 
11085 	This does not generate proper HTML: special characters are not escaped
11086 	for instance.  This is a hidden feature meant for Bison developers,
11087 	not end users.
11088 
11089 	* src/complain.c (complain_init_color): Support --color=html.
11090 
11091 2019-05-08  Akim Demaille  <akim.demaille@gmail.com>
11092 
11093 	tests: use %empty instead of comments
11094 	* tests/c++.at, tests/glr-regression.at: here.
11095 
11096 2019-05-08  Akim Demaille  <akim.demaille@gmail.com>
11097 
11098 	fixits: sort them before applying them
11099 	An experimental commit introduced a fix-it hint that changes comments
11100 	such as "/* empty */" into %empty.  But in some case, because
11101 	diagnostics are not necessarily emitted in order, the fixits also come
11102 	in disorder, which must never happen, as the fixes are installed in
11103 	one pass.
11104 
11105 	* src/fixits.c (fixits_register): Insert them in order.
11106 
11107 2019-05-04  Akim Demaille  <akim.demaille@gmail.com>
11108 
11109 	style: use warning_is_enabled instead of duplicating it
11110 	* src/complain.c (deprecated_directive): Here.
11111 
11112 2019-05-03  Akim Demaille  <akim.demaille@gmail.com>
11113 
11114 	fixits: be sure to preserve the action when adding %empty
11115 	Currently we remove the rhs to install %empty instead.
11116 
11117 	* src/reader.c (grammar_rule_check_and_complete): Insert the missing
11118 	%empty in front of the rhs, not in replacement thereof.
11119 	* tests/actions.at (Add missing %empty): Check that.
11120 
11121 2019-05-03  Akim Demaille  <akim.demaille@gmail.com>
11122 
11123 	tests: don't duplicate the portability prologue
11124 	* tests/actions.at, tests/input.at: Don't repeat the prologue, skip it.
11125 	* tests/diagnostics.at, tests/local.at: Comment changes.
11126 
11127 2019-05-03  Akim Demaille  <akim.demaille@gmail.com>
11128 
11129 	style: use consistently *_loc for locations
11130 	Some members are called foo_location, others are foo_loc.  Stick to
11131 	the latter.
11132 
11133 	* src/gram.h, src/location.h, src/location.c, src/output.c,
11134 	* src/parse-gram.y, src/reader.h, src/reader.c, src/reduce.c,
11135 	* src/scan-gram.l, src/symlist.h, src/symlist.c, src/symtab.h,
11136 	* src/symtab.c:
11137 	Use _loc consistently, not _location.
11138 
11139 2019-05-03  Akim Demaille  <akim.demaille@gmail.com>
11140 
11141 	style: clarify the use of symbol_lists' locations
11142 	symbol_list features a 'location' and a 'sym_loc' member.  The former
11143 	is expected to be set only for symbol_lists that denote a symbol (not
11144 	a type name), and the latter should only denote the location of the
11145 	symbol/type name.  Yet both are set, and the name "location" is too
11146 	unprecise.
11147 
11148 	* src/symlist.h, src/symlist.c (symbol_list::location): Rename as
11149 	rhs_loc for clarity.  Move it to the "section" of data valid only
11150 	for rules.
11151 	* src/reader.c, src/scan-code.l: Adjust.
11152 
11153 2019-05-03  Akim Demaille  <akim.demaille@gmail.com>
11154 
11155 	maint: update gnulib-po/.gitignore
11156 
11157 2019-04-29  Akim Demaille  <akim.demaille@gmail.com>
11158 
11159 	tests: don't require a D compiler
11160 	Reported by Kiyoshi Kanazawa.
11161 	http://lists.gnu.org/archive/html/bug-bison/2019-04/msg00018.html
11162 
11163 	* tests/atlocal.in (BISON_DC_WORKS): New.
11164 	* tests/local.at (AT_COMPILE_D): Use it.
11165 
11166 2019-04-29  Akim Demaille  <akim.demaille@gmail.com>
11167 
11168 	doc: use svg instead of png
11169 	* doc/bison.texi, doc/local.mk: here.
11170 
11171 2019-04-29  Akim Demaille  <akim.demaille@gmail.com>
11172 
11173 	doc: use colors
11174 	* doc/bison.texi (dwarning, derror, dnotice): New.
11175 	Use them in the diagnostics.
11176 	* doc/local.mk (AM_MAKEINFOFLAGS): Pass customization variables.
11177 
11178 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11179 
11180 	maint: post-release administrivia
11181 	* NEWS: Add header line for next release.
11182 	* .prev-version: Record previous version.
11183 	* cfg.mk (old_NEWS_hash): Auto-update.
11184 
11185 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11186 
11187 	version 3.3.90
11188 	* NEWS: Record release date.
11189 
11190 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11191 
11192 	package: add missing CLEANFILES
11193 	* examples: here.
11194 
11195 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11196 
11197 	build: don't generate the graph reports
11198 	Revert "build: also generate the graph
11199 	reports" (4ec413da32760defe1bf382c048d1d2f67e0b58a).  The problem is
11200 	Automake's ylwrap which does not rename y.dot with the appropriate
11201 	name.  We should completely stop using Automake's support for Yacc,
11202 	which is not something I will do right now.  So step back.
11203 
11204 	* Makefile.am (AM_YFLAGS_WITH_LINES): Don't pass --graph.
11205 
11206 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11207 
11208 	package: don't regen the parser during dist if unneeded
11209 	* Makefile.am (gen-synclines): New.
11210 
11211 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11212 
11213 	package: don't ship the sources generated from the parser
11214 	Because some of our examples use
11215 
11216 	    %C%_reccalc_SOURCES = %D%/parse.y
11217 
11218 	Automake ships parse.y and parse.c, and possibly parse.h when it
11219 	"understands" that there is one.  This is not what we want: ship only
11220 	parser.y.  Yet we still want to use Automake to compile the sources
11221 	from parser.y.  The easiest seems to use
11222 
11223 	    nodist_%C%_reccalc_SOURCES = %D%/parse.y
11224 
11225 	together with
11226 
11227 	    dist_reccalc_DATA = %D%/parse.y %D%/scan.l %D%/Makefile %D%/README.md
11228 
11229 	which guarantees that parse.y is indeed shipped.
11230 
11231 	* examples/c/calc/local.mk, examples/c/lexcalc/local.mk,
11232 	* examples/c/reccalc/local.mk: Always use nodist_*SOURCES for parsers,
11233 	let the dist_*_DATA rules do their job.
11234 
11235 2019-04-28  Akim Demaille  <akim.demaille@gmail.com>
11236 
11237 	package: various fixes for syntax-check
11238 	* cfg.mk: Disable checks where needed (e.g., we do want to check the
11239 	behavior with tabs).
11240 	(sc_at_parser_check): Remove.  Unfortunately since
11241 	a11c144609255bc6e42c2aff83548e91cbd05425 we no longer use the './'
11242 	prefix to run programs in the current directory.  That was so that we
11243 	could run Java programs like the other, although they are no run with
11244 	the `./` prefix (see 967a59d2c08a33f24708450561e2f8010b604523).
11245 	As a consequence this sc check no longer makes sense.
11246 	However, since now AT_PARSER_CHECK passes the `./` prefix itself, this
11247 	sc-check was superfluous.
11248 	* examples/c/reccalc/scan.l: Use memcpy, not strncpy.
11249 	* src/ielr.c, src/reader.c: Obfuscate "lr(0)" so that the sc-check for
11250 	"space before paren" does not fire.
11251 	* tests/diagnostics.at: Avoid space-tab, use tab-tab.
11252 
11253 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11254 
11255 	doc: clarify -fsyntax-error
11256 	* NEWS, doc/bison.texi: here.
11257 
11258 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11259 
11260 	regen
11261 
11262 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11263 
11264 	traces: use colors for the semantic values
11265 	This makes reading the trace slightly easier.  It would be very nice
11266 	to highlight the "big steps", especially reductions.  But this is a
11267 	private experiment: do not use it.
11268 
11269 	* data/diagnostics.css (value): New.
11270 	* src/parse-gram.y: Use no delimiters and no c quotation for strings
11271 	to facilitate debugging.
11272 	(tron, troff, TRACE): New.
11273 	Not very elegant, but until there is support for printf-formats in
11274 	libtextstyle, it shall be enough.
11275 
11276 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11277 
11278 	diagnostics: give m4 precise locations
11279 	Currently we pass only the columns based on the screen-width, which is
11280 	important for the carets.  But we don't pass the bytes-based columns,
11281 	which is important for the colors.  Pass both.
11282 
11283 	* src/muscle-tab.c (muscle_boundary_grow): Also pass the byte-based column.
11284 	* src/location.c (location_caret): Clarify.
11285 	(boundary_set_from_string): Adjust to the new format.
11286 	* tests/diagnostics.at (Tabulations and multibyte characters from M4): New.
11287 
11288 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11289 
11290 	diagnostics: fix locations coming from M4
11291 	Locations issued from M4 need the byte-based column for the
11292 	diagnostics to work properly.  Currently they were unassigned, which
11293 	typically resulted in partially non-colored diagnostics.
11294 
11295 	* src/location.c (boundary_set_from_string): Fix the parsed location.
11296 	* src/muscle-tab.c (muscle_percent_define_default): Set the byte values.
11297 	* tests/diagnostics.at (Locations from M4): New.
11298 
11299 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11300 
11301 	diagnostics: show locations in full when debugging
11302 	This is meant for developers, not end users, that's why I attached it
11303 	to --trace.
11304 
11305 	* src/getargs.h, src/getargs.c (trace_locations): New.
11306 	* src/location.c (location_print): Use it.
11307 
11308 2019-04-27  Akim Demaille  <akim.demaille@gmail.com>
11309 
11310 	diagnostics: use flush, not fflush
11311 	* src/complain.c: here.
11312 
11313 2019-04-25  Akim Demaille  <akim.demaille@gmail.com>
11314 
11315 	build: use gettext-h
11316 	We were using the gnulib's gettext module with tricks in
11317 	bootstrap.conf to avoid useless files.  Instead, use gnulib's
11318 	gettext-h module.
11319 
11320 	* .travis.yml: Force Gettext 0.18.3 on Trusty.
11321 	* bootstrap.conf: Use gettext-h instead of gettext.
11322 	(excluded_files): Remove.
11323 	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.
11324 
11325 2019-04-25  Akim Demaille  <akim.demaille@gmail.com>
11326 
11327 	NEWS: update
11328 
11329 2019-04-25  Akim Demaille  <akim.demaille@gmail.com>
11330 
11331 	api.location.type: support it in C
11332 	Reported by Balázs Scheidler.
11333 
11334 	* data/skeletons/c.m4 (b4_location_type_define): Use api.location.type
11335 	if defined.
11336 	* doc/bison.texi: Document it.
11337 	* tests/local.at (AT_C_IF, AT_LANG_CASE): New.
11338 	Support Span in C.
11339 	* tests/calc.at (Span): Convert it to be usable in C and C++.
11340 	Check api.location.type with yacc.c and glr.c.
11341 
11342 2019-04-24  Akim Demaille  <akim.demaille@gmail.com>
11343 
11344 	updates: insert/remove %empty
11345 	* src/reader.c (grammar_rule_check_and_complete): Generate fixits for
11346 	adding/removing %empty.
11347 	* tests/actions.at, tests/diagnostics.at, tests/existing.at: Adjust.
11348 
11349 2019-04-24  Akim Demaille  <akim.demaille@gmail.com>
11350 
11351 	regen
11352 
11353 2019-04-24  Akim Demaille  <akim.demaille@gmail.com>
11354 
11355 	diagnostics: better rule locations
11356 	The "identifier and colon" of a rule is implemented as a single token,
11357 	but whose location is only that of the identifier (so that messages
11358 	about the lhs of a rule are accurate).  When reducing empty rules, the
11359 	default location is the single point location on the end of the
11360 	previous symbol.  As a consequence, when Bison parses a grammar, the
11361 	location of the right-hand side of an empty rule is based on the
11362 	lhs, *independently of the position of the colon*.  And the colon can
11363 	be way farther, separated by comments, white spaces, including empty
11364 	lines.
11365 
11366 	As a result, some messages look really bad.  For instance:
11367 
11368 	    $ cat foo.y
11369 	    %%
11370 	    foo     : /* empty */
11371 	    bar
11372 	    : /* empty */
11373 
11374 	gives
11375 
11376 	    $ bison -Wall foo.y
11377 	    foo.y:2.4: warning: empty rule without %empty [-Wempty-rule]
11378 	        2 | foo     : /* empty */
11379 	          |    ^
11380 	    foo.y:3.4: warning: empty rule without %empty [-Wempty-rule]
11381 	        3 | bar
11382 	          |    ^
11383 
11384 	The carets are not at the right column, not even the right line.
11385 
11386 	This commit passes the colon "again" after the "id colon" token, which
11387 	gives more accurate locations for these messages:
11388 
11389 	    $ bison -Wall foo.y
11390 	    foo.y:2.10: warning: empty rule without %empty [-Wempty-rule]
11391 	        2 | foo     : /* empty */
11392 	          |          ^
11393 	    foo.y:4.2: warning: empty rule without %empty [-Wempty-rule]
11394 	        4 | : /* empty */
11395 	          |  ^
11396 
11397 	* src/scan-gram.l (SC_AFTER_IDENTIFIER): Rollback the colon, so that
11398 	we scan it again afterwards.
11399 	(INITIAL): Scan colons.
11400 	* src/parse-gram.y (COLON): New.
11401 	(rules): Parse the colon after the rule's id_colon (and possible
11402 	named reference).
11403 	* tests/actions.at, tests/conflicts.at, tests/diagnostics.at,
11404 	* tests/existing.at: Adjust.
11405 
11406 2019-04-24  Akim Demaille  <akim.demaille@gmail.com>
11407 
11408 	fixits: track byte-columns, not character-columns
11409 	Because the fix-its were ready the character-based columns, but were
11410 	applied on byte-based columns, the result with multibyte characters or
11411 	tabs could be "interesting".  For instance
11412 
11413 	    %fixed-output_files
11414 	            %fixed_output-files
11415 	    %fixed-output-files
11416 	    %define api.prefix {foo}
11417 	    %no-default-prec
11418 
11419 	would give
11420 
11421 	         %fixed-%fixed-output-files  %fixed_output-files
11422 	    %fixed-orefix= "foo"
11423 	    o_default-prec
11424 
11425 	* src/fixits.c (fixit_print, fixits_run): Work on byte-base columns.
11426 	* tests/input.at: Check it.
11427 
11428 2019-04-24  Akim Demaille  <akim.demaille@gmail.com>
11429 
11430 	diagnostics: expose a means to know whether a warning is enabled
11431 	* src/complain.h, src/complain.c (warning_is_enabled): New.
11432 
11433 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11434 
11435 	gnulib: let it use its own PO domain
11436 	See
11437 	https://www.gnu.org/software/gnulib/manual/html_node/Localization.html.
11438 
11439 	* bootstrap.conf: Create gnulib-po.
11440 	* Makefile.am, configure.ac: Use it.
11441 	* po/POTFILES.in: Remove files now in gnulib.
11442 	* src/main.c: Open the bison-gnulib domain.
11443 
11444 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11445 
11446 	diagnostics: don't try to quote special files
11447 	Based on a report by Todd Freed.
11448 	http://lists.gnu.org/archive/html/bug-bison/2019-04/msg00000.html
11449 	See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90034
11450 
11451 	* src/location.c (caret_info): Also track the file name.
11452 	(location_caret): Don't quote special files.
11453 
11454 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11455 
11456 	diagnostics: document the change of format
11457 	* doc/bison.texiL Adjust output.
11458 	Also, Graphviz has no uppercsae V.
11459 	* NEWS: Explain the format change.
11460 
11461 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11462 
11463 	diagnostics: copy GCC9's format
11464 	Currently, when we quote the source file, we indent it with one space,
11465 	and preserve tabulations, so there is a discrepancy and the visual
11466 	rendering is bad.  One way out is to indent with a tab instead of a
11467 	space, but then this space can be used for more information.  This is
11468 	what GCC9 does.  Let's play copy cats.
11469 
11470 	See
11471 	https://lists.gnu.org/archive/html/bison-patches/2019-04/msg00025.html
11472 	https://developers.redhat.com/blog/2019/03/08/usability-improvements-in-gcc-9/
11473 	https://gcc.gnu.org/onlinedocs/gccint/Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics
11474 
11475 	* src/location.c (location_caret): Prefix quoted lines with the line
11476 	number and a pipe, fitting 8 columns.
11477 
11478 	* tests/actions.at, tests/c++.at, tests/conflicts.at,
11479 	* tests/diagnostics.at, tests/input.at, tests/java.at,
11480 	* tests/named-refs.at, tests/reduce.at, tests/regression.at,
11481 	* tests/sets.at: Adjust expectations.
11482 	Partly by "./build-aux/update-test tests/testsuite.dir/*/testsuite.log"
11483 	repeatedly, and partly by hand.
11484 
11485 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11486 
11487 	diagnostics: fix the handling of multibyte characters
11488 	This is a pity: efforts were invested in computing correctly the
11489 	number of screen columns consumed by multibyte characters, but the
11490 	routines that do that were fed by single-byte inputs...
11491 
11492 	As a consequence Bison never displayed correctly locations when there
11493 	are multibyte characters.
11494 
11495 	* src/scan-gram.l (mbchar): New.
11496 	Use it instead of . in the catch-all clause.
11497 	* tests/diagnostics.at (Tabulations): Enhance into...
11498 	(Tabulations and multibyte characters): this.
11499 
11500 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11501 
11502 	diagnostics: check the handling of tabulations
11503 	* tests/diagnostics.at (Tabulations): here.
11504 
11505 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11506 
11507 	diagnostics: fix styling issues
11508 	Single point locations (equal boundaries) are troublesome, and we were
11509 	incorrectly ending the style in their case.  Which results in an abort
11510 	in libtextstyle.
11511 
11512 	There is also a confusion between columns as displayed on the
11513 	screen (which take into account multibyte characters and tabulations),
11514 	and the number of bytes.  Counting the screen-column
11515 	incrementally (character by character) is uneasy (because of multibyte
11516 	characters), and I don't want to maintain a buffer of the current line
11517 	when displaying the diagnostic.  So I believe the simplest solution is
11518 	to track the byte number in addition to the screen column.
11519 
11520 	* src/location.h, src/location.c (boundary): Add the byte-column.
11521 	Adjust dependencies.
11522 	* src/getargs.c, src/scan-gram.l: Adjust.
11523 	* tests/diagnostics.at: Check zero-width locations.
11524 
11525 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11526 
11527 	diagnostics: check the styling
11528 	Enable checking of styles even when libtextstyle is not installed.
11529 
11530 	* src/getargs.h, src/getargs.c (style_debug): New.
11531 	(getargs_colors): Set it when --style=debug.
11532 	* src/complain.c (begin_use_class, end_use_class): Use it.
11533 	* tests/diagnostics.at: New.
11534 
11535 2019-04-23  Akim Demaille  <akim.demaille@gmail.com>
11536 
11537 	TODO: update
11538 	Let's prepare 3.4 with more or less what we have.  Schedule some
11539 	features for 3.5 and 3.6.  Remove obsolete stuff.
11540 
11541 2019-04-19  Akim Demaille  <akim.demaille@gmail.com>
11542 
11543 	doc: sort the warning categories
11544 	* doc/bison.texi, src/getargs.c: here.
11545 
11546 2019-04-19  Akim Demaille  <akim.demaille@gmail.com>
11547 
11548 	style: formatting changes
11549 	* tests/actions.at, tests/calc.at, tests/input.at: here.
11550 
11551 2019-04-19  Akim Demaille  <akim.demaille@gmail.com>
11552 
11553 	graphviz: move constant computation out of a loop
11554 	* src/graphviz.c (output_red): here.
11555 
11556 2019-04-18  Akim Demaille  <akim.demaille@gmail.com>
11557 
11558 	diagnostics: fix memory leak in libtextstyle
11559 	* src/complain.h, src/complain.c (complain_free): New.
11560 	* src/main.c: Use it.
11561 
11562 2019-04-17  Akim Demaille  <akim.demaille@gmail.com>
11563 
11564 	tests: remove useless feature
11565 	* tests/calc.at (read_signed_integer): Rename as...
11566 	(read_integer): this.
11567 	We never read signs here.
11568 
11569 2019-04-14  Akim Demaille  <akim.demaille@gmail.com>
11570 
11571 	traces: make closure() less verbose
11572 	* src/getargs.h, src/getargs.c (trace_closure): New.
11573 	* src/closure.c (closure): Use it.
11574 
11575 2019-04-14  Akim Demaille  <akim.demaille@gmail.com>
11576 
11577 	build: also generate the graph reports
11578 	* Makefile.am (AM_YFLAGS_WITH_LINES): here.
11579 
11580 2019-04-12  Akim Demaille  <akim.demaille@gmail.com>
11581 
11582 	yacc.c: minor style change
11583 	* data/skeletons/yacc.c: To improve consistency with other similar
11584 	pieces of code.
11585 
11586 2019-04-12  Akim Demaille  <akim.demaille@gmail.com>
11587 
11588 	style: scope reduction in lalr.c
11589 	* src/lalr.c (initialize_goto_follows): here.
11590 
11591 2019-04-12  Akim Demaille  <akim.demaille@gmail.com>
11592 
11593 	style: comment changes
11594 	* src/closure.h, src/closure.c, src/lalr.c: here.
11595 
11596 2019-04-12  Akim Demaille  <akim.demaille@gmail.com>
11597 
11598 	traces: improve logs
11599 	* src/lalr.c: Move logs to a better place to understand the chronology
11600 	of events.
11601 	* src/symlist.c (symbol_list_syms_print): Don't dump core on type
11602 	elements.
11603 
11604 2019-04-07  Akim Demaille  <akim.demaille@gmail.com>
11605 
11606 	doc: minor fixes
11607 	* doc/bison.texi: Use consistently $ and @kbd in shell examples.
11608 	Prefer sticking to English words: output and file instead of outfile
11609 	and infile.
11610 
11611 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11612 
11613 	regen
11614 
11615 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11616 
11617 	bison: use no-lines
11618 	The 'regen' commit in Bison's history are a nuisance.  They are
11619 	especially big because of the #lines.  Let's generate our parse
11620 	without these lines in the repository, but generate them in the
11621 	tarball.
11622 
11623 	* Makefile.am (AM_YFLAGS_WITH_LINES): New.
11624 	(AM_YFLAGS): Use it.
11625 	(dist-hook): Regenerate the parser with #lines.
11626 
11627 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11628 
11629 	no-lines: avoid leaving an empty line instead of the syncline
11630 	Currently, with --no-lines, instead of "#line file line\n", we emit
11631 	"\n".  Let's emit nothing.
11632 
11633 	* data/skeletons/bison.m4 (b4_syncline): Emit at end-of-line when enabled.
11634 	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc,
11635 	* data/skeletons/lalr1.cc, src/output.c: Use dnl after b4_syncline to
11636 	avoid spurious empty lines.
11637 
11638 	* tests/synclines.at (Sync Lines): Make sure that --no-lines is like
11639 	grep -v #line.
11640 	* tests/calc.at: Make sure that a rich grammar file behaves properly
11641 	with %no-lines.
11642 
11643 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11644 
11645 	java: use full locations for diagnostics about destructors
11646 	Currently we use the syncline to report errors about a symbol's
11647 	destructor/printer.  This is not accurate (only file and line), and
11648 	this is incorrect: the file name is double quotes (a recent change,
11649 	needed to make sure we escape properly double quotes in it).  And
11650 	worst of all: with --no-line, b4_syncline expands to nothing.
11651 
11652 	Rather, push the locations into the backend, and use them.
11653 
11654 	* src/muscle-tab.h, src/muscle-tab.c (muscle_location_grow): Make it
11655 	public.
11656 	* src/output.c (prepare_symbol_definitions): Use it to pubish the
11657 	location of the printer and destructor.
11658 	* data/skeletons/lalr1.java: Use complain_at instead of complain.
11659 	* tests/java.at (Java invalid directives): Adjust expectations.
11660 	* data/skeletons/bison.m4 (b4_symbol_action_location): Remove.
11661 	We should not use b4_syncline this way.
11662 
11663 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11664 
11665 	java: prefer errors to fatal errors
11666 	Fatal errors are inconvenient, and should be reserved to cases where
11667 	we cannot continue.  Here, it could even be warnings actually: these
11668 	directives will simply be ignored.
11669 
11670 	* data/skeletons/lalr1.java: Prefer error (b4_complain) to fatal
11671 	errors (b4_fatal).
11672 	* tests/java.at (Java invalid directives): New.
11673 
11674 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11675 
11676 	tests: formatting changes
11677 	* tests/javapush.at: here.
11678 
11679 2019-04-03  Akim Demaille  <akim.demaille@gmail.com>
11680 
11681 	lalr: offer more flexibility in debugging routines
11682 	* src/state.h, src/state.c (state_transitions_print): New, extracted
11683 	from...
11684 	(state_transitions_set): here.
11685 
11686 2019-03-31  Akim Demaille  <akim.demaille@gmail.com>
11687 
11688 	lalr: don't overbook memory
11689 	I never understood why we book ngotos+1 slots for relations between
11690 	gotos: there are at most ngotos images, not ngotos+1 (and "includes"
11691 	does have cases where a goto is in relation with itself, so it's not
11692 	ngotos-1).
11693 
11694 	Maybe bbf37f2534a8e5a6b4e28047f0a10903e6dc73f9 explains the +1: a bug
11695 	left us register a goto several times on occasion, and the +1 might
11696 	have been a means to avoid this problem in most cases.  Now that this
11697 	bug is addressed, we should no longer overbook memory, if only for the
11698 	clarity of the code ("why ngotos+1 instead of ngotos?").
11699 
11700 	* src/lalr.c: A goto has at most ngotos images, not ngotos+1.
11701 	While at it, avoid useless repeated call to map_goto introduced in
11702 	bbf37f2534a8e5a6b4e28047f0a10903e6dc73f9.
11703 
11704 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11705 
11706 	lalr: show lookback for debug
11707 	* src/lalr.c (lookback_print): New.
11708 	(build_relations): Use it.
11709 	Also show edges.
11710 
11711 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11712 
11713 	diagnostics: don't crash when declaring the error token as an nterm
11714 	Reported by wcventure.
11715 	http://lists.gnu.org/archive/html/bug-bison/2019-03/msg00008.html
11716 
11717 	* src/symtab.c (complain_class_redeclared): Don't print empty
11718 	locations.
11719 	There can only be empty locations for predefined symbols.  And the
11720 	only symbol that is lexically available is the error token.  So this
11721 	appears to be the only possible way to have an error involving an
11722 	empty location.
11723 	* tests/input.at (Symbol class redefinition): Check it.
11724 
11725 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11726 
11727 	lalr: fix segmentation violation
11728 	The "includes" relation [DeRemer 1982] is between gotos, so of course,
11729 	for a given goto, there cannot be more that ngotos (number of gotos)
11730 	images.  But we manipulate the set of images of a goto as a list,
11731 	without checking that an image was not already introduced.  So we can
11732 	"register" way more images than ngotos, leading to a crash (heap
11733 	buffer overflow).
11734 
11735 	Reported by wcventure.
11736 	http://lists.gnu.org/archive/html/bug-bison/2019-03/msg00007.html
11737 
11738 	For the records, this bug is present in the first committed version of
11739 	Bison.
11740 
11741 	* src/lalr.c (build_relations): Don't insert the same goto several
11742 	times.
11743 	* tests/sets.at (Build Relations): New.
11744 
11745 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11746 
11747 	state: more debug traces
11748 	* src/state.c (state_transitions_set): Show the transitions.
11749 
11750 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11751 
11752 	style: rename variables for consistency
11753 	* src/lalr.c: Use trans for transitions, and reds for reductions, as
11754 	elsewhere in the code.
11755 	* src/state.h: Comment changes.
11756 
11757 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11758 
11759 	gram: fix and improve log message
11760 	It seems that not many people read these logs: the error was
11761 	introduced in 2001 (3067fbef531832df1e43bbd28787655808361eed),
11762 
11763 	* src/gram.c (grammar_dump): Fix the headers of the table: remove
11764 	duplicate display of "Ritem Range".
11765 	While at it, remove duplicate display of the rule number (and remove
11766 	an incorrect comment about it: these numbers _are_ equal).
11767 	* tests/sets.at (Reduced Grammar): Use useless rule, nterm and token
11768 	in the example.
11769 
11770 2019-03-30  Akim Demaille  <akim.demaille@gmail.com>
11771 
11772 	tests: add a tool for mass updates
11773 	When we update some output format, too many adjustements must be made
11774 	by hand.  This script updates most tests based on the actual output
11775 	made during the tests.
11776 
11777 	* build-aux/update-test: New.
11778 
11779 2019-03-25  Akim Demaille  <akim.demaille@gmail.com>
11780 
11781 	style: remove now useless _GL_UNUSED
11782 	* src/getargs.c (getargs_colors): Here.
11783 	Useless since 4d34b06fb3a38eb050439084476a6b3e292c5680.
11784 
11785 2019-03-24  Theophile Ranquet  <ranquet@lrde.epita.fr>
11786 
11787 	tables: use bitsets for a performance boost
11788 	Suggested by Yuri at
11789 	<http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00000.html>.
11790 
11791 	The improvement is marginal for most grammars, but notable for large
11792 	grammars (e.g., PosgreSQL's postgre.y), and very large for the
11793 	sample.y grammar submitted by Yuri in
11794 	http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00012.html.
11795 	Measured with --trace=time -fsyntax-only.
11796 
11797 	parser action tables    postgre.y     sample.y
11798 	Before                 0,129 (44%)  37,095 (99%)
11799 	After                  0,117 (42%)   5,046 (93%)
11800 
11801 	* src/tables.c (pos): Replace this set of integer coded as an unsorted
11802 	array or integers with...
11803 	(pos_set): this bitset.
11804 
11805 2019-03-24  Akim Demaille  <akim.demaille@gmail.com>
11806 
11807 	yacc.c: don't suggest api.header.include when --defines is not used
11808 	See 4e19ab9fcd28c9361ff08f46e5e353effb0a0520: the suggestion to
11809 	include the header file should not be emitted when the header is not
11810 	generated.
11811 
11812 	* data/skeletons/yacc.c: Here.
11813 
11814 2019-03-24  Akim Demaille  <akim.demaille@gmail.com>
11815 
11816 	reader: clarify variable names
11817 	* src/reader.c (grammar_rule_check_and_complete): When 'p' and 'lhs'
11818 	are aliases, prefer the latter, for clarity and consistency.
11819 	(grammar_current_rule_begin): Avoid 'p', current_rule suffices.
11820 	* src/gram.h, src/gram.c: Comment changes.
11821 
11822 	ptdr#	calc.tab.c
11823 
11824 2019-03-24  Akim Demaille  <akim.demaille@gmail.com>
11825 
11826 	diagnostics: style changes
11827 	* src/location.c (location_caret): Clarify a bit.
11828 
11829 2019-03-24  Akim Demaille  <akim.demaille@gmail.com>
11830 
11831 	diagnostics: use gnulib's libtextstyle-optional
11832 	Bruno Haible just added a default implementation of libtextstyle's
11833 	interface when the library is not available.
11834 	https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00025.html
11835 
11836 	* gnulib: Update.
11837 	* bootstrap.conf: Replace libtextstyle with libtextstyle-optional.
11838 	* src/complain.c, src/getargs.c: Remove now useless cpp guards.
11839 
11840 2019-03-23  Akim Demaille  <akim.demaille@gmail.com>
11841 
11842 	diagnostics: fix handling of style in limit cases
11843 	* src/location.c (location_caret): Beware of the cases where the start
11844 	and end columns are the same, or when the location is multilines.
11845 
11846 2019-03-23  Akim Demaille  <akim.demaille@gmail.com>
11847 
11848 	warnings: don't use _Noreturn with G++ 4.7 in C++98 mode
11849 	The timevar and bitset modules now use the c99 module which causes
11850 	$CXX to now include -std=gnu++11 when possible.  Unfortunately, G++
11851 	4.7 does not implement [[noreturn]] in C++11 mode, so our tests of
11852 	glr.cc (which uses _Noreturn) fail with
11853 
11854 	    input.cc:954:1: error: expected unqualified-id before '[' token
11855 
11856 	right before [[noreturn]].  4.8 works fine.
11857 
11858 	* data/skeletons/c.m4 (b4_attribute_define): Do not use [[noreturn]]
11859 	with GCC 4.7.
11860 
11861 2019-03-17  Akim Demaille  <akim.demaille@gmail.com>
11862 
11863 	d: tests: use more a natural approach for the scanner
11864 	See f8408562f8439654261418406296e4108d2a995f.
11865 
11866 	* tests/calc.at: Stop imitating the C API.
11867 	Prepare more tests to run in the future.
11868 	%verbose works as expected (what a surprise, it's unrelated to the
11869 	skeleton...).
11870 
11871 2019-03-17  Akim Demaille  <akim.demaille@gmail.com>
11872 
11873 	regen
11874 
11875 2019-03-17  Akim Demaille  <akim.demaille@gmail.com>
11876 
11877 	style: rename spec_defines_file as spec_header_file
11878 	The variable spec_defines_file denotes the name of the generated
11879 	header.  Its name is derived from --defines/%defines, whose name in
11880 	turn is derived from the fact that the header, in Yacc, contained the
11881 
11882 	Not only does the header now contain a lot more than just the token
11883 	definitions, but we no longer even generate macros, but an enum...
11884 
11885 	Let's modernize our vocabulary.
11886 
11887 	* src/files.h, src/files.c (spec_defines_file): Rename as...
11888 	(spec_header_file): this.
11889 
11890 2019-03-17  Akim Demaille  <akim.demaille@gmail.com>
11891 
11892 	yacc.c: provide a means to include the header in the implementation
11893 	Currently when --defines is used, we generate a header, and paste an
11894 	exact copy of it into the generated parser implementation file.  Let's
11895 	provide a means to #include it instead.
11896 
11897 	We don't do it by default because of the Autotools' ylwrap.  This
11898 	program wraps invocations of yacc (that uses a fixed output name:
11899 	y.tab.c, y.tab.h, y.output) to support a more modern naming
11900 	scheme (dir/foo.y -> dir/foo.tab.c, dir/foo.tab.h, etc.).  It does
11901 	that by renaming the generated files, and then by running sed to
11902 	propagate these renamings inside the files themselves.
11903 
11904 	Unfortunately Automake's Makefiles uses Bison as if it were Yacc (with
11905 	--yacc or with -o y.tab.c) and invoke bison via ylwrap.  As a
11906 	consequence, as far as Bison is concerned, the output files are
11907 	y.tab.c and y.tab.h, so it emits '#include "y.tab.h"'.  So far, so
11908 	good.  But now ylwrap processes this '#include "y.tab.h"' into
11909 	'#include "dir/foo.tab.h"', which is not guaranteed to always work.
11910 
11911 	So, let's do the Right Thing when the output file is not y.tab.c, in
11912 	which case the user should %define api.header.include.  Binding this
11913 	behavior to --yacc is tempting, but we recently told people to stop
11914 	using --yacc (as it also enables the Yacc warnings), but rather to use
11915 	-o y.tab.c.
11916 
11917 	Yacc.c is the only skeleton concerned: all the others do include their
11918 	header.
11919 
11920 	* data/skeletons/yacc.c (b4_header_include_if): New.
11921 	(api.header.include): Provide a default value when the output is not
11922 	y.tab.c.
11923 	* src/parse-gram.y (api.header.include): Define.
11924 
11925 2019-03-17  Akim Demaille  <akim.demaille@gmail.com>
11926 
11927 	d: don't link against LIBS
11928 	* tests/local.at (AT_COMPILE_D): Don't pass LIBS, dmd does not like
11929 	being given -lintl.
11930 
11931 2019-03-17  Akim Demaille  <akim.demaille@gmail.com>
11932 
11933 	address warnings from GCC's UB sanitizer
11934 	Running with CC='gcc-mp-8 -fsanitize=undefined' revealed Undefined
11935 	Behaviors.
11936 	https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00008.html
11937 
11938 	* src/state.c (errs_new): Don't call memcpy with NULL as source.
11939 	* src/location.c (add_column_width): Don't assume that the column
11940 	argument is nonnegative: the scanner sometimes "backtracks" (e.g., see
11941 	ROLLBACK_CURRENT_TOKEN and DEPRECATED) in which case we can have
11942 	negative column numbers (temporarily).
11943 	Found in test 3 (Invalid inputs).
11944 
11945 2019-03-16  Akim Demaille  <akim.demaille@gmail.com>
11946 
11947 	diagnostics: use libtextstyle for colored output
11948 	Bruno Haible released libtextstyle, a library for colored output based
11949 	on CSS.  Let's use it to generate colored diagnostics, provided
11950 	libtextstyle is available.
11951 
11952 	See
11953 	https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00176.html
11954 	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00073.html
11955 	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00084.html
11956 	https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00007.html
11957 
11958 	* bootstrap.conf (gnulib_modules): Use libtextstyle when possible.
11959 	* data/diagnostics.css: New.
11960 	* src/complain.c (begin_use_class, end_use_class, flush)
11961 	(severity_style, complain_init_color): New.
11962 	Use them.
11963 	* src/getargs.c (getargs_colors): New.
11964 	(getargs): Use it.
11965 	Skip --color and --style.
11966 	* src/location.h, src/location.c (location_print): Use a style.
11967 
11968 	* tests/bison.in: Force --color=yes when stderr is a tty.
11969 	* tests/local.at: Disable colors during the test suite.
11970 	* tests/input.at: Adjust expectations to the extra options passed on
11971 	the command line.
11972 
11973 2019-03-16  Akim Demaille  <akim.demaille@gmail.com>
11974 
11975 	style: clean up complain.c
11976 	* src/complain.c (severity_prefix): New.
11977 	(error_message): Take the severity as argument, instead of the prefix.
11978 
11979 2019-03-16  Akim Demaille  <akim.demaille@gmail.com>
11980 
11981 	yacc.c: emit the header before the implementation file
11982 	* data/skeletons/yacc.c: here.
11983 	This is more logical for the time stamps, but it's also required by
11984 	following patches: the shared declarations are also in charge of
11985 	handling api.value.type=union.  So far, they are run in the
11986 	implementation file in both cases (with or without header).  But if we
11987 	run them only in the header, then the implementation file is emited
11988 	with incorrect support for api.value.type=union.
11989 	Arguably we should not have such dependencies.  This is because we
11990 	have side-effects in our backend (redefining the symbols' type and
11991 	type_tag).  In the future we should find a better solution for this,
11992 	without sacrificing the independence of the backend from bison
11993 	itself (i.e., I don't think we should handle api.value.type=union in
11994 	bison, leave it to m4).
11995 
11996 2019-03-16  Akim Demaille  <akim.demaille@gmail.com>
11997 
11998 	simplify the generated #line
11999 	Currently we generate things like:
12000 
12001 	    #line 683 "src/parse-gram.y" /* yacc.c:316  */
12002 
12003 	The first part is of course very important: compilers point the users
12004 	to their grammar file rather than into the generated parser.  The
12005 	second part points to the place in the skeletons that generated this
12006 	piece of code.
12007 
12008 	This dependency on the Bison skeletons generates lots of useless 'git
12009 	diff'.  This location is useless for the regular user (who does not
12010 	care about the skeletons) and is actually not useful for Bison
12011 	developpers too (I never used this to locate the code in skeletons
12012 	that generated output).  So disable it completely.  If someone thinks
12013 	this was actually useful, a %define variable should be provided to
12014 	control the level of verbosity of '#line', in replacement of
12015 	--no-lines.
12016 
12017 	So now, generate:
12018 
12019 	    #line 683 "src/parse-gram.y"
12020 
12021 	* data/skeletons/bison.m4 (b4_sync_end): Emit nothing.
12022 
12023 2019-03-13  Akim Demaille  <akim.demaille@gmail.com>
12024 
12025 	gnulib: update
12026 
12027 2019-03-13  Akim Demaille  <akim.demaille@gmail.com>
12028 
12029 	tests: remove duplicates
12030 	* tests/regression.at (Invalid inputs, Invalid inputs with {}):
12031 	Remove, there are exact copies of them in input.at.
12032 
12033 2019-03-02  Akim Demaille  <akim.demaille@gmail.com>
12034 
12035 	d: simplify the API to build the scanner of the example
12036 	* examples/d/calc.y (calcLexer): Add an overload for File.
12037 	Use it.
12038 
12039 2019-03-01  H. S. Teoh  <hsteoh@quickfur.ath.cx>
12040 
12041 	d: modernize the scanner of the example
12042 	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00121.html
12043 
12044 	* examples/d/calc.y (CalcLexer): Stop shoehorning C's API into D: use
12045 	a range based approach in the scanner, rather than some imitation of
12046 	getc/ungetc.
12047 	(main): Adjust.
12048 
12049 2019-03-01  Akim Demaille  <akim.demaille@gmail.com>
12050 
12051 	d: tests: use fewer global variables
12052 	* tests/calc.at: Move 'input' into the scanner.
12053 
12054 2019-02-28  Akim Demaille  <akim.demaille@gmail.com>
12055 
12056 	lalr: clarify the count of lookaheads
12057 	* src/lalr.c (state_lookahead_tokens_count): Remove wierd `+=` that is
12058 	actually an `=`.
12059 
12060 2019-02-28  Akim Demaille  <akim.demaille@gmail.com>
12061 
12062 	lalr: clarify the API
12063 	* src/state.h, src/state.c (state_reduction_find): Clarify.
12064 	Die on errors.
12065 	* src/lalr.c (goto_list_new): New.
12066 	Use it.
12067 
12068 2019-02-28  Akim Demaille  <akim.demaille@gmail.com>
12069 
12070 	lalr: improve traces
12071 	* src/lalr.c (follows_print): Just print the symbol tag.
12072 	Take and print a title.
12073 	Indent the output.
12074 	Use it to print the various steps of the computation.
12075 	(lookahead_tokens_print): Fix a lie: the number displayed is not the
12076 	number of tokens.
12077 	Don't display states that don't even have reductions.
12078 
12079 2019-02-27  Akim Demaille  <akim.demaille@gmail.com>
12080 
12081 	lalr: print the 'reads' relation
12082 	* src/relation.h, src/relation.c (relation_print): Accept and use a
12083 	title.
12084 	Don't print empty rows.
12085 	Indent the output.
12086 	Adjust dependencies.
12087 	* src/lalr.c (initialize_goto_follows): Print 'reads' in traces.
12088 
12089 2019-02-27  Akim Demaille  <akim.demaille@gmail.com>
12090 
12091 	style: comment changes
12092 	* src/lr0.c: here.
12093 
12094 2019-02-26  Akim Demaille  <akim.demaille@gmail.com>
12095 
12096 	dlang: initial changes to run the calc tests on it
12097 	* configure.ac (DCFLAGS): Define.
12098 	* tests/atlocal.in: Receive it.
12099 	* data/skeletons/d.m4 (api.parser.class): Remove spurious YY.
12100 	* data/skeletons/lalr1.d (yylex): Return an int instead of a
12101 	YYTokenType, so that we can use characters as tokens.
12102 	* examples/d/calc.y: Adjust.
12103 	* tests/local.at: Initial support for D.
12104 	(AT_D_IF, AT_DATA_GRAMMAR(D), AT_YYERROR_DECLARE(d))
12105 	(AT_YYERROR_DECLARE_EXTERN(d), AT_YYERROR_DEFINE(d))
12106 	(AT_MAIN_DEFINE(d), AT_COMPILE_D, AT_LANG_COMPILE(d), AT_LANG_EXT(d)):
12107 	New.
12108 	* tests/calc.at: Initial support for D.
12109 	* tests/headers.at
12110 
12111 2019-02-26  Akim Demaille  <akim.demaille@gmail.com>
12112 
12113 	d: improve the example
12114 	* examples/d/calc.y: Exit with failure on errors.
12115 	Remove useless operators (=, !) meant for the test suite.
12116 	Add unary + for symmetry.
12117 	* examples/d/calc.test: Adjust expectations.
12118 
12119 2019-02-26  Akim Demaille  <akim.demaille@gmail.com>
12120 
12121 	tests: style changes
12122 	* tests/local.at AT_YYERROR_DEFINE(java): Use more consistent names.
12123 
12124 2019-02-25  Akim Demaille  <akim.demaille@gmail.com>
12125 
12126 	style: eliminate useless indirection
12127 	* src/relation.h, src/relation.c (relation_digraph): Don't take the
12128 	biteetv as a pointer, it is already a pointer (as it's an array).
12129 
12130 2019-02-25  Akim Demaille  <akim.demaille@gmail.com>
12131 
12132 	style: rename function for clarity
12133 	Commit db34f7988941444bdc5f2b6adcf7fb83648f9a18 renames the variable F
12134 	as goto_follows, but forgot to rename this function.
12135 
12136 	* src/lalr.c (initialize_F): Rename as...
12137 	(initialize_goto_follows): this.
12138 
12139 2019-02-25  Akim Demaille  <akim.demaille@gmail.com>
12140 
12141 	lalr: more debug traces
12142 	I need to be able to read includes and goto_follows.
12143 
12144 	* src/relation.h, src/relation.c (relation_print): Provide a means to
12145 	pretty-print the nodes of the relation.
12146 	* src/lalr.c (goto_print, follows_print): New.
12147 	(set_goto_map): Use goto_print.
12148 	(build_relations): Show INCLUDES.
12149 	(compute_FOLLOWS): Rename as...
12150 	(compute_follows): this.
12151 	Show FOLLOWS.
12152 
12153 2019-02-24  Akim Demaille  <akim.demaille@gmail.com>
12154 
12155 	style: minor changes
12156 	* examples/c/calc/calc.y, src/lalr.c: Reduce scope.
12157 	* src/gram.c: Prefer < to >.
12158 
12159 2019-02-24  Akim Demaille  <akim.demaille@gmail.com>
12160 
12161 	style: clarify the computation of the lookback edges
12162 	* src/lalr.c (build_relations): Reduce the scopes.
12163 	Instead of keeping rp alive in two different loops, clarify the second
12164 	one by having an index on the path we traverse (i.e., use that index
12165 	to compute the source state _and_ the symbol that labels the
12166 	transition).
12167 	This allows to turn an obscure 'while'-loop in a clearer (IMHO)
12168 	'for'-loop.  We also consume more variables (by introducing p instead
12169 	of making more side effects on length), but we're in 2019, I don't
12170 	think this matters.  What does matter is that (IMHO again), this is
12171 	now clearer.
12172 	Also, use clearer names.
12173 
12174 2019-02-24  Akim Demaille  <akim.demaille@gmail.com>
12175 
12176 	style: scope reduction in tables.c
12177 	* src/tables.c: here.
12178 	* src/lalr.c: Prefer < to >.
12179 
12180 2019-02-24  Akim Demaille  <akim.demaille@gmail.com>
12181 
12182 	d: formatting changes
12183 	* data/skeletons/d.m4, data/skeletons/lalr1.d: Avoid trailing spaces.
12184 
12185 2019-02-23  Akim Demaille  <akim.demaille@gmail.com>
12186 
12187 	examples: remove stray examples
12188 	* examples/c/reentrant-calc: Remove.
12189 	I did not mean to include this example, it was replaced by
12190 	examples/c/reccalc.
12191 
12192 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12193 
12194 	tests: factor the execution of Java parsers
12195 	* tests/local.at (AT_MAIN_DEFINE(java)): Exit failure on failure.
12196 	(AT_PARSER_CHECK): If in Java, run AT_JAVA_PARSER_CHECK.
12197 	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Simplify.
12198 
12199 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12200 
12201 	tests: fix a Java tests
12202 	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Fix quotation error.
12203 
12204 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12205 
12206 	tests: simplify AT_PARSER_CHECK usage
12207 	Currently the caller must specify the ./ prefix to its command.  Let's
12208 	avoid that: it will be nicer to read, make it easier to have a version
12209 	that works for Java and C/C++.
12210 
12211 	* tests/local.at (AT_PARSER_CHECK): Prefix the command with ./.
12212 	Adjust callers.
12213 
12214 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12215 
12216 	tests: java: factor the definition of Position
12217 	* tests/local.at (AT_JAVA_POSITION_DEFINE): New.
12218 	* tests/java.at, tests/javapush.at: Use it.
12219 
12220 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12221 
12222 	tests: dispatch per lang on AT_DATA_GRAMMAR
12223 	* tests/java.at: Do that.
12224 	* tests/conflicts.at: Simplify.
12225 
12226 	* tests/actions.at, tests/c++.at, tests/input.at, tests/local.at,
12227 	* tests/named-refs.at:
12228 	Use AT_BISON_OPTION_PUSHDEFS/AT_BISON_OPTION_POPDEFS.
12229 
12230 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12231 
12232 	tests: dispatch per lang on the definition of yylex
12233 	* tests/local.at (AT_YYLEX_DEFINE): Dispatch on the language.
12234 	(AT_YYLEX_DEFINE(java)): New.
12235 	* tests/conflicts.at, tests/java.at: Use it.
12236 
12237 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12238 
12239 	tests: de-duplicate
12240 	* tests/conflicts.at (AT_YYLEX_PROTOTYPE): Don't define it, leave that
12241 	task to AT_DATA_GRAMMAR.
12242 	But be honest: tell AT_BISON_OPTION_PUSHDEFS all the options we use.
12243 
12244 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12245 
12246 	tests: formatting changes
12247 	* tests/local.at: here.
12248 
12249 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12250 
12251 	graph: prefer *.gv to *.dot
12252 	Reported by Hans Åberg.
12253 	https://lists.gnu.org/archive/html/help-bison/2019-02/msg00064.html
12254 
12255 	* src/files.c (spec_graph_file): Use `*.gv` when 3.4 or better,
12256 	otherwise `*.dot`.
12257 	* src/parse-gram.y (handle_require): Pretend we are already 3.4.
12258 	* doc/bison.texi: Adjust.
12259 	* tests/local.at, tests/output.at: Exercise this.
12260 
12261 2019-02-21  Akim Demaille  <akim.demaille@gmail.com>
12262 
12263 	doc: fixes to please older versions of Texinfo
12264 	Currently, we have errors:
12265 
12266 	    ./doc/bison.texi:13005: node `History' lacks menu item for `Yacc' despite being its Up target
12267 
12268 	* doc/bison.texi (History): Add the local menu.
12269 	While at it, add a few index entries.
12270 
12271 2019-02-17  Akim Demaille  <akim.demaille@gmail.com>
12272 
12273 	doc: style changes
12274 	* doc/bison.texi (Bibliography): Add [Corbett 1984] and [Johnson
12275 	1978].
12276 	(History): Use them.
12277 	And other minor changes.
12278 
12279 2019-02-17  Eric S. Raymond  <esr@thyrsus.com>
12280 
12281 	doc: a history section
12282 	* bison.texi (A Brief History of the Greater Ungulates): New section.
12283 
12284 2019-02-17  Akim Demaille  <akim.demaille@gmail.com>
12285 
12286 	examples: add an example with a reentrant parser in Flex+Bison
12287 	Suggested by Eric S. Raymond.
12288 	https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00066.html
12289 
12290 	* examples/c/reentrant-calc/Makefile, examples/c/reentrant-calc/README.md,
12291 	* examples/c/reentrant-calc/parse.y, examples/c/reentrant-calc/scan.l
12292 	* examples/c/reentrant-calc/lexcalc.test,
12293 	* examples/c/reentrant-calc/local.mk:
12294 	New.
12295 
12296 2019-02-16  Akim Demaille  <akim.demaille@gmail.com>
12297 
12298 	examples: fixes in lexcalc
12299 	* examples/c/lexcalc/parse.y: Formatting/comment changes.
12300 	(line): Don't return a value.
12301 	Print the result here, which avoids printing a value for lines with an
12302 	error.
12303 	(yyerror): Be sure to increment the pointed, not the pointer...
12304 	* examples/c/lexcalc/lexcalc.test: Check errors.
12305 	* examples/c/lexcalc/local.mk: Fix a dependency.
12306 
12307 2019-02-16  Akim Demaille  <akim.demaille@gmail.com>
12308 
12309 	build: fix distcheck
12310 	Regression introduced in 05a80977798abf472bfc11c477751303ad604733.
12311 
12312 	* doc/local.mk (bison.help): Don't depend on the path of the bison
12313 	executable.
12314 
12315 2019-02-16  Akim Demaille  <akim.demaille@gmail.com>
12316 
12317 	style: move pkgdatadir to files.*
12318 	Let's move it to a more logical place.
12319 
12320 	* src/output.h, src/output.c (pkgdatadir): Move to...
12321 	* src/files.h, src/files.c: here.
12322 
12323 2019-02-14  Akim Demaille  <akim.demaille@gmail.com>
12324 
12325 	style: rename cleanup_caret as caret_free
12326 	* src/location.c, src/location.h, src/main.c: here.
12327 
12328 2019-02-14  Akim Demaille  <akim.demaille@gmail.com>
12329 
12330 	style: avoid default in switch on enums
12331 	* src/assoc.c (assoc_to_string): here.
12332 
12333 2019-02-14  Akim Demaille  <akim.demaille@gmail.com>
12334 
12335 	doc: run tests/bison, not src/bison
12336 	* doc/local.mk: Don't run src/bison, as it expects to find all its
12337 	files installed.  Instead, run tests/bison which is ready to run in
12338 	builddir.
12339 
12340 2019-02-13  Akim Demaille  <akim.demaille@gmail.com>
12341 
12342 	gnulib: update
12343 
12344 2019-02-12  Akim Demaille  <akim.demaille@gmail.com>
12345 
12346 	style: comment and names changes in map_goto
12347 	* src/lalr.h, src/lalr.c: Use clearer names.
12348 
12349 2019-02-12  Akim Demaille  <akim.demaille@gmail.com>
12350 
12351 	yacc: support parse.assert
12352 	While hacking on the computation of the automaton, I had yystate being
12353 	equal to -1, and the parser loops.  Let's catch this when
12354 	parser.assert is enabled.
12355 
12356 	* data/skeletons/yacc.c (YY_ASSERT): New.
12357 	Use it.
12358 	Not using the name YYASSERT, to make it clear that this is private.
12359 	glr.c should probably move to YY_ASSERT too.
12360 	Also, while at it, report 'Entering state...' even before growing the
12361 	stacks.
12362 
12363 2019-02-12  Akim Demaille  <akim.demaille@gmail.com>
12364 
12365 	examples: depend on Bison's sources
12366 	* examples/c/calc/local.mk, examples/c/lexcalc/local.mk,
12367 	* examples/c/mfcalc/local.mk, examples/c/rpcalc/local.mk:
12368 	Regenerate the files if dependencies have changed.
12369 
12370 2019-02-12  Eric S. Raymond  <esr@thyrsus.com>
12371 
12372 	README: point to README-hacking
12373 	* README (Build from git): New.
12374 	* README-hacking: Describe easier submodule update.
12375 
12376 2019-02-10  Akim Demaille  <akim.demaille@gmail.com>
12377 
12378 	doc: a single space before closing comments
12379 	I don't think this style:
12380 
12381 	    /* If buffer is full, make it bigger.        */
12382 	    if (i == length)
12383 	      {
12384 	        length *= 2;
12385 	        symbuf = (char *) realloc (symbuf, length + 1);
12386 	      }
12387 	    /* Add this character to the buffer.         */
12388 	    symbuf[i++] = c;
12389 	    /* Get another character.                    */
12390 	    c = getchar ();
12391 
12392 	or more readable than
12393 
12394 	    /* If buffer is full, make it bigger. */
12395 	    if (i == length)
12396 	      {
12397 	        length *= 2;
12398 	        symbuf = (char *) realloc (symbuf, length + 1);
12399 	      }
12400 	    /* Add this character to the buffer. */
12401 	    symbuf[i++] = c;
12402 	    /* Get another character. */
12403 	    c = getchar ();
12404 
12405 	Actually, I think the latter is more readable, and helps with width
12406 	issues in the PDF.  As a matter of fact, I would happily move to //
12407 	only for single line comments.
12408 
12409 	* doc/bison.texi: A single space before closing comments.
12410 
12411 2019-02-10  Akim Demaille  <akim.demaille@gmail.com>
12412 
12413 	doc: modernize the examples
12414 	* doc/bison.texi: Prefer 'fun' to 'fnct'.
12415 	Reduce local variable scopes.
12416 	Prefer strdup to malloc + strcpy.
12417 	Avoid gratuitous casts.
12418 	Use simpler names (e.g., 'name' instead of 'fname').
12419 	Avoid uses of 0 for NULL.
12420 	Avoid using NULL when possible (e.g., 'p' instead of 'p != NULL').
12421 	Prefer union names to casts (e.g. 'yylval.VAR = s' instead of
12422 	'*((symrec**) &yylval) = s').
12423 	Give arguments a name in fun declarations.
12424 	Use our typedefs instead of duplicating them (func_t).
12425 	Stop promoting an explicit $$ = $1;, it should be implicit (Bison
12426 	might be able to eliminate useless chain rules).
12427 	Help a bit Texinfo by making smaller groups.
12428 	Rely on the C compiler to call function pointers (prefer
12429 	'$1->value.fun ($3)' to (*($1->value.fnctptr))($3)').
12430 
12431 2019-02-10  Akim Demaille  <akim.demaille@gmail.com>
12432 
12433 	examples: add a simple infix calculator in C
12434 	Currently we have no simple example: rpcalc in reverse Polish, mfcalc
12435 	has functions, and lexcalc is using lex.
12436 
12437 	* examples/c/calc/Makefile, examples/c/calc/calc.y,
12438 	* examples/c/calc/calc.test, examples/c/calc/local.mk: New.
12439 
12440 2019-02-10  Akim Demaille  <akim.demaille@gmail.com>
12441 
12442 	examples: fix annoying off-by-one errors
12443 	* examples/extexi: Since we issue #lines only at the beginning of
12444 	@example, leave empty line when removing content (such as @comment
12445 	lines), otherwise the lines that follow have incorrect source line
12446 	location.  This leaves ugly empty lines, but they are removed when you
12447 	tidy the output for the end user: sequences of \n are mapped to at
12448 	most two sucessive \n.
12449 
12450 2019-02-09  Akim Demaille  <akim.demaille@gmail.com>
12451 
12452 	style: factor printing of rules
12453 	* src/gram.h, src/gram.c (rule_print): New.
12454 	Use it.
12455 
12456 2019-02-09  Akim Demaille  <akim.demaille@gmail.com>
12457 
12458 	style: use lower case for variable names
12459 	* src/relation.c (INDEX, VERTICES): Rename as...
12460 	(indexes, vertices): these.
12461 
12462 2019-02-09  Akim Demaille  <akim.demaille@gmail.com>
12463 
12464 	style: scope reduction in relation.c
12465 
12466 2019-02-09  Akim Demaille  <akim.demaille@gmail.com>
12467 
12468 	report: stop counting uselessly
12469 	* src/print.c (print_nonterminal_symbols): Replace left_count and
12470 	right_count with on_left and on_right.
12471 
12472 2019-02-09  Akim Demaille  <akim.demaille@gmail.com>
12473 
12474 	report: clean up its format
12475 	The format is inconsistent.  For instance most sections are
12476 	indented (including "Terminals unused in grammar" for instance), but
12477 	the sections "Terminals, with rules where they appear" and
12478 	"Nonterminals, with rules where they appear" are not.  Let's indent
12479 	them.  Also, these two sections try to wrap the output to avoid lines
12480 	too long.  Yet we don't do that in the rest of the file, for instance
12481 	when listing the lookaheads of an item.
12482 
12483 	For instance in the case of Bison's parse-gram.output we go from:
12484 
12485 	    Terminals, with rules where they appear
12486 
12487 	    "end of file" (0) 0
12488 	    error (256) 28 88
12489 	    "string" <char*> (258) 9 13 16 17 20 23 24 109 116
12490 	    [...]
12491 
12492 	    Nonterminals, with rules where they appear
12493 
12494 	    $accept (58)
12495 	        on left: 0
12496 	    input (59)
12497 	        on left: 1, on right: 0
12498 	    prologue_declarations (60)
12499 	        on left: 2 3, on right: 1 3
12500 	    prologue_declaration (61)
12501 	        on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24
12502 	        25 26 27 28 29, on right: 3
12503 	    [...]
12504 
12505 	to
12506 
12507 	    Terminals, with rules where they appear
12508 
12509 	    "end of file" (0) 0
12510 	    error (256) 28 88
12511 	    "string" <char*> (258) 9 13 16 17 20 23 24 109 116
12512 	    [...]
12513 
12514 	    Nonterminals, with rules where they appear
12515 
12516 	        $accept (58)
12517 	            on left: 0
12518 	        input (59)
12519 	            on left: 1
12520 	            on right: 0
12521 	        prologue_declarations (60)
12522 	            on left: 2 3
12523 	            on right: 1 3
12524 	        prologue_declaration (61)
12525 	            on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29
12526 	            on right: 3
12527 	    [...]
12528 
12529 	* src/print.c (END_TEST): Remove.
12530 	(print_terminal_symbols): Don't try to wrap the output.
12531 	(print_nonterminal_symbols): Likewise.
12532 	Make two different lines for occurrences on the left, and occurrence
12533 	on the rhs of the rules.
12534 	Indent by 4 and 8, not 3.
12535 	* src/reduce.c (reduce_output): Indent by 4, not 3.
12536 
12537 	* tests/conflicts.at, tests/existing.at, tests/reduce.at,
12538 	* tests/regression.at, tests/report.at:
12539 	Adjust.
12540 
12541 2019-02-05  Akim Demaille  <akim.demaille@gmail.com>
12542 
12543 	add LR(0) output
12544 	This should not be used to generate parsers.  My point is actually to
12545 	facilitate debugging (when tweaking the generation of the LR(0)
12546 	automaton for instance, not carying -yet- about lookaheads).
12547 
12548 	* src/reader.c (prepare_percent_define_front_end_variables): Add lr(0).
12549 	* src/conflicts.c (set_conflicts): Be robust to reds not having
12550 	lookaheads at all.
12551 	* src/ielr.c (LrType, lr_type_get): Adjust.
12552 	(ielr): Implement support for LR(0).
12553 	* src/lalr.c (lalr_free): Don't free LA when it's not computed.
12554 
12555 2019-02-05  Akim Demaille  <akim.demaille@gmail.com>
12556 
12557 	style: scope reduction in derives.c
12558 	* src/derives.c: here.
12559 
12560 2019-02-05  Akim Demaille  <akim.demaille@gmail.com>
12561 
12562 	style: comment changes and refactoring in state.c
12563 	* src/state.h, src/state.c: Comment changes.
12564 	(transitions_to): Take a state* as argument.
12565 	* src/lalr.h, src/lalr.c: Comment changes.
12566 	(initialize_F): Use clear variable names.
12567 
12568 2019-02-05  Akim Demaille  <akim.demaille@gmail.com>
12569 
12570 	tests: fix typos
12571 	* tests/reduce.at: here.
12572 
12573 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12574 
12575 	Merge branch maint
12576 	* maint:
12577 	  maint: post-release administrivia
12578 	  version 3.3.2
12579 	  style: minor fixes
12580 	  NEWS: named constructors are preferable to symbol_type ctors
12581 	  gram: fix handling of nterms in actions when some are unused
12582 	  style: rename local variable
12583 	  CI: update the ICC serial number for travis-ci.org
12584 
12585 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12586 
12587 	maint: post-release administrivia
12588 	* NEWS: Add header line for next release.
12589 	* .prev-version: Record previous version.
12590 	* cfg.mk (old_NEWS_hash): Auto-update.
12591 
12592 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12593 
12594 	version 3.3.2
12595 	* NEWS: Record release date.
12596 
12597 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12598 
12599 	style: minor fixes
12600 	* NEWS, src/reduce.c, src/reduce.h: Use 'nonterminal'.
12601 	Fix comments.
12602 
12603 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12604 
12605 	NEWS: named constructors are preferable to symbol_type ctors
12606 	Reported by Frank Heckenbach.
12607 	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00043.html
12608 
12609 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12610 
12611 	gram: fix handling of nterms in actions when some are unused
12612 	Since Bison 3.3, semantic values in rule actions (i.e., '$...') are
12613 	passed to the m4 backend as the symbol number.  Unfortunately, when
12614 	there are unused symbols, the symbols are renumbered _after_ the
12615 	numbers were used in the rule actions.  As a result, the evaluation of
12616 	the skeleton failed because it used non existing symbol numbers.
12617 	Which is the happy scenario: we could use numbers of other existing
12618 	symbols...
12619 
12620 	Reported by Balázs Scheidler.
12621 	http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00044.html
12622 
12623 	Translating the rule actions after the symbol renumbering moves too
12624 	many parts in bison.  Relying on the symbol identifiers is more
12625 	troublesome than it might first seem: some don't have an
12626 	identifier (tokens with only a literal string), some might have a
12627 	complex one (tokens with a literal string with characters special for
12628 	M4).  Well, these are tokens, but nterms also have issues: "dummy"
12629 	nterms (for midrule actions) are named $@32 etc. which is risky for
12630 	M4.
12631 
12632 	Instead, let's simply give M4 the mapping between the old numbers and
12633 	the new ones.  To avoid confusion between old and new numbers, always
12634 	emit pre-renumbering numbers as "orig NUM".
12635 
12636 	* data/README: Give details about "orig NUM".
12637 	* data/skeletons/bison.m4 (__b4_symbol, _b4_symbol): Resolve the
12638 	"orig NUM".
12639 	* src/output.c (prepare_symbol_definitions): Pass nterm_map to m4.
12640 	* src/reduce.h, src/reduce.c (nterm_map): Extract it from
12641 	nonterminals_reduce, to make it public.
12642 	(reduce_free): Free it.
12643 	* src/scan-code.l (handle_action_dollar): When referring to a nterm,
12644 	use "orig NUM".
12645 	* tests/reduce.at (Useless Parts): New, based Balázs Scheidler's
12646 	report.
12647 
12648 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12649 
12650 	tests: strengthen some of them
12651 	* tests/reduce.at: Check that the generated parsers are proper C.
12652 
12653 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12654 
12655 	package: rename data/README as data/README.md
12656 	So that it is properly rendered by online git services.
12657 
12658 2019-02-03  Akim Demaille  <akim.demaille@gmail.com>
12659 
12660 	style: