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

	version 3.5.2
	* NEWS: Record release date.

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

	news: 3.5.2
	* NEWS: Update.

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

	gnulib: update

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

	doc: update Doxygen template
	* Doxyfile.in: Run doxygen -u on it.

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

	java: avoid trailing white spaces
	* data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed.
	* data/skeletons/lalr1.java: Avoid trailing spaces.

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

	m4: fix b4_token_format
	We used to emit:

	    /** Token number,to be returned by the scanner.  */
	    static final int NUM = 258;
	    /** Token number,to be returned by the scanner.  */
	    static final int NEG = 259;

	with no space after the comma.  Fix that.

	* data/skeletons/bison.m4 (b4_token_format): Quote where appropriate.

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

	doc: clearly state that %yacc only makes sense with yacc.c
	* doc/bison.texi: here.

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

	doc: spell check
	* doc/bison.texi: here.

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

	examples: be more robust to spaces in paths
	Reported by Nikki Valen.
	https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html

	* examples/test ($prog): Remove, replaced by...
	(prog): This new function, which pays attention to quoting shell
	variables.

2020-01-21  Adrian Vogelsgesang  <avogelsgesang@tableau.com>

	larlr1.cc: Reject unsupported values for parse.lac
	Just as the yacc.c skeleton, the lalr1.cc skeleton should reject
	invalid values for parse.lac.

	* data/skeletons/lalr1.cc: check validity of parse.lac
	* tests/input.at: new test cases

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

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

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

	version 3.5.1
	* NEWS: Record release date.

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

	news: update

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

	CI: use ICC again
	See https://github.com/nemequ/icc-travis/issues/15.
	Thanks to Jeff Hammond and Evan Nemerson for their help.

	* configure.ac (warn_common): Disable dubious warnings.
	* .travis.yml: Use ICC again.

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

	warnings: pacify ICC in lalr1.cc
	See 139d0655947c87f90af08718618feaaca0e558d7.

	* data/skeletons/yacc.c: If I might be a char, write a[+I] instead of
	a[I], so that ICC does not complain.

2020-01-19  Jim Meyering  <meyering@fb.com>

	test: report.at: avoid tiny new failure
	Be robust to newer versions of Autoconf where the package URL defaults
	to https instead of http.

	* configure.ac (AC_INIT): Use https.
	* tests/report.at: Adjust expected output s/http/https/
	to match updated URL.

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

	git: update ignores

2020-01-11  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

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

	lalr1.cc: avoid static_cast
	Reported by donmac703.
	Fixes https://github.com/akimd/bison/issues/20.

	* data/skeletons/lalr1.cc: here.

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

	glr.c: add missing cast
	Reported by psjo.
	Fixes https://github.com/akimd/bison/issues/19.

	* data/skeletons/glr.c (yyprocessOneStack): Here.

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

	regen

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

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

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

	gitignore: update

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

	tests: also check -Wchar-subscripts
	GCC's -Wchar-subscripts may report issues on platforms where char is
	unsigned.  Unfortunately the current CI does not reproduce the
	problem.  But that would allow contributors to report issues if the
	warning appears somewhere.

	See 139d0655947c87f90af08718618feaaca0e558d7.
	Problem reported by Andy Fiddaman in:
	https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html

	* configure.ac (warn_common): Add -Wchar-subscripts.

2019-12-30  Akim Demaille  <akim.demaille@gmail.com>

	CI: do not specify the language
	When we give travis the langugage, it overrides our envvars.  Instead
	of the MATRIX_EVAL trick, just stop specifying the language.

2019-12-30  Akim Demaille  <akim.demaille@gmail.com>

	CI: remove ICC support, we can no longer use it
	https://github.com/nemequ/icc-travis/issues/15

2019-12-29  Akim Demaille  <akim.demaille@gmail.com>

	doc: clean up the description of YYDEBUG
	* doc/bison.texi: Make it clearer that %define parse.trace is the
	preferred options.
	Fix a typo about api.prefix.

