2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	version 3.0.5
	* NEWS: Record release date.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	bison: style: indentation fixes
	* src/parse-gram.y: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	bison: please address sanitizer
	* src/parse-gram.y (add_param): Asan does not like that the second
	argument of strspn is not 0-terminated.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: fix indentation
	* data/variant.hh (b4_symbol_variant): De-indent, as the callers are
	indented.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	NEWS: update

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: prefer `unsigned` to `unsigned int`
	* data/c++.m4: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: style: space before paren
	* data/c++.m4, data/lalr1.cc: here.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	C++: fix -Wdeprecated warnings
	For instance on test 99:

	    In file included from @@.cc:56:
	    @@.hh:409:26: error: definition of implicit copy constructor for
	                         'stack_symbol_type' is deprecated because it
	                         has a user-declared copy assignment operator
	                         [-Werror,-Wdeprecated]
	          stack_symbol_type& operator= (const stack_symbol_type& that);
	                         ^

	Reported by Derek Clegg.
	https://lists.gnu.org/archive/html/bison-patches/2018-05/msg00036.html

	* configure.ac (warn_tests): Add -Wdeprecated.
	* data/lalr1.cc (stack_symbol_type): Add an explicit copy ctor.
	We cannot rely on the explicit default implementation (`= default`)
	as we support C++ 98.

2018-05-27  Akim Demaille  <akim.demaille@gmail.com>

	tests: fix -Wdeprecated warning
	With recent compilers:

	    input.yy:49:5: error: definition of implicit copy assignment
	                          operator for 'Object' is deprecated because
	                          it has a user-declared destructor
	                          [-Werror,-Wdeprecated]
	        ~Object ()
	        ^
	    input.yy:130:35: note: in implicit copy assignment operator for
	                           'Object' first required here
	        { yylhs.value.as< Object > () = yystack_[0].value.as< Object > (); }

	* tests/c++.at (Object): Add missing assignment operator.

2018-05-19  Akim Demaille  <akim.demaille@gmail.com>

	maint: update syntax-check exclusions
	sc_two_space_separator_in_usage complains about bootstrap:

	    two_space_separator_in_usage
	    /Users/akim/src/gnu/bison/bootstrap:905:   --aux-dir $build_aux\
	    /Users/akim/src/gnu/bison/bootstrap:906:   --doc-base $doc_base\
	    /Users/akim/src/gnu/bison/bootstrap:907:   --lib $gnulib_name\
	    /Users/akim/src/gnu/bison/bootstrap:908:   --m4-base $m4_base/\
	    /Users/akim/src/gnu/bison/bootstrap:909:   --source-base $source_base/\
	    /Users/akim/src/gnu/bison/bootstrap:910:   --tests-base $tests_base\
	    /Users/akim/src/gnu/bison/bootstrap:911:   --local-dir $local_gl_dir\
	    maint.mk: help2man requires at least two spaces between an option and its description

	* cfg.mk: Exclude bootstrap from this check.

2018-05-19  Akim Demaille  <akim.demaille@gmail.com>

	autoconf: update
	* submodules/autoconf: Update to latest master.
	No difference on the M4 files we use.

2018-05-19  Akim Demaille  <akim.demaille@gmail.com>

	regen

2018-05-12  Akim Demaille  <akim.demaille@gmail.com>

	Update copyright years
	Run `make update-copyright`.

2018-05-12  Nate Guerin  <nathan.guerin@riseup.net>

	Add a missing word in the documentation
	Small patch adds the word 'to' to the documentation.

2018-05-12  Akim Demaille  <akim.demaille@gmail.com>

	Examples: improve C++ style
	* examples/variant.yy: Prefer vector to list.
	Remove useless inline.

2018-05-12  Akim Demaille  <akim.demaille@gmail.com>

	Avoid compiler warnings
	At least GCC 7.3, with -O1 or -O2 (but not -O0 or -O3) generates
	warnings with -Wnull-dereference when using yyformat: it fails to see
	yyformat cannot be null.

	Reported by Frank Heckenbach, https://savannah.gnu.org/patch/?9620.

	* configure.ac: Use -Wnull-dereference if supported.
	* data/glr.c, data/lalr1.cc, data/yacc.c: Define yyformat in such
	a way that GCC cannot not see that yyformat is defined.
	Using `default: abort();` also addresses the issue, but forces
	the inclusion of `stdlib.h`, which we avoid.

