mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 02:03:03 +00:00
ielr: more comments and logs
* src/ielr.c: More comments. (state_list_print): New.
This commit is contained in:
25
src/ielr.c
25
src/ielr.c
@@ -83,19 +83,22 @@ ielr_compute_ritem_sees_lookahead_set (void)
|
|||||||
while (0 < i)
|
while (0 < i)
|
||||||
{
|
{
|
||||||
--i;
|
--i;
|
||||||
|
// Walk the RHS right to left, as long as it's symbol,
|
||||||
|
// nonterminal, nullable.
|
||||||
while (!item_number_is_rule_number (ritem[i])
|
while (!item_number_is_rule_number (ritem[i])
|
||||||
&& ISVAR (ritem[i])
|
&& ISVAR (ritem[i])
|
||||||
&& nullable [item_number_as_symbol_number (ritem[i]) - ntokens])
|
&& nullable [item_number_as_symbol_number (ritem[i]) - ntokens])
|
||||||
bitset_set (result, i--);
|
bitset_set (result, i--);
|
||||||
if (!item_number_is_rule_number (ritem[i]) && ISVAR (ritem[i]))
|
if (!item_number_is_rule_number (ritem[i]) && ISVAR (ritem[i]))
|
||||||
bitset_set (result, i--);
|
bitset_set (result, i--);
|
||||||
|
// Flush the remainder of the RHS.
|
||||||
while (!item_number_is_rule_number (ritem[i]) && 0 < i)
|
while (!item_number_is_rule_number (ritem[i]) && 0 < i)
|
||||||
--i;
|
--i;
|
||||||
}
|
}
|
||||||
if (trace_flag & trace_ielr)
|
if (trace_flag & trace_ielr)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "ritem_sees_lookahead_set:\n");
|
fprintf (stderr, "ritem_sees_lookahead_set (indexes of ritems): ");
|
||||||
debug_bitset (result);
|
bitset_dump (stderr, result);
|
||||||
fprintf (stderr, "\n");
|
fprintf (stderr, "\n");
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -569,6 +572,24 @@ typedef struct state_list
|
|||||||
struct state_list *nextIsocore;
|
struct state_list *nextIsocore;
|
||||||
} state_list;
|
} state_list;
|
||||||
|
|
||||||
|
MAYBE_UNUSED static void
|
||||||
|
state_list_print_ (const state_list *s, FILE *out, const char *sep)
|
||||||
|
{
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
fprintf (out, "%s%d", sep, s->state->number);
|
||||||
|
state_list_print_ (s->next, out, " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MAYBE_UNUSED static void
|
||||||
|
state_list_print (const state_list *s, FILE *out)
|
||||||
|
{
|
||||||
|
fprintf (out, "{");
|
||||||
|
state_list_print_ (s, out, "");
|
||||||
|
fprintf (out, "}");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \pre
|
* \pre
|
||||||
* - \c follow_kernel_items and \c always_follows were computed by
|
* - \c follow_kernel_items and \c always_follows were computed by
|
||||||
|
|||||||
Reference in New Issue
Block a user