2019-12-29  Akim Demaille  <akim.demaille@gmail.com>

	glr.cc: avoid compiler warnings
	    381. types.at:366: testing glr.cc api.value.type={double} ...
	    test.cc:207:57: error: "__clang_major__" is not defined, evaluates to 0 [-Werror=undef]
	      207 | #if defined __APPLE__ && YY_CPLUSPLUS < 201103L && 4 <= __clang_major__
	          |                                                         ^~~~~~~~~~~~~~~

	* data/skeletons/glr.cc: Check __clang_major__ before using it.

2019-12-18  Paul Eggert  <eggert@cs.ucla.edu>

	warnings: pacify ‘gcc -Wchar-subscripts’ in yacc.c
	Problem reported by Andy Fiddaman in:
	https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html
	* data/skeletons/yacc.c (yy_reduce_print, yy_lac, yysyntax_error)
	(yyreturn): If I might be a char, write a[+I] instead of a[I],
	so that ‘gcc -Wchar-subscripts’ does not complain.

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

	doc: formatting changes
	* doc/bison.texi: No output changes.

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

	tests: don't fail if seq is no available
	As is the case on Solaris.
	Reported by Dennis Clarke.
	https://lists.gnu.org/archive/html/bug-bison/2019-12/msg00011.html

	* examples/c/reccalc/reccalc.test: Skip if there is no seq.

2019-12-11  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-12-11  Akim Demaille  <akim.demaille@gmail.com>

	version 3.5
	* NEWS: Record release date.

2019-12-10  Akim Demaille  <akim.demaille@gmail.com>

	news: prepare for 3.5

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

	glr.cc: disable warnings from Clang on macOS
	    $ cat test.cc
	    #include <stddef.h>
	    #include <stdint.h>

	    ptrdiff_t half_max_capacity = PTRDIFF_MAX;
	    $ clang++-mp-9.0 -pedantic -std=c++98 /tmp/test.cc -c
	    /tmp/test.cc:4:31: warning: 'long long' is a C++11 extension [-Wc++11-long-long]
	    ptrdiff_t half_max_capacity = PTRDIFF_MAX;
	                                  ^
	    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:149:23:
	            note: expanded from macro 'PTRDIFF_MAX'
	    #define PTRDIFF_MAX       INT64_MAX
	                              ^
	    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:75:26:
	            note: expanded from macro 'INT64_MAX'
	    #define INT64_MAX        9223372036854775807LL
	                             ^
	    1 warning generated.

	* data/skeletons/glr.cc: here.

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

	api.token.raw: fix it in C++
	Another breakage revealed by vcsn.

	* data/skeletons/c++.m4 (yytranslate_): Do not hard code "yy" and
	"parser", both can be changed by the user.
	Actually, since we are in the parser itself, there's really no need to
	qualify the type.

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

	c++: fix comments for %code blocks
	In a project of mine, vcsn, this commit fixes the following comments.

	    --- /tmp/parse.hh	2019-12-08 15:51:24.792934703 +0100
	    +++ lib/vcsn/rat/parse.hh	2019-12-08 16:00:59.137107503 +0100
	    @@ -43,7 +43,7 @@

	     #ifndef YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
	     # define YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
	    -// //                    "%code requires" blocks.
	    +// "%code requires" blocks.
	     #line 20 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy"

	       #include <iostream>
	    @@ -1851,7 +1851,7 @@

	    -// //                    "%code provides" blocks.
	    +// "%code provides" blocks.
	     #line 60 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy"

	       #define YY_DECL_(Class) \

	* data/skeletons/bison.m4 (b4_percent_code_get): Pass an expanded
	string to b4_comment.

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

	parser: pretend we are Bison 3.5
	* src/parse-gram.y: Accept we're Bison 3.5.

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

	c++: fix spello
	* data/skeletons/lalr1.cc: here.

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

	todo: update
	* TODO: Schedule some features for 3.6.
	Remove obsolete stuff.

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

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

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

	version 3.4.92
	* NEWS: Record release date.

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

	news: fixes
	Reported by Paul Eggert.
	https://lists.gnu.org/archive/html/bison-patches/2019-12/msg00014.html

	* NEWS: here.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: minor changes
	* README-hacking.md: here.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: clearly deprecate YYPRINT
	* doc/bison.texi (Prologue): Stop using YYPRINT as an example.
	(The YYPRINT Macro): Clearly show this macro is deprecated.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: here.
	No change in content.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	d: obey parse.error
	* data/skeletons/lalr1.d (yysyntax_error): Let the dispatch be
	bison-time, not runtime.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	c++: also prefer YY_ASSERT to YYASSERT
	Like the other skeletons.

	* data/skeletons/variant.hh: here.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	glr.c: obey the parse.assert %define variable
	* data/skeletons/glr.c (YYASSERT): Rename as...
	(YY_ASSERT): this, for consistency with yacc.c, and also to emphasize
	the fact that this is not for the end user (YY_ prefix).
	* tests/glr-regression.at: Define parse.assert.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	c++: beware of short ranges for state numbers
	Now that we use small integral types, possibly unsigned (e.g.,
	unsigned char), to store state numbers, using -1 to denote an empty
	state (i.e., a state that stores no semantical value) is very
	dangerous: it will be confused with state 255, which might be
	non-empty.

	Rather than allocating a larger range of state numbers to keep the
	empty-state apart, let's use the number of a state known to store no
	value.  The initial state, numbered 0, seems to fit perfectly the job.

	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html

	* data/skeletons/lalr1.cc (empty_state): Be 0.

