2021-09-07  Akim Demaille  <akim.demaille@gmail.com>

	version 3.8
	* NEWS: Record release date.

2021-09-07  Akim Demaille  <akim.demaille@gmail.com>

	news: update

2021-09-02  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.

2021-09-02  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.91
	* NEWS: Record release date.

2021-09-02  Akim Demaille  <akim.demaille@gmail.com>

	tests: disable "Multistart reports"
	For some reason this test fails on Solaris/x86.  But multistart is not
	part of 3.8, so we can postpone the debugging of this issue.
	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00027.html>

	* tests/report.at (Multistart reports): Comment out.

2021-08-29  Akim Demaille  <akim.demaille@gmail.com>

	style: c++: formatting changes
	* data/skeletons/variant.hh, data/skeletons/glr2.cc: Fix space before
	paren issue.

2021-08-29  Akim Demaille  <akim.demaille@gmail.com>

	style: rename stmtMerge as stmt_merge
	Follow the GNU Coding Style.

	* doc/bison.texi, examples/c++/glr/c++-types.yy,
	* examples/c/glr/c++-types.y, tests/cxx-type.at: s/stmtMerge/stmt_merge/g.

2021-08-29  Akim Demaille  <akim.demaille@gmail.com>

	c++: beware of Visual C++ limitations
	Contrary to what commit d8cc6b073e2802d871a16dc62418a7eb62ed2216 "c++:
	shorten the assertions that check whether tokens are correct"
	believed, MS Visual C++'s preprocessor limitation is not on the input
	line length, but on the size of the line holding the full C++
	statement.

	Reported by Vince Huffaker <vince@vincejulie.com>
	<https://lists.gnu.org/r/help-bison/2021-08/msg00003.html>

	* data/skeletons/variant.hh (_b4_symbol_constructor_define): Hide the
	assertion from Visual C++.

2021-08-29  Akim Demaille  <akim.demaille@gmail.com>

	tests: don't postprocess stderr with sed
	On Solaris, sed throws away the NUL bytes from the stream, even in C
	locale.  So instead of postprocessing bison's stderr to neutralize
	changes in value of `argv[0]`, use an envvar to actually neutralize
	variations of `argv[0]` during tests.

	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00025.html>

	* src/main.c (main): Change `argv[0]` if BISON_PROGRAM_NAME is
	defined.
	* tests/bison.in: No longer mess with stderr, just pass
	the expected BISON_PROGRAM_NAME value.

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	CI: don't require Autoconf 2.71

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	examples: don't demonstrate multistart, which is not part of 3.8
	Besides, for mysterious reasons, this fails on some environment.
	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/archive/html/bug-bison/2021-08/msg00008.html>

	* examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/parse.y,
	* examples/c/lexcalc/scan.l: Revert to a single-start example.

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	tests: grep -E is not portable
	Reported by Dagobert Michelsen.
	<https://lists.gnu.org/r/bug-bison/2021-08/msg00008.html>

	* tests/calc.at: Use $EGREP.

2021-08-19  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: require C++11
	Reported by Dagobert Michelsen.
	https://lists.gnu.org/r/bug-bison/2021-08/msg00006.html

	* m4/bison-cxx-std.m4 (_BISON_CXXSTD_98_snippet): We don't need
	vector::data, it was only for glr2.cc, which is C++11 anyway.
	(_BISON_CXXSTD_11_snippet): We need vector::data and std::swap on
	arrays.
	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): We don't need
	vector::data.
	* tests/local.at (AT_COMPILE_CXX): Skip when glr2.cc and no support
	for C++11.

2021-08-13  Akim Demaille  <akim.demaille@gmail.com>

	readme: add D

2021-08-13  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.

2021-08-13  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.90
	* NEWS: Record release date.

