platform/upstream/bison.git
22 years ago* src/output.c (header_output): Don't forget to export YYLTYPE and
Akim Demaille [Sat, 29 Dec 2001 14:26:49 +0000 (14:26 +0000)]
* src/output.c (header_output): Don't forget to export YYLTYPE and
yylloc.
* tests/headers.at (export YYLTYPE): New, make sure it does.
* tests/regression.at (%union and --defines, Invalid CPP headers):
Move to...
* tests/headers.at: here.

22 years ago* src/gram.h (rule_s): Member `assoc' is of type `associativity'.
Akim Demaille [Sat, 29 Dec 2001 14:26:21 +0000 (14:26 +0000)]
* src/gram.h (rule_s): Member `assoc' is of type `associativity'.

22 years ago* tests/actions.at (Mid-rule actions): Output on a single line
Akim Demaille [Sat, 29 Dec 2001 14:25:58 +0000 (14:25 +0000)]
* tests/actions.at (Mid-rule actions): Output on a single line
instead of several.

22 years ago* doc/bison.texinfo: Formatting changes.
Akim Demaille [Sat, 29 Dec 2001 14:25:45 +0000 (14:25 +0000)]
* doc/bison.texinfo: Formatting changes.

22 years agoDon't store the token defs in a muscle, just be ready to output it
Akim Demaille [Sat, 29 Dec 2001 14:25:27 +0000 (14:25 +0000)]
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.

22 years ago* src/bison.simple: Do not provide a default for YYSTYPE and
Akim Demaille [Sat, 29 Dec 2001 14:25:08 +0000 (14:25 +0000)]
* src/bison.simple: Do not provide a default for YYSTYPE and
YYLTYPE before the user's prologue.  Otherwise it's hardly... a
default.

22 years agoMid-rule actions are simply... ignored!
Akim Demaille [Sat, 29 Dec 2001 14:24:51 +0000 (14:24 +0000)]
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.

22 years agoMemory leak.
Akim Demaille [Sat, 29 Dec 2001 14:24:35 +0000 (14:24 +0000)]
Memory leak.
* src/reader.c (reader): Free grammar.

22 years agoMemory leak.
Akim Demaille [Sat, 29 Dec 2001 14:21:23 +0000 (14:21 +0000)]
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.

22 years ago* src/options.h, src/options.c (create_long_option_table): Rename
Akim Demaille [Sat, 29 Dec 2001 14:21:06 +0000 (14:21 +0000)]
* 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.

22 years ago* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
Akim Demaille [Sat, 29 Dec 2001 14:20:47 +0000 (14:20 +0000)]
* 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.

22 years ago* src/lalr.c (build_relations): Rename `states' as `states1'.
Akim Demaille [Sat, 29 Dec 2001 14:20:27 +0000 (14:20 +0000)]
* src/lalr.c (build_relations): Rename `states' as `states1'.
Sorry, I don't understand exactly what it is, no better name...

22 years ago* src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
Akim Demaille [Sat, 29 Dec 2001 14:20:13 +0000 (14:20 +0000)]
* 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.

22 years ago* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
Akim Demaille [Sat, 29 Dec 2001 14:19:46 +0000 (14:19 +0000)]
* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
ago.

22 years ago* src/reader.c, src/reader.h (user_toknums): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:19:31 +0000 (14:19 +0000)]
* src/reader.c, src/reader.h (user_toknums): Remove.
Adjust all users to use symbols[i]->user_token_number.

22 years ago* src/gram.c, src/gram.h (sprec, sassoc): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:19:13 +0000 (14:19 +0000)]
* src/gram.c, src/gram.h (sprec, sassoc): Remove.
Adjust all users to use symbols[i]->prec or ->assoc.

22 years ago* src/reader.c, src/reader.h (tags): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:18:52 +0000 (14:18 +0000)]
* src/reader.c, src/reader.h (tags): Remove.
Adjust all users to use symbols[i]->tag.

22 years ago* src/gram.h, src/gram.c (symbols): New, similar to state_table
Akim Demaille [Sat, 29 Dec 2001 14:18:32 +0000 (14:18 +0000)]
* 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].

22 years ago* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
Akim Demaille [Sat, 29 Dec 2001 14:18:08 +0000 (14:18 +0000)]
* 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.

