+2003-06-17 Paul Eggert <eggert@twinsun.com>
+
+ Version 1.875b.
+
+ * NEWS: Document 1.875b.
+
+ * lib/bbitset.h: Do not include config.h; that's the includer's job.
+ Do not include <sys/types.h>; shouldn't be needed on a C89 host.
+ * lib/bitset.h (bitset_compatible_p): Indent as per GNU standard.
+ Don't use 'index' in comments, as it's a builtin fn on some hosts.
+ * lib/bitset_stats.c: Include gettext.h unconditionally, as
+ per recent gettext manual's suggestion.
+ * lib/ebitset.c (ebitset_resize, ebitset_unused_clear):
+ Use prototypes, not old-style definitions.
+ * lib/lbitset.c (lbitset_unused_clear): Likewise.
+ * lib/vbitset.c (vbitset_resize, vbitset_ones, vbitset_zero,
+ vbitset_empty_p, vbitset_copy1, vbitset_not, vbitset_equal_p,
+ vbitset_subset_p, vbitset_disjoint_p, vbitset_and, vbitset_and_cmp,
+ vbitset_andn, vbitset_andn_cmp, vbitset_or, vbitset_or_cmp,
+ vbitset_xor, vbitset_xor_cmp, vbitset_and_or, vbitset_and_or_cmp,
+ vbitset_andn_or, vbitset_andn_or_cmp, vbitset_or_and,
+ vbitset_or_and_cmp, vbitset_copy): Likewise.
+
+ * lib/libiberty.h: Do not include config.h; that's the includer's job.
+ Do not include <stdlib.h>.
+ (PARAMS): Define unconditionally for C89.
+ (ATTRIBUTE_NORETURN): Remove.
+ (ATTRIBUTE_UNUSED): Define unconditionally.
+
+ Upgrade to 2003-06-08 libbitset, submitted by Michael Hayes in:
+ <http://mail.gnu.org/archive/html/bison-patches/2003-06/msg00005.html>
+ * lib/Makefile.am (bitsets_sources): Add vbitset.c, vbitset.h.
+ * lib/vbitset.c, lib/vbitset.h: New files.
+ * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h,
+ lib/bitset_stats.c, lib/ebitset.c, lib/lbitset.c: Import
+ from libbitset.
+
+ * doc/bison.texinfo (How Can I Reset the Parser): Renamed from
+ `How Can I Reset @code{yyparse}', since texinfo does not allow
+ arbitrary @ in node names.
+
+ * m4/Makefile.am (EXTRA_DIST): Add the following files, which
+ shouldn't be needed according to the gettext 0.12.1 documentation
+ but which seem to be needed anyway: codeset.m4 glibc21.m4
+ intdiv0.m4 inttypes-pri.m4 inttypes.m4 inttypes_h.m4 isc-posix.m4
+ lcmessage.m4 nls.m4 po.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4.
+ * po/Makefile.in.in: Upgrade to gettext 0.12.1 version.
+
+ * lib/.cvsignore: Add stdbool.h.
+ * m4/.cvsignore: Add nls.m4, po.m4.
+
+ Upgrade to CVS gnulib.
+ * stdbool_.h: File renamed from stdbool.h.in.
+ * configure.ac (AM_STDBOOL_H): Invoke this instead of
+ AC_HEADER_STDBOOL.
+ (AM_GNU_GETTEXT): Put brackets around args, as latest manual suggests.
+ (AM_GNU_GETTEXT_VERSION): Update to 0.12.1.
+ * lib/Makefile.am (EXTRA_DIST): Add stdbool_.h.
+ (MOSTLYCLEANFILES): New var.
+ ($(libbison_a_OBJECTS)): Depend on $(STDBOOL_H).
+ (stdbool.h): New rule.
+ * lib/dirname.c, lib/dirname.h, lib/hash.c, lib/hash.h,
+ lib/malloc.c, lib/obstack.h, lib/quote.c, lib/realloc.c,
+ lib/strcasecmp.c, lib/xalloc.h, m4/alloca.m4, m4/onceonly.m4,
+ m4/quote.m4: Upgrade to today's gnulib.
+
+ * tests/calc.at (AT_CHECK_CALC): New option EXPECTED-TO-FAIL.
+ (AT_CHECK_CALC_LALR1_CC): Use it, since the C++ LALR parser fails
+ the tests right now.
+ * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Ensure yylex and
+ yyerror are declared before use; C99 requires this.
+
+2003-06-09 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
+
+ * data/glr.c (YYERROR): Update definition to reset yyerrState to 0
+ first.
+ (yyrecoverSyntaxError): Correct the logic for setting and testing
+ yyerrState.
+ Correct comment on handling EOF.
+ Allow states with only a default reduction, rather than failing
+ (I can't quite reconstruct why these were not allowed before).
+
+ Fixes to avoid problem that $-N rules in GLR parsers can cause
+ buffer overruns, corrupting state.
+
+ * src/output.c (prepare_rules): Output max_left_semantic_context
+ definition.
+ * src/reader.h (max_left_semantic_context): New variable declaration.
+ * src/scan-gram.l (max_left_semantic_context): Define.
+ (handle_action_dollar): Update max_left_semantic_context.
+ * data/glr.c (YYMAXLEFT): New definition.
+ (yydoAction): Increase size of yyrhsVals by YYMAXLEFT.
+ (yyresolveAction): Ditto.
+
+ Fixes to problems with location handling in GLR parsers reported by
+ Frank Heckenbach (2003/06/05).
+
+ * data/glr.c (YYLTYPE): Make trivial if locations not used.
+ (YYRHSLOC): Add parentheses, and define only if locations used.
+ (YYLLOC_DEFAULT): Add parentheses, and give trivial definition if
+ locations not used.
+ (yyuserAction): Use YYLLOC_DEFAULT to set *yylocp.
+ (yydoAction): Remove redundant initialization of *yyvalp and *yylocp.
+
+ * tests/cxx-type.at: Exercise location information; update tests
+ to differentiate output with and without locations.
+ Remove forward declarations of yylex and yyerror---caused errors
+ because default YYLTYPE not yet defined.
+ Change semantic actions to compute strings, rather than printing
+ them directly (to test proper passing of semantics values). Change
+ output to prefix notation and update test data and expected results.
+ (yylex): Track locations.
+ (stmtMerge): Return value rather than printing, and include arguments
+ in value.
+
+2003-06-03 Paul Eggert <eggert@twinsun.com>
+
+ Avoid warnings generated by GCC 2.95.4 when Bison is
+ configured with --enable-gcc-warnings.
+ * data/lalr1.cc (yy::]b4_parser_class_name[::parse,
+ yy::]b4_parser_class_name[::translate_,
+ yy::Stack::operator[] (unsigned),
+ yy::Stack::operator[] (unsigned) const,
+ yy::Slice::operator[] (unsigned),
+ yy::Slice::operator[] (unsigned) const):
+ Rename local vars to avoid warnings.
+ * tests/glr-regression.at (Improper handling of embedded actions
+ and $-N in GLR parsers): Remove unused local variable from yylex.
+ * tests/regression.at (_AT_DATA_DANCER_Y): Declare yylex to take
+ (void) as arg when not pure, since we now assume C89 when building
+ Bison. Pacify GCC by using parameter.
+
+2003-06-02 Paul Eggert <eggert@twinsun.com>
+
+ * data/lalr1.cc (yy::Position::lines, yy::Position::columns,
+ yy::Location::lines, yy::Location::columns): Rename arguments
+ to avoid shadowing; this removes a warning generated by GCC 3.3.
+
+2003-06-01 Paul Eggert <eggert@twinsun.com>
+
+ Don't pass C-only warning optins (e.g., -Wmissing-declarations)
+ to g++, as GCC 3.3 complains if you do it.
+ * configure.ac (WARNING_CXXFLAGS): New subst. Set it to
+ everything that WARNING_CFLAGS has, except omit warnings
+ not suitable for C++.
+ (AC_PROG_CXX): Use this instead of AC_CHECK_PROGS([CXX], [g++]).
+ * tests/atlocal.in (CXXFLAGS): New var.
+ * tests/local.at (AT_COMPILE_CXX): Use it instead of CFLAGS.
+
+ Fix a GLR parser bug I reported in February; see
+ <http://mail.gnu.org/archive/html/bison-patches/2003-02/msg00008.html>.
+ The problem was that GLR parsers did not conform to the C standard,
+ because actions like { $1 = $2 + $3; } expanded to expressions
+ that invoked YYFILL in separate subexpressions, and YYFILL assigned
+ to a local variable. The C standard says that expressions
+ like (var = f ()) + (var = f ()) have undefined behavior.
+ Another problem was that GCC sometimes issues warnings that
+ yyfill and its parameters are unused.
+
+ * data/glr.c (yyfillin): Renamed from the old yyfill. Mark
+ as possibly unused.
+ (yyfill): New function.
+ (YYFILL): Use it.
+ (yyuserAction): Change type of yynormal to bool, so that it matches
+ the new yyfill signature. Mark it as possibly unused.
+
+
+ Follow up on a bug I reported in February, where a Bison-generated
+ parser can loop. Provide a test case and a fix for yacc.c. I
+ don't have a fix for lalr1.cc or for glr.c, unfortunately.
+ The original bug report is in:
+ <http://mail.gnu.org/archive/html/bison-patches/2003-02/msg00044.html>
+
+ * data/yacc.c (YYERROR): Now just 'goto yyerrorlab', since the
+ macro's size was becoming unwieldy.
+ (yyerrlab): Do not discard an empty lookahead symbol, as this
+ might destroy garbage.
+ (yyerrorlab): New label, with the old contents of YYERROR,
+ plus the following change: pop the stack of rhs corresponding
+ to the production that invoked YYERROR. That is how Yacc
+ behaves, and POSIX requires this behavior.
+ (yyerrlab1): Use YYPOPSTACK instead of its definiens.
+ * tests/calc.at (_AT_DATA_CALC_Y): Include unistd.h if available.
+ Define 'alarm' to do nothing if unistd.h is not available.
+ Add a new rule "exp: '-' error;" to test the above change to
+ data/yacc.c. Use 'alarm' to abort any test taking longer than
+ 10 seconds, as it's probably looping.
+ (AT_CHECK_CALC): Test recovery from error in new grammar rule.
+ Also, the new yacc.c generates two fewer diagnostics for an
+ existing test.
+
+2003-05-24 Paul Eggert <eggert@twinsun.com>
+
+ * data/glr.c (YYSTACKEXPANDABLE): Do not evaluate
+ YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined.
+ This fixes a problem reported by John Bowman when the Compaq/HP
+ Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM
+ -ansi -Wall -gall).
+ * data/yacc.c (union yyalloc): Likewise.
+ (YYCOPY): Do not evaluate __GNUC__ unless it is defined.
+
+ Switch from 'int' to 'bool' where that makes sense.
+
+ * lib/abitset.c (abitset_test, abitset_empty_p, abitset_equal_p,
+ abitset_subset_p, abitset_disjoint_p, abitset_and_cmp,
+ abitset_andn_cmp, abitset_or_cmp, abitset_xor_cmp, abitset_and_or,
+ abitset_and_or_cmp, abitset_andn_or_cmp, abitset_or_and_cmp):
+ Return or accept bool, not int. All callers changed.
+ * lib/bbitset.h: (bitset_toggle_, bitset_copy_, bitset_and_or_cmp_,
+ bitset_andn_or_cmp_, bitset_or_and_cmp_): Likewise.
+ * lib/bitset.c (bitset_only_set_p, bitset_print, bitset_toggle_,
+ bitset_copy_, bitset_op4_cmp, bitset_and_or_cmp_, bitset_andn_or_cmp_,
+ bitset_or_and_cmp_): Likewise.
+ * lib/bitset.h (bitset_test, bitset_only_set_p): Likewise.
+ * lib/bitset_stats.c (bitset_stats_print, bitset_stats_toggle,
+ bitset_stats_test, bitset_stats_empty_p, bitset_stats_disjoint_p,
+ bitset_stats_equal_p, bitset_stats_subset_p, bitset_stats_and_cmp,
+ bitset_stats_andn_cmp, bitset_stats_or_cmp, bitset_stats_xor_cmp,
+ bitset_stats_and_or_cmp, bitset_stats_andn_or_cmp,
+ bitset_stats_or_and_cmp): Likewise.
+ * lib/ebitset.c (ebitset_elt_zero_p, ebitset_equal_p, ebitset_copy_cmp,
+ ebitset_test, ebitset_empty_p, ebitset_subset_p, ebitset_disjoint_p,
+ ebitset_op3_cmp, ebitset_and_cmp, ebitset_andn_cmp, ebitset_or_cmp,
+ ebitset_xor_cmp): Likewise.
+ * lib/lbitset.c (lbitset_elt_zero_p, lbitset_equal_p, lbitset_copy_cmp,
+ lbitset_test, lbitset_empty_p, lbitset_subset_p, lbitset_disjoint_p,
+ lbitset_op3_cmp, lbitset_and_cmp, lbitset_andn_cmp, lbitset_or_cmp,
+ lbitset_xor_cmp): Likewise.
+ * lib/bbitset.h: Include <stdbool.h>.
+ (struct bitset_vtable): The following members now return bool, not
+ int: toggle, test, empty_p, disjoint_p, equal_p, subset_p,
+ and_cmp, andn_cmp, or_cmp, xor_cmp, and_or_cmp, andn_or_cmp,
+ or_and_cmp).
+ * src/conflicts.c (count_rr_conflicts): Likewise.
+ * lib/bitset_stats.h (bitset_stats_enabled): Now bool, not int.
+ All uses changed.
+ * lib/ebitset.c (ebitset_obstack_init): Likewise.
+ * lib/lbitset.c (lbitset_obstack_init): Likewise.
+ * src/getargs.c (debug_flag, defines_flag, locations_flag,
+ no_lines_flag, no_parser_flag, token_table_flag, yacc_flag,
+ graph_flag): Likewise.
+ * src/getargs.h (debug_flag, defines_flag, locations_flag,
+ no_lines_flag, no_parser_flag, token_table_flag, yacc_flag,
+ graph_flag): Likewise.
+ * src/output.c (error_verbose): Likewise.
+ * src/output.h (error_verbose): Likewise.
+ * src/reader.c (start_flag, typed): Likewise.
+ * src/reader.h (typed): Likewise.
+ * src/getargs.c (LOCATIONS_OPTION): New constant.
+ (long_options, getargs): Use it.
+ * src/lalr.c (build_relations): Use bool, not int.
+ * src/nullable.c (nullable_compute): Likewise.
+ * src/print.c (print_reductions): Likewise.
+ * src/tables.c (action_row, pack_vector): Likewise.
+ * src/muscle_tab.h (MUSCLE_INSERT_BOOL): New macro.
+ * src/output.c (prepare): Use it.
+ * src/output.c (token_definitions_output,
+ symbol_destructors_output, symbol_destructors_output): Use string,
+ not boolean integer, to keep track of whether to output separator.
+ * src/print_graph.c (print_core): Likewise.
+ * src/state.c (state_rule_lookaheads_print): Likewise.
+
+ * config/install-sh: Sync from automake 1.7.5.
+
+2003-05-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/parse-gram.y (rules_or_grammar_declaration): Require a
+ semicolon after a grammar declaration, in the interest of possible
+ future changes to the Bison input language.
+ Do not allow a stray semicolon at the start of the grammar.
+ (rhses.1): Allow one or more semicolons after any rule, including
+ just before "|" as required by POSIX.
+ * tests/input.at (Torturing the Scanner): Add tests for ";|" in a
+ grammar.
+
+2003-05-14 Alexandre Duret-Lutz <adl@gnu.org>
+
+ %parse-param support for lalr1.cc.
+
+ * data/lalr1.cc (b4_parse_param_decl, b4_parse_param_cons,
+ b4_cc_constructor_calls, b4_cc_constructor_call,
+ b4_parse_param_vars, b4_cc_var_decls, b4_cc_var_decl): New m4
+ definitions.
+ (yy::b4_parser_class_name::b4_parser_class_name): Take extra
+ parse-param arguments.
+ (yy::b4_parser_class_name): Declare instance variables to
+ hold parse-param arguments.
+ * tests/calc.at: s/value/semantic_value/ because value clashes
+ with a member of yy::b4_parser_class_name. Adjust C++ code
+ to handle %parse-param. Enable %parse-param test in C++.
+
+2003-05-12 Paul Eggert <eggert@twinsun.com>
+
+ * doc/bison.texinfo (How Can I Reset @code{yyparse}): Reword the
+ English a bit. Fix fclose typo. Change "const char" to "char
+ const", and use ANSI C rather than K&R for "main". Suggest
+ YY_FLUSH_BUFFER over yyrestart (as that is what Flex recommends)
+ and suggest yy_switch_to_buffer.
+
+2003-05-05 Paul Eggert <eggert@twinsun.com>
+
+ * lib/bitset.h (__INT_TO_PTR): Define to a value that presumes
+ C89. This avoids a diagnostic on compilers that define __STDC__
+ to 0, fixing a problem with Tru64 cc reported by Martin Mokrejs in
+ <http://mail.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.
+
+2003-05-03 Paul Eggert <eggert@twinsun.com>
+
+ * lib/bitset.h (BITSET_FOR_EACH, BITSET_FOR_EACH_REVERSE):
+ Do not overrun array bounds.
+ This should fix a bug reported today by Olatunji Oluwabukunmi in
+ <http://mail.gnu.org/archive/html/bug-bison/2003-05/msg00004.html>.
+
+2003-04-29 Akim Demaille <akim@epita.fr>
+
+ * src/gram.h, src/gram.c (pure_parser, glr_parser): Move to...
+ * src/getargs.c, src/getargs.h: here, as bool, not int.
+ (nondeterministic_parser): New.
+ * src/parse-gram.y, src/scan-gram.l: Support
+ %nondeterministic-parser.
+ * src/output.c (prepare): Use nondeterministic_parser instead
+ of glr_parser where appropriate.
+ * src/tables.c (conflict_row, action_row, save_row)
+ (token_actions, token_actions, pack_vector): Ditto.
+
+2003-04-29 Akim Demaille <akim@epita.fr>
+
+ * doc/bison.texinfo (C++ Parsers, Implementing Loops): New.
+
+2003-04-29 Akim Demaille <akim@epita.fr>
+
+ * tests/calc.at: Also test yacc.c and glr.c (but not lalr1.cc yet)
+ with %pure-parser and %locations to exercise the patch from Yakov
+ Markovitch below.
+
2003-04-28 Tim Van Holder <tim.van.holder@pandora.be>
* data/yacc.c: (b4_lex_param): Corrected for the case where