2018-05-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: fix uses of `inline`
	Sometimes `inline` would be used in *.cc files on symbols that are not
	exported (useless but harmless), and sometimes on exported symbols
	such as the constructor of syntax_error (harmful: linking fails).

	Reported several times, including:

	- by Dennis T
	  http://lists.gnu.org/archive/html/bug-bison/2016-03/msg00002.html
	- by Frank Heckenbach
	  https://savannah.gnu.org/patch/?9616

	* data/c++.m4 (b4_inline): New: expands to `inline` or nothing.
	Use it where appropriate.
	* data/lalr1.cc: Use it where appropriate.

	* tests/c++.at (Syntax error as exception): Put the scanner in another
	compilation unit to exercise the constructor of syntax_error.

2018-05-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove useless `inline` in CC files
	* data/glr.cc, data/lalr1.cc: Remove `inline` from implementations
	that are not in headers.

2018-05-10  Akim Demaille  <akim.demaille@gmail.com>

	C++: remove useless `inline` on templates
	Templates are implicitly `inline`.

	* data/c++.m4, data/lalr1.cc: Remove `inline` from templates.

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

	style: don't use std::endl
	* data/lalr1.cc, doc/bison.texi, etc/bench.pl.in, examples/variant.yy,
	* tests/actions.at, tests/atlocal.in, tests/c++.at, tests/headers.at,
	* tests/local.at, tests/types.at:
	Don't use std::endl, it flushes uselessly, and is considered bad
	style.

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

	doc: wrap
	* README-hacking: Refill paragraphs.

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

	gnulib: update
	* README-hacking: Commit before bootstrapping.
	* bootstrap.conf: gnulib_mk is no longer defined by bootstrap.
	* bootstrap, gnulib, lib/.gitignore, m4/.gitignore: Update/regen.

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

	tests: we might need to find gnulib headers
	    315. calc.at:596: testing Calculator  ...
	    ++ cat
	    ++ test x = x1
	    ++ set +x
	    bison/tests/calc.at:596: bison -fno-caret -o calc.c calc.y
	    ++ bison -fno-caret -o calc.c calc.y
	    ++ set +x
	    bison/tests/calc.at:596: $BISON_C_WORKS
	    stderr:
	    stdout:
	    ++ set +x
	    bison/tests/calc.at:596: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
	    ++ ccache clang-mp-6.0 -Qunused-arguments -O3 -g -Wall -Wextra -Wno-sign-compare -Wcast-align -Wdocumentation -Wformat -Wpointer-arith -Wwrite-strings -Wbad-function-cast -Wshadow -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wmissing-declarations -Wmissing-prototypes -Wundef -pedantic -Wsign-compare -fno-color-diagnostics -Wno-keyword-macro -Werror -Ibison/_build/6s/lib -DNDEBUG -isystem /opt/local/include -I/opt/local/include -L/opt/local/lib -o calc calc.c bison/_build/6s/lib/libbison.a -lintl -Wl,-framework -Wl,CoreFoundation
	    stderr:
	    In file included from calc.y:198:
	    bison/_build/6s/lib/unistd.h:592:11: fatal error: 'getopt-pfx-core.h' file not found
	    # include <getopt-pfx-core.h>
	              ^~~~~~~~~~~~~~~~~~~
	    1 error generated.
	    stdout:
	    bison/tests/calc.at:596: exit code was 1, expected 0
	    315. calc.at:596: 315. Calculator  (calc.at:596): FAILED (calc.at:596)

	* tests/atlocal.in (CPPFLAGS): Find gnulib's headers.

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

	getargs: rename argument to avoid gnulib's renaming
	With Clang 6.0:

	      CC       src/bison-getargs.o
	    bison/src/getargs.c:67:12: error: parameter 'option' not found in the
	                               function declaration [-Werror,-Wdocumentation]
	     *  \param option   option being decoded.
	               ^~~~~~
	    bison/src/getargs.c:67:12: note: did you mean 'rpl_option'?

	* src/getargs.c: Don't use `option` as a documentation argument.

2017-09-22  Paul Eggert  <eggert@cs.ucla.edu>

	Capitalize "Polish" when it's a proper adjective

2017-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to recent Gnulib changes

2017-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	autoconf: update

