[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/6] lr0: more debug traces
From: |
Akim Demaille |
Subject: |
[PATCH 5/6] lr0: more debug traces |
Date: |
Sun, 9 Jun 2019 11:13:11 +0200 |
* src/lr0.c (kernel_check): New.
(new_itemsets, save_reductions): Add traces.
---
src/lr0.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/src/lr0.c b/src/lr0.c
index 8d6a824b..58df9d7d 100644
--- a/src/lr0.c
+++ b/src/lr0.c
@@ -158,6 +158,14 @@ kernel_print (FILE *out)
}
}
+/* Make sure the kernel is in sane state. */
+static void
+kernel_check (void)
+{
+ for (symbol_number i = 0; i < nsyms - 1; ++i)
+ assert (kernel_base[i] + kernel_size[i] <= kernel_base[i + 1]);
+}
+
static void
allocate_storage (void)
{
@@ -209,9 +217,21 @@ new_itemsets (state *s)
bitset_zero (shift_symbol);
+ if (trace_flag & trace_automaton)
+ {
+ fprintf (stderr, "initial kernel:\n");
+ kernel_print (stderr);
+ }
+
for (size_t i = 0; i < nitemset; ++i)
if (item_number_is_symbol_number (ritem[itemset[i]]))
{
+ if (trace_flag & trace_automaton)
+ {
+ fputs ("working on: ", stderr);
+ item_print (ritem + itemset[i], NULL, stderr);
+ fputc ('\n', stderr);
+ }
symbol_number sym = item_number_as_symbol_number (ritem[itemset[i]]);
bitset_set (shift_symbol, sym);
kernel_base[sym][kernel_size[sym]] = itemset[i] + 1;
@@ -220,9 +240,11 @@ new_itemsets (state *s)
if (trace_flag & trace_automaton)
{
+ fprintf (stderr, "final kernel:\n");
kernel_print (stderr);
fprintf (stderr, "new_itemsets: end: state = %d\n\n", s->number);
}
+ kernel_check ();
}
@@ -309,6 +331,17 @@ save_reductions (state *s)
}
}
+ if (trace_flag & trace_automaton)
+ {
+ fprintf (stderr, "reduction[%d] = {\n", s->number);
+ for (int i = 0; i < count; ++i)
+ {
+ rule_print (redset[i], NULL, stderr);
+ fputc ('\n', stderr);
+ }
+ fputs ("}\n", stderr);
+ }
+
/* Make a reductions structure and copy the data into it. */
state_reductions_set (s, count, redset);
}
--
2.21.0
- [PATCH 0/6] Clean up tests, Akim Demaille, 2019/06/09
- [PATCH 1/6] tests: remove useless support of '.' in integers, Akim Demaille, 2019/06/09
- [PATCH 2/6] tests: main: support -s and -p, Akim Demaille, 2019/06/09
- [PATCH 3/6] tests: make sure the default action properly works in C++, Akim Demaille, 2019/06/09
- [PATCH 4/6] traces: add some colors, Akim Demaille, 2019/06/09
- [PATCH 5/6] lr0: more debug traces,
Akim Demaille <=
- [PATCH 6/6] CI: factor, Akim Demaille, 2019/06/09