2021-08-13  Akim Demaille  <akim.demaille@gmail.com>

	build: ignore syntax-check's file_system check on Doxyfile
	* cfg.mk: Here.

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

	tests: fix incorrect test case
	In c2ba260487927a4cdf061fae10fdd1b387ca3d95 ("glr.c: fix signature
	when using custom error messages"), I meant to add a test case for C,
	not C++.  It does not work in C++.

	* tests/calc.at: Run for glr.c, not glr.cc.

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

	gnulib: update

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

	news: be clear that glr2.cc is C++11

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

	build: modernize to newer Autoconf releases
	* configure.ac: here.

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

	build: reject C++ compilers that don't support std::vector::data
	GCC 4.2 on macOS claims to support C++98, but does not feature it.

	input.cc: In member function 'void state_stack::yycompressStack()':
	input.cc:1774: error: 'class std::vector<glr_stack_item, std::allocator<glr_stack_item> >' has no member named 'data'

	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz>.

	* m4/bison-cxx-std.m4 (_BISON_CXXSTD_98_snippet): Check for it.
	* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Ditto.

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

	build: check for C++ 20 and 2b
	C++20 is released.

	* configure.ac, m4/bison-cxx-std.m4, tests/atlocal.in,
	* tests/local.at: Replace 2a with 20, and add support for 2b.

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

	tests: remove obsolete checks
	* tests/atlocal.in: It was an error for tests to depend on gnulib:
	they must not, as gnulib would hide portability issues that we want to
	catch.  So this piece of code is no longer useful, and must not be
	useful.

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

	tests: be robust to old versions of xlstproc
	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz>

	* tests/report.at (AT_CHECK_HTML): New.
	Use it.

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

	c: fix _Noreturn support detection
	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/ticket/59927#comment:59> and
	<https://trac.macports.org/ticket/59927#comment:62>.

	* data/skeletons/c.m4: Fix typo.

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

	lalr1.cc: style changes
	* data/skeletons/lalr1.cc: Formatting changes.
	Use more `const`, as in glr2.cc.

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

	glr.c: fix signature when using custom error messages
	Reported by Tom Shields <thomas.evans.shields@icloud.com>.

	* data/skeletons/glr.c (yypcontext_location): Fix return type.
	* tests/calc.at: Check the case pure, location, custom error messages.

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

	tests: check symbol/token renumbering
	In some extreme situations, with lots of useless tokens, Bison was
	numbering them incorrectly, which resulted in a broken grammar.
	<https://lists.gnu.org/r/bison-patches/2021-03/msg00001.html>
	commit a774839ca873d1082f79ba3c4eecc1e242a28ce1.

	* tests/regression.at (Useless Tokens): New.

2021-08-09  Akim Demaille  <akim.demaille@gmail.com>

	style: rename b4_lex as b4_yylex
	For consistency with b4_yyerror_formals, etc.

	* data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/d.m4,
	* data/skeletons/glr.c, data/skeletons/glr2.cc,
	* data/skeletons/java.m4, data/skeletons/lalr1.cc,
	* data/skeletons/lalr1.d, data/skeletons/lalr1.java,
	* data/skeletons/yacc.c
	(b4_lex, b4_lex_formals): Rename as...
	(b4_yylex, b4_yylex_formals): these.

2021-08-09  Akim Demaille  <akim.demaille@gmail.com>

	yacc: comply with recent POSIX updates: declare yyerror and yylex
	In POSIX Yacc mode, declare yyerror and yylex unless already #defined,
	or if YYERROR_IS_DECLARED/YYLEX_IS_DECLARED are defined (for
	consistency with Bison's YYSTYPE_IS_DECLARED/YYLTYPE_IS_DECLARED).
	See <https://austingroupbugs.net/view.php?id=1388#c5220>.

	* data/skeletons/c.m4 (b4_function_declare): Resurect.
	(b4_lex_formals): Since we will possibly expose this prototype
	in the header, take the prefix into account.
	* data/skeletons/yacc.c (b4_declare_yyerror_and_yylex): New.
	(b4_shared_declarations): Use it.

	* tests/local.at (AT_YACC_IF): New.
	When in Yacc mode, set the `yacc` Autotest keyword.
	(AT_YYERROR_DECLARE(c)): Don't declare in Yacc mode,
	to avoid clashes (since this signature is static).
	(AT_YYERROR_DEFINE(c)): Don't define as static in Yacc mode.
	* tests/regression.at (Early token definitions with --yacc): Specify
	that we are in Yacc mode.

2021-08-09  Akim Demaille  <akim.demaille@gmail.com>

	build: enable -Wmismatched-dealloc
	* configure.ac (warn_common): Here.

2021-08-09  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

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

	bistromathic: beware of portability issues with readline
	In some cases readline emits a trailing spaces after the last
	suggestion, which results in errors such as:

	```
	-(       -       atan    cos     exp     ln      number  sin     sqrt$
	+(       -       atan    cos     exp     ln      number  sin     sqrt    $
	```

	Reported by Christopher Nielsen <mascguy@github.com>.
	<https://trac.macports.org/ticket/59927#comment:48>
	<https://trac.macports.org/attachment/ticket/59927/bison-3.7.6-test-10.13.test-suite.log>

	* examples/test (run): Add support for -t.
	* examples/c/bistromathic/bistromathic.test: Use it.

2021-08-07  Akim Demaille  <akim.demaille@gmail.com>

	d: prepare to be able to run LAC tests
	Unfortunately it seems to be quite difficult to have "LAC: Exploratory
	stack" run for D.

	* data/skeletons/lalr1.d: We need File when traces are enabled.
	* tests/local.at (AT_YYLEX_DEFINE(d)): New.
	* tests/regression.at: Prepare for D, but don't run it, it does not
	work.

2021-08-07  Akim Demaille  <akim.demaille@gmail.com>

	tests: factor iterating over skeletons
	* tests/local.at (AT_FOR_EACH_SKEL): New.
	Use where appropriate.
	* data/skeletons/lalr1.d: Reject -d.
	* tests/input.at, tests/scanner.at: Also check D.

2021-08-07  Akim Demaille  <akim.demaille@gmail.com>

	m4: catch suspicions of unevaluated macros
	Check in m4's output if there are sequences such as m4_foo or b4_foo,
	which are probably resulting from incorrect m4 processing.

	It actually already is useful:

	- it caught a leaking b4_lac_if leaking from glr.c, where LAC is not
	  supported, hence b4_lac_if is not defined.

	- it also caught references to location.hh in position.hh when
	  location.hh does not exist.

	- while making "Code injection" robust to these new warnings (it is
	  its very purpose to let b4_canary pass unevaluated), I saw that it
	  did not check lalr1.d, and when adding lalr1.d, it revealed it did
	  underquote ocurrences of token value types.

	* src/scan-skel.l (macro): New abbreviation.
	Use it.
	* data/skeletons/glr.c: Don't use b4_lac_if, we don't have it.
	* data/skeletons/location.cc: Don't generate position.hh when we don't
	generate location.hh.
	* data/skeletons/d.m4 (b4_basic_symbol_constructor_define): Fix
	underquotation.
	* data/skeletons/bison.m4 (b4_canary): New.
	* tests/input.at (Code injection): Use it, and check lalr1.d too.

2021-08-07  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes in scan-code.l
	* src/scan-code.l: Fix indentation.

2021-08-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: avoid #define YYDEBUG in C++
	* doc/bison.texi (Enabling Traces): here.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: extract AT_LOCATION_PRINT_DECLARE and AT_LOCATION_PRINT_DEFINE
	* tests/local.at (AT_LOCATION_PRINT_DECLARE)
	(AT_LOCATION_PRINT_DEFINE): New.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	tests: rename AT_YACC_IF as AT_YACC_C_IF
	In data/, b4_yacc_if refers to %yacc, not yacc.c.

	* tests/local.at (AT_YACC_IF): Rename as...
	(AT_YACC_C_IF): this.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	doc: more pointers to the examples
	* doc/bison.texi (Infix Calc): Here.

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	git: add diff patterns for Autotest and Texinfo

2021-08-06  Akim Demaille  <akim.demaille@gmail.com>

	CI: fix the GCC 9 build

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	todo: d: push and token ctors are done

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	doc: refer to the examples
	* doc/bison.texi: Point to rpcalc, mfcalc, simple.y, calc++, c/glr and
	c++/glr.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	examples: modernize the example Makefiles
	* examples/c++/Makefile, examples/c++/calc++/Makefile,
	* examples/c++/glr/Makefile, examples/c/bistromathic/Makefile,
	* examples/c/calc/Makefile, examples/c/glr/Makefile,
	* examples/c/lexcalc/Makefile, examples/c/mfcalc/Makefile,
	* examples/c/pushcalc/Makefile, examples/c/reccalc/Makefile,
	* examples/c/rpcalc/Makefile, examples/d/calc/Makefile,
	* examples/d/simple/Makefile, examples/java/calc/Makefile,
	* examples/java/simple/Makefile:
	Use --html to generate *.html directly.
	No longer demonstrate --xml.
	No longer show rules for xml to html.
	Use --header, not --defines.
	Use --graph without specifying the output file now that we
	generate *.gv by default.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	doc: glr: document typed mergers
	See <https://lists.gnu.org/r/help-bison/2020-12/msg00016.html>.

	* doc/bison.texi (Merging GLR Parses): document typed mergers.
	And avoid #define YYSTYPE.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	style: tests: rebox comments
	* tests/glr-regression.at: here.

2021-08-04  Akim Demaille  <akim.demaille@gmail.com>

	news: update
	In particular, announce lalr1.d.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix spello
	* doc/bison.texi (Multiple start-symbols): here.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	scan: fix typo in UTF-8 escape
	We had:

	```
	-mbchar    ...|\xF0[\x\90-\xBF]([\x80-\xBF]{2})|...
	+mbchar    ...|\xF0[\x90-\xBF]([\x80-\xBF]{2})|...
	```

	so a precise sequence that matches the incorrect regex can let NUL
	bytes pass through, which triggers an assertion violation downstream.
	It is a pity that Flex does not report an error for such input.

	Reported by Ahcheong Lee <ahcheong.lee@gmail.com>.
	<https://lists.gnu.org/r/bug-bison/2021-04/msg00003.html>

	* src/scan-gram.l (mbchar): Fix the bad regex.
	* tests/input.at (Invalid inputs): Check that case.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	todo: POSIX yacc and prototypes

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: update Doxygen template file
	* doc/Doxyfile.in: here.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	doc: a bit of editing
	* doc/bison.texi: Use @samp{...}, not "..." for pieces of code.
	Use @samp{...}, not @command{...} for command lines.
	Promote %header/--header over %defines/--defines.
	Spellcheck.

2021-08-03  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-08-01  Alyssa Ross  <hi@alyssa.is>

	getargs: don't translate first line of --version
	<https://lists.gnu.org/r/bison-patches/2021-06/msg00002.html>

	* src/getargs.c (version): here.

2021-08-01  Akim Demaille  <akim.demaille@gmail.com>

	all: fix confusion between token ctor and symbol ctor
	The symbol constructors are genuine constructors.  Token constructors
	are plain functions that construct tokens.

2021-07-25  Akim Demaille  <akim.demaille@gmail.com>

	d: minor clean up
	* doc/bison.texi: Use @samp, not "...", around pieces of code.
	* examples/d/calc/calc.y: Don't promote %union.

2021-06-23  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-06-06  Adela Vais  <adela.vais99@gmail.com>

	d: demonstrate the token constructors
	* examples/d/calc/calc.y: Use the token constructors in the 'calc' example.

2021-04-11  Adela Vais  <adela.vais99@gmail.com>

	d: update documentation
	* doc/bison.texi: Various fixes.
	(D Push Parser Interface, D Complete Symbols): New sections.

2021-04-11  Adela Vais  <adela.vais99@gmail.com>

	d: demonstrate the push parser
	* examples/d/calc/calc.y: Use a parser of type 'push' in the calc
	example.

2021-04-11  Adela Vais  <adela.vais99@gmail.com>

	d: add push parser support
	Support the push-pull directive with the options pull, push and both.
	Pull remains the default option.

	* data/skeletons/d.m4: Add user aliases for the push parser's return
	values: PUSH_MORE, ABORT, ACCEPT.
	* data/skeletons/lalr1.d: Add push parser support.
	* tests/calc.at: Test it.

2021-03-26  Adela Vais  <adela.vais99@gmail.com>

	d: add token constructors support
	The user can return from yylex() by calling the Symbol method of the
	same name as the TokenKind reported, and adding the parameters for
	value and location if necessary.  These methods generate compile-time
	errors if the parameters are not correlated.  Token constructors work
	with both %union and api.value.type union.

	* data/skeletons/d.m4: Here.
	* tests/calc.at: Test it.

2021-03-26  Akim Demaille  <akim.demaille@gmail.com>

	d: add api.value.type union support
	The union of the values is handled by the backend.
	In D, unions can hold classes, structs, etc., so this is more similar
	to the C++ api.value.type variant.

	* data/skeletons/d.m4, data/skeletons/lalr1.d: Here.
	* tests/calc.at, tests/local.at: Test it.

2021-03-26  Adela Vais  <adela.vais99@gmail.com>

	d: rewrite Symbol's constructors in M4
	The D code was becoming too complex.
	M4 is easier to maintain in the long run.

	* data/skeletons/d.m4: Here.

2021-03-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-03-10  Akim Demaille  <akim.demaille@gmail.com>

	files: please syntax-check
	* src/files.c (string_free): syntax-check does not want us to cast
	arguments to free.

2021-03-10  Akim Demaille  <akim.demaille@gmail.com>

	Merge 3.7.6 into master
	* maint:
	  maint: post-release administrivia
	  version 3.7.6
	  yacc: fix push parser
	  tables: fix again the handling of useless tokens

2021-03-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.

2021-03-08  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.6
	* NEWS: Record release date.

2021-03-07  Akim Demaille  <akim.demaille@gmail.com>

	doc: don't mention YY_LOCATION_PRINT
	* doc/bison.texi (Syntax Error Reporting Function): Don't refer to
	YY_LOCATION_PRINT, it is a private internal detail.

2021-03-07  Akim Demaille  <akim.demaille@gmail.com>

	yacc: fix push parser
	When a pstate is used for multiple successive parses, some state may
	leak from one run into the following one.  That was introduced in
	330552ea499ca474f65967160e9d4e50265f9631 "yacc.c: push: don't clear
	the parser state when accepting/rejecting".

	Reported by Ryan <dev@splintermail.com>
	https://lists.gnu.org/r/bug-bison/2021-03/msg00000.html

	* data/skeletons/yacc.c (yypush_parse): We reusing a pstate from a
	previous run, do behave as if it were the first run.
	* tests/push.at (Pstate reuse): Check this.

2021-03-07  Akim Demaille  <akim.demaille@gmail.com>

	tables: fix again the handling of useless tokens
	The right-shift added in c22902e360e0fbbe9fd5657dcf107e03166da309
	("tables: fix handling for useless tokens") is incorrect.  In
	particular, we need to reset the "new" bits.

	Reported by Balázs Scheidler.
	https://github.com/akimd/bison/issues/74

	* src/tables.c (pos_set_set): Fix the right-shift.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	html: fix memory leak
	* src/print-xml.c (print_html): Free allocated memory.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	output: cache the mapped file names
	Don't repeatedly call malloc/free for each call to map_file_name.

	* bootstrap.conf: We need hash-map.
	* src/files.h, src/files.c (map_file_name): The caller must not free
	the result.
	Adjust callers.
	(mapped_dir_prefix, spec_mapped_header_file): Remove.
	* src/files.c
	(map_file_name): Rename as...
	(map_file_name_alloc): this.
	(mapped_files, map_file_name, string_equals, string_hash, string_free):
	New.

2021-02-26  Joshua Watt  <jpewhacker@gmail.com>

	output: use mapped file name for symbols
	Applies the file name mapping before exporting it as a symbol. This
	allows the symbols to correctly respect the --file-prefix-map command
	line option.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	style: formatting changes
	* src/files.c, src/files.h: Save horizontal space.
	Prefer `res` for returned values.
	Put the doc into the header.

2021-02-26  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-02-25  Joshua Watt  <jpewhacker@gmail.com>

	doc: fix documented function name
	* data/README.md: Fix the name of a referenced function to match the
	name in code.

2021-02-25  Akim Demaille  <akim.demaille@gmail.com>

	regen

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	doc: printing locations
	Document YYLOCATION_PRINT.

	* doc/bison.texi (Printing Locations): New node.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: improve some function prototypes
	* examples/c/bistromathic/parse.y, examples/c/glr/c++-types.y,
	* examples/c/lexcalc/parse.y: Use const where appropriate.
	Avoid `yy` prefixes where it does not make sense.
	Avoid the `p` prefix for pointers.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: use YYLOCATION_PRINT
	* examples/c/bistromathic/parse.y, examples/c/glr/c++-types.y,
	* examples/c/lexcalc/parse.y: Don't use the private internal detail
	`YY_LOCATION_PRINT`, use `YYLOCATION_PRINT`.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	c: rename YY_LOCATION_PRINT as YYLOCATION_PRINT and make it public
	It is very helpful to be able to look at the locations in the debug
	traces, let's provide the users with (i) a means to do that for their
	location types, and (ii) a public macro to print locations when debug
	traces are enabled.

	* data/skeletons/c.m4 (b4_yy_location_print_define): Rename as...
	(b4_yylocation_print_define): this.
	Define YYLOCATION_PRINT instead of YY_LOCATION_PRINT.
	Ensure backward compatibility for those who might have defined/used
	YY_LOCATION_PRINT in spite the warnings.
	Adjust dependencies.
	* data/skeletons/glr2.cc: We don't use YYLOCATION_PRINT here.

2021-02-09  Akim Demaille  <akim.demaille@gmail.com>

	examples: do not rely on YY_LOCATION_PRINT
	* examples/c/bistromathic/parse.y (location_print): New.
	Use it.

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

	c: stop defining YY_LOCATION_PRINT when locations are not enabled
	* data/skeletons/c.m4 (b4_yy_location_print_define): here.

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

	graph: output foo.gv by default, instead of *.dot
	That change was started in Bison 3.4.  The announcement for 3.7 stated
	that in Bison 3.8 we would use *.gv by default.

	* src/files.c (compute_output_file_names): spec_graph_file defaults
	too *.gv.
	* doc/bison.texi, examples/c++/calc++/local.mk, tests/output.at:
	Adjust.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	tests: adjust to the removal of YYPRINT
	* tests/regression.at: here.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	yacc: remove support for YYPRINT
	Its removal was annonced several times in NEWS (for Bison 3.5, 3.6, 3.7).

	* data/skeletons/c.m4, data/skeletons/yacc.c: Remove support for YYPRINT.
	* NEWS: Fix the mess introduced by the merge.
	Document the removal of YYPRINT.
	* doc/bison.texi (The YYPRINT Macro): Remove.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: issue a compile-time warning when #define YYSTYPE is used
	Using #define YYSTYPE has always been strongly discouraged in C++.
	Macros are dangerous and can result in subtle bugs.
	https://lists.gnu.org/r/bug-bison/2020-12/msg00007.html

	Maybe some people are currently using #define YYSTYPE.  Instead of
	dropping support right now, first issue a warning.  Bison can "see" if
	YYDEBUG is defined (it could even be on the command line), only the
	compiler knows.  Unfortunately `#warning` is non-portable, and
	actually GCC even dies on it when `-pedantic` is enabled.  So we need
	to use `#pragma message`.  We must make it conditional as some
	compilers might not support it, but it doesn't matter if only _some_
	compilers emit the warning: it should be enough to catch the attention
	of the developers.

	* data/skeletons/c++.m4: Issue a warning when the user defined
	YYSTYPE.
	* tests/actions.at: Don't #define YYSTYPE.
	* tests/headers.at (Several parsers): Ignore the YYSTYPE in the
	warning.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: make it clear that #define YYSTYPE is not supported
	We have been accepting this for years, but it is deprecated: people
	are expecting to define api.value.type instead.

	* doc/bison.texi: Make it clear that YYSTYPE and YYLTYPE are for C
	only.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	c++: stop referring to YYSTYPE in yylex
	* data/skeletons/glr2.cc, data/skeletons/lalr1.cc (b4_lex): Don't
	refer to YYSTYPE, but to value_type.
	Note that this is "symbolic" in the sense that these values are never
	used by b4_function_call.

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	CI: try GCC 11 and Clang 11

2021-02-01  Akim Demaille  <akim.demaille@gmail.com>

	gnulib: update

2021-01-31  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: no longer be part of b4_glr_cc_if
	We are fully independant of glr.c/glr.cc, we no longer need to pretend
	we are glr.cc.

	* data/skeletons/bison.m4: here.

2021-01-31  Akim Demaille  <akim.demaille@gmail.com>

	m4: provide macros for api.value.type=union
	* data/skeletons/bison.m4 (b4_union_if): New.
	Remove support for "%define variant", which was deprecated long ago.
	* tests/local.at (AT_UNION_IF): New.

2021-01-30  Akim Demaille  <akim.demaille@gmail.com>

	traces: display the Bison version
	* src/main.c (main): When traces are enabled, display the Bison
	version.
	* tests/conflicts.at, tests/report.at, tests/sets.at:
	Use AT_PACKAGE_VERSION (for package.m4) instead of post-processing the
	output.

2021-01-30  Akim Demaille  <akim.demaille@gmail.com>

	tests: run the main test suite on "make check"
	Automake appears to not recognize "check-local" when it is not a
	isolated target.  Fixes 77a8b84fc8bbe39dc231a1f657fd56a50fac5855.

	* tests/local.mk (check-local): Make it visible to Automake.

2021-01-30  Adela Vais  <adela.vais99@gmail.com>

	d: tests: various style fixes
	* tests/calc.at, tests/scanner.at: Here.
	(yylex): Report values directly, without storing them to the union
	first.

2021-01-30  Paul Eggert  <eggert@cs.ucla.edu>

	Update URLs to prefer https: to http:
	Also, fix a few http: URLs that were no longer working.

2021-01-29  Paul Eggert  <eggert@cs.ucla.edu>

	Update URLs to prefer https: to http:
	Also, fix a few http: URLs that were no longer working.

2021-01-27  Akim Demaille  <akim.demaille@gmail.com>

	tests: provide check-examples and check-tests
	* examples/local.mk (check-examples): New.
	* tests/local.mk (check-tests): New.
	* README-hacking.md: Document them.

2021-01-27  Akim Demaille  <akim.demaille@gmail.com>

	bistromathic: use gettext for all the messages
	* examples/c/bistromathic/parse.y: Add missing calls to _.

2021-01-24  Adela Vais  <adela.vais99@gmail.com>

	d: tests: avoid mixing output from reportSyntaxError and getExpectedTokens
	Function reportSyntaxError buffers and prints the message at the end.

	* tests/local.at: Here.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: fix destructor support
	Currently glr2.cc does not use 'symbol's everywhere, in various places
	it also uses yykind, yyval and yyloc "by hand".  So we need two
	different calls for user-defined constructors: once for ~symbol,
	another for yy_destroy_.  Both need to call the user destructors with
	different calling conventions.

	* data/skeletons/glr2.cc (b4_symbol_action): Rename as...
	(b4_symbol_action_for_yyval): this.
	(b4_symbol_action): New, taken from lalr1.cc.
	(yy_destroy_, yy_symbol_value_print_): Use b4_symbol_action_for_yyval.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	glr2.cc: beware of types with angle brackets
	For C++98, avoid "yyval.as<std::list<int>>".

	* data/skeletons/glr2.cc (b4_call_merger): Add spaces within "<...>".

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	package: fix details after merge with 3.7.5
	* TODO, cfg.mk: Update.
	* src/parse-gram.c, src/parse-gram.h: Regen.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	Merge tag 'v3.7.5'
	Three new commits:

	commit 8358090292e21c61a583da542bad9099ad65f355
	Author: Paul Eggert <eggert@cs.ucla.edu>
	Date:   Wed Jan 20 18:30:16 2021 -0800

	    c: port to HP-UX 11.23

	commit 2c294c132528ede23d8ae4959783a67e9ff05ac5
	Author: Vincent Imbimbo <vmi6@cornell.edu>
	Date:   Sat Jan 23 13:25:18 2021 -0500

	    cex: fix state-item pruning

	commit c22902e360e0fbbe9fd5657dcf107e03166da309
	Author: Akim Demaille <akim.demaille@gmail.com>
	Date:   Sat Jan 23 18:40:15 2021 +0100

	    tables: fix handling for useless tokens

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	doc: fix typo
	Reported by Kaz Kylheku.
	https://lists.gnu.org/r/bison-patches/2020-11/msg00019.html

	* doc/bison.texi (Versioning): here.

2021-01-24  Kaz Kylheku  <kaz@kylheku.com>

	doc: document best deployment practices.
	* doc/bison.texi (Versioning): New node about practices
	regarding dealing with multiple versions of Bison.

2021-01-24  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.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	version 3.7.5
	* NEWS: Record release date.

2021-01-24  Akim Demaille  <akim.demaille@gmail.com>

	tables: fix handling for useless tokens
	In some rare conditions, the generated parser can be wrong when there
	are useless tokens.

	Reported by Balázs Scheidler.
	https://github.com/akimd/bison/issues/72

	Balázs managed to prove that the bug was introduced in

	    commit af1c6f973a60a51c609903713ff8f7fce0887025
	    Author: Theophile Ranquet <ranquet@lrde.epita.fr>
	    Date:   Tue Nov 13 10:38:49 2012 +0000

	    tables: use bitsets for a performance boost

	    Suggested by Yuri at
	    <http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00000.html>.

	    The improvement is marginal for most grammars, but notable for large
	    grammars (e.g., PosgreSQL's postgre.y), and very large for the
	    sample.y grammar submitted by Yuri in
	    http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00012.html.
	    Measured with --trace=time -fsyntax-only.

	    parser action tables    postgre.y     sample.y
	    Before                 0,129 (44%)  37,095 (99%)
	    After                  0,117 (42%)   5,046 (93%)

	    * src/tables.c (pos): Replace this set of integer coded as an unsorted
	    array of integers with...
	    (pos_set): this bitset.

	which was implemented long ago, but that I installed only recently
	(March 2019), first published in v3.3.90.

	That patch introduces a bitset to represent a set of integers.  It
	managed negative integers by using a (fixed) base (the smallest
	integer to represent).  It avoided negative accesses into the bitset
	by ignoring integers smaller than the base, under the asumption that
	these cases correspond to useless tokens that are ignored anyway.
	While it turns out to be true for all the test cases in the test suite
	(!), Balázs' use case demonstrates that it is not always the case.

	So we need to be able to accept negative integers that are smaller
	than the current base.

	"Amusingly" enough, the aforementioned patch was visibly unsure about
	itself:

	    /* Store PLACE into POS_SET.  PLACE might not belong to the set
	       of possible values for instance with useless tokens.  It
	       would be more satisfying to eliminate the need for this
	       'if'.  */

	This commit needs several improvements in the future:
	- support from bitset for bit assignment and shifts
	- amortized resizing of pos_set
	- test cases

	* src/tables.c (pos_set_base, pos_set_dump, pos_set_set, pos_set_test):
	New.
	Use them instead of using bitset_set and bitset_test directly.

2021-01-24  Vincent Imbimbo  <vmi6@cornell.edu>

	cex: fix state-item pruning
	There were several bugs in pruning that would leave the state-item
	graph in an inconsistent state which could cause crashes later on:

	- Pruning now happens in one pass instead of two.