2019-12-07  Akim Demaille  <akim.demaille@gmail.com>

	api.token.raw: check it against api.token.constructor
	* tests/scanner.at: here.

2019-12-06  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-12-06  Akim Demaille  <akim.demaille@gmail.com>

	warnings: enable -Wuseless-cast, and eliminate warnings
	Prompted by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html.

	* configure.ac (warn_cxx): Add -Wuseless-cast.
	* data/skeletons/c.m4 (b4_attribute_define): Define
	YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END.
	* data/skeletons/glr.c (YY_FPRINTF): New, replaces YYFPRINTF, wrapped
	with YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END.
	(YY_DPRINTF): Likewise.
	* tests/actions.at: Remove useless cast.
	* tests/headers.at: Adjust.

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

	diagnostics: style changes
	* src/complain.h, src/complain.c: Comment changes.
	* src/scan-skel.l: Reduce scopes.
	* data/skeletons/bison.m4: Factor diagnostic functions.

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

	glr.c: style changes
	* data/skeletons/glr.c (yysplitStack): Reduce scopes.
	* tests/atlocal.in: Formatting changes.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: get rid of symbol_type::token ()
	It is not used.  And its implementation was wrong when api.token.raw
	was defined, as it was still mapping to the external token numbers,
	instead of the internal ones.  Besides it was provided only when
	api.token.constructor is defined, yet always declared.

	* data/skeletons/c++.m4 (by_type::token): Remove, useless.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: remove useless cast about user_token_number_max_
	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html

	The cast is needed when yytranslate_'s argument type is token_type,
	i.e., when api.token.constructor is defined.

	    373. types.at:138: testing lalr1.cc api.value.type=variant api.token.constructor ...
	    ======== Testing with C++ standard flags: ''
	    ../../tests/types.at:138: bison --color=no -fno-caret  -o test.cc test.y
	    ../../tests/types.at:138: $CXX $CXXFLAGS $CPPFLAGS  $LDFLAGS -o test test.cc $LIBS
	    stderr:
	    test.cc:966:16: error: result of comparison of constant 257 with
	                    expression of type 'yy::parser::token_type'
	                   (aka 'yy::parser::token::yytokentype') is always true
	                   [-Werror,-Wtautological-constant-out-of-range-compare]
	        else if (t <= user_token_number_max_)
	                 ~ ^  ~~~~~~~~~~~~~~~~~~~~~~
	    1 error generated.

	It is because it is expected that when api.token.constructor is
	defined, only symbol constructors will be used, that yytranslate_ then
	takes a token_type.  But it is wrong: we still allow literal
	characters in this case, as demonstrated by test 373 for instance.

	    %define api.value.type variant
	    %define api.token.constructor
	    %token <std::pair<int, int>> '1' '2';
	    [...]
	    static yy::parser::symbol_type yylex ()
	    {
	      static char const input[] = "12";
	      int res = input[toknum++];
	      typedef yy::parser::symbol_type symbol;
	      if (res)
	        return symbol (res, std::make_pair (res - '0', res - '0' + 1));
	      else
	        return symbol (res);
	    }

	So let yytranslate_ always take an int, which makes the cast truly
	useless.

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

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: clean a few issues wrt special tokens
	The C++ implementation of LAC did not skip the $undefined token,
	probably because it was not exposed.  Expose it, and use clearer
	names.

	* data/skeletons/c++.m4: Don't define undef_token_ in yytranslate_,
	but...
	* data/skeletons/lalr1.cc (yy_undef_token_): here.
	Use a more precise type to define yy_undef_token_ and yy_error_token_.
	Unfortunately we move from a compile-time value defined via an enum to
	a static const member.  Eventually we should make it constexpr.
	Make LAC implementation more alike yacc.c's one.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	d, java: improve yytranslate and neighbors
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java: Don't expose
	yyuser_token_number_max_ and yyundef_token_.  Do as in C++: scope them
	into yytranslate_, and only when api.token.raw is not defined.
	(yyterror_): Rename as...
	(yy_error_token_): this.
	* data/skeletons/lalr1.d (token_number_type): New.
	Use it.
	Can't be done in the Java backend, as Java does not have type aliases.

