]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
* doc/bison.texinfo: Formatting changes.
[bison.git] / ChangeLog
index 34ac5ff858aa4b2463ae537a5406337f25d38eba..d983394d4b3e6d49fe204dbc61beb194a6a379fd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,793 @@
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo: Formatting changes.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Don't store the token defs in a muscle, just be ready to output it
+       on command.  Now possible via `symbols'.  Fixes a memory leak.
+
+       * src/output.c (token_definitions_output): New.
+       (output_parser, header_output): Use it.
+       * src/reader.c (symbols_save): Remove.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.simple: Do not provide a default for YYSTYPE and
+       YYLTYPE before the user's prologue.  Otherwise it's hardly... a
+       default.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Mid-rule actions are simply... ignored!
+
+       * src/reader.c (readgram): Be sure to attach mid-rule actions to
+       the empty-rule associated to the dummy symbol, not to the host
+       rule.
+       * tests/actions.at (Mid-rule actions): New.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Memory leak.
+
+       * src/reader.c (reader): Free grammar.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Memory leak.
+
+       * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
+       since it allocates it for each state, although only one is needed.
+       (allocate_storage): Do it here.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/options.h, src/options.c (create_long_option_table): Rename
+       as...
+       (long_option_table_new): this, with a clearer prototype.
+       (percent_table): Remove, unused,
+       * src/getargs.c (getargs): Adjust.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
+       * src/print.c, src/print_graph.c, src/state.h: Rename state_table
+       as states.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (build_relations): Rename `states' as `states1'.
+       Sorry, I don't understand exactly what it is, no better name...
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
+       * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
+       * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
+       as rules.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
+       ago.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c, src/reader.h (user_toknums): Remove.
+       Adjust all users to use symbols[i]->user_token_number.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.c, src/gram.h (sprec, sassoc): Remove.
+       Adjust all users to use symbols[i]->prec or ->assoc.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c, src/reader.h (tags): Remove.
+       Adjust all users to use symbols[i]->tag.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h, src/gram.c (symbols): New, similar to state_table
+       and rule_table.
+       * src/reader.c (packsymbols): Fill this table.
+       Drop sprec.
+       * src/conflicts.c (resolve_sr_conflict): Adjust.
+       * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
+       single table.
+       Use symbols[i]->tag instead of tags[i].
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
+       In addition, put a comment in there, to replace...
+       * tests/regression.at (%union and C comments): Remove.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (Web2c Actions): Blindly move the actual
+       output as expected output.  The contents *seem* right to me, but I
+       can't pretend reading perfectly parser tables...  Nonetheless, all
+       the other tests pass correctly, the table look OK, even though the
+       presence of `$axiom' is to be noted: AFAICS it is useless (but
+       harmless).
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Don't add the rule 0 if there were no
+       rules read.  In other words, add it _after_ having performed
+       grammar sanity checks.
+       Fixes the `tests/regression.at (Invalid input: 1)' Failure.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
+       visible, and some states have now a different number.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Bind the initial rule's lineno to that
+       of the first rule.
+       * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
+       (Solved SR Conflicts): Adjust rule 0's line number.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Fix the `GAWK Grammar' failure.
+
+       * src/LR0.c (final_state): Initialize to -1 so that we do compute
+       the reductions of the first state which was mistakenly confused
+       with the final state because precisely final_state was initialized
+       to 0.
+       * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
+       now noticed by Bison.
+       * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
+       have a reduction on $default.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
+       rule line numbers.
+       * src/closure.c (print_closure): Likewise.
+       * src/derives.c (print_derives): Likewise.
+       * tests/sets.at (Nullable): Adjust: the rule numbers are correct
+       now.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (lookaheads_print): New.
+       (lalr): Call it when --trace-flag.
+       * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
+       are dumped.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
+       when walking through ritem, even via rule->rhs.
+       * src/reduce.c (dump_grammar, useful_production, reduce_output)
+       (useful_production, useless_nonterminals): Likewise.
+       (reduce_grammar_tables): Likewise, plus update nritems.
+       * src/nullable.c (set_nullable): Likewise.
+       * src/lalr.c (build_relations): Likewise.
+       * tests/sets.at (Nullable): Adjust.
+       Fortunately, now, the $axiom is no longer nullable.
+
+       
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c (generate_states): Use nritems, not nitems, nor using
+       the 0-sentinel.
+       * src/gram.c (ritem_longest_rhs): Likewise.
+       * src/reduce.c (nonterminals_reduce): Likewise.
+       * src/print_graph.c (print_graph): Likewise.
+       * src/output.c (output_rule_data): Likewise.
+       * src/nullable.c (set_nullable):  Likewise.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c: Comment changes.
+
+2001-12-27  Paul Eggert  <eggert@twinsun.com>
+
+       * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
+       cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
+       Sparc, as they were causing more porting problems than the
+       (minor) performance improvement was worth.
+
+       Also, catch up with 1.31's YYSTD.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_gram): Rely on nritems, not the
+       0-sentinel.  See below.
+       Use -1 as separator, not 0.
+       * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
+       Rely on -1 as separator in yyrhs, instead of 0.
+       * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
+       twice `Now at end of input', therefore there are two lines less to
+       expect.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (Unresolved SR Conflicts):
+       (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
+       below.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c (new_state): Recognize the final state by the fact it
+       is reached by eoftoken.
+       (insert_start_shifting_state, insert_eof_shifting_state)
+       (insert_accepting_state, augment_automaton): Remove, since now
+       these states are automatically computed from the initial state.
+       (generate_states): Adjust.
+       * src/print.c: When reporting a rule number to the user, substract
+       1, so that the axiom rule is rule 0, and the first user rule is 1.
+       * src/reduce.c: Likewise.
+       * src/print_graph.c (print_core): For the time being, just as for
+       the report, depend upon --trace-flags to dump the full set of
+       items.
+       * src/reader.c (readgram): Once the grammar read, insert the rule
+       0: `$axiom: START-SYMBOL $'.
+       * tests/set.at: Adjust: rule 0 is now displayed, and since the
+       number of the states has changed (the final state is no longer
+       necessarily the last), catch up.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       Try to make the use of the eoftoken valid.  Given that its value
+       is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
+       is used instead of > 0 where appropriate, (ii), depend upon nritems
+       instead of the 0-sentinel.
+
+       * src/gram.h, src/gram.c (nritems): New.
+       Expected to be duplication of nitems, but for the time being...
+       * src/reader.c (packgram): Assert nritems and nitems are equal.
+       * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
+       * src/closure.c (print_closure, print_fderives): Likewise.
+       * src/gram.c (ritem_print): Likewise.
+       * src/print.c (print_core, print_grammar): Likewise.
+       * src/print_graph.c: Likewise.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/main.c (main): If there are complains after grammar
+       reductions, then output the report anyway if requested, then die.
+       * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
+       * src/reader.c (eoftoken): New.
+       (parse_token_decl): If the token being defined has value `0', it
+       is the eoftoken.
+       (packsymbols): No longer hack `tags' to insert `$' by hand.
+       Be sure to preserve the value of the eoftoken.
+       (reader): Make sure eoftoken is defined.
+       Initialize nsyms to 0: now eoftoken is created just like the others.
+       * src/print.c (print_grammar): Don't special case the eof token.
+       * src/regression.at: Adjust: `$' has value 0, not -1, which was a
+       lie anyway, albeit pleasant.
+       * tests/calc.at: Exercise error messages with eoftoken.
+       Change the grammar so that empty input is invalid.
+       Adjust expectations.
+       When yyungeting, be sure to use a valid yylloc: use last_yylloc.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * configure.in: Check the protos of strchr ans strspn.
+       Replace strchr if needed.
+       * src/system.h: Provide the protos of strchr, strspn and memchr if
+       missing.
+       * lib/strchr.c: New.
+       * src/reader.c (symbols_save): Use strchr.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c, src/print_graph.c (escape): New.
+       Use it to quote the TAGS outputs.
+       * src/print_graph.c (print_state): Now errors are in red, and
+       reductions in green.
+       Prefer high to wide: output the state number on a line of its own.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (reductions_new): New.
+       * src/LR0.c (set_state_table): Let all the states have a
+       `reductions', even if reduced to 0.
+       (save_reductions): Adjust.
+       * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
+       * src/print.c (print_reductions, print_actions): Adjust.
+       * src/output.c (action_row): Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (errs_new, errs_dup): New.
+       * src/LR0.c (set_state_table): Let all the states have an errs,
+       even if reduced to 0.
+       * src/print.c (print_errs, print_reductions): Adjust.
+       * src/output.c (output_actions, action_row): Adjust.
+       * src/conflicts.c (resolve_sr_conflict): Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
+       * src/print.c: here.
+       (lookaheadset, shiftset): New, used as additional storage by
+       print_reductions.
+       (print_results): Adjust.
+       (print_shifts, print_gotos, print_errs): New, extracted from...
+       (print_actions): here.
+       * src/print_graph.c (print_actions): Remove dead code.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
+       `$n' and `@n'.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
+       (build_relations): Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (set_goto_map): Remove a wrong but benign loop
+       duplication.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (packgram): Catch nitems overflows.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c, src/files.h (guard_obstack): Remove.
+       * src/output.c (output): Adjust.
+       * src/reader.c (parse_braces): New, factoring...
+       (copy_action, copy_guard): these two which are renamed as...
+       (parse_action, parse_guard): these.
+       As a voluntary consequence, using braces around guards is now
+       mandatory.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h (rule_t): `guard' and `guard_line' are new members.
+       * src/reader.c (symbol_list): `guard' and `guard_line' are new
+       members.
+       (symbol_list_new): Adjust.
+       (copy_action): action_line is the first line, not the last.
+       (copy_guard): Just as for actions, store the `action' only, not
+       the switch/case/break flesh.
+       Don't parse the user action that might follow the guard, let...
+       (readgram): do it, i.e., now, there can be an action after a
+       guard.
+       In other words the guard is just explicitly optional.
+       (packgram): Adjust.
+       * src/output.c (guards_output): New.
+       (output_parser): Call it when needed.
+       (output): Also free the guard and attrs obstacks.
+       * src/files.c, src/files.h (obstack_save): Remove.
+       (output_files): Remove.
+       As a result, if one needs the former `.act' file, using an
+       appropriate skeleton which requires actions and guards is now
+       required.
+       * src/main.c (main): Adjust.
+       * tests/semantic.at: New.
+       * tests/regression.at: Use `input.y' as input file name.
+       Avoid 8+3 problems by requiring input.c when the test needs the
+       parser.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (symbol_list_new): Be sure to initialize all the
+       fields.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       All the hacks using a final pseudo state are now useless.
+
+       * src/LR0.c (set_state_table): state_table holds exactly nstates.
+       * src/lalr.c (nLA): New.
+       (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
+       instead of lookaheadsp from the pseudo state (nstate + 1).
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (action_row, token_actions): Use a state_t instead
+       of a integer, and nlookaheads instead of the following state's
+       lookaheadsp.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (log_resolution, flush_shift)
+       (resolve_sr_conflict, set_conflicts, solve_conflicts)
+       (count_sr_conflicts, count_rr_conflicts, conflicts_output)
+       (conflicts_print, print_reductions): Use a state_t instead of an
+       integer when referring to a state.
+       As much as possible, depend upon nlookaheads, instead of the
+       `lookaheadsp' member of the following state (since lookaheads of
+       successive states are successive, the difference between state n + 1
+       and n served as the number of lookaheads for state n).
+       * src/lalr.c (add_lookback_edge): Likewise.
+       * src/print.c (print_core, print_actions, print_state)
+       (print_results): Likewise.
+       * src/print_graph.c (print_core, print_actions, print_state)
+       (print_graph): Likewise.
+       * src/conflicts.h: Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.hairy: Formatting/comment changes.
+       ANSIfy.
+       Remove `register' indications.
+       Add plenty of `static'.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (prepare): Drop the muscle `ntbase' which
+       duplicates ntokens.
+       * src/bison.simple: Formatting/comment changes.
+       Use YYNTOKENS only, which is documented, but not YYNTBASE, which
+       is an undocumented synonym.
+
+2001-12-22  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_table_data): Change the prototype to use
+       `int' for array ranges: some invocations do pass an int, not a
+       short.
+       Reported by Wayne Green.
+
+2001-12-22  Akim Demaille  <akim@epita.fr>
+
+       Some actions of web2c.y are improperly triggered.
+       Reported by Mike Castle.
+
+       * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
+       * tests/regression.at (Web2c): Rename as...
+       (Web2c Report): this.
+       (Web2c Actions): New.
+
+2001-12-22  Akim Demaille  <akim@epita.fr>
+
+       Reductions in web2c.y are improperly reported.
+       Reported by Mike Castle.
+
+       * src/conflicts.c (print_reductions): Fix.
+       * tests/regression.at (Web2c): New.
+
+2001-12-18  Akim Demaille  <akim@epita.fr>
+
+       Some host fail on `assert (!"foo")', which expands to
+       ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
+       Reported by Nelson Beebee.
+
+       * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
+       `#define it_succeeded 0' and `assert (it_succeeded)'.
+
+2001-12-17  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple: Don't hard code the skeleton line and filename.
+       * src/output.c (output_parser): Rename 'line' as 'output_line'.
+       New line counter 'skeleton_line' (skeleton-line muscle).
+
+2001-12-17  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
+       YYDEBUG must be defined to a nonzero value.
+
+       * src/bison.simple (yytname): Do not assume that the user defines
+       YYDEBUG to a properly parenthesized expression.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (state_t): Rename lookaheads as lookaheadsp.
+       nlookaheads is a new member.
+       Adjust all users.
+       * src/lalr.h (nlookaheads): Remove this orphan declaration.
+       * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
+       state.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/files.h, src/files.c (open_files, close_files): Remove.
+       * src/main.c (main): Don't open/close files, nor invoke lex_free,
+       let...
+       * src/reader.c (reader): Do it.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (print_reductions): Formatting changes.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (flush_shift): Also adjust lookaheadset.
+       (flush_reduce): New.
+       (resolve_sr_conflict): Adjust.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_obstack): Be static and rename as...
+       (format_obstack): this, to avoid any confusion with files.c's
+       output_obstack.
+       * src/reader.h (muscle_obstack): Move to...
+       * src/output.h: here, since it's defined in output.c.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (action_row, save_column, default_goto)
+       (sort_actions, matching_state, pack_vector): Better variable
+       locality.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c: Various formatting changes.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c (output_files): Free the output_obstack.
+       * src/main.c (main): Call print and print_graph conditionally.
+       * src/print.c (print): Work unconditionally.
+       * src/print_graph.c (print_graph): Work unconditionally.
+       * src/conflicts.c (log_resolution): Output only if verbose_flag.
+
+2001-12-16  Marc Autret  <autret_m@epita.fr>
+
+       * src/output.c (actions_output): Fix. When we use %no-lines,
+       there is one less line per action.
+
+2001-12-16  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple: Remove a useless #line directive.
+       s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
+       * src/output.c (get_lines_number): New.
+       (output_parser): Adjust, now takes care about the lines of a
+       output muscles.
+       Fix line numbering.
+       (actions_output): Computes the number of lines taken by actions.
+       (output_master_parser): Insert new skeleton which is the name of
+       the output parser file name.
+
+2001-12-15  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
+
+2001-12-15  Marc Autret  <autret_m@epita.fr>
+
+       * src/output.c (output_gram): Keep track of the hairy one.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       Make `make distcheck' work.
+
+       * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
+       system.h which uses libgettext.h.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/nullable.c (set_nullable): Useless rules must be skipped,
+       otherwise, since we range over their symbols, we might look at a
+       nonterminal which no longer ``exists'', i.e., it is not counted in
+       `nvars', hence we overflow our arrays.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       The header can also be produced directly, without any obstack!
+       Yahoo!
+
+       * src/files.c, src/files.h (defines_obstack): Remove.
+       (compute_header_macro): Global.
+       (defines_obstack_save): Remove.
+       * src/reader.c (parse_union_decl): No longer output to
+       defines_obstack: its content can be found in the `stype' muscle
+       anyway.
+       (output_token_translations): Merge into...
+       (symbols_output): this.
+       Rename as...
+       (symbols_save): this.
+       (reader): Adjust.
+       * src/output.c (header_output): New.
+       (output): Call it.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (parse_union_decl): Instead of handling two obstack
+       simultaneously, use one to define the `stype' muscle, and use the
+       value of the latter to fill defines_obstack.
+       (copy_comment): Remove.
+       (copy_comment2): Work for a single obstack.
+       Rename as...
+       (copy_comment): this.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c, src/lex.h (xgetc): No longer static.
+       * src/reader.c (parse_union_decl): Revamp.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       Still making progress in separating Bison into (i) input, (ii)
+       process, (iii) output: now we can directly output the parser file
+       without using table_obstack at all.
+
+       * src/files.c, src/files.h (table_obstack): Bye bye.
+       (parser_file_name): New.
+       * src/files.c (compute_output_file_names): Compute it.
+       * src/output.c (actions_output, output_parser)
+       (output_master_parser): To a file instead of an obstack.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       Attach actions to rules, instead of pre-outputting them to
+       actions_obstack.
+
+       * src/gram.h (rule_t): action and action_line are new members.
+       * src/reader.c (symbol_list): Likewise.
+       (copy_action): Save the actions within the rule.
+       (packgram): Save them in rule_table.
+       * src/output.c (actions_output): New.
+       (output_parser): Use it on `%%actions'.
+       (output_rule_data): Don't free rule_table.
+       (output): Do it.
+       (prepare): Don't save the `action' muscle.
+       * src/bison.simple: s/%%action/%%actions/.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (copy_action): When --yacc, don't append a `;'
+       to the user action: let it fail if lacking.
+       Suggested by Arnold Robbins and Tom Tromey.
+
+2001-12-14  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c (literalchar): Simply return the char you decoded, non
+       longer mess around with obstacks and int pointers.
+       Adjust all callers.
+
+2001-12-14  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c (literalchar): Don't escape the special characters,
+       just decode them, and keep them as char (before, eol was output as
+       the 2 char string `\n' etc.).
+       * src/output.c (output_rule_data): Use quotearg to output the
+       token strings.
+
+2001-12-13  Paul Eggert  <eggert@twinsun.com>
+
+       * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
+       Do not infringe on the global user namespace when using C++.
+       (YYFPRINTF, YYSTDERR): New macros, needed for the above.
+       All uses of `fprintf' and `stderr' changed.
+
+       * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       The computation of nullable is broken: it doesn't handle empty
+       RHS's properly.
+
+       * tests/torture.at (GNU AWK Grammar): New.
+       * tests/sets.at (Nullable): New.
+       * src/nullable.c (set_nullable): Instead of blindly looping over
+       `ritems', loop over the rules, and then over their rhs's.
+
+       Work around Autotest bugs.
+
+       * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
+       frame, because Autotest understand lines starting with a `+' as
+       traces from the shell.  Then, they are not processed properly.
+       Admittedly an Autotest bug, but we don't have time to wait for
+       Autotest to catch up.
+       * tests/regression.at (Broken Closure): Adjust to the new table
+       frames.
+       Move to...
+       * tests/sets.at: here.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (closure): Use nrules instead of playing tricks
+       with BITS_PER_WORD.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c (print_actions): Output the handling of `$' as the
+       traces do: shifting the token EOF.  Before EOF was treated as a
+       nonterminal.
+       * tests/regression.at: Adjust some tests.
+       * src/print_graph.c (print_core): Complete the set of items via
+       closure.  The next-to-final and final states are still unsatisfying,
+       but that's to be addressed elsewhere.
+       No longer output the rule numbers, but do output the state number.
+       A single loop for the shifts + gotos is enough, but picked a
+       distinct color for each.
+       (print_graph): Initialize and finalize closure.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Remove dead code, an strip useless
+       braces.
+       (get_type): Remove, unused.
+
+2001-12-12  Akim Demaille  <akim@epita.fr>
+
+       * src/complain.h, src/complain.c: Remove error_one_per_line, rely
+       on that of lib/error.c.
+
+2001-12-12  Akim Demaille  <akim@epita.fr>
+
+       Some hosts don't like `/' in includes.
+
+       * src/system.h: Include libgettext.h without qualifying the path.
+       * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
+       $(top_srcdir).
+
+2001-12-11  Marc Autret  <autret_m@epita.fr>
+
+       * src/output.c (output_parser): Remove useless muscle.
+
+2001-12-11  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple: Remove #line just before %%epilogue. It
+       is now handled in ...
+       * src/reader.c (read_additionnal_code): Add the output of a
+       #line for the epilogue.
+
+2001-12-10  Marc Autret  <autret_m@epita.fr>
+
+       * src/reader.c (copy_definition): Re-use CPP-outed code which
+       replace precedent remove.
+       * src/bison.simple: Remove #line before %%prologue because
+       %%input-line is wrong at this time.
+
+2001-12-10  Marc Autret  <autret_m@epita.fr>
+
+       * src/reader.c (symbols_output): Clean up.
+       * src/output.c (output_gram, output): Clean up.
+
+2001-12-10  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (initialize_lookaheads): New.  Extracted from...
+       * src/LR0.c (set_state_table): here.
+       * src/lalr.c (lalr): Call it.
+
+2001-12-10  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (shifts): Remove the `number' member: shifts are
+       attached to state, hence no longer need to be labelled with a
+       state number.
+
+2001-12-10  Akim Demaille  <akim@epita.fr>
+
+       Now that states have a complete set of members, the linked list of
+       shifts is useless: just fill directly the state's shifts member.
+
+       * src/state.h (shifts): Remove the `next' member.
+       * src/LR0.c (first_state, last_state): Remove.
+       Adjust the callers.
+       (augment_automaton): Don't look for the shifts that must be added
+       a shift on EOF: it is those of the state we looked for!  But now,
+       since shifts are attached, it is no longer needed to looking
+       merely by its id: its number.
+
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Better variable locality.
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Better variable locality.
@@ -5,7 +795,6 @@
        the start symbol being shifted, then there is shift for the start
        symbol from the initial state.
 
        the start symbol being shifted, then there is shift for the start
        symbol from the initial state.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
        invoked.
        * tests/regression.at (Rule Line Numbers): Adjust.
 
        invoked.
        * tests/regression.at (Rule Line Numbers): Adjust.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Now that all states have shifts,
        merge the two cases addition shifts to the initial state.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Now that all states have shifts,
        merge the two cases addition shifts to the initial state.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/lalr.c (set_state_table): Move to...
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/lalr.c (set_state_table): Move to...
        * src/LR0.c (generate_states): do it.
        * src/LR0.h (first_state): Remove, only the table is used.
 
        * src/LR0.c (generate_states): do it.
        * src/LR0.h (first_state): Remove, only the table is used.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.h (first_shift, first_reduction): Remove.
        * src/lalr.c: Don't use first_shift: find shifts through the
        states.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.h (first_shift, first_reduction): Remove.
        * src/lalr.c: Don't use first_shift: find shifts through the
        states.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c: Attach shifts to states as soon as they are
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c: Attach shifts to states as soon as they are
        * src/lalr.c (set_state_table): Instead of assigning shifts to
        state, just assert that the mapping was properly done.
 
        * src/lalr.c (set_state_table): Instead of assigning shifts to
        state, just assert that the mapping was properly done.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (insert_start_shift): Rename as...
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (insert_start_shift): Rename as...
        * src/reader.c (symbols_output): Likewise.
        * src/vmsgetargs.c: Vaguely adjust, but who cares?
 
        * src/reader.c (symbols_output): Likewise.
        * src/vmsgetargs.c: Vaguely adjust, but who cares?
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/muscle_tab.c (muscle_init): NULL is a better default than
        `"0"'.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/muscle_tab.c (muscle_init): NULL is a better default than
        `"0"'.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/reader.c (reader): Calling symbols_output once is enough.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/reader.c (reader): Calling symbols_output once is enough.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Now that states have a complete set of members, the linked list of
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Now that states have a complete set of members, the linked list of
        the reductions, then the states: free all the states and their
        members.
 
        the reductions, then the states: free all the states and their
        members.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/options.c (OPTN, DRTV, BOTH): New.
        (option_table): Use them.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/options.c (OPTN, DRTV, BOTH): New.
        (option_table): Use them.
 
-       
        * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
        the job of system.h.
        * src/options.c: Don't include stdio.h and xalloc.h for the same
        reasons.
 
        * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
        the job of system.h.
        * src/options.c: Don't include stdio.h and xalloc.h for the same
        reasons.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/output.c (output, prepare): Make sure the values of the
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/output.c (output, prepare): Make sure the values of the
        * m4/m4.m4: Remove.
        * tests/Makefile.am: Adjust.
 
        * m4/m4.m4: Remove.
        * tests/Makefile.am: Adjust.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        One structure for states is enough, even though theoretically
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        One structure for states is enough, even though theoretically
        * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
        * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
 
        * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
        * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Bison dumps core on bash.y.
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Bison dumps core on bash.y.
        * src/files.h (graph_obstack): New extern declaration.
        * src/Makefile.am: Add new source files.
 
        * src/files.h (graph_obstack): New extern declaration.
        * src/Makefile.am: Add new source files.
 
-2001-08-06  Marc Autret   <autret_m@epita.fr>
+2001-08-06  Marc Autret  <autret_m@epita.fr>
 
        * src/print_graph.c, src/print_graph.h (graph): New.
        * src/vcg.h: New file.
 
        * src/print_graph.c, src/print_graph.h (graph): New.
        * src/vcg.h: New file.