22 years ago* tests/regression.at (Web2c Actions): Blindly move the actual
Akim Demaille [Sat, 29 Dec 2001 14:17:56 +0000 (14:17 +0000)]
* 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).

22 years ago* src/reader.c (readgram): Don't add the rule 0 if there were no
Akim Demaille [Sat, 29 Dec 2001 14:17:43 +0000 (14:17 +0000)]
* 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.

22 years ago* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
Akim Demaille [Sat, 29 Dec 2001 14:17:29 +0000 (14:17 +0000)]
* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
visible, and some states have now a different number.

22 years ago* src/reader.c (readgram): Bind the initial rule's lineno to that
Akim Demaille [Sat, 29 Dec 2001 14:17:18 +0000 (14:17 +0000)]
* 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.

22 years agoFix the `GAWK Grammar' failure.
Akim Demaille [Sat, 29 Dec 2001 14:16:59 +0000 (14:16 +0000)]
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.

22 years ago* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
Akim Demaille [Sat, 29 Dec 2001 14:16:46 +0000 (14:16 +0000)]
* 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.

22 years ago* src/lalr.c (lookaheads_print): New.
Akim Demaille [Sat, 29 Dec 2001 14:16:16 +0000 (14:16 +0000)]
* src/lalr.c (lookaheads_print): New.
(lalr): Call it when --trace-flag.
* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
are dumped.

22 years ago* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
Akim Demaille [Sat, 29 Dec 2001 14:15:33 +0000 (14:15 +0000)]
* 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.

22 years ago* src/LR0.c (generate_states): Use nritems, not nitems, nor using
Akim Demaille [Sat, 29 Dec 2001 14:15:12 +0000 (14:15 +0000)]
* 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.

22 years ago* src/output.c: Comment changes.
Akim Demaille [Sat, 29 Dec 2001 14:14:32 +0000 (14:14 +0000)]
* src/output.c: Comment changes.

22 years ago* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
Akim Demaille [Thu, 27 Dec 2001 18:36:53 +0000 (18:36 +0000)]
* 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.

22 years agoChangeLog fixes, and PO regen.
Akim Demaille [Thu, 27 Dec 2001 18:26:20 +0000 (18:26 +0000)]
ChangeLog fixes, and PO regen.

22 years ago* src/output.c (output_gram): Rely on nritems, not the
Akim Demaille [Thu, 27 Dec 2001 18:17:39 +0000 (18:17 +0000)]
* 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.

22 years ago* tests/regression.at (Unresolved SR Conflicts):
Akim Demaille [Thu, 27 Dec 2001 18:13:59 +0000 (18:13 +0000)]
* tests/regression.at (Unresolved SR Conflicts):
(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
below.
* 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.
* tests/regression.at: Partly catch up.

22 years ago* src/LR0.c (new_state): Recognize the final state by the fact it
Akim Demaille [Thu, 27 Dec 2001 18:13:47 +0000 (18:13 +0000)]
* 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.

22 years agoTry to make the use of the eoftoken valid. Given that its value
Akim Demaille [Thu, 27 Dec 2001 18:13:31 +0000 (18:13 +0000)]
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.

22 years ago* src/main.c (main): If there are complains after grammar
Akim Demaille [Thu, 27 Dec 2001 18:13:09 +0000 (18:13 +0000)]
* 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.

22 years ago* configure.in: Check the protos of strchr ans strspn.
Akim Demaille [Thu, 27 Dec 2001 18:12:48 +0000 (18:12 +0000)]
* 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.

22 years ago* src/print.c, src/print_graph.c (escape): New.
Akim Demaille [Thu, 27 Dec 2001 18:11:20 +0000 (18:11 +0000)]
* 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.

22 years ago* src/state.h, src/state.c (reductions_new): New.
Akim Demaille [Thu, 27 Dec 2001 18:11:06 +0000 (18:11 +0000)]
* 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.

22 years ago* src/state.h, src/state.c (errs_new, errs_dup): New.
Akim Demaille [Thu, 27 Dec 2001 18:10:48 +0000 (18:10 +0000)]
* 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.

22 years ago* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
Akim Demaille [Thu, 27 Dec 2001 18:10:30 +0000 (18:10 +0000)]
* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.

22 years ago* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
Akim Demaille [Thu, 27 Dec 2001 18:10:16 +0000 (18:10 +0000)]
* 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.

22 years ago* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
Akim Demaille [Thu, 27 Dec 2001 18:07:31 +0000 (18:07 +0000)]
* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
`$n' and `@n'.