2017-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	gnulib: update

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	lalr1, yacc: use the default location as initial error location
	Currently lalr1.cc makes an out-of-bound access when trying to read @1
	in rules with an empty rhs (i.e., when there is no @1) that raises an
	error (YYERROR).

	glr.c already gracefully handles this by using @$ as initial location
	for the errors.  Let's do that in yacc.c and lalr1.cc.

	* data/lalr1.cc, data/yacc.c: Use @$ to initialize the error location.
	* tests/actions.at: Check that case.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	style: formatting and comment changes
	* data/glr.c: Avoid empty lines.
	* data/lalr1.cc: Use the same comments as in glr.c and yacc.c.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	c++: style: use "unsigned", not "unsigned int"
	This style appears to be more traditional, at least in C++.
	For instance in the standard, [facets.examples].
	There are occurrences using "unsigned int" too though.

	* data/lalr1.cc, data/location.cc, data/stack.hh: here.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	c++: style: remove useless "inline" and fix space issues
	* data/lalr1.cc, data/c++.m4: Formatting changes.
	* data/stack.hh: Remove useless "inline".
	Add documentation.
	* data/location.cc: Prefer {} for empty bodies.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware of additional warnings from GCC 5
	* tests/synclines.at (AT_SYNCLINES_COMPILE): Avoid warnings about
	unused functions.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: beware that clang warns about "#define private public"
	We use this trick to write some test about internal details.  But
	since we use -Werror, clang++ 3.6 dies issueing a warning about it.

	* configure.ac (warn_tests): Disable this warning.

2015-08-12  Akim Demaille  <akim@lrde.epita.fr>

	tests: update our Valgrind suppression files
	* build-aux/linux-gnu.valgrind, build-aux/darwin11.4.0.valgrind: Rename as...
	* build-aux/Linux.valgrind, build-aux/Darwin.valgrind: these.
	* build-aux/Linux.valgrind: Add suppression clause.
	* configure.ac: Update.
	* tests/local.mk: Use it.

2015-03-03  Akim Demaille  <akim@lrde.epita.fr>

	doc: improve html and pdf rendering
	* doc/bison.texi: Help html conversion to understand where the
	function names end.
	Beware of PDF width.

2015-03-03  Akim Demaille  <akim@lrde.epita.fr>

	doc: fixes in the C++ part
	Reported by Askar Safin.

	http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00018.html
	http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00019.html

	* doc/bison.texi (Split Symbols): Fix access to token types.
	yylval is a pointer, so use ->.
	Fix coding style issues: space before paren.

2015-02-10  Akim Demaille  <akim@lrde.epita.fr>

	tests: be robust to platforms that support UTF-8 even with LC_ALL=C
	Because musl supports UTF-8 with LC_ALL=C, gcc produces:

	  input.y: In function ‘yyparse’:

	instead of:

	  input.y: In function 'yyparse':

	Reported by Ferdinand Thiessen.
	http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00001.html

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Skip syncline tests when
	we can't trust error messages issued about a function body.

2015-02-10  Akim Demaille  <akim@lrde.epita.fr>

	tests: java: avoid recent Java features
	Tests 463 and 464 fail with Java 1.4 compilers.

	Reported by Michael Felt.
	<http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00091.html>

	* tests/javapush.at: Use StringBuffer instead of StringBuilder.

2015-01-26  Akim Demaille  <akim@lrde.epita.fr>

	tests: c++: fix symbol lookup issue
	Sun C 5.13 SunOS_sparc 2014/10/20 reports errors on tests 430-432.

	Reported by Dennis Clarke.
	<http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00087.html>

	* tests/c++.at (Variants): Be sure to emit operator<< before using it:
	use "%code top" rather than "%code".
	Prefer std::vector to std::list.
	Do not define anything in std::, to avoid undefined behavior.

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

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

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.4
	* NEWS: Record release date.

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2015-01-23  Akim Demaille  <akim@lrde.epita.fr>

	build: re-enable compiler warnings, and fix them
	There are warnings (-Wextra) in generated C++ code:

	  ltlparse.cc: In member function 'ltlyy::parser::symbol_number_type
	  ltlyy::parser::by_state::type_get() const':
	  ltlparse.cc:452:33: warning: enumeral and non-enumeral type in
	  conditional expression
	      return state == empty_state ? empty_symbol : yystos_[state];

	Reported by Alexandre Duret-Lutz.

	It turns out that -Wall and -Wextra were disabled because of a stupid
	typo.

	* configure.ac: Fix the stupid typo.
	* data/lalr1.cc, src/AnnotationList.c, src/InadequacyList.c,
	* src/ielr.c, src/print.c, src/scan-code.l, src/symlist.c,
	* src/symlist.h, src/symtab.c, src/tables.c, tests/actions.at,
	* tests/calc.at, tests/cxx-type.at, tests/glr-regression.at,
	* tests/named-refs.at, tests/torture.at:
	Fix warnings, mostly issues about variables used only with assertions,
	which are disabled with -DNDEBUG.