2019-12-01  Akim Demaille  <akim.demaille@gmail.com>

	d, java: get rid of a useless table
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java (yytoken_number_):
	Remove, useless.
	Was used in ancient C skeletons to support YYPRINT, long obsoleted by
	%printer.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	c++, d, java: remove yyerrcode
	It is not used at all.  We will remove it also from yacc.c, but
	later (see TODO).

	* data/skeletons/lalr1.cc, data/skeletons/lalr1.d,
	* data/skeletons/lalr1.java (yyerrcode_):
	Remove.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: improve typing
	* data/skeletons/lalr1.cc (yysyntax_error_): symbol_type::type_get
	returns a symbol_number_type (which is indeed an int).

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	c++: remove useless cast about yyeof_
	Reported by Frank Heckenbach.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html

	* data/skeletons/c++.m4 (b4_yytranslate_define): Don't use yyeof_ as
	if it had two different types.
	It is used once against the input argument, which is the value
	returned by yylex, which is an "external token number", typically an
	int.  It is also used as output type, an "internal symbol number".
	It turns out that in both cases we mean "0", but let's keep yyeof_
	only for the case "internal symbol number", i.e., _after_ conversion
	by yytranslate.
	This frees us from one cast.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	glr: style change
	* data/skeletons/glr.c (YYDPRINTF): Expand into an empty statement,
	instead of nothing.
	Simplify callers.

2019-11-30  Akim Demaille  <akim.demaille@gmail.com>

	glr: remove useless casts
	Reported by GCC's -Wuseless-cast.

	* data/skeletons/glr.c: Don't cast to yybool, it's useless.

