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>

	examples: fix missing dependencies
	Reported by Thomas Petazzoni.
	https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00000.html

	* examples/c/reccalc/local.mk: Complete dependencies, including for
	earlier versions of Automake (for sake of our CI, on top of Ubuntu
	Xenial/Bionic, which feature only Automake 1.15).
	(%D%/scan.c %D%/scan.h): Upgrade to the full version provided in
	Automake's documentation.

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

	diagnostics: simplify location handling
	Locations start at line 1.  Don't accept line 0.

	* src/location.c (location_print): Don't print locations with line 0.
	(location_caret): Simplify.

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

	build: reenable -Wtype-limits
	See https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html
	to https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00073.html.

	Paul Eggert's changes in gnulib do fix the issue for modern GCCs (7,
	8, 9) on macOS.  Unfortunately these warnings are back on the
	CI (GNU/Linux) with GCC 4.6, 4.7, (not 4.8) and 4.9.

	Disable the warning locally.

	* configure.ac (warn_common, warn_tests): Remove -Wtype-limits.
	* src/system.h (IGNORE_TYPE_LIMITS_BEGIN, IGNORE_TYPE_LIMITS_END): New.
	* src/InadequacyList.c, src/parse-gram.c, src/parse-gram.y,
	* src/symtab.c: Use it.

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

	build: remove dmalloc support
	Today sanitizers are a better alternative.

	* m4/dmalloc.m4: Remove.
	* configure.ac, src/system.h: Adjust.

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

	gitignore: update

2019-10-23  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2019-10-23  Yuichiro Kaneko  <spiketeika@gmail.com>

	style: update comment in reader.c
	rrhs and rlhs were removed by b2ed6e5826e772162719db595446b2c58e4ac5d6.

	* src/reader.c (packgram): Update comment.

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

	yacc.c: fix a typo
	* data/skeletons/yacc.c (yysetstate): fix comment.

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

	style: pacify syntax-check
	* doc/.gitignore, src/complain.c, src/getargs.c,
	* src/output.c: here.

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

	main: also free memory on errors
	* src/derives.c (derives_free): Beware of NULL.
	* src/main.c (main): Let the 'finish' label include memory release.

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

	gnulib: update
	To get bitset_free accept NULL.  See
	https://lists.gnu.org/archive/html/bug-gnulib/2019-10/msg00054.html

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

	style: reduce scope in derives
	* src/derives.c: here.
	And prefer prefix to postfix increment.

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

	build: disable -Wtautological-constant-out-of-range-compare
	Also see e31f92495ce14a5d924b148c8ea1470003cc47c1 and
	https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html

	* configure.ac (warn_common): Disable
	-Wtautological-constant-out-of-range-compare.
	(warn_tests): Restore it.

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

	CI: formatting changes
	* .travis.yml: Use the single line form of lists, when reduced to a
	singletons.

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

	CI: rename jobs
	* .travis.yml (compile, test): Rename as...
	(dist, check): these, which are more traditional for GNU projects.

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

	doc: update README
	* README: Be clearer that README-hacking _must_ be read.
	Convert to Markdown.

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

	bootstrap: relieve developpers from Gettext version mismatch issues
	* .travis.yml (compile): Move the workaround from here...
	* bootstrap.conf (bootstrap_epilogue): to there.

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

	tests: beware of GCC9 warnings in push mode
	This is really weird: GCC points to the LHS of the assignment...

	    260. headers.at:184: testing Sane headers: api.pure api.push-pull=both ...
	    tests/headers.at:184: COLUMNS=1000; export COLUMNS;  bison --color=no -fno-caret -d -o input.c input.y
	    tests/headers.at:184: $CC $CFLAGS $CPPFLAGS  -c -o input.o input.c
	    stderr:
	    input.c: In function 'yyparse':
	    input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     1276 |         yylval = *yypushed_val;
	          |         ~~~~~~~^~~~~~~~~~~~~~~
	    input.c: In function 'yypull_parse':
	    input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	     1276 |         yylval = *yypushed_val;
	          |         ~~~~~~~^~~~~~~~~~~~~~~
	    cc1: all warnings being treated as errors
	    stdout:
	    tests/headers.at:184: exit code was 1, expected 0

	See also d87c8ac79ab844d6a7a4f5103dcf7a842d18b611
	and 9645a2b20ee7cbfa8bb4ac2237f87d598afe349c.

	* tests/headers.at (Several parsers, Several parsers): Disable these
	warnings when in push parser.

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

	CI: try GCC9 and Clang9
	The logs show:

	    Disallowing sources: llvm-toolchain-bionic-8, ubuntu-toolchain-r-test
	    To add unlisted APT sources, follow instructions in
	    https://docs.travis-ci.com/user/installing-dependencies#Installing-Packages-with-the-APT-Addon

	* .travis.yml: Remove a few apt sources which are ignored in
	Bionic (e.g., see
	https://github.com/travis-ci/apt-source-safelist/issues/410).
	Where needed, use sources/sourceline instead.
	Also, don't use -DNDEBUG with older builds.

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

	parser: clarify version checking
	* src/parse-gram.y: Use the same conventions for gnulib as elsewhere:
	<header.h>.
	(str_to_version): New.
	(handle_require): Use it.
	Prefer < to >.

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

	build: disable -Wtype-limits, except in the test suite
	The current implementation of lib/intprops.h results in "unsigned < 0"
	comparisons, which triggers warnings.  See

	https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html

	* configure.ac (warn_common): Disable -Wtype-limits.
	(warn_tests): Restore it.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	c++: port to Sun C++ 5.12
	The documentation for Oracle Solaris Studio 12.3 (Sun C++ 5.12
	2011/11/16) says it supports C++03.  This compiler rejects the
	location.cc use of std::max for some reason; I don’t know why
	since I don’t use C++ as a rule.  The simplest workaround is to
	open-code ‘max’.
	* data/skeletons/location.cc (add_):
	Do max by hand rather than relying on std::max.
	Don’t include <algorithm.h>; no longer needed.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	regen

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to Solaris 10 grep
	* tests/scanner.at (Token numbers: $1): Use $EGREP, not grep -E.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to Solaris 10 sed
	As documented in the Autoconf manual, Solaris 10 sed rejects
	script labels contianing more than 7 characters.  POSIX requires
	support for at least 8 characters, but we might as well be portable
	to Solaris 10 which is still supported.
	* tests/local.at (AT_SETS_CHECK): Use only the first 7 characters
	in sed labels.

2019-10-17  Paul Eggert  <eggert@cs.ucla.edu>

	bison: check for int overflow in token numbers
	* src/symtab.c: Include intprops.h
	(symbol_user_token_number_set): Don’t allow user_token_number ==
