]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
(new_itemsets): Use memset rather than zeroing by hand. This avoids a
[bison.git] / ChangeLog
index f6835dbfd6accba2b31af50b2b35351d8279b8a9..f2a114fc9a336c5815f0ad24945b9a7b5d465d4c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,228 @@
+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 an class).
+       (which goal was to allow to derive from a class).
 
        * data/lalr1.cc (b4_root, b4_param, b4_constructor): Remove
        definitions and uses.