2019-11-29  Akim Demaille  <akim.demaille@gmail.com>

	yacc.c, glr.c: fix crash when reporting errors in consistent states
	The current code for yysyntax_error for %define parse.error verbose is
	fishy (given that YYEMPTY is -2, invalid argument for yytname[]):

	    static int
	    yysyntax_error ([...])
	    {
	      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
	    [...]
	      if (yytoken != YYEMPTY)

	A nearby comment reports

	    The only way there can be no lookahead present (in yychar) is if
	    this state is a consistent state with a default action.  Thus,
	    detecting the absence of a lookahead is sufficient to determine
	    that there is no unexpected or expected token to report.  In that
	    case, just report a simple "syntax error".

	So it _is_ possible to call yysyntax_error with yytoken == YYEMPTY,
	albeit quite difficult when meaning to, so virtually impossible by
	accident (after all, there was never a bug report about this).

	I failed to produce a test case, but Joel E. Denny provided me with
	one (added to the test suite below).  The yacc.c skeleton fails on
	this, and once fixed dies on a second problem.  The glr.c skeleton was
	also dying, but immediately of this second problem.

	Indeed we were not allocating space for the error message's final \0.
	This was hidden by the fact that we only had error messages with at
	least an unexpected token displayed, so with at least one "%s" in the
	format string, whose size (2) was included (incorrectly) in the final
	size of the message (where the %s have been replaced by the actual
	content).

	* data/skeletons/glr.c, data/skeletons/yacc.c (yysyntax_error):
	Do not invoke yytnamerr on YYEMPTY.
	Clarify the computation of the length of the _final_ error message,
	with the NUL terminator but without the '%s's.
	* tests/conflicts.at (Syntax error in consistent error state):
	New, contributed by Joel E. Denny.

2019-11-26  Akim Demaille  <akim.demaille@gmail.com>

	tests: avoid creating files whose name collide with standard headers
	Having a file named "exception" is risky: the compiler might use that
	file in #include.
	Reported by 马俊 <majun123@whu.edu.cn>.

	* tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): Generate
	'exceptions', not 'exception'.

2019-11-22  Akim Demaille  <akim.demaille@gmail.com>

	doc: more details about the test suite
	* README-hacking.md: here.

2019-11-20  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-11-20  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.91
	* NEWS: Record release date.

2019-11-20  Akim Demaille  <akim.demaille@gmail.com>

	style: pacify syntax-check
	* cfg.mk: No need to translate *.md files.
	* data/skeletons/glr.c, data/skeletons/yacc.c: Fix space issues.

2019-11-19  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2019-11-18  Akim Demaille  <akim.demaille@gmail.com>

	doc: don't promote dangling aliases
	String literals as tokens serve two distinct purposes: freeing from
	having to implement the keyword matching in the scanner, and improving
	error messages.  Most of the time both can be achieved at the same
	time, but on occasions, it does not work so well.

	We promote their use for error messages.  We will also still support
	the former case, but it is _not_ the recommended approach.

	* doc/bison.texi (Tokens from Literals): Clearly state that we don't
	recommend looking up the token types in the list of token names.

2019-11-17  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: complain about undeclared string tokens
	String literals, which allow for better error messages, are (too)
	liberally accepted by Bison, which might result in silent errors.  For
	instance

	    %type <exVal> cond "condition"

	does not define “condition” as a string alias to 'cond' (nonterminal
	symbols do not have string aliases).  It is rather equivalent to

	    %nterm <exVal> cond
	    %token <exVal> "condition"

	i.e., it gives the type 'exVal' to the "condition" token, which was
	clearly not the intention.

	Introduce -Wdangling-alias to catch this.

	* src/complain.h, src/complain.c: Add support for -Wdangling-alias.
	(argmatch_warning_args): Sort.
	* src/symtab.c (symbol_check_defined): Complain about dangling
	aliases.
	* doc/bison.texi: Document it.
	* tests/input.at (Dangling aliases): New test.