22 years ago* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
Akim Demaille [Thu, 27 Dec 2001 18:07:17 +0000 (18:07 +0000)]
* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
(build_relations): Adjust.

22 years ago* src/lalr.c (set_goto_map): Remove a wrong but benign loop
Akim Demaille [Thu, 27 Dec 2001 18:07:05 +0000 (18:07 +0000)]
* src/lalr.c (set_goto_map): Remove a wrong but benign loop
duplication.

22 years ago* src/reader.c (packgram): Catch nitems overflows.
Akim Demaille [Thu, 27 Dec 2001 18:06:41 +0000 (18:06 +0000)]
* src/reader.c (packgram): Catch nitems overflows.

22 years ago* src/files.c, src/files.h (guard_obstack): Remove.
Akim Demaille [Thu, 27 Dec 2001 18:06:24 +0000 (18:06 +0000)]
* 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.

22 years ago* src/gram.h (rule_t): `guard' and `guard_line' are new members.
Akim Demaille [Thu, 27 Dec 2001 18:06:06 +0000 (18:06 +0000)]
* 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.

22 years ago* src/reader.c (symbol_list_new): Be sure to initialize all the
Akim Demaille [Thu, 27 Dec 2001 18:05:42 +0000 (18:05 +0000)]
* src/reader.c (symbol_list_new): Be sure to initialize all the
fields.

22 years agoAll the hacks using a final pseudo state are now useless.
Akim Demaille [Thu, 27 Dec 2001 18:05:30 +0000 (18:05 +0000)]
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).

22 years ago* src/output.c (action_row, token_actions): Use a state_t instead
Akim Demaille [Thu, 27 Dec 2001 18:05:18 +0000 (18:05 +0000)]
* src/output.c (action_row, token_actions): Use a state_t instead
of a integer, and nlookaheads instead of the following state's
lookaheadsp.

22 years ago* src/conflicts.c (log_resolution, flush_shift)
Akim Demaille [Thu, 27 Dec 2001 18:05:05 +0000 (18:05 +0000)]
* 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.

22 years ago* src/bison.hairy: Formatting/comment changes.
Akim Demaille [Thu, 27 Dec 2001 18:04:43 +0000 (18:04 +0000)]
* src/bison.hairy: Formatting/comment changes.
ANSIfy.
Remove `register' indications.
Add plenty of `static'.

22 years ago* src/output.c (prepare): Drop the muscle `ntbase' which
Akim Demaille [Thu, 27 Dec 2001 18:04:28 +0000 (18:04 +0000)]
* 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.

22 years ago* src/output.c (output_table_data): Change the prototype to use
Akim Demaille [Sat, 22 Dec 2001 15:16:41 +0000 (15:16 +0000)]
* 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.

22 years agoSome actions of web2c.y are improperly triggered.
Akim Demaille [Sat, 22 Dec 2001 14:58:53 +0000 (14:58 +0000)]
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.

22 years agoReductions in web2c.y are improperly reported.
Akim Demaille [Sat, 22 Dec 2001 14:42:36 +0000 (14:42 +0000)]
Reductions in web2c.y are improperly reported.
Reported by Mike Castle.
* src/conflicts.c (print_reductions): Fix.
* tests/regression.at (Web2c): New.

22 years agoTypo.
Akim Demaille [Tue, 18 Dec 2001 09:59:24 +0000 (09:59 +0000)]
Typo.

22 years agoSome host fail on `assert (!"foo")', which expands to
Akim Demaille [Tue, 18 Dec 2001 09:33:44 +0000 (09:33 +0000)]
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)'.

22 years ago* src/bison.simple: Don't hard code the skeleton line and filename.
Marc Autret [Mon, 17 Dec 2001 20:28:51 +0000 (20:28 +0000)]
* 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).

22 years ago* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
Paul Eggert [Mon, 17 Dec 2001 19:43:46 +0000 (19:43 +0000)]
* 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.