2015-01-22  Akim Demaille  <akim@lrde.epita.fr>

	tests: c++: fix a C++03 conformance issue
	This fixes test 241 on xLC:

	"input.y", line 42.11: 1540-0274 (S) The name lookup for "report" did not find a declaration.
	"input.y", line 42.11: 1540-1292 (I) Static declarations are not considered for a function call if the function is not qualified.

	where report is:

	  static void
	  report (std::ostream& yyo, int ival, float fval)
	  {
	    yyo << "ival: " << ival << ", fval: " <<  fval;
	  }

	and line 42 is:

	  %printer { report (yyo, $$,       $<fval>$); } <ival>;

	It turns out that indeed this function must not be declared static,
	<http://stackoverflow.com/a/17662745/1353549>.  Let's put it into an
	anonymous namespace.

	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* tests/actions.at (Qualified $$ in actions): Don't use "static",
	prefer anonymous namespace.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix a title
	* tests/conflicts.at: De-overquote.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	c++: reserve 200 slots in the parser's stack
	This is consistent with what is done with yacc.c and glr.c.  Because
	it also avoids that the stack needs to be resized very soon, it should
	help keeping tests about destructors more reliable.

	Indeed, if the stack is created too small, very soon the C++ library
	needs to enlarge it, which means creating a new one, copying the
	elements from the initial one onto it, and then destroy the elements
	of the initial stack: that would be a spurious call to a destructor.

	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* data/stack.hh (stack::stack): Reserve 200 slots.
	* tests/c++.at: Remove traces of stack expansions.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: be more robust to unrecognized synclines, and try to recognize xlc
	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* tests/synclines.at (AT_SYNCLINES_COMPILE): Rename as...
	(_AT_SYNCLINES_COMPILE): this.
	Try to recognize xlc locations.
	(AT_SYNCLINES_COMPILE): New.  Skips the test if we can't read the
	synclines.

2015-01-20  Akim Demaille  <akim@lrde.epita.fr>

	tests: fix C++ conformance
	Reported by Thomas Jahns.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html

	* tests/c++.at (Exception safety): Add missing include.
	Don't use const_iterator for erase.

2015-01-18  Akim Demaille  <akim@lrde.epita.fr>

	build: fix some warnings
	Reported by John Horigan.
	http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00034.html

	* src/graphviz.c, src/symtab.h: Address compiler warnings.

