Commit Graph

25 Commits

Author SHA1 Message Date
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
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
3d4daee374 * 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 14:15:33 +00:00
Akim Demaille
9e7f6bbd59 * 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 14:15:12 +00:00
Akim Demaille
9c2c67e6fe * 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 16:21:44 +00:00
Akim Demaille
ed8e1f68e9 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 11:02:21 +00:00
Akim Demaille
e3e4e81446 * src/nullable.c (set_nullable): Use a for loop to de-obfuscate
the handling of squeue.
`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.
2001-12-05 09:27:35 +00:00
Akim Demaille
630e182b7b Because useless nonterminals are now kept alive (instead of being
`destroyed'), we now sometimes examine them, and store information
related to them.  Hence we need to know their number, and adjust
memory allocations.
* src/reduce.c, src/reduce.h (nuseless_nonterminals): No longer
static.
* src/LR0.c (allocate_itemsets): The memory allocated to
`symbol_count' was used for two different purpose: once to count
the number of occurrences of each symbol, and later reassigned to
`shift_symbol', containing the symbol that can be shifted from a
given state.
Deobfuscate, i.e., allocate, use and free `symbol_count' here
only, and...
(new_itemsets): Allocate `shift_symbol' here.
(allocate_itemsets): symbol_count includes useless nonterminals.
Make room for them.
(free_storage): Use `free', not `XFREE', for pointers that cannot
be null.
2001-12-05 09:27:23 +00:00
Akim Demaille
81b51460c9 * src/nullable.c (set_nullable): Deobfuscate the handling of
ritem.
`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.
2001-12-05 09:27:08 +00:00
Akim Demaille
6bb1878b51 * src/nullable.c (nullable_print): New.
(set_nullable): Call it when tracing.
Better locality of variables.
2001-11-19 10:39:49 +00:00
Akim Demaille
c87d4863f6 * src/closure.c, src/derives.c, src/nullable.c: Adjust various
trace messages.
* src/LR0.c: Likewise.
(allocate_itemsets): Use arrays instead of pointers to clarify.
2001-11-19 10:38:12 +00:00
Akim Demaille
9bfe901c33 * src/getargs.c (statistics_flag): Replace with...
(trace_flag): New.
(longopts): Accept --trace instead of --statistics.
* src/getargs.h, src/options.c: Adjust.
* src/LR0.c, src/closure.c, src/derives.c, src/nullable.c,
* src/reduce.c: Use trace_flags instead of the CPP conditional TRACE.
2001-11-19 10:37:58 +00:00
Akim Demaille
6986fd9e3b * src/LR0.c (new_state): Complete trace code.
* src/nullable.c (set_nullable): Don't translate traces.
2001-11-19 10:28:57 +00:00
Akim Demaille
b2ed6e5826 * src/gram.h (rule_t): New.
(rule_table): New.
(rrhs, rlhs): Remove, part of state_t.
* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
* src/reader.c, src/reduce.c: Adjust.
2001-11-19 10:19:20 +00:00
Akim Demaille
342b8b6e21 Merge in branch-1_29. 2001-10-04 14:55:21 +00:00
Akim Demaille
aa7815f5c6 * src: s/Copyright (C)/Copyright/g. 2000-11-07 16:28:47 +00:00
Akim Demaille
d7913476c4 Use the more standard files xalloc.h' and xmalloc.c' instead of
Bison's `allocate.c' and `alloc.h'.  This patch was surprisingly
difficult and introduced a lot of core dump.  It turns out that
Bison used an implementation of `xmalloc' based on `calloc', and
at various places it does depend upon the initialization to 0.  I
have not tried to isolate the pertinent places, and all the former
calls to Bison's `xmalloc' are now using `XCALLOC'.  Someday,
someone should address this issue.
* src/allocate.c, src/alloc.h, m4/bison-decl.m4: Remove.
* lib/xmalloc.c, lib/xalloc.h, m4/malloc.m4, m4/realloc.m4: New
files.
Adjust dependencies.
* src/warshall.h: New file.
Propagate.
2000-10-02 08:48:32 +00:00
Akim Demaille
3519ec76a3 * src/nullable.h: New file.
Propagate its inclusion.
* src/nullable.c: Formatting changes.
2000-10-02 08:06:43 +00:00
Akim Demaille
ceed8467b7 * src/output.c: Formatting changes.
* src/machine.h: Remove, leaving its contents in...
* src/system.h: here.
Include stdio.h.
Adjust all dependencies on stdio.h and machine.h.
* src/getargs.h: New file.
Let all `extern' declarations about getargs.c be replaced with
inclusion of `getargs.h'.
* src/Makefile.am (noinst_HEADERS): Adjust.

* tests/calc.m4 (yyin): Be initialized in main, not on the global
scope.
(yyerror): Returns void, not int.
* doc/bison.texinfo: Formatting changes.
2000-09-19 18:10:41 +00:00
Jesse Thilo
4a120d45e6 More explicit use of "const", "extern", and "static", particularly to
limit the scope of many local variables and functions.
2000-07-04 03:29:02 +00:00
Jesse Thilo
c49a8e71ce Update FSF address. 1999-01-14 14:58:38 +00:00
Jesse Thilo
d2729d44ab Use prototypes if the compiler understands them. 1998-12-30 05:27:11 +00:00
Richard M. Stallman
7612000cb0 new.h renamed to alloc.h. 1997-06-18 06:40:45 +00:00
Richard M. Stallman
a083fbbf22 Insert `_' macro around many string constants. 1996-06-01 22:10:15 +00:00
Richard M. Stallman
122c0aacef entered into RCS 1991-12-18 04:06:36 +00:00