From 23cbcc6c19c08edbede56f177fdde9d6f74d4e4f Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 5 Dec 2001 09:40:47 +0000 Subject: [PATCH] * src/closure.c (print_closure): Improve. (closure): Use it for printing input and output. --- ChangeLog | 6 ++++++ src/LR0.c | 3 +++ src/closure.c | 27 ++++++++++++++------------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 840e1e4c..5f354478 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-12-05 Akim Demaille + + * src/closure.c (print_closure): Improve. + (closure): Use it for printing input and output. + + 2001-12-05 Akim Demaille * src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are diff --git a/src/LR0.c b/src/LR0.c index 6910f3e0..f8fa5bd0 100644 --- a/src/LR0.c +++ b/src/LR0.c @@ -583,6 +583,9 @@ generate_states (void) while (this_state) { + if (trace_flag) + fprintf (stderr, "Processing state %d (reached by %s)\n", + this_state->number, tags[this_state->accessing_symbol]); /* Set up ruleset and itemset for the transitions out of this state. ruleset gets a 1 bit for each rule that could reduce now. itemset gets a vector of all the items that could be diff --git a/src/closure.c b/src/closure.c index bb45ba02..ed35c730 100644 --- a/src/closure.c +++ b/src/closure.c @@ -52,13 +52,19 @@ static int varsetsize; `-----------------*/ static void -print_closure (int n) +print_closure (const char *title, short *array, size_t size) { - int i; - fprintf (stderr, "n = %d\n", n); - for (i = 0; i < itemsetsize; ++i) - fprintf (stderr, " %d\n", itemset[i]); - fprintf (stderr, "\n\n"); + size_t i; + fprintf (stderr, "Closure: %s\n", title); + for (i = 0; i < size; ++i) + { + short *rp; + fprintf (stderr, " %2d: .", array[i]); + for (rp = &ritem[array[i]]; *rp > 0; ++rp) + fprintf (stderr, " %s", tags[*rp]); + fprintf (stderr, " (rule %d)\n", -*rp); + } + fputs ("\n\n", stderr); } @@ -194,12 +200,7 @@ closure (short *core, int n) int ruleno; if (trace_flag) - { - fprintf (stderr, "Entering closure (items = {"); - for (c = 0; c < n; ++c) - fprintf (stderr, " %d ", core[c]); - fprintf (stderr, "})\n"); - } + print_closure ("input", core, n); if (n == 0) { @@ -241,7 +242,7 @@ closure (short *core, int n) } if (trace_flag) - print_closure (n); + print_closure ("output", itemset, itemsetsize); } -- 2.47.2