2015-01-16  Akim Demaille  <akim@lrde.epita.fr>

	build: avoid infinite recursions on include_next
	On MacOS X 10.5 PPC with Apple's GCC 4.0.1:

	  % uname -a
	  Darwin aria.cielonegro.org 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:57:0
	  1 PDT 2009; root:xnu-1228.15.4~1/RELEASE_PPC Power Macintosh
	  % gcc --version
	  powerpc-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493)
	  Copyright (C) 2005 Free Software Foundation, Inc.
	  This is free software; see the source for copying conditions.  There is NO
	  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

	building in place enters into an infinite recursion on "#include_next":

	  % gmake V=1
	  [snip]
	  depbase=`echo lib/math.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
	  gcc -std=gnu99    -I. -Ilib -I. -I./lib   -g -O2 -MT lib/math.o -MD -MP -MF $depbase.Tpo -c -o lib/math.o lib/math.c &&\
	  mv -f $depbase.Tpo $depbase.Po
	  In file included from lib/math.h:27,
	                   from lib/math.h:27,
	                   from lib/math.h:27,
	                   from lib/math.h:27,
	  [snip]
	                   from lib/math.h:27,
	                   from lib/math.h:27,
	                   from lib/math.c:3:
	  lib/math.h:27:23: error: #include nested too deeply
	  Makefile:3414: recipe for target 'lib/math.o' failed
	  gmake[2]: *** [lib/math.o] Error 1

	Using -I./lib instead of -Ilib fixes the problem.

	Reported by Pho.
	<https://lists.gnu.org/archive/html/bison-patches/2014-01/msg00000.html>

	* Makefile.am (AM_CPPFLAGS): Use -I./lib instead of -Ilib.

2015-01-16  Akim Demaille  <akim@lrde.epita.fr>

	doc: minor fixes
	* doc/bison.texi: Fix warnings about colon in reference names.
	* data/bison.m4, src/files.h: Fix comments.
	* doc/Doxyfile.in: update.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: strtoul is considered obsolete and now useless
	* bootstrap.conf: here.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	c++: avoid warnings when destructors don't use $$
	* data/c++.m4: here.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

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

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.3
	* NEWS: Record release date.

2015-01-15  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2015-01-13  Akim Demaille  <akim@lrde.epita.fr>

	tests: split a large test case into several smaller ones
	* tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Move AT_SETUP/AT_CLEANUP
	into it, so that we don't skip non Java tests following a test case in Java.

2015-01-12  Akim Demaille  <akim@lrde.epita.fr>

	package: a bit of trouble shooting indications
	* README-hacking: here.

2015-01-12  Akim Demaille  <akim@lrde.epita.fr>

	doc: liby's main arms the internationalization
	Reported by Nicolas Bedon.
	<https://lists.gnu.org/archive/html/bug-bison/2014-11/msg00005.html>

	* doc/bison.texi (Yacc Library): Document the call the setlocale.

2015-01-09  Akim Demaille  <akim@lrde.epita.fr>

	bison: avoid warnings from static code analysis
	A static analysis tool reports that some callers of symbol_list_n_get
	might get NULL and not handle it properly.  This is not the case, yet
	we can suppress this pattern.

	Reported by Mike Sullivan.
	<https://lists.gnu.org/archive/html/bug-bison/2013-12/msg00027.html>

	* src/symlist.c (symbol_list_n_get): Actually it is never called
	to return 0.  Enforce this postcondition via aver.
	(symbol_list_n_type_name_get): Simplify accordingly.  In particular,
	discards a (translated) useless error message.
	* src/symlist.h: Adjust documentation.
	* src/scan-code.l: Style change.

2015-01-09  Akim Demaille  <akim@lrde.epita.fr>

	c++: fix the use of destructors when variants are enabled
	When using variants, destructors generate invalid code.
	<http://lists.gnu.org/archive/html/bug-bison/2014-09/msg00005.html>
	Reported by Michael Catanzaro.

	* data/c++.m4 (~basic_symbol): b4_symbol_foreach works on yysym:
	define it.
	* tests/c++.at (Variants): Check it.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	style: tests: simplify the handling of some C++ tests
	* tests/c++.at: here.
	(Doxygen): Pass %define, so that files such as position.hh etc.
	are generated, instead of putting everything into input.hh.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: symbols can be empty, so use it
	The previous patches ensure that symbols (symbol_type and
	stack_symbol_type) can be empty, cleared, and their emptiness can be
	checked.  Therefore, yyempty, which codes whether yyla is empty or
	not, is now useless.

	In C skeletons (e.g., yacc.c), the fact that the lookahead is empty is
	coded by "yychar = YYEMPTY", which is exactly what this patch
	restores, since yychar/yytoken corresponds to yyla.type.

	* data/lalr1.cc (yyempty): Remove.
	Rather, depend on yyla.empty ().

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: variants: don't leak the lookahead in error recovery
	During error recovery, when discarding the lookeahead, we don't
	destroy it, which is caught by parse.assert assertions.

	Reported by Antonio Silva Correia.
	With an analysis and suggested patch from Michel d'Hooge.
	<http://savannah.gnu.org/support/?108481>

	* tests/c++.at (Variants): Strengthen the test to try syntax errors
	with discarded lookahead.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: provide a means to clear symbols
	The symbol destructor is currently the only means to clear a symbol.
	Unfortunately during error recovery we might have to clear the
	lookahead, which is a local variable (yyla) that has not yet reached
	its end of scope.

	Rather that duplicating the code to destroy a symbol, or rather than
	destroying and recreating yyla, let's provide a means to clear a
	symbol.

	Reported by Antonio Silva Correia, with an analysis from Michel d'Hooge.
	<http://savannah.gnu.org/support/?108481>

	* data/c++.m4, data/lalr1.cc (basis_symbol::clear, by_state::clear)
	(by_type::clear): New.
	(basic_symbol::~basic_symbol): Use clear.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: clean up the handling of empty symbols
	* data/c++.m4, data/lalr1.cc (yyempty_): Remove, replaced by...
	(empty_symbol, by_state::empty_state): these.
	(basic_symbol::empty): New.

2015-01-08  Akim Demaille  <akim@lrde.epita.fr>

	c++: comment and style changes
	* data/c++.m4, data/lalr1.cc: More documentation.
	Tidy.
	* tests/c++.at (string_cast): Rename as...
	(to_string): this C++11 name.

2015-01-07  Akim Demaille  <akim@lrde.epita.fr>

	c++: variants: comparing addresses of typeid.name() is undefined
	Instead of storing and comparing pointers to names of types, store
	pointers to the typeids, and compares the typeids.
	Reported by Thomas Jahns.
	<http://lists.gnu.org/archive/html/bug-bison/2014-03/msg00001.html>

	* data/variant.hh (yytname_): Replace with...
	(yytypeid_): this.

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	c++: locations: complete the API and fix comments
	There are no support for += between locations, and some comments are wrong.
	Reported by Alexandre Duret-Lutz.

	* data/location.cc: Fix.
	* doc/bison.texi: Document.
	* tests/c++.at: Check.

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	build: do not clean figure sources in make clean
	"make clean && make" fails in in-tree builds.

	* doc/local.mk (CLEANDIRS): Replace with...
	(CLEANFILES): this safer list of files to clean.

2015-01-05  Akim Demaille  <akim@lrde.epita.fr>

	build: don't try to generate docs when cross-compiling
	When cross-compiling don't run the generated bison to update the docs.
	Reported by Aaro Koskinen.
	<http://lists.gnu.org/archive/html/bison-patches/2014-03/msg00000.html>

	* configure.ac (CROSS_COMPILING): New.
	* doc/local.mk: Use it.

2015-01-04  Akim Demaille  <akim@lrde.epita.fr>

	package: fix a reporter's name
	* THANKS, build-aux/git-log-fix: s/Bernd Edligner/Bernd Edlinger/.

2015-01-04  Akim Demaille  <akim@lrde.epita.fr>

	%union: fix the support for named %union
	Bison supports a union tag, for obscure reasons.  But it does a poor
	job at it, especially since Bison 3.0.
	Reported by Stephen Cameron and Tobias Frost.

	It did not ensure that the name was not given several times.  An easy
	way to do this is to make the %union tag be handled as a %define
	variable, as they cannot be defined several times.

	Since Bison 3.0, the synclines were wrongly placed, resulting in
	invalid code.  Addressing this issue, because of the way the union tag
	was stored (as a code muscle), would have been tedious.  Unless we
	rather define the %union tag as a %percent variable, whose synclines
	are easier to manipulate.

	So replace the b4_union_name muscle by the api.value.union.name
	%define variable, document, and check.

	* data/bison.m4: Make sure that api.value.union.name has a keyword value.
	* data/c++.m4: Make sure that api.value.union.name is not defined.
	* data/c.m4 (b4_union_name): No longer use it, use api.value.union.name.
	* doc/bison.texi (%define Summary): Document it.
	* src/parse-gram.y (union_name): No longer define b4_uion_name, but
	api.value.union.name.
	* tests/input.at (Redefined %union name): New.
	* tests/synclines.at (%union name syncline): New.
	* tests/types.at: Check named %unions.

2015-01-04  Akim Demaille  <akim@lrde.epita.fr>

	package: bump to 2015
	Which also requires:

	* gnulib: Update.

2014-12-31  Akim Demaille  <akim@lrde.epita.fr>

	flex: don't trust YY_USER_INIT
	Reported by Bernd Edlinger and others.

	* src/scan-gram.l: here.

2014-12-31  Akim Demaille  <akim@lrde.epita.fr>

	yacc.c: fix broken union when api.value.type=union and %defines are used
	Reported by Rich Wilson.

	* data/c.m4 (b4_symbol_type_register): Append to b4_union_members,
	not b4_user_union_members.
	The latter invokes the former, but it is the former which is reinitialized
	to empty by b4_value_type_setup_union.
	* tests/types.at: Check it.

	This reveals another bug, this time in the case of glr.c parsers.

	* data/glr.c: Generate the header file before the implementation file,
	to be sure that the setup is run before what depends on it.

2014-12-31  Akim Demaille  <akim@lrde.epita.fr>

	doc: fix missing xref
	Reported by xolodho.

	* doc/bison.texi (Printer Decl): here.

2014-12-29  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update

2014-02-03  Akim Demaille  <akim@lrde.epita.fr>

	location: remove some ugly debugging code traces
	* data/location.cc: here.

2014-02-03  Akim Demaille  <akim@lrde.epita.fr>

	build: use abort to pacify compiler errors
	clang, with -DNDEBUG and -Werror fails on some functions that might
	lack a return.  This is because aver is just another assert, discarded
	with -DNDEBUG.  So use abort.

	* src/muscle-tab.c, src/scan-skel.l: here.

2014-02-03  Akim Demaille  <akim@lrde.epita.fr>

	package: bump to 2014
	* AUTHORS, ChangeLog-2012, Makefile.am, NEWS, PACKAGING, README,
	* README-alpha, README-hacking, THANKS, TODO, bootstrap.conf,
	* build-aux/darwin11.4.0.valgrind, build-aux/local.mk,
	* build-aux/update-b4-copyright,
	* build-aux/update-package-copyright-year, cfg.mk, configure.ac,
	* data/README, data/bison.m4, data/c++-skel.m4, data/c++.m4,
	* data/c-like.m4, data/c-skel.m4, data/c.m4, data/glr.c, data/glr.cc,
	* data/java-skel.m4, data/java.m4, data/lalr1.cc, data/lalr1.java,
	* data/local.mk, data/location.cc, data/stack.hh, data/variant.hh,
	* data/xslt/bison.xsl, data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl,
	* data/xslt/xml2xhtml.xsl, data/yacc.c, djgpp/Makefile.maint,
	* djgpp/README.in, djgpp/config.bat, djgpp/config.sed,
	* djgpp/config.site, djgpp/config_h.sed, djgpp/djunpack.bat,
	* djgpp/local.mk, djgpp/subpipe.c, djgpp/subpipe.h,
	* djgpp/testsuite.sed, doc/bison.texi, doc/local.mk, doc/refcard.tex,
	* etc/README, etc/bench.pl.in, etc/local.mk,
	* examples/calc++/calc++.test, examples/calc++/local.mk,
	* examples/extexi, examples/local.mk, examples/mfcalc/local.mk,
	* examples/mfcalc/mfcalc.test, examples/rpcalc/local.mk,
	* examples/rpcalc/rpcalc.test, examples/test, examples/variant.yy,
	* lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c,
	* lib/bitset.h, lib/bitset_stats.c, lib/bitset_stats.h,
	* lib/bitsetv-print.c, lib/bitsetv-print.h, lib/bitsetv.c,
	* lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/get-errno.c,
	* lib/get-errno.h, lib/lbitset.c, lib/lbitset.h, lib/libiberty.h,
	* lib/local.mk, lib/main.c, lib/timevar.c, lib/timevar.def,
	* lib/timevar.h, lib/vbitset.c, lib/vbitset.h, lib/yyerror.c,
	* m4/bison-i18n.m4, m4/c-working.m4, m4/cxx.m4, m4/flex.m4,
	* m4/timevar.m4, src/AnnotationList.c, src/AnnotationList.h,
	* src/InadequacyList.c, src/InadequacyList.h, src/LR0.c, src/LR0.h,
	* src/Sbitset.c, src/Sbitset.h, src/assoc.c, src/assoc.h,
	* src/closure.c, src/closure.h, src/complain.c, src/complain.h,
	* src/conflicts.c, src/conflicts.h, src/derives.c, src/derives.h,
	* src/files.c, src/files.h, src/flex-scanner.h, src/getargs.c,
	* src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c,
	* src/graphviz.h, src/ielr.c, src/ielr.h, src/lalr.c, src/lalr.h,
	* src/local.mk, src/location.c, src/location.h, src/main.c,
	* src/muscle-tab.c, src/muscle-tab.h, src/named-ref.c,
	* src/named-ref.h, src/nullable.c, src/nullable.h, src/output.c,
	* src/output.h, src/parse-gram.c, src/parse-gram.y, src/print-xml.c,
	* src/print-xml.h, src/print.c, src/print.h, src/print_graph.c,
	* src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c,
	* src/reduce.h, src/relation.c, src/relation.h, src/scan-code.h,
	* src/scan-code.l, src/scan-gram.h, src/scan-gram.l, src/scan-skel.h,
	* src/scan-skel.l, src/state.c, src/state.h, src/symlist.c,
	* src/symlist.h, src/symtab.c, src/symtab.h, src/system.h,
	* src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h,
	* tests/actions.at, tests/atlocal.in, tests/bison.in, tests/c++.at,
	* tests/calc.at, tests/conflicts.at, tests/cxx-type.at,
	* tests/existing.at, tests/glr-regression.at, tests/headers.at,
	* tests/input.at, tests/java.at, tests/javapush.at, tests/local.at,
	* tests/local.mk, tests/named-refs.at, tests/output.at, tests/push.at,
	* tests/reduce.at, tests/regression.at, tests/sets.at,
	* tests/skeletons.at, tests/synclines.at, tests/testsuite.at,
	* tests/torture.at, tests/types.at:
	here.

2014-01-03  Paul Eggert  <eggert@cs.ucla.edu>

	doc: specify documentation encoding
	* doc/bison.texi: Add '@documentencoding UTF-8'; needed since the
	manual contains UTF-8 characters.  This will cause the .info files
	to contain UTF-8 quotes and the like, which should be OK nowadays.
	Add @documentlanguage while we're at it.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	package: install the examples
	Currently, we do not install the various examples extracted from the
	documentation.  Let's do it, as they are useful starting points.

	* configure.ac: When --enable-gcc-warnings is set, enable ENABLE_GCC_WARNINGS.
	* examples/extexi: No longer issue synclines by default.
	* examples/local.mk: Except if ENABLE_GCC_WARNINGS.
	* examples/calc++/local.mk, examples/mfcalc/local.mk,
	* examples/rpcalc/local.mk: Install the example files.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	package: install README and the like in docdir
	* Makefile.am: here.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	diagnostics: fix the order of multiple declarations reports
	On

	  %token FOO "foo"
	  %printer {} "foo"
	  %printer {} FOO

	we report

	  /tmp/foo.yy:2.10-11: error: %printer redeclaration for FOO
	   %printer {} "foo"
	            ^^
	  /tmp/foo.yy:3.10-11:     previous declaration
	   %printer {} FOO
	            ^^

	* src/symtab.c (locations_sort): New.
	Use it.
	* tests/input.at (Invalid Aliases): Stress the order of diagnostics.

2013-12-09  Akim Demaille  <akim@lrde.epita.fr>

	symbol: provide an easy means to compare them in source order
	* src/symtab.c (symbols_sort): New.
	(user_token_number_redeclaration): Taken from here.

2013-12-05  Akim Demaille  <akim@lrde.epita.fr>

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

2013-12-05  Akim Demaille  <akim@lrde.epita.fr>

	version 3.0.2
	* NEWS: Record release date.

2013-12-05  Akim Demaille  <akim@lrde.epita.fr>

	gnulib: update
	* gnulib: here.

2013-12-04  Akim Demaille  <akim@lrde.epita.fr>

	output: do not generate source files when late errors are caught
	Reported by Alexandre Duret-Lutz as "second problem" in:
	http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html

	* bootstrap.conf: We need the "unlink" module.
	* src/files.h, src/files.c (unlink_generated_sources): New.
	* src/output.c: Use it.
	* tests/output.at: Check the case of late errors.

2013-12-04  Akim Demaille  <akim@lrde.epita.fr>

	output: record what generated files are source or report files
	* src/files.h, src/files.c (output_file_name_check): Take an additional
	argument to record whether a file is a source or report file.
	* src/files.c (generated_file): New.
	(file_names, file_names_count): Replace with...
	(generated_files, generated_files_size): these.
	* src/scan-skel.l: Adjust.

2013-12-04  Akim Demaille  <akim@lrde.epita.fr>

	output: do not generate source files when early errors are caught
	Reported by Alexandre Duret-Lutz as "second problem" in:
	http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html

	One problem is that some errors are caught early, before the
	generation of output files, while others can only be detected
	afterwards (since, for instance, skeletons can raise errors
	themselves).

	This will be addressed in two steps: early errors do not generate
	source files at all, while later errors will remove the files that
	have already been generated.

	* src/scan-skel.l (yyout): Open to /dev/null when there are errors.
	* tests/output.at (AT_CHECK_FILES): Factored out of...
	(AT_CHECK_OUTPUT): this.
	Fuse the "SHELLIO" argument in the "FLAGS" one.
	Use $5 to denote the expected exit status.
	Add a test case for early errors.

2013-11-26  Akim Demaille  <akim@lrde.epita.fr>

	xml: also use "%empty" with html output
	* data/xslt/xml2xhtml.xsl: No longer issue an Epsilon, display as in
	dot and text formats.

2013-11-26  Akim Demaille  <akim@lrde.epita.fr>

	style: formatting changes
	* src/print-xml.c: here.

2013-11-26  Akim Demaille  <akim@lrde.epita.fr>

	xml: also display %empty for empty right-hand sides
	* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl: Display %empty where needed.