22 years agoDocument that YYDEBUG must be defined to a nonzero value.
Paul Eggert [Mon, 17 Dec 2001 19:43:23 +0000 (19:43 +0000)]
Document that YYDEBUG must be defined to a nonzero value.

22 years ago(yytname): Do not assume that the user defines YYDEBUG to a properly
Paul Eggert [Mon, 17 Dec 2001 19:41:46 +0000 (19:41 +0000)]
(yytname): Do not assume that the user defines YYDEBUG to a properly
parenthesized expression.

22 years agoRegen.
Akim Demaille [Mon, 17 Dec 2001 17:33:59 +0000 (17:33 +0000)]
Regen.

22 years ago* src/state.h (state_t): Rename lookaheads as lookaheadsp.
Akim Demaille [Mon, 17 Dec 2001 17:32:59 +0000 (17:32 +0000)]
* 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.

22 years ago* src/files.h, src/files.c (open_files, close_files): Remove.
Akim Demaille [Mon, 17 Dec 2001 17:32:39 +0000 (17:32 +0000)]
* 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.

22 years ago* src/conflicts.c (print_reductions): Formatting changes.
Akim Demaille [Mon, 17 Dec 2001 17:32:20 +0000 (17:32 +0000)]
* src/conflicts.c (print_reductions): Formatting changes.

22 years ago* src/conflicts.c (flush_shift): Also adjust lookaheadset.
Akim Demaille [Mon, 17 Dec 2001 17:32:08 +0000 (17:32 +0000)]
* src/conflicts.c (flush_shift): Also adjust lookaheadset.
(flush_reduce): New.
(resolve_sr_conflict): Adjust.

22 years ago* src/output.c (output_obstack): Be static and rename as...
Akim Demaille [Mon, 17 Dec 2001 17:31:56 +0000 (17:31 +0000)]
* 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.

22 years ago* src/output.c (action_row, save_column, default_goto)
Akim Demaille [Mon, 17 Dec 2001 17:31:37 +0000 (17:31 +0000)]
* src/output.c (action_row, save_column, default_goto)
(sort_actions, matching_state, pack_vector): Better variable
locality.

22 years ago* src/output.c: Various formatting changes.
Akim Demaille [Mon, 17 Dec 2001 17:31:24 +0000 (17:31 +0000)]
* src/output.c: Various formatting changes.

22 years ago* src/files.c (output_files): Free the output_obstack.
Akim Demaille [Mon, 17 Dec 2001 17:31:10 +0000 (17:31 +0000)]
* 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.

22 years agoRegen.
Akim Demaille [Mon, 17 Dec 2001 17:30:47 +0000 (17:30 +0000)]
Regen.

22 years ago* src/output.c (actions_output): Fix. When we use %no-lines,
Marc Autret [Sun, 16 Dec 2001 01:45:19 +0000 (01:45 +0000)]
* src/output.c (actions_output): Fix. When we use %no-lines,
there is one less line per action.

22 years ago* src/bison.simple: Remove a useless #line directive.
Marc Autret [Sun, 16 Dec 2001 01:26:25 +0000 (01:26 +0000)]
* 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.

22 years ago* src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
Marc Autret [Sat, 15 Dec 2001 18:38:57 +0000 (18:38 +0000)]
* src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.

22 years agoUpdate.
Marc Autret [Sat, 15 Dec 2001 17:58:58 +0000 (17:58 +0000)]
Update.

22 years ago* src/output.c (output_gram): Keep track of the hairy one.
Marc Autret [Sat, 15 Dec 2001 17:34:37 +0000 (17:34 +0000)]
* src/output.c (output_gram): Keep track of the hairy one.

22 years agoRegen.
Akim Demaille [Sat, 15 Dec 2001 17:11:49 +0000 (17:11 +0000)]
Regen.

22 years agoFix INCLUDES.
Akim Demaille [Sat, 15 Dec 2001 16:35:48 +0000 (16:35 +0000)]
Fix INCLUDES.

22 years agoMake `make distcheck' work.
Akim Demaille [Sat, 15 Dec 2001 16:31:04 +0000 (16:31 +0000)]
Make `make distcheck' work.
* lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
system.h which uses libgettext.h.