2019-11-17  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: yacc reserves %type to nonterminals
	On

	    %token TOKEN1
	    %type  <ival> TOKEN1 TOKEN2 't'
	    %token TOKEN2
	    %%
	    expr:

	bison -Wyacc gives

	    input.y:2.15-20: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
	        2 | %type  <ival> TOKEN1 TOKEN2 't'
	          |               ^~~~~~
	    input.y:2.29-31: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
	        2 | %type  <ival> TOKEN1 TOKEN2 't'
	          |                             ^~~
	    input.y:2.22-27: warning: POSIX yacc reserves %type to nonterminals [-Wyacc]
	        2 | %type  <ival> TOKEN1 TOKEN2 't'
	          |                      ^~~~~~

	The messages appear to be out of order, but they are emitted when the
	error is found.

	* src/symtab.h (symbol_class): Add pct_type_sym, used to denote
	symbols appearing in %type.
	* src/symtab.c (complain_pct_type_on_token): New.
	(symbol_class_set): Check that %type is not applied to tokens.
	(symbol_check_defined): pct_type_sym also means undefined.
	* src/parse-gram.y (symbol_decl.1): Set the class to pct_type_sym.
	* src/reader.c (grammar_current_rule_begin): pct_type_sym also means
	undefined.
	* tests/input.at (Yacc's %type): New.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: promote %nterm over %type
	As an extension to POSIX Yacc, Bison's %type accepts tokens.
	Unfortunately with string literals as implicit tokens, this is
	misleading, and led some users to write

	    %type <exVal> cond "condition"

	believing that "condition" would be associated to the 'cond'
	nonterminal (see https://github.com/apache/httpd/pull/72).

	* doc/bison.texi: Promote %nterm rather than %type to declare the type
	of nonterminals.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: formatting changes
	* doc/bison.texi: No visible changes.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	doc: work around warnings when Flex C output is compiled in C++
	* doc/bison.texi (calc++/scanner.ll): here.
	While at it, clarify clang vs. warnings.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	tests: be robust to old Perl versions on Cygwin
	Reported by Denis Excoffier.
	https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00008.html.

	* tests/output.at: Be sure to remove back up files.

2019-11-16  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-11-12  kaneko y  <spiketeika@gmail.com>

	gram.c: Fix condition of aver
	* src/gram.c (grammar_dump): Fix condition of aver.
	What we want to check is that rhs is followed by its rule.

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

	doc: clarify build instructions
	* README: A few fixes.
	Explain how to install color support.
	* README-hacking: Rename as...
	* README-hacking.md: this, and convert to Markdown.
	Improve typography.
	Improve explanations about update-test.

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

	gnulib: update

2019-11-11  Yuichiro Kaneko  <spiketeika@gmail.com>

	gram.c: also print terminals in grammar_dump
	* src/gram.c (grammar_dump): Print terminals likewise non terminals.
	* tests/sets.at (Reduced Grammar): Update test case to catch up the
	change and add a test case where prec and assoc are used.

2019-11-10  Akim Demaille  <akim.demaille@gmail.com>

	doc: work around Texinfo 6.7 bug
	When @code is used in a @deftype... definition, it issues quotes.
	Remove them.
	See https://lists.gnu.org/archive/html/help-texinfo/2019-11/msg00004.html.

	* doc/local.mk: here.

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

	doc: formatting changes
	* doc/bison.texi: Wrap lines.
	No semantical difference.

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

	doc: use upper case for tokens
	* doc/bison.texi: here.

2019-11-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: type-face fixes
	* doc/bison.texi: Use @code for types in function definitions.

2019-11-06  Akim Demaille  <akim.demaille@gmail.com>

	c++: expose the type used to store line and column numbers
	* data/skeletons/location.cc (position::counter_type)
	(location::counter_type): New.
	Use them.
	* doc/bison.texi (C++ position, C++ location): Adjust.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix comment and adjust to locale names on GNU/Linux
	Reported by Denis Excoffier.

	* tests/diagnostics.at: here.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: really check complaints from m4
	* tests/diagnostics.at (Locations from M4, Tabulations and multibyte
	characters from M4): These tests are actually checking a message
	coming from C, not from M4.  Replace with...
	(Complaints from M4): This.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	tests: simplify prologue
	* tests/testsuite.h: We no longer load gnulib in the tests.

2019-11-03  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: add missing translation
	* src/muscle-tab.c (muscle_percent_define_check_kind): Here.

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

	c++: fix old cast warnings
	We still have a few old C casts in lalr1.cc, let's get rid of them.
	Reported by Frank Heckenbach.

	Actually, let's monitor all our casts using easy to grep macros.
	Let's use these macros to use the C++ standard casts when we are in
	C++.

	* data/skeletons/c.m4 (b4_cast_define): New.
	* data/skeletons/glr.c, data/skeletons/glr.cc,
	* data/skeletons/lalr1.cc, data/skeletons/stack.hh,
	* data/skeletons/yacc.c:
	Use it and/or its casts.

	* tests/actions.at, tests/cxx-type.at,
	* tests/glr-regression.at, tests/headers.at, tests/torture.at,
	* tests/types.at:
	Use YY_CAST instead of C casts.

	* configure.ac (warn_cxx): Add -Wold-style-cast.
	* doc/bison.texi: Disable it.

2019-11-01  Akim Demaille  <akim.demaille@gmail.com>

	tests: be robust to tput errors
	Reported by Denis Excoffier.

	* tests/bison.in: here.

2019-11-01  Akim Demaille  <akim.demaille@gmail.com>

	git: update ignores
	I don't understand what happened in
	10acc148bb90fac8a52a5d35f2bd18bd824c1639.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	version 3.4.90
	* NEWS: Record release date.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	C++: finish propagating the unsigned->signed conversion in locations
	* data/skeletons/location.cc: Remove the u (for unsigned) suffix from
	the initial line and column.
	* NEWS: AFAICT, only C++ backends have their location types changed.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	style: fix cpp indentation
	Reported by syntax-check.

	* src/system.h: here.

2019-10-29  Akim Demaille  <akim.demaille@gmail.com>

	style: glr.c: comment changes
	* data/skeletons/glr.c: here.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	CI: pass -O1 to GCC8 with sanitizers
	This build never finishes in the 50min credit given by Travis.  See if
	with optimizations it works better.

	* .travis.yml: here.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	reader: reduce the "scope" of global variables
	We have too many global variables, adding structure would help.  For a
	start, let's hide some of the variables closer to their usage.

	* src/getargs.c, src/files.h (current_file): Move to...
	* src/scan-gram.c: here.
	* src/scan-gram.h (gram_in, gram__flex_debug): Remove, make them
	private to the scanner.
	* src/reader.h, src/reader.c (reader): Take a grammar file as argument.
	Move the handling of scanner variables to...
	* src/scan-gram.l (gram_scanner_open, gram_scanner_close): here.
	(gram_scanner_initialize): Remove, replaced by gram_scanner_open.
	* src/main.c: Adjust.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	regen

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	parser: use grammar_file instead of current_file
	* src/parse-gram (%initial-action): here.
	(handle_skeleton): Don't depend on the current file name to look for
	"local" skeletons (subject to changes coming from "#lines"): depend
	only on the initial file name, the one given on the command line.

2019-10-26  Akim Demaille  <akim.demaille@gmail.com>

	diagnostics: use grammar_file instead of current_file
	Currently there are two globals denoting the input file: grammar_file
	is the one from the command line, and current_file which might change
	because of #line.  Use only the former.

	* src/complain.c (error_message): here.
	* tests/diagnostics.at: Adjust.

2019-10-25  Akim Demaille  <akim.demaille@gmail.com>

	reader: let symtab deal with the symbols
	* src/reader.c (reader): Move the setting up of the builtin symbols to...
	* src/symtab.c (symbols_new): here.

2019-10-25  Akim Demaille  <akim.demaille@gmail.com>

	style: remove incorrect comment
	Reported by Paul Eggert.

	* src/system.h: here.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: fix previous commit: printing of state numbers
	* data/skeletons/lalr1.cc: Printing a char prints... a char.
	Print ints instead.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>

	lalr1.cc: use computed state types
	This skeleton uses a single stack of state structures, so it is less
	likely to benefit from a stack size reduction than yacc.c (which uses
	several stacks: state number, value and location).  But it will reduce
	the size of the LAC stack.

	This skeleton was already using int for state numbers, so, contrary to
	yacc.c, this brings nothing for large automata.

	Overall, it is still nicer to make the skeletons alike.

	* data/skeletons/lalr1.cc (state_type): Here.

2019-10-24  kaneko y  <spiketeika@gmail.com>

	README: Fix a typo
	* README: Fix a typo. Git command name is submodule.

2019-10-24  Akim Demaille  <akim.demaille@gmail.com>
