mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-15 15:23:02 +00:00
* src/state.h, src/state.c (state_rule_lookaheads_print): New.
* src/print.c (print_core): Use it.
This commit is contained in:
33
src/state.c
33
src/state.c
@@ -81,3 +81,36 @@ reductions_new (int n)
|
||||
res->nreds = n;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------.
|
||||
| Print on OUT all the lookaheads such that this STATE wants to |
|
||||
| reduce this RULE. |
|
||||
`--------------------------------------------------------------*/
|
||||
|
||||
void
|
||||
state_rule_lookaheads_print (state_t *state, rule_t *rule, FILE *out)
|
||||
{
|
||||
int j, k;
|
||||
int nlookaheads = 0;
|
||||
/* Count the number of lookaheads corresponding to this rule. */
|
||||
for (j = 0; j < state->nlookaheads; ++j)
|
||||
for (k = 0; k < ntokens; ++k)
|
||||
if (bitset_test (state->lookaheads[j], k)
|
||||
&& state->lookaheads_rule[j]->number == rule->number)
|
||||
nlookaheads++;
|
||||
|
||||
/* Print them if there are. */
|
||||
if (nlookaheads)
|
||||
{
|
||||
fprintf (out, " [");
|
||||
for (j = 0; j < state->nlookaheads; ++j)
|
||||
for (k = 0; k < ntokens; ++k)
|
||||
if (bitset_test (state->lookaheads[j], k)
|
||||
&& state->lookaheads_rule[j]->number == rule->number)
|
||||
fprintf (out, "%s%s",
|
||||
symbol_tag_get (symbols[k]),
|
||||
--nlookaheads ? ", " : "");
|
||||
fprintf (out, "]");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user