Commit Graph

103 Commits

Author SHA1 Message Date
Paul Eggert
69363a9e4d * NEWS: %expect-violations are now just warnings, reverting
to Bison 1.30 and 1.75 behavior.  This fixes the GCC 3.2
bootstrapping problem reported by Matthias Klose; see
<http://mail.gnu.org/archive/html/bug-bison/2003-01/msg00053.html>.
* src/conflicts.c (conflicts_print): Likewise.
* tests/conflicts.at (%expect not enough, %expect too much,
%expect with reduce conflicts): Likewise.
* doc/bison.texinfo (Expect Decl): Document this.  Also mention
that the warning is enabled if the number of conflicts changes
(not necessarily increases).
2003-01-13 06:41:29 +00:00
Paul Eggert
be7280480c (conflict_report):
Renamed from conflict_report_yacc, removing the old
'conflict_report'.  Translate the entire conflict report at once,
so that we don't assume that "," has the same interpretation in
all languages.
(conflicts_output): Use Yacc-style conflict report for each state,
instead of our more-complicated style.
(conflicts_print): Use Yacc-style conflict report, except print
the input file name when not emulating Yacc.
2002-12-29 01:58:49 +00:00
Paul Eggert
76be9271f2 (conflicts_print): If the user specifies "%expect N", report an error
if there are any reduce/reduce conflicts.  This is what the manual
says should happen.  This fixes Debian bug 130890, reported by Anthony
DeRobertis.
2002-12-26 22:10:52 +00:00
Paul Eggert
6c5f863aec Undo XFREE change; we assume C89 compiler, but not C89 library. 2002-12-13 08:20:30 +00:00
Paul Eggert
1dd15b6ea6 All uses of XCALLOC, XMALLOC, and XREALLOC changed to use new macros
CALLOC, MALLOC, REALLOC.  All uses of XFREE changed to free.
2002-12-13 04:45:45 +00:00
Paul Eggert
f041e30b91 (enum conflict_resolution): Renamed from enum conflict_resolution_e. 2002-12-11 06:25:26 +00:00
Paul Eggert
b9a0104860 (resolve_sr_conflict): Use abort rather than assert. 2002-11-21 05:16:36 +00:00
Paul Eggert
6e649e659e * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo,
src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h,
tests/action.at, tests/calc.at, tests/conflicts.at,
tests/cxx-type.at, tests/regression.at:
"parse error" -> "syntax error" for POSIX compatibility.
"parsing stack overflow..." -> "parser stack overflow" so
that code matches Bison documentation.
2002-11-15 20:32:21 +00:00
Paul Eggert
8307162d58 Use C99-style bool instead of our own style. 2002-10-22 04:46:28 +00:00
Akim Demaille
c8f002c7d3 * src/conflicts.c (conflicts_output): Don't output rules never
reduced here, since anyway that computation doesn't work.
* src/gram.h, src/gram.h (rule_filter_t, rule_useful_p)
(rule_useless_p, rule_never_reduced_p): New.
(grammar_rules_partial_print): Use a filter instead of a range.
Display the title only if needed.
(grammar_rules_print): Adjust.
(grammar_rules_never_reduced_report): New.
* src/tables.c (action_row): Move the computation of rules never
reduced to...
(token_actions): here.
* src/main.c (main): Make the parser before making the report, so
that rules never reduced are computed.
Call grammar_rules_never_reduced_report.
* src/print.c (print_results): Report rules never reduced.
* tests/conflicts.at, tests/reduce.at: Adjust.
2002-08-02 08:05:01 +00:00
Akim Demaille
cd08e51eda Instead of attaching lookaheads and duplicating the rules being
reduced by a state, attach the lookaheads to the reductions.
* src/state.h (state_t): Remove the `lookaheads',
`lookaheads_rule' member.
(reductions_t): Add a `lookaheads' member.
Use a regular array for the `rules'.
* src/state.c (reductions_new): Initialize the lookaheads member
to 0.
(state_rule_lookaheads_print): Adjust.
* src/state.h, src/state.c (state_reductions_find): New.
* src/conflicts.c (resolve_sr_conflict, set_conflicts)
(count_rr_conflicts): Adjust.
* src/lalr.c (LArule): Remove.
(add_lookback_edge): Adjust.
(state_lookaheads_count): New.
(states_lookaheads_initialize): Merge into...
(initialize_LA): this.
(lalr_free): Adjust.
* src/main.c (main): Don't free nullable and derives too early: it
is used by --verbose.
* src/print.c, src/print_graph.c, src/tables.c: Adjust.
2002-08-01 18:14:30 +00:00
Akim Demaille
52489d4445 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 11:09:59 +00:00
Akim Demaille
640748eecf * 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 17:31:46 +00:00
Akim Demaille
4b3d3a8e46 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 21:21:02 +00:00
Akim Demaille
8b752b00fd 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-03 06:51:43 +00:00
Akim Demaille
d257636504 * 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 17:34:31 +00:00
Akim Demaille
ccaf65bc63 * 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 17:33:37 +00:00
Akim Demaille
8a731ca829 * 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 17:30:46 +00:00
Akim Demaille
32e1e0a486 * 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 17:30:29 +00:00
Akim Demaille
d57650a5ff * 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 17:27:34 +00:00
Akim Demaille
e0e5bf84b0 * 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.
(merger_output): static.
2002-06-28 08:41:45 +00:00
Paul Hilfinger
676385e29c Initial check-in introducing experimental GLR parsing. See entry in
ChangeLog dated 2002-06-27 from Paul Hilfinger for details.
2002-06-28 02:26:44 +00:00
Akim Demaille
9801d40c50 * 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 18:24:08 +00:00
Akim Demaille
c026349221 * 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 18:23:50 +00:00
Akim Demaille
e9955c8373 Have Bison grammars parsed by a Bison grammar.
* src/reader.c, src/reader.h (prologue_augment): New.
* src/reader.c (copy_definition): Remove.
* src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment)
(grammar_symbol_append, grammar_rule_begin, grammar_midrule_action)
(grammar_current_rule_prec_set, grammar_current_rule_check)
(grammar_current_rule_symbol_append)
(grammar_current_rule_action_append): Export.
* src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_
(symbol_list_action_append): Remove.
Hook the routines from reader.
* src/scan-gram.l: In INITIAL, characters and strings are tokens.
* src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now.
* src/reader.c (read_declarations): Remove, unused.
* src/parse-gram.y: Handle the epilogue.
* src/reader.h, src/reader.c (gram_start_symbol_set): Rename as...
(grammar_start_symbol_set): this.
* src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet.
* src/reader.c (readgram): Remove, unused.
(reader): Adjust to insert eoftoken and axiom where appropriate.
* src/reader.c (copy_dollar): Replace with...
* src/scan-gram.h (handle_dollar): this.
* src/parse-gram.y: Remove `%thong'.
* src/reader.c (copy_at): Replace with...
* src/scan-gram.h (handle_at): this.
* src/complain.h, src/complain.c (warn_at, complain_at, fatal_at):
New.
* src/scan-gram.l (YY_LINES): Keep lineno synchronized for the
time being.
* src/reader.h, src/reader.c (grammar_rule_end): New.
* src/parse.y (current_type, current_class): New.
Implement `%nterm', `%token' support.
Merge `%term' into `%token'.
(string_as_id): New.
* src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the
type name.
* src/parse-gram.y: Be sure to handle properly the beginning of
rules.
* src/parse-gram.y: Handle %type.
* src/reader.c (grammar_rule_end): Call grammar_current_rule_check.
* src/parse-gram.y: More directives support.
* src/options.c: No longer handle source directives.
* src/parse-gram.y: Fix %output.
* src/parse-gram.y: Handle %union.
Use the prologue locations.
* src/reader.c (parse_union_decl): Remove.
* src/reader.h, src/reader.c (epilogue_set): New.
* src/parse-gram.y: Use it.
* data/bison.simple, data/bison.c++: b4_stype is now either not
defined, then default to int, or to the contents of %union,
without `union' itself.
Adjust.
* src/muscle_tab.c (muscle_init): Don't predefine `stype'.
* src/output.c (actions_output): Don't output braces, as they are
already handled by the scanner.
* src/scan-gram.l (SC_CHARACTER): Set the user_token_number of
characters to themselves.
* tests/reduce.at (Reduced Automaton): End the grammars with %% so
that the epilogue has a proper #line.
* src/parse-gram.y: Handle precedence/associativity.
* src/symtab.c (symbol_precedence_set): Requires the symbol to be
a terminal.
* src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters.
* tests/calc.at: Do not use `%token "foo"' as it makes not sense
at all to define terminals that cannot be emitted.
* src/scan-gram.l: Escape M4 characters.
* src/scan-gram.l: Working properly with escapes in user
strings/characters.
* tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR)
(AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING'
grammar.
Use more modest sizes, as for the time being the parser does not
release memory, and therefore the process swallows a huge amount
of memory.
* tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the
stricter %token grammar.
* src/symtab.h (associativity): Add `undef_assoc'.
(symbol_precedence_set): Do nothing when passed an undef_assoc.
* src/symtab.c (symbol_check_alias_consistence): Adjust.
* tests/regression.at (Invalid %directive): Remove, as it is now
meaningless.
(Invalid inputs): Adjust to the new error messages.
(Token definitions): The new grammar doesn't allow too many
eccentricities.
* src/lex.h, src/lex.c: Remove.
* src/reader.c (lastprec, skip_to_char, read_signed_integer)
(copy_character, copy_string2, copy_string, copy_identifier)
(copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl)
(parse_muscle_decl, parse_dquoted_param, parse_skel_decl)
(parse_action): Remove.
* po/POTFILES.in: Adjust.
2002-06-11 20:16:05 +00:00
Akim Demaille
86eff18354 * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize
structs with non literals.
* src/scan-skel.l: never-interactive.
* src/conflicts.c (enum conflict_resolution_e): No trailing
comma.
* src/getargs.c (usage): Split long literal strings.
Reported by Hans Aberg.
2002-06-03 07:30:03 +00:00
Paul Hilfinger
4a713ec2e3 * src/conflicts.c (log_resolution): Correct typo:
obstack_printf should be obstack_fgrow1.
2002-05-27 20:55:43 +00:00
Akim Demaille
b408954b40 * src/state.h (state_t): `solved_conflicts' is a new member.
* src/LR0.c (new_state): Set it to 0.
* src/conflicts.h, src/conflicts.c (print_conflicts)
(free_conflicts, solve_conflicts): Rename as...
(conflicts_print, conflicts_free, conflicts_solve): these.
Adjust callers.
* src/conflicts.c (enum conflict_resolution_e)
(solved_conflicts_obstack): New, used by...
(log_resolution): this.
Adjust to attach the conflict resolution to each state.
Complete the description with the precedence/associativity
information.
(resolve_sr_conflict): Adjust.
* src/print.c (print_state): Output its solved_conflicts.
* tests/conflicts.at (Unresolved SR Conflicts)
(Solved SR Conflicts): Exercise --report=all.
2002-05-26 20:25:52 +00:00
Akim Demaille
ec3bc3961d * doc/bison.texinfo (Debugging): Split into...
(Tracing): this new section, its former contents, and...
(Understanding): this new section.
* src/getargs.h, src/getargs.c (verbose_flag): Remove, replaced
by...
(report_flag): this.
Adjust all dependencies.
(report_args, report_types, report_argmatch): New.
(usage, getargs): Report/support -r, --report.
* src/options.h
(struct option_table_struct): Rename as..,
(struct option_table_s): this.
Rename the `set_flag' member to `flag' to match with getopt_long's
struct.
* src/options.c (option_table): Split verbose into an entry for
%verbose, and another for --verbose.
Support --report/-r, so remove -r from the obsolete --raw.
* src/print.c: Attach full item sets and lookaheads reports to
report_flag instead of trace_flag.
* lib/argmatch.h, lib/argmatch.c: New, from Fileutils 4.1.
2002-05-25 16:12:40 +00:00
Akim Demaille
03b31c0ce8 * src/gram.h (rule_s): prec and precsym are now pointers
to the bucket giving the priority/associativity.
Member `associativity' removed: useless.
* src/reduce.c, src/conflicts.c: Adjust.
2002-04-07 17:42:31 +00:00
Akim Demaille
b0299a2ebb * src/lalr.h, src/lalr.c (LAruleno): Replace with...
(LArule): this, which is an array to rule_t*.
* src/print.c, src/conflicts.c: Adjust.
2002-04-07 17:41:44 +00:00
Akim Demaille
e53c632297 * src/conflicts.c (log_resolution): Argument `resolution' is const. 2002-03-20 09:35:27 +00:00
Akim Demaille
914feea9d0 * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
(count_sr_conflicts): Use bitset_count.
* src/reduce.c (inaccessable_symbols): Ditto.
(bits_size): Remove.
* src/warshall.h, src/warshall.c: Convert to bitsetv.
2002-03-04 13:58:05 +00:00
Akim Demaille
f0250de62e * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
* src/reduce.c: Remove the `bitset_zero's following the
`bitset_create's, as now it is performed by the latter.
2002-03-04 13:56:41 +00:00
Akim Demaille
f9abaa2c4c Use bitset operations when possible, not loops over bits.
* src/conflicts.c (set_conflicts, count_sr_conflicts): Use
bitset_or.
* src/print.c (print_reductions): Use bitset_and, bitset_andn.
* src/reduce.c (useless_nonterminals): Formatting changes.
* src/warshall.c (TC): Use bitset_or.
2002-03-04 12:05:30 +00:00
Akim Demaille
b86796bf87 * src/conflicts.c (shiftset, lookaheadset): Now bitset.
Adjust all dependencies.
2002-03-04 12:04:33 +00:00
Akim Demaille
602bbf31c1 * src/L0.c, src/LR0.h (nstates): Be size_t.
Adjust comparisons (signed vs unsigned).
* src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
bitset*.
Adjust all dependencies.
2002-03-04 12:03:36 +00:00
Akim Demaille
3460813bdb Bison is dead wrong in its RR conflict reports.
* tests/torture.at (GNU Cim Grammar): New.
* src/conflicts.c (count_rr_conflicts): Fix.
2002-01-06 20:49:53 +00:00
Akim Demaille
29e8831621 * 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 14:20:47 +00:00
Akim Demaille
1a2b5d37e1 * 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 14:20:13 +00:00
Akim Demaille
5a670b1ed9 * src/gram.c, src/gram.h (sprec, sassoc): Remove.
Adjust all users to use symbols[i]->prec or ->assoc.
2001-12-29 14:19:13 +00:00
Akim Demaille
ad949da96b * src/reader.c, src/reader.h (tags): Remove.
Adjust all users to use symbols[i]->tag.
2001-12-29 14:18:52 +00:00
Akim Demaille
0e78e603f6 * 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 14:18:32 +00:00
Akim Demaille
2cec70b9f1 * 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 18:10:48 +00:00
Akim Demaille
5092aba5a7 * 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 18:10:16 +00:00
Akim Demaille
065fbd27af * 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 18:05:05 +00:00
Akim Demaille
776209d6c7 Reductions in web2c.y are improperly reported.
Reported by Mike Castle.
* src/conflicts.c (print_reductions): Fix.
* tests/regression.at (Web2c): New.
2001-12-22 14:42:36 +00:00
Akim Demaille
3877f72ba2 * 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 17:32:59 +00:00
Akim Demaille
be750e4c49 * src/conflicts.c (print_reductions): Formatting changes. 2001-12-17 17:32:20 +00:00
Akim Demaille
709ae8c6ee * src/conflicts.c (flush_shift): Also adjust lookaheadset.
(flush_reduce): New.
(resolve_sr_conflict): Adjust.
2001-12-17 17:32:08 +00:00