]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Separate parser tables computation and output.
[bison.git] / ChangeLog
index ab0b47da8f4106788ec48b1086f0611f4e6444d6..64264b7a9a50e54214ab53d6071379ab163bc95d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,962 @@
+2002-07-31  Akim Demaille  <akim@epita.fr>
+
+       Separate parser tables computation and output.
+
+       * src/output.c (nvectors, base_t, base, base_ninf, conflict_table)
+       (conflict_list, conflict_list_cnt, table, check, table_ninf)
+       (yydefgoto, yydefact, high): Move to...
+       * src/tables.h, src/tables.c: here.
+       * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
+       (VECTOR_NUMBER_MIN, state_number_to_vector_number)
+       (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN)
+       (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX)
+       (ACTION_MIN, actrow, order, nentries, pos, conflrow)
+       (conflict_list_free, table_size, lowzero, table_grow, conflict_row)
+       (action_row, save_row, token_actions, save_column, default_goto)
+       (goto_actions, sort_actions, matching_state, pack_vector)
+       (table_ninf_remap, pack_table, prepare_actions): Move to...
+       * src/tables.c: here.
+       * src/tables.h, src/tables.c(tables_generate, tables_free): New.
+       * src/output.c (token_actions, output_base, output_conflicts)
+       (output_check): Merge into...
+       (prepare_actions): this.
+       (actions_output): Rename as...
+       (user_actions_output): this.
+       * src/main.c (main): Call tables_generate and tables_free.
+
+2002-07-31  Akim Demaille  <akim@epita.fr>
+
+       Steal GCC's --time-report support.
+
+       * lib/timevar.c, lib/timevar.h, lib/timevar.def: New,
+       stolen/adjusted from GCC.
+       * m4/stage.m4: Remove time related checks.
+       * m4/timevar.m4: New.
+       * configure.in: Adjust.
+       * src/system.h: Adjust to using timevar.h.
+       * src/getargs.h, src/getargs.c: Support trace_time for
+       --trace=time.
+       * src/main.c (stage): Remove.
+       (main): Replace `stage' invocations with timevar calls.
+       * src/output.c: Insert pertinent timevar calls.
+
+2002-07-31  Akim Demaille  <akim@epita.fr>
+
+       Let --trace have arguments.
+
+       * src/getargs.h (enum trace_e): New.
+       * src/getargs.c (trace_args, trace_types, trace_argmatch): New.
+       (long_options, short_options): --trace/-T takes an optional
+       argument.
+       Change all the uses of trace_flag to reflect the new flags.
+       * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets.
+
+       Strengthen `stage' portability.
+
+       * m4/stage.m4 (BISON_PREREQ_STAGE): New.
+       * configure.in: Use it.
+       Don't check for malloc.h and sys/times.h.
+       * src/system.h: Include them when appropriate.
+       * src/main.c (stage): Compile only when mallinfo, struct mallinfo,
+       times and struct tms are available.
+
+2002-07-30  Akim Demaille  <akim@epita.fr>
+
+       In verbose parse error message, don't report `error' as an
+       expected token.
+       * tests/actions.at (Printers and Destructors): Adjust.
+       * tests/calc.at (Calculator $1): Adjust.
+       * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose
+       error message, do not report the parser accepts the error token in
+       that state.
+
+2002-07-30  Akim Demaille  <akim@epita.fr>
+
+       Normalize conflict related messages.
+
+       * src/complain.h, src/complain.c (warn, complain): New.
+       * src/conflicts.c (conflicts_print): Use them.
+       (conflict_report_yacc): New, extracted from...
+       (conflicts_print): here.
+       * tests/conflicts.at, tests/existing.at: Adjust.
+
+2002-07-30  Akim Demaille  <akim@epita.fr>
+
+       Report rules which are never reduced by the parser: those hidden
+       by conflicts.
+
+       * src/LR0.c (save_reductions): Don't make the final state too
+       different: save its reduction (accept) instead of having a state
+       without any action (no shift or goto, no reduce).
+       Note: the final state is now a ``regular'' state, i.e., the
+       parsers now contain `reduce 0' as default reduction.
+       Nevertheless, since they decide to `accept' when yystate =
+       final_state, they still will not reduce rule 0.
+       * src/print.c (print_actions, print_reduction): Adjust.
+       * src/output.c (action_row): Track reduced rules.
+       (token_actions): Report rules never reduced.
+       * tests/conflicts.at, tests/regression.at: Adjust.
+
+2002-07-30  Akim Demaille  <akim@epita.fr>
+
+       `stage' was accidently included in a previous patch.
+       Initiate its autoconfiscation.
+
+       * configure.in: Look for malloc.h and sys/times.h.
+       * src/main.c (stage): Adjust.
+       Report only when trace_flag.
+
+2002-07-29  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not
+       state_number_t.
+       (errs_t): symbol_t*, not symbol_number_t.
+       (reductions_t): rule_t*, not rule_number_t.
+       (FOR_EACH_SHIFT): New.
+       * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c
+       * src/print.c, src/print_graph.c: Adjust.
+
+2002-07-29  Akim Demaille  <akim@epita.fr>
+
+       Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $.
+
+       * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as...
+       (endtoken, accept): these.
+       * src/reader.c (reader): Set endtoken's default tag to "$end".
+       Set undeftoken's tag to "$undefined" instead of "$undefined.".
+       * doc/bison.texinfo (Table of Symbols): Mention $accept and $end.
+       Adjust.
+
+2002-07-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reduce.c (reduce_grammar): When the language is empty,
+       complain about the start symbol, not the axiom.
+       Use its location.
+       * tests/reduce.at (Empty Language): New.
+
+2002-07-26  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.h, src/reader.c (gram_error): ... can't get
+       yycontrol without making too strong assumptions on the parser
+       itself.
+       * src/output.c (prepare_tokens): Use the real 0th value of
+       token_translations instead of `0'.
+       * src/parse-gram.y (yyerror): Don't rely on yycontrol being
+       visible here.
+       * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
+       for the time being: %locations ought to provide it to yyerror.
+
+2002-07-25  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
+       * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./.
+       * tests/regression.at (Web2c Actions): Adjust.
+
+2002-07-25  Akim Demaille  <akim@epita.fr>
+
+       Stop storing rules from 1 to nrules + 1.
+
+       * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
+       * src/nullable.c, src/output.c, src/print.c, src/reader.c
+       * src/reduce.c: Allocate and free from &rules[0], not &rules[1].
+       Iterate from 0 to nrules.
+       Use rule_number_as_item_number and item_number_as_rule_number.
+       Adjust to `derive' now containing possibly 0.
+       * src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
+       Handle the `- 1' part in rule numbers from/to item numbers.
+       * src/conflicts.c (log_resolution): Fix the message which reversed
+       shift and reduce.
+       * src/output.c (action_row): Initialize default_rule to -1.
+       (token_actions): Adjust.
+       * tests/sets.at (Nullable, Firsts): Fix the previously bogus
+       expected output.
+       * tests/conflicts.at (Resolved SR Conflicts): Likewise.
+
+2002-07-25  Akim Demaille  <akim@epita.fr>
+
+       * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg)
+       (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls)
+       (b4_c_knr_arg_decl): New.
+       * data/yacc.c: Use it to define yysymprint, yydestruct, and
+       yyreport_parse_error.
+
+2002-07-25  Akim Demaille  <akim@epita.fr>
+
+       * data/yacc.c (yyreport_parse_error): New, extracted from...
+       (yyparse): here.
+       (yydestruct, yysymprint): Move above yyparse.
+       Be K&R compliant.
+
+2002-07-25  Akim Demaille  <akim@epita.fr>
+
+       * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New,
+       replace...
+       (b4_sint_type, b4_uint_type): these.
+       * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for.
+       * tests/regression.at (Web2c Actions): Adjust.
+
+2002-07-25  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h (TIEM_NUMBER_MAX): New.
+       (item_number_of_rule_number, rule_number_of_item_number): Rename
+       as...
+       (rule_number_as_item_number, item_number_as_rule_number): these.
+       Adjust dependencies.
+       * src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
+       (VECTOR_NUMBER_MIN, state_number_to_vector_number)
+       (symbol_number_to_vector_number): New.
+       (order): Of vector_number_t* type.
+       (base_t, BASE_MAX, BASE_MIN): New.
+       (froms, tos, width, pos, check): Of base_t type.
+       (action_number_t, ACTION_MIN, ACTION_MAX): New.
+       (actrow): Of action_number_t type.
+       (conflrow): Of unsigned int type.
+       (table_ninf, base_ninf): New.
+       (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
+       (muscle_insert_int_table, muscle_insert_base_table)
+       (muscle_insert_rule_number_table): New.
+       (prepare_tokens): Output `toknum' as int_table.
+       (action_row): Returns a rule_number_t.
+       Use ACTION_MIN, not SHRT_MIN.
+       (token_actions): yydefact is rule_number_t*.
+       (table_ninf_remap): New.
+       (pack_table): Use it for `base' and `table'.
+       * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
+       replaced with...
+       (YYPACT_NINF, YYTABLE_NINF): these.
+       (yypact, yytable): Compute their types instead of hard-coded
+       `short'.
+       * tests/regression.at (Web2c Actions): Adjust.
+
+2002-07-19  Akim Demaille  <akim@epita.fr>
+
+       * src/scan-gram.l (id): Can start with an underscore.
+
+2002-07-16  Akim Demaille  <akim@epita.fr>
+
+       * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New.
+       Adjust all former `associativity' dependencies.
+       * src/symtab.c (symbol_new): Default associativity is `undef', not
+       `right'.
+       (symbol_check_alias_consistence): Adjust.
+
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo: Properly set the ``header'' part.
+       Use @dircategory ``GNU programming tools'' as per Texinfo's
+       documentation.
+       Use @copying.
+
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * lib/quotearg.h: Protect against multiple inclusions.
+       * src/location.h (location_t): Add a `file' member.
+       (LOCATION_RESET, LOCATION_PRINT): Adjust.
+       * src/complain.c (warn_at, complain_at, fatal_at): Drop
+       `error_one_per_line' support.
+
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * src/complain.h, src/complain.c (warn, complain): Remove, unused.
+       * src/reader.c (lineno): Remove.
+       Adjust all dependencies.
+       (get_merge_function): Take a location and use complain_at.
+       * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
+       * tests/regression.at (Invalid inputs, Mixing %token styles):
+       Adjust.
+
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * src/parse-gram.y (rules_or_grammar_declaration): Add an error
+       recovery rule, and forbid extensions when --yacc.
+       (gram_error): Use complain_at.
+       * src/reader.c (reader): Exit if there were parse errors.
+
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * tests/synclines.at (AT_SYNCLINES_COMPILE): New.
+       (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs.
+       Reported by R Blake <blakers@mac.com>.
+
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * data/yacc.c: Output the copyright notive in the header.
+
+2002-07-03  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (froms, tos): Are state_number_t.
+       (save_column): sp, sp1, and sp2 are state_number_t.
+       (prepare): Rename `final' as `final_state_number', `nnts' as
+       `nterms_number', `nrules' as `rules_number', `nstates' as
+       `states_number', and `ntokens' as `tokens_number'.  Remove `nsym',
+       unused.
+       * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
+       * data/lalr1.cc (nsym_): Remove, unused.
+
+2002-07-03  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.h, src/lalr.c (goto_number_t): New.
+       * src/lalr.c (goto_list_t): New.
+       Propagate them.
+       * src/nullable.c (rule_list_t): New.
+       Propagate.
+       * src/types.h: Remove.
+
+2002-07-03  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (print_fderives): Use rule_rhs_print.
+       * src/derives.c (print_derives): Use rule_rhs_print.
+       (rule_list_t): New, replaces `shorts'.
+       (set_derives): Add comments.
+       * tests/sets.at (Nullable, Firsts): Adjust.
+
+2002-07-03  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (prepare_actions): Free `tally' and `width'.
+       (prepare_actions): Allocate and free `order'.
+       * src/symtab.c (symbols_free): Free `symbols'.
+       * src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
+       * src/output.c (m4_invoke): Move to...
+       * src/scan-skel.l: here.
+       (<<EOF>>): Close yyout, and free its name.
+
+2002-07-03  Akim Demaille  <akim@epita.fr>
+
+       Fix some memory leaks, and fix a bug: state 0 was examined twice.
+
+       * src/LR0.c (new_state): Merge into...
+       (state_list_append): this.
+       (new_states): Merge into...
+       (generate_states): here.
+       (set_states): Don't ensure a proper `errs' state member here, do it...
+       * src/conflicts.c (conflicts_solve): here.
+       * src/state.h, src/state.c: Comment changes.
+       (state_t): Rename member `shifts' as `transitions'.
+       Adjust all dependencies.
+       (errs_new): For consistency, also take the values as argument.
+       (errs_dup): Remove.
+       (state_errs_set): New.
+       (state_reductions_set, state_transitions_set): Assert that no
+       previous value was assigned.
+       (state_free): New.
+       (states_free): Use it.
+       * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
+       temporary storage: use `errs' and `nerrs' as elsewhere.
+       (set_conflicts): Allocate and free this `errs'.
+
+2002-07-02  Akim Demaille  <akim@epita.fr>
+
+       * lib/libiberty.h: New.
+       * lib: Update the bitset implementation from upstream.
+       * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
+       * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
+       * src/main.c: Adjust bitset stats calls.
+
+2002-07-01  Paul Eggert  <eggert@twinsun.com>
+
+       * src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned
+       char, so that negative chars don't collide with $.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       Have the GLR tests be `warning' checked, and fix the warnings.
+
+       * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG
+       (yyuserAction, yyreportAmbiguity): `Use' all the arguments.
+       (yyremoveDeletes): `yyi' and `yyj' are size_t.
+       Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies.
+       (yyaddDeferredAction): static.
+       (yyglrReduce): yyi, yyk, amd yyposn are size_t.
+       (yyreportParseError): yyprefix is const.
+       yytokenp is used only when verbose.
+       (yy__GNUC__): Replace with __GNUC__.
+       (yypdumpstack): yyi is size_t.
+       (yypreference): Un-yy local variables and arguments, to avoid
+       clashes with `yyr1'.  Anyway, we are not in the user name space.
+       (yytname_size): be an int, as is compared with ints.
+       * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New.
+       Use them.
+       * tests/cxx-gram.at: Use quotation to protect $1.
+       Use AT_COMPILE to enable warnings hunts.
+       Prototype yylex and yyerror.
+       `Use' argc.
+       Include `string.h', not `strings.h'.
+       Produce and prototype stmtMerge only when used.
+       yylex takes a location.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       We spend a lot of time in quotearg, in particular when --verbose.
+
+       * src/symtab.c (symbol_get): Store a quoted version of the key.
+       (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
+       Adjust all callers.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (reductions_t): Rename member `nreds' as num.
+       (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
+       * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
+       (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
+       (shifts_to): Rename as...
+       (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
+       (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
+       (TRANSITION_IS_DISABLED, transitions_to): these.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c (print_shifts, print_gotos): Merge into...
+       (print_transitions): this.
+       (print_transitions, print_errs, print_reductions): Align the
+       lookaheads columns.
+       (print_core, print_transitions, print_errs, print_state,
+       print_grammar): Output empty lines separator before, not after.
+       (state_default_rule_compute): Rename as...
+       (state_default_rule): this.
+       * tests/conflicts.at (Defaulted Conflicted Reduction),
+       (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust.
+       * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       Display items as we display rules.
+
+       * src/gram.h, src/gram.c (rule_lhs_print): New.
+       * src/gram.c (grammar_rules_partial_print): Use it.
+       * src/print.c (print_core): Likewise.
+       * tests/conflicts.at (Defaulted Conflicted Reduction),
+       (Unresolved SR Conflicts): Adjust.
+       (Unresolved SR Conflicts): Adjust and rename as...
+       (Resolved SR Conflicts): this, as was meant.
+       * tests/regression.at (Web2c Report): Adjust.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c (state_default_rule_compute): New, extracted from...
+       (print_reductions): here.
+       Pessimize, but clarify the code.
+       * tests/conflicts.at (Defaulted Conflicted Reduction): New.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (action_row): Let default_rule be always a rule
+       number.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (print_firsts, print_fderives, closure):
+       Use BITSET_EXECUTE.
+       * src/lalr.c (lookaheads_print): Likewise.
+       * src/state.c (state_rule_lookaheads_print): Likewise.
+       * src/print_graph.c (print_core): Likewise.
+       * src/print.c (print_reductions): Likewise.
+       * src/output.c (action_row): Likewise.
+       Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/print_graph.c: Use report_flag.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (traverse, digraph, matrix_print, transpose): Move
+       to...
+       * src/relation.h, src/relation.c (traverse, relation_digraph)
+       (relation_print, relation_transpose): New.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (shifts_to): New.
+       * src/lalr.c (build_relations): Use it.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
+       (item_number_of_rule_number, rule_number_of_item_number): New.
+       * src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
+       * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
+       * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
+       Propagate their use.
+       Much remains to be done, in particular wrt `shorts' from types.h.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.c (symbol_new): Initialize the `printer' member.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c (save_reductions): Remove, replaced by...
+       * src/state.h, src/state.c (state_reductions_set): New.
+       (reductions, errs): Rename as...
+       (reductions_t, errs_t): these.
+       Adjust all dependencies.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c (state_list_t, state_list_append): New.
+       (first_state, last_state): Now symbol_list_t.
+       (this_state): Remove.
+       (new_itemsets, append_states, save_reductions): Take a state_t as
+       argument.
+       (set_states, generate_states): Adjust.
+       (save_shifts): Remove, replaced by...
+       * src/state.h, src/state.c (state_shifts_set): New.
+       (shifts): Rename as...
+       (shifts_t): this.
+       Adjust all dependencies.
+       * src/state.h (state_t): Remove the `next' member.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/vcg.c (quote): Use slot 2, since we often pass symbol tag
+       escaped in slot 0.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       Use hash.h for the state hash table.
+
+       * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
+       (allocate_storage): Use state_hash_new.
+       (free_storage): Use state_hash_free.
+       (new_state, get_state): Adjust.
+       * src/lalr.h, src/lalr.c (states): Move to...
+       * src/states.h (state_t): Remove the `link' member, no longer
+       used.
+       * src/states.h, src/states.c: here.
+       (state_hash_new, state_hash_free, state_hash_lookup)
+       (state_hash_insert, states_free): New.
+       * src/states.c (state_table, state_compare, state_hash): New.
+       * src/output.c (output_actions): Do not free states now, since we
+       still need to know the final_state number in `prepare', called
+       afterwards.  Do it...
+       * src/main.c (main): here: call states_free after `output'.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (state_new): New, extracted from...
+       * src/LR0.c (new_state): here.
+       * src/state.h (STATE_ALLOC): Move to...
+       * src/state.c: here.
+       * src/LR0.h, src/LR0.c (nstates, final_state): Move to...
+       * src/state.h, src/state.c: here.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (gensym): Rename as...
+       * src/symtab.h, src/symtab.c (dummy_symbol_get): this.
+       (getsym): Rename as...
+       (symbol_get): this.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
+       * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
+       * src/output.c, src/print.c, src/print_graph.c: Propagate.
+       * src/LR0.h, src/LR0.h (final_state): Is a state_t*.
+
+2002-06-30  Akim Demaille  <akim@epita.fr>
+
+       Make the test suite pass with warnings checked.
+
+       * tests/actions.at (Printers and Destructors): Improve.
+       Avoid unsigned vs. signed issues.
+       * tests/calc.at: Don't exercise the scanner here, do it...
+       * tests/input.at (Torturing the Scanner): here.
+
+2002-06-28  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
+       * data/glr.c: Correct typo in Emacs-mode directive.  Slightly
+       reorganize first lines parallel to yacc.c.
+
+2002-06-28  Akim Demaille  <akim@epita.fr>
+
+       * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define)
+       (b4_token_enum, b4_token_defines): New, factored from...
+       * data/lalr1.cc, data/yacc.c, glr.c: here.
+
+2002-06-28  Akim Demaille  <akim@epita.fr>
+
+       * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
+       unused variables.
+       * src/output.c (merger_output): static.
+
+2002-06-28  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
+       * src/conflicts.c (conflicts_total_count): `i' is unsigned, to
+       pacify GCC.
+       * src/output.c (save_row): Initialize all the variables to pacify GCC.
+
+2002-06-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
+       Accumulated changelog for new GLR parsing features.
+
+        * src/conflicts.c (count_total_conflicts): Change name to
+       conflicts_total_count.
+       * src/conflicts.h: Ditto.
+       * src/output.c (token_actions): Use the new name.
+       (output_conflicts): Change conflp => conflict_list_heads, and
+       confl => conflict_list for better readability.
+       * data/glr.c: Use the new names.
+       * NEWS: Add self to GLR announcement.
+
+       * src/reader.c (free_merger_functions): Cleanup: XFREE->free.
+
+       * doc/bison.texinfo (GLR Parsers): Make corrections suggested by
+       Akim Demaille.
+
+       * data/bison.glr: Change name to glr.c
+       * data/glr.c: Renamed from bison.glr.
+       * data/Makefile.am: Add glr.c
+
+       * src/getargs.c:
+
+       * src/symlist.h:  Add dprec and merger fields to symbol_list_s.
+       * src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
+
+       Originally 2002-06-16  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
+       * data/bison.glr: Be sure to restore the
+       current #line when returning to the skeleton contents after having
+       exposed the input file's #line.
+
+       Originally 2002-06-13  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
+       * data/bison.glr: Bring up to date with changes to bison.simple.
+
+       Originally 2002-06-03  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
+       * data/bison.glr: Correct definitions that use b4_prefix.
+       Various reformatting.
+       (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
+       (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
+       yytokenp argument; now part of stack.
+       (yychar): Define to behave as documented.
+       (yyclearin): Ditto.
+
+       Originally 2002-05-14  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
+       * src/reader.h: Add declaration for free_merger_functions.
+
+       * src/reader.c (merge_functions): New variable.
+       (get_merge_function): New function.
+       (free_merger_functions): New function.
+       (readgram): Check for %prec that is not followed by a symbol.
+       Handle %dprec and %merge declarations.
+       (packgram): Initialize dprec and merger fields in rules array.
+
+       * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
+       conflict_list_cnt, conflict_list_free): New variables.
+       (table_grow): Also grow conflict_table.
+       (prepare_rules): Output dprec and merger tables.
+       (conflict_row): New function.
+       (action_row): Output conflict lists for GLR parser.  Don't use
+       default reduction in conflicted states for GLR parser so that there
+       are spaces for the conflict lists.
+       (save_row): Also save conflict information.
+       (token_actions): Allocate conflict list.
+       (merger_output): New function.
+       (pack_vector): Pack conflict table, too.
+       (output_conflicts): New function to output yyconflp and yyconfl.
+       (output_check): Allocate conflict_tos.
+       (output_actions): Output conflict tables, also.
+       (output_skeleton): Output b4_mergers definition.
+       (prepare): Output b4_max_rhs_length definition.
+       Use 'bison.glr' as default skeleton for GLR parsers.
+
+       * src/gram.c (glr_parser): New flag.
+       (grammar_free): Call free_merger_functions.
+
+       * src/conflicts.c (count_rr_conflicts): Augment to optionally count
+       all pairs of conflicting reductions, rather than just all tokens
+       causing conflicts.  Needed to size conflict tables.
+       (conflicts_output): Modify call to count_rr_conflicts for new
+       interface.
+       (conflicts_print): Ditto.
+       (count_total_conflicts): New function.
+
+       * src/reader.h (merger_list): New type.
+       (merge_functions): New variable.
+
+       * src/lex.h (tok_dprec, tok_merge): New token types.
+
+       * src/gram.h (rule_s): Add dprec and merger fields.
+       (glr_parser): New flag.
+
+       * src/conflicts.h (count_total_conflicts): New function.
+
+       * src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
+
+       * doc/bison.texinfo (Generalized LR Parsing): New section.
+       (GLR Parsers): New section.
+       (Language and Grammar): Mention GLR parsing.
+       (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
+       Correct typo ("tge" -> "the").
+
+       * data/bison.glr: New skeleton for GLR parsing.
+
+       * tests/cxx-gram.at: New tests for GLR parsing.
+
+       * tests/testsuite.at: Include cxx-gram.at.
+
+       * tests/Makefile.am: Add cxx-gram.at.
+
+       * src/parse-gram.y:
+
+       * src/scan-gram.l: Add %dprec, %glr-parser, %merge.
+
+       * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
+
+2002-06-27  Akim Demaille  <akim@epita.fr>
+
+       * src/options.h, src/options.c: Remove.
+       * src/getargs.c (short_options, long_options): New.
+
+2002-06-27  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple, data/bison.c++: Rename as...
+       * data/yacc.c, data/lalr1.cc: these.
+       * doc/bison.texinfo (Environment Variables): Remove.
+
+2002-06-25  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * src/getargs.c (report_argmatch): Initialize strtok().
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (b4_symbol_actions): New, replaces...
+       (b4_symbol_destructor, b4_symbol_printer): these.
+       (yysymprint): Be sure to call YYPRINT only for tokens, and using
+       user token numbers.
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (yydestructor): Rename as...
+       (yydestruct): this.
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.h, src/symtab.c (symbol_type_set)
+       (symbol_destructor_set, symbol_precedence_set): The location is
+       the last argument.
+       Adjust all callers.
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
+       internals.
+       * src/reader.h, src/reader.c (grammar_current_rule_prec_set):
+       Takes a location.
+       * src/symtab.h, src/symtab.c (symbol_class_set)
+       (symbol_user_token_number_set): Likewise.
+       Adjust all callers.
+       Promote complain_at.
+       * tests/input.at (Type Clashes): Adjust.
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (YYLEX): Fix the declaration when
+       %pure-parser.
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (yysymprint): Don't print the token number,
+       just its name.
+       * tests/actions.at (Destructors): Rename as...
+       (Printers and Destructors): this.
+       Also exercise %printer.
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (YYDSYMPRINT): New.
+       Use it to remove many of the #if YYDEBUG/if (yydebug).
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.h, src/symtab.c (symbol_t): printer and
+       printer_location are new members.
+       (symbol_printer_set): New.
+       * src/parse-gram.y (PERCENT_PRINTER): New token.
+       Handle its associated rule.
+       * src/scan-gram.l: Adjust.
+       (handle_destructor_at, handle_destructor_dollar): Rename as...
+       (handle_symbol_code_at, handle_symbol_code_dollar): these.
+       * src/output.c (symbol_printers_output): New.
+       (output_skeleton): Call it.
+       * data/bison.simple (yysymprint): New.  Cannot be named yyprint
+       since there are already many grammar files with a user `yyprint'.
+       Replace the calls to YYPRINT to calls to yysymprint.
+       * tests/calc.at: Adjust.
+       * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
+       taking advantage of parser very internal details (stack size!).
+
+2002-06-20  Akim Demaille  <akim@epita.fr>
+
+       * src/scan-gram.l: Complete the scanner with the missing patterns
+       to pacify Flex.
+       Use `quote' and `symbol_tag_get' where appropriate.
+
+2002-06-19  Akim Demaille  <akim@epita.fr>
+
+       * tests/actions.at (Destructors): Augment to test locations.
+       * data/bison.simple (yydestructor): Pass it the current location
+       if locations are enabled.
+       Prototype only when __STDC__ or C++.
+       Change the argument names to move into the yy name space: there is
+       user code here.
+
+2002-06-19  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (b4_pure_if): New.
+       Use it instead of #ifdef YYPURE.
+
+2002-06-19  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (b4_location_if): New.
+       Use it instead of #ifdef YYLSP_NEEDED.
+
+2002-06-19  Akim Demaille  <akim@epita.fr>
+
+       Prepare @$ in %destructor, but currently don't bind it in the
+       skeleton, as %location use is not cleaned up yet.
+
+       * src/scan-gram.l (handle_dollar, handle_destructor_at)
+       (handle_action_at): New.
+       (handle_at, handle_action_dollar, handle_destructor_dollar): Take
+       a braced_code_t and a location as additional arguments.
+       (handle_destructor_dollar): Instead of requiring `b4_eval', just
+       unquote one when outputting `b4_dollar_dollar'.
+       Adjust callers.
+       * data/bison.simple (b4_eval): Remove.
+       (b4_symbol_destructor): Adjust.
+       * tests/input.at (Invalid @n): Adjust.
+
+2002-06-19  Zack Weinberg  <zack@codesourcery.com>
+
+       * doc/bison.texinfo: Document ability to have multiple
+       prologue sections.
+
+2002-06-18  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c (compute_base_names): When computing the output file
+       names from the input file name, strip the directory part.
+
+2002-06-18  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple.new: Comment changes.
+       Reported by Andreas Schwab.
+
+2002-06-18  Matt Kraai  <kraai@alumni.cmu.edu>
+
+       * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that
+       there are no `label `yyoverflowlab' defined but not used' warnings
+       when yyoverflow is defined.
+
+2002-06-18  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
+       new member.
+       (symbol_destructor_set): Adjust.
+       * src/output.c (symbol_destructors_output): Output the destructor
+       locations.
+       Output the symbol name.
+       * data/bison.simple (b4_symbol_destructor): Adjust.
+
+2002-06-18  Cris Bailiff  <c.bailiff@awayweb.com>
+       and Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy
+       what's left on the stack when the error recovery hits EOF.
+       * tests/actions.at (Destructors): Complete to exercise this case.
+
+2002-06-17  Akim Demaille  <akim@epita.fr>
+
+       * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
+       arguments is really empty, not only equal to `[]'.
+       * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
+       member.
+       (symbol_destructor_set): New.
+       * src/output.c (symbol_destructors_output): New.
+       * src/reader.h (brace_code_t, current_braced_code): New.
+       * src/scan-gram.l (BRACED_CODE): Use it to branch on...
+       (handle_dollar): Rename as...
+       (handle_action_dollar): this.
+       (handle_destructor_dollar): New.
+       * src/parse-gram.y (PERCENT_DESTRUCTOR): New.
+       (grammar_declaration): Use it.
+       * data/bison.simple (yystos): Is always defined.
+       (yydestructor): New.
+       * tests/actions.at (Destructors): New.
+       * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
+
+2002-06-17  Akim Demaille  <akim@epita.fr>
+
+       * src/symlist.h, src/symlist.c (symbol_list_length): New.
+       * src/scan-gram.l (handle_dollar, handle_at): Compute the
+       rule_length only when needed.
+       * src/output.c (actions_output, token_definitions_output): Output
+       the full M4 block.
+       * src/symtab.c: Don't access directly to the symbol tag, use
+       symbol_tag_get.
+       * src/parse-gram.y: Use symbol_list_free.
+
+2002-06-17  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.h, src/reader.c (symbol_list, symbol_list_new)
+       (symbol_list_prepend, get_type_name): Move to...
+       * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new)
+       (symbol_list_prepend, symbol_list_n_type_name_get): here.
+       Adjust all callers.
+       (symbol_list_free): New.
+       * src/scan-gram.l (handle_dollar): Takes a location.
+       * tests/input.at (Invalid $n): Adjust.
+
+2002-06-17  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.h, src/reader.c (symbol_list_new): Export it.
+       (symbol_list_prepend): New.
+       * src/parse-gram.y (%union): `list' is a new member.
+       (symbols.1): New, replaces...
+       (terms_to_prec.1, nterms_to_type.1): these.
+       * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set)
+       Take a location as additional argument.
+       Adjust all callers.
+
+2002-06-15  Akim Demaille  <akim@epita.fr>
+
+       * src/parse-gram.y: Move %token in the declaration section so that
+       we don't depend upon CVS Bison.
+
+2002-06-15  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (state_rule_lookaheads_print): New.
+       * src/print.c (print_core): Use it.
+
+2002-06-15  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (log_resolution): Accept the rule involved in
+       the sr conflicts instead of the lookahead number that points to
+       that rule.
+       (flush_reduce): Accept the current lookahead vector as argument,
+       instead of the index in LA.
+       (resolve_sr_conflict): Accept the current number of lookahead
+       bitset to consider for the STATE, instead of the index in LA.
+       (set_conflicts): Adjust.
+       * src/lalr.c, src/lalr.h, src/state.h: Comment changes.
+
+2002-06-15  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (state_t): Replace the `lookaheadsp' member, a
+       short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
+       Adjust all dependencies.
+       * src/lalr.c (initialize_lookaheads): Split into...
+       (states_lookaheads_count, states_lookaheads_initialize): these.
+       (lalr): Adjust.
+
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved
@@ -7,7 +966,6 @@
        * tests/reduce.at (Useless Rules, Reduced Automaton)
        (Underivable Rules): Adjust.
 
        * tests/reduce.at (Useless Rules, Reduced Automaton)
        (Underivable Rules): Adjust.
 
-       
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        Copy BYacc's nice way to report the grammar.
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        Copy BYacc's nice way to report the grammar.
        (rule_print): Use grammar_rhs_print.
        * src/print.c (print_grammar): Use grammar_rules_print.
 
        (rule_print): Use grammar_rhs_print.
        * src/print.c (print_grammar): Use grammar_rules_print.
 
-       
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        Complete and rationalize `useless thing' warnings.
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        Complete and rationalize `useless thing' warnings.
        * tests/conflicts.at (Unresolved SR Conflicts)
        (Solved SR Conflicts): Adjust.
 
        * tests/conflicts.at (Unresolved SR Conflicts)
        (Solved SR Conflicts): Adjust.
 
-       
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        Let symbols have a location.
 2002-06-15  Akim Demaille  <akim@epita.fr>
 
        Let symbols have a location.
        * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
        the line numbers.
 
        * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
        the line numbers.
 
-       
 2002-06-14  Akim Demaille  <akim@epita.fr>
 
        Grammar declarations may be found in the grammar section.
 2002-06-14  Akim Demaille  <akim@epita.fr>
 
        Grammar declarations may be found in the grammar section.
 
 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 
 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-This file is part of GNU Autoconf.
+This file is part of GNU Bison.
 
 
-GNU Autoconf is free software; you can redistribute it and/or modify
+GNU Bison is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2, or (at your option)
 any later version.
 
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2, or (at your option)
 any later version.
 
-GNU Autoconf is distributed in the hope that it will be useful,
+GNU Bison is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with autoconf; see the file COPYING.  If not, write to
+along with GNU Bison; see the file COPYING.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.