traces: improve logs

* src/lalr.c: Move logs to a better place to understand the chronology
of events.
* src/symlist.c (symbol_list_syms_print): Don't dump core on type
elements.
This commit is contained in:
Akim Demaille
2019-04-09 21:02:08 +02:00
parent a745041b7d
commit 99664706e2
2 changed files with 9 additions and 6 deletions

View File

@@ -398,10 +398,7 @@ build_relations (void)
relation_transpose (&includes, ngotos); relation_transpose (&includes, ngotos);
if (trace_flag & trace_automaton) if (trace_flag & trace_automaton)
{ relation_print ("includes", includes, ngotos, goto_print, stderr);
lookback_print (stderr);
relation_print ("includes", includes, ngotos, goto_print, stderr);
}
} }
/* Compute FOLLOWS from INCLUDES, and free INCLUDES. */ /* Compute FOLLOWS from INCLUDES, and free INCLUDES. */
@@ -420,6 +417,9 @@ compute_follows (void)
static void static void
compute_lookahead_tokens (void) compute_lookahead_tokens (void)
{ {
if (trace_flag & trace_automaton)
lookback_print (stderr);
for (size_t i = 0; i < nLA; ++i) for (size_t i = 0; i < nLA; ++i)
for (goto_list *sp = lookback[i]; sp; sp = sp->next) for (goto_list *sp = lookback[i]; sp; sp = sp->next)
bitset_or (LA[i], LA[i], goto_follows[sp->value]); bitset_or (LA[i], LA[i], goto_follows[sp->value]);

View File

@@ -97,6 +97,7 @@ symbol_list_type_set (symbol_list *syms, uniqstr type_name, location loc)
void void
symbol_list_syms_print (const symbol_list *l, FILE *f) symbol_list_syms_print (const symbol_list *l, FILE *f)
{ {
fputc ('[', f);
char const *sep = ""; char const *sep = "";
for (/* Nothing. */; l && l->content.sym; l = l->next) for (/* Nothing. */; l && l->content.sym; l = l->next)
{ {
@@ -105,10 +106,12 @@ symbol_list_syms_print (const symbol_list *l, FILE *f)
: l->content_type == SYMLIST_TYPE ? "type: " : l->content_type == SYMLIST_TYPE ? "type: "
: "invalid content_type: ", : "invalid content_type: ",
f); f);
symbol_print (l->content.sym, f); if (l->content_type == SYMLIST_SYMBOL)
fputs (l->action_props.is_value_used ? " used" : " unused", f); symbol_print (l->content.sym, f);
fputs (l->action_props.is_value_used ? " (used)" : " (unused)", f);
sep = ", "; sep = ", ";
} }
fputc (']', f);
} }