+2004-12-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (@copying): Update FDL version number to 1.2,
+ to fix an oversight in the Bison 2.0 manual.
+
+2004-12-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.0. Reformat the existing news items since
+ 1.875, so that related items are grouped together.
+ * configure.ac (AC_INIT): Bump version to 2.0.
+ * src/parse-gram.c, src/parse-gram.h: Regenerate with 2.0.
+
+ * tests/torture.at (Exploding the Stack Size with Alloca): Set
+ YYSTACK_USE_ALLOCA to 1 if __GNUC__ or alloca are defined;
+ otherwise, we're not testing alloca. Unfortunately there's no
+ simple way to consult HAVE_ALLOCA here.
+
+ * data/lalr1.cc (yydestruct_): Pacify unused variable warning
+ for yymsg, too.
+
+ * src/LR0.c (new_itemsets): Use memset rather than zeroing by
+ hand. This avoids a warning about comparing int to size_t when
+ GCC warnings are enabled.
+
+2004-12-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Bison-generated parsers no longer default to using the
+ alloca function (when available) to extend the parser stack, due
+ to widespread problems in unchecked stack-overflow detection.
+ * data/glr.c (YYMAXDEPTH): Remove undef when zero. It's the user's
+ responsibility to set it to a positive value. This lets the user
+ specify a value that is not a preprocessor constant.
+ * data/yacc.c (YYMAXDEPTH): Likewise.
+ (YYSTACK_ALLOC): Define only if YYSTACK_USE_ALLOCA is nonzero.
+ * doc/bison.texinfo (Stack Overflow): YYMAXDEPTH no longer needs
+ to be a compile-time constant. However, explain the constraints on it.
+ Also, explain the constraints on YYINITDEPTH.
+ (Table of Symbols): Explain that alloca is no longer the default.
+ Explain the user's responsibility if they define YYSTACK_USE_ALLOCA
+ to 1.
+
+ * doc/bison.texinfo (Location Default Action): Mention that n must
+ be zero when k is zero. Suggested by Frank Heckenbach.
+
+2004-12-22 Akim Demaille <akim@epita.fr>
+
+ * data/lalr1.cc (parser::token_number_type, parser::rhs_number_type)
+ (parser::state_type, parser::semantic_type, parser::location_type):
+ Private, not public.
+ (parser::parse): Return ints, not bool.
+ Returning a bool introduces a problem: 0 corresponds to false, and
+ it seems weird to return false on success. Returning true changes
+ the conventions for yyparse.
+ Alternatively we could return void and send an exception.
+ There is no clear consensus (yet?).
+ (state_stack, semantic_stack, location_stack): Rename as...
+ (state_stack_type, semantic_stack_type, location_stack_type): these.
+ Private, not public.
+ * tests/c++.at: New.
+ * tests/testsuite.at, tests/Makefile.am: Adjust.
+
+2004-12-21 Akim Demaille <akim@epita.fr>
+
+ * data/lalr1.cc (parser::parse): Return a bool instead of an int.
+
+2004-12-21 Akim Demaille <akim@epita.fr>
+
+ Don't impose std::string for filenames.
+
+ * data/lalr1.cc (b4_filename_type): New.
+ (position::filename): Use it.
+ (parser.hh): Move the inclusion of stack.hh and location.hh below
+ the user code, so that needed headers for the filename type can be
+ included first.
+ Forward declare them before the user code.
+ * tests/Makefile.am (check-local, installcheck-local): Pass
+ TESTSUITEFLAGS to the TESTSUITE.
+
+2004-12-20 Akim Demaille <akim@epita.fr>
+
+ Use more STL like names: my_class instead of MyClass.
+
+ * data/lalr1.cc (LocationStack, LocationType, RhsNumberType)
+ (SemanticStack, SemanticType, StateStack, StateType)
+ (TokenNumberType, Stack, Slice, Traits, Parser::location)
+ (Parser::value): Rename as...
+ (location_stack, location_type, rhs_number_type, semantic_stack)
+ (semantic_type, state_stack, state_type, token_number_type, stack)
+ (slice, traits, parser::yylloc, parser::yylval): these.
+
+ * tests/calc.at, tests/regression.at, tests/actions.at: Adjust.
+
+2004-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (YYLLOC_DEFAULT): Use GNU spacing conventions.
+ * data/yacc.c (YYLLOC_DEFAULT): Likewise.
+
+2004-12-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove uses of 'short int' and 'unsigned short int'. This raises
+ some arbitrary limits. It uses more memory but nowadays that's
+ not much of an issue.
+
+ This change does not affect the generated parsers; that's a different
+ task, as some users will want to conserve memory there.
+
+ Ideally we should use size_t to represent all object counts, and
+ something like ptrdiff_t to represent signed differences of object
+ counts; but that will require more code-cleanup than I have the
+ time to do right now.
+
+ * src/LR0.c (allocate_itemsets, new_itemsets, save_reductions):
+ Use size_t, not int or short int, to count objects.
+ * src/closure.c (nritemset, closure): Likewise.
+ * src/closure.h (nritemset, closure): Likewise.
+ * src/nullable.c (nullable_compute): Likewise.
+ * src/print.c (print_core): Likewise.
+ * src/print_graph.c (print_core): Likewise.
+ * src/state.c (state_compare, state_hash): Likewise.
+ * src/state.h (struct state): Likewise.
+ * src/tables.c (default_goto, goto_actions): Likewise.
+
+ * src/gram.h (rule_number, rule): Use int, not short int.
+ * src/output.c (prepare_rules): Likewise.
+ * src/state.h (state_number, STATE_NUMBER_MAXIMUM, transitions,
+ errs, reductions): Likewise.
+ * src/symtab.h (symbol_number, SYMBOL_NUMBER_MAXIMUM, struct symbol):
+ Likewise.
+ * src/tables.c (vector_number, tally, action_number,
+ ACTION_NUMBER_MINIMUM): Likewise.
+ * src/output.c (muscle_insert_short_int_table): Remove.
+
+2004-12-17 Akim Demaille <akim@epita.fr>
+
+ * data/lalr1.cc: Extensive Doxygenation.
+ (error_): Rename as...
+ (error): this, since it is visible to the user.
+ Adjust callers.
+ (Parser::message): Now an automatic variable from...
+ (Parser::yyreport_syntax_error_): here.
+ * tests/actions.at, tests/calc.at, tests/regression.at: Adjust to
+ Parser::error.
+ * tests/input.at: Escape $.
+
+2004-12-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (b4_lhs_value, b4_rhs_value, b4_rhs-location):
+ Parenthesize rhs to avoid obscure problems with mistakes like
+ "foo$$bar = foo$1bar;". Problem reported by twlevo at xs4all.
+ * data/lalr1.cc (b4_lhs_value, b4_rhs_value, b4_lhs_location,
+ b4_rhs_location): Likewise.
+ * data/yacc.c (b4_lhs_value, b4_rhs_value, b4_lhs_location,
+ b4_rhs_location): Likewise.
+
+2004-12-16 Akim Demaille <akim@epita.fr>
+
+ * data/lalr1.cc (yyreport_syntax_error_): Catch up with glr.c and
+ yacc.c: be sure to stay within yycheck_.
+ * tests/actions.at: Re-enable C++ tests.
+
+2004-12-16 Akim Demaille <akim@epita.fr>
+
+ * src/print_graph.c (print_graph): Remove layoutalgorithm uses for
+ real.
+
+2004-12-16 Akim Demaille <akim@epita.fr>
+
+ Use #define to handle the %name-prefix.
+
+ * data/glr.c, data/yacc.c: Comment changes.
+ * data/lalr1.cc (yylex): Use #define to select the name of yylex,
+ so that one can refer to yylex in the parser file, and have it
+ renamed, as is the case with other skeletons.
+
+2004-12-16 Akim Demaille <akim@epita.fr>
+
+ Move lalr1.cc internals into yy*.
+
+ * data/lalr1.cc (semantic_stack_, location_stack_, state_stack_)
+ (semantic_stack_, location_stack_, pact_, pact_ninf_, defact_)
+ (pgoto_, defgoto_, table_, table_ninf_, check_, stos_, r1_, r2_)
+ (name_, rhs_, prhs_, rline_, token_number_, eof_, last_, nnts_)
+ (empty_, final_, terror_, errcode_, ntokens_)
+ (user_token_number_max_, undef_token_, n_, len_, state_, nerrs_)
+ (looka_, ilooka_, error_range_, nerrs_):
+ Rename as...
+ (yysemantic_stack_, yylocation_stack_, yystate_stack_)
+ (yysemantic_stack_, yylocation_stack_, yypact_, yypact_ninf_)
+ (yydefact_, yypgoto_, yydefgoto_, yytable_, yytable_ninf_)
+ (yycheck_, yystos_, yyr1_, yyr2_, yyname_, yyrhs_, yyprhs_)
+ (yyrline_, yytoken_number_, yyeof_, yylast_, yynnts_, yyempty_)
+ (yyfinal_, yyterror_, yyerrcode_, yyntokens_)
+ (yyuser_token_number_max_, yyundef_token_, yyn_, yylen_, yystate_)
+ (yynerrs_, yylooka_, yyilooka_, yyerror_range_, yynerrs_):
+ these.
+
+2004-12-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some problems reported by twlevo at xs4all.
+ * src/symtab.c (symbol_new): Report an error if the input grammar
+ contains too many symbols. This is better than calling abort() later.
+ * src/vcg.h (enum layoutalgorithm): Remove. All uses removed.
+ (struct node, struct graph):
+ Rename member expand to stretch. All uses changed.
+ (struct graph): Remove member layoutalgorithm. All uses removed.
+ * src/vcg.c (get_layoutalgorithm_str): Remove. All uses removed.
+ * src/vcg_defaults.h (G_STRETCH): Renamed from G_EXPAND.
+ All uses changed.
+ (N_STRETCH): Rename from N_EXPAND. All uses changed.
+
+2004-12-15 Akim Demaille <akim@epita.fr>
+
+ * data/lalr1.cc: Normalize /** \brief ... */ to ///.
+ Add more Doxygen comments.
+ (symprint_, stack_print_, reduce_print_, destruct_, pop)
+ (report_syntax_error_, translate_): Rename as...
+ (yysymprint_, yystack_print_, yyreduce_print_, yydestruct_)
+ (yypop_, yyreport_syntax_error_, yytranslate_): this.
+
+2004-12-15 Akim Demaille <akim@epita.fr>
+
+ * data/lalr1.cc (lex_): Rename as...
+ (yylex_): this.
+ Move the trace here.
+ Take the %name-prefix into account.
+ Reported by Alexandre Duret-Lutz.
+
+2004-12-15 Akim Demaille <akim@epita.fr>
+
+ Simplify the C++ parser constructor.
+
+ * data/lalr1.cc (debug_): Rename as...
+ (yydebug_): so that the parser's internals are always in the yy*
+ pseudo namespace.
+ Adjust uses.
+ (b4_parse_param_decl): Remove the leading comma as it is now only
+ called as unique argument list.
+ (Parser::Parser): Remove the constructor accepting a location and
+ an initial debugging level.
+ Remove from the other ctor the argument for the debugging level.
+ (debug_level_type, debug_level, set_debug_level): New.
+
+ * tests/actions.at, tests/calc.at, tests/regression.at: Adjust
+ constructor calls.
+
+2004-12-15 Akim Demaille <akim@epita.fr>
+
+ Remove b4_root related material: failure experiment
+ (which goal was to allow to derive from a class).
+
+ * data/lalr1.cc (b4_root, b4_param, b4_constructor): Remove
+ definitions and uses.
+
+2004-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (struct yyGLRStack): yyerror_range now has 3 items,
+ not 2, since it's not portable to subtract 1 from the start of an
+ array. The new item 0 is never set or used. All uses changed.
+
+ (yyrecoverSyntaxError): Use YYLLOC_DEFAULT instead of assuming
+ the default definition of YYLLOC_DEFAULT. Problem reported
+ by Frank Heckenbach.
+
+2004-12-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (YYRHSLOC): Don't have two definitions, one for
+ the normal case and one for the error case. Just use the
+ first one uniformly. Problem reported by Frank Heckenbach.
+ (YYLLOC_DEFAULT): Use the conventions of yacc.c, so we can
+ use exactly the same macro in both places.
+ (yyerror_range): Now of type yyGLRStackItem, not YYLTYPE,
+ so that the normal-case YYRHSLOC works for the error case too.
+ All uses changed.
+ * data/yacc.c (YYRHSLOC): New macro, taken from glr.c.
+ (YYLLOC_DEFAULT): Use the same macro as glr.c.
+ * doc/bison.texinfo (Location Default Action): Don't claim that
+ we have an array of locations. Use the same macro for both glr
+ and lalr parsers. Mention YYRHSLOC. Mention what happens when
+ the index is 0.
+
+2004-12-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * HACKING: Update email addresses to send announcements to.
+
+ * configure.ac (AC_INIT): Bump version to 1.875f.
+
+2004-12-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 1.875e.
+ * src/parse-gram.c, src/parse-gram.h: Regenerate with 1.875e.
+
+ * src/scan-skel.l: Include "complain.h", for "fatal".
+
+ * src/relation.h (relation_print, relation_digraph):
+ Relation sizes are of type relation_node, not size_t (this is
+ merely a doc fix, since the two types are equivalent).
+ (relation_transpose): Relation sizes are of type relation_node,
+ not int.
+ * src/relation.c: Likewise.
+ (top, infinity): Now of type relation_node, not int.
+ (traverse, relation_transpose): Use relation_node, not int.
+
+ * data/glr.c (yyuserAction, yyrecoverSyntaxError): Mark args
+ with ATTRIBUTE_UNUSED if they're not used, to avoid GCC warning.
+ (yyparse): Remove unused local introduced in 2004-10-25 patch.
+
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): New arg
+ specifying whether the test should be skipped. Use it tp
+ specify that the [%defines %skeleton "lalr1.cc"] tests currently
+ fail on some hosts, and should be skipped.
+
+2004-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (CALLOC, MALLOC, REALLOC): Remove. All callers
+ changed to use xcalloc, xnmalloc, xnrealloc, respectively,
+ unless otherwise specified below.
+
+ * src/LR0.c (allocate_itemsets): Use xnmalloc, not xcalloc,
+ to allocate kernel_base, kernel_items, kernel_size, since
+ they needn't be initialized to 0.
+ (allocate_storgae): Likewise, for shiftset, redset, shift_symbol.
+ * src/closure.c (new_closure): Likewise, for itemset.
+ * src/derives.c (derives_compute): Likewise, for delts, derives, q.
+ * src/lalr.c (set_goto_map): Likewise, for temp_map.
+ (initialize_F): Likewise, for reads, edge, reads[i], includes[i].
+ (build_relations): Likewise for edge, states1, includes.
+ * src/nullable.c (nullable_compute): Likewise, for squeue, relts.
+ * src/reader.c (packgram): Likewise, for ritem, rules.
+ * src/reduce.c (nonterminals_reduce): Likewise for nontermmap.
+ * src/relation.c (relation_digraph): Likewise for VERTICES.
+ (relation_transpose): Likewise for new_R, end_R.
+ * src/symtab.c (symbols_token_translations_init): Likewise for
+ token_translations.
+ * src/tables.c (save_row): Likewise for froms, tos, conflict_tos.
+ (token_actions): Likewise for yydefact, actrow, conflrow,
+ conflict_list.
+ (save_column): Likewise for froms[symno], tos[symno].
+ (goto_actions): Likewise for state_count.
+ (pack_table): Likewise for base, pos, check.
+ (tables_generate): Likewise for width.
+
+ * src/LR0.c (set_states): Don't reuse kernel_size and kernel_base
+ for initial core. Just have a separate core, so we needn't worry
+ about whether kernel_size and kernel_base are initialized.
+
+ * src/LR0.c (shift_symbol, redset, shiftset, kernel_base,
+ kernel_size, kernel_items): Remove unnecessary initialization.
+ * src/conflicts.c (conflicts): Likewise.
+ * src/derives.c (derives): Likewise.
+ * src/muscle_tablc (muscle_insert): Likewise.
+ * src/relation.c (relation_digraph): Likewise.
+ * src/tables.c (froms, tos, conflict_tos, tally, width, actrow, order,
+ conflrow, conflict_table, conflict_list, table, check):
+ Likewise.
+
+ * src/closure.c (new_closure): Arg is of type unsigned int, not int.
+ This is because all callers pass unsigned int.
+ * src/closure.h (new_closure): Likewise.
+
+ * src/lalr.c (initialize_F): Initialize reads[i] in all cases.
+ (build_relations): Initialize includes[i] in all cases.
+ * src/reader.c (packgram): Always initialize rules[ruleno].prec
+ and rules[ruleno].precsym. Initialize members in order.
+ * src/relation.c (relation_transpose): Always initialize new_R[i]
+ and end_R[i].
+ * src/table.c (conflict_row): Initialize 0 at end of conflict_list.
+
+ * src/output.c (prepare_actions): Pass 0 instead of conflict_list[0];
+ conflict_list[0] was always 0, but now it isn't initialized.
+
+ * src/table.c (table_grow): When conflict_table grew, the grown
+ area wasn't cleared. Fix this.
+
+ * lib/.cvsignore: Add strdup.c, strdup.h.
+ * m4/.cvsignore: Add strdup.m4.
+
+2004-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/lalr.h (GOTO_NUMBER_MAXIMUM): New macro.
+ * src/lalr.c (set_goto_map): Don't allow ngotos to equal
+ GOTO_NUMBER_MAXIMUM, since we occasionally compute
+ ngotos + 1 without checking for overflow.
+ (build_relations): Use END_NODE, not -1, to denote end of edges.
+ * src/lalr.c (set_goto_map, map_goto, initialize_F, add_loopback_edge,
+ build_relations): Use goto_number, not int, for goto numbers.
+ * src/tables.c (save_column, default_goto): Likewise.
+