22 years agoregen.
Akim Demaille [Sat, 15 Dec 2001 16:29:52 +0000 (16:29 +0000)]
regen.

22 years ago* src/nullable.c (set_nullable): Useless rules must be skipped,
Akim Demaille [Sat, 15 Dec 2001 16:21:44 +0000 (16:21 +0000)]
* 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.

22 years agoThe header can also be produced directly, without any obstack!
Akim Demaille [Sat, 15 Dec 2001 16:06:50 +0000 (16:06 +0000)]
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.

22 years ago* src/reader.c (parse_union_decl): Instead of handling two obstack
Akim Demaille [Sat, 15 Dec 2001 15:25:15 +0000 (15:25 +0000)]
* 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.

22 years ago* src/lex.c, src/lex.h (xgetc): No longer static.
Akim Demaille [Sat, 15 Dec 2001 15:13:36 +0000 (15:13 +0000)]
* src/lex.c, src/lex.h (xgetc): No longer static.
* src/reader.c (parse_union_decl): Revamp.

22 years agoStill making progress in separating Bison into (i) input, (ii)
Akim Demaille [Sat, 15 Dec 2001 14:35:57 +0000 (14:35 +0000)]
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.

22 years agoAttach actions to rules, instead of pre-outputting them to
Akim Demaille [Sat, 15 Dec 2001 14:14:30 +0000 (14:14 +0000)]
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/.

22 years ago* src/reader.c (copy_action): When --yacc, don't append a `;'
Akim Demaille [Sat, 15 Dec 2001 11:09:05 +0000 (11:09 +0000)]
* src/reader.c (copy_action): When --yacc, don't append a `;'
to the user action: let it fail if lacking.
Suggested by Aharon Robbins and Tom Tromey.

22 years agoRegen.
Akim Demaille [Sat, 15 Dec 2001 11:08:37 +0000 (11:08 +0000)]
Regen.

22 years ago* src/lex.c (literalchar): Simply return the char you decoded, non
Akim Demaille [Fri, 14 Dec 2001 16:03:28 +0000 (16:03 +0000)]
* src/lex.c (literalchar): Simply return the char you decoded, non
longer mess around with obstacks and int pointers.
Adjust all callers.

22 years ago* src/lex.c (literalchar): Don't escape the special characters,
Akim Demaille [Fri, 14 Dec 2001 15:39:05 +0000 (15:39 +0000)]
* 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.

22 years ago* src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Paul Eggert [Fri, 14 Dec 2001 01:54:30 +0000 (01:54 +0000)]
* 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.

22 years ago(const): Do not define; that is now config.h's job.
Paul Eggert [Fri, 14 Dec 2001 01:52:50 +0000 (01:52 +0000)]
(const): Do not define; that is now config.h's job.
(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.

22 years agoDocument YYFPRINTF, YYSTDERR.
Paul Eggert [Fri, 14 Dec 2001 01:51:33 +0000 (01:51 +0000)]
Document YYFPRINTF, YYSTDERR.

22 years agoThe computation of nullable is broken: it doesn't handle empty
Akim Demaille [Thu, 13 Dec 2001 11:02:21 +0000 (11:02 +0000)]
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.

22 years ago* src/closure.c (closure): Use nrules instead of playing tricks
Akim Demaille [Thu, 13 Dec 2001 11:02:04 +0000 (11:02 +0000)]
* src/closure.c (closure): Use nrules instead of playing tricks
with BITS_PER_WORD.

22 years ago* src/print.c (print_actions): Output the handling of `$' as the
Akim Demaille [Thu, 13 Dec 2001 11:01:51 +0000 (11:01 +0000)]
* 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.

22 years ago* src/reader.c (readgram): Remove dead code, an strip useless
Akim Demaille [Thu, 13 Dec 2001 11:01:36 +0000 (11:01 +0000)]
* src/reader.c (readgram): Remove dead code, an strip useless
braces.
(get_type): Remove, unused.

22 years ago* src/complain.h, src/complain.c: Remove error_one_per_line, rely
Akim Demaille [Wed, 12 Dec 2001 15:22:46 +0000 (15:22 +0000)]
* src/complain.h, src/complain.c: Remove error_one_per_line, rely
on that of lib/error.c.