mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 18:23:03 +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:
@@ -1,3 +1,9 @@
|
|||||||
|
2002-06-15 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/state.h, src/state.c (state_rule_lookaheads_print): New.
|
||||||
|
* src/print.c (print_core): Use it.
|
||||||
|
|
||||||
|
|
||||||
2002-06-15 Akim Demaille <akim@epita.fr>
|
2002-06-15 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/conflicts.c (log_resolution): Accept the rule involved in
|
* src/conflicts.c (log_resolution): Accept the rule involved in
|
||||||
|
|||||||
23
src/print.c
23
src/print.c
@@ -93,28 +93,7 @@ print_core (FILE *out, state_t *state)
|
|||||||
|
|
||||||
/* Display the lookaheads? */
|
/* Display the lookaheads? */
|
||||||
if (report_flag & report_lookaheads)
|
if (report_flag & report_lookaheads)
|
||||||
{
|
state_rule_lookaheads_print (state, &rules[rule], out);
|
||||||
int j, k;
|
|
||||||
int nlookaheads = 0;
|
|
||||||
/* Look for 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)
|
|
||||||
nlookaheads++;
|
|
||||||
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)
|
|
||||||
fprintf (out, "%s%s",
|
|
||||||
symbol_tag_get (symbols[k]),
|
|
||||||
--nlookaheads ? ", " : "");
|
|
||||||
fprintf (out, "]");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf (out, _(" (rule %d)"), rule - 1);
|
fprintf (out, _(" (rule %d)"), rule - 1);
|
||||||
fputc ('\n', out);
|
fputc ('\n', out);
|
||||||
|
|||||||
33
src/state.c
33
src/state.c
@@ -81,3 +81,36 @@ reductions_new (int n)
|
|||||||
res->nreds = n;
|
res->nreds = n;
|
||||||
return res;
|
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, "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -199,4 +199,10 @@ typedef struct state_s
|
|||||||
(state_t *) xcalloc ((unsigned) (sizeof (state_t) \
|
(state_t *) xcalloc ((unsigned) (sizeof (state_t) \
|
||||||
+ (Nitems - 1) * sizeof (item_number_t)), 1)
|
+ (Nitems - 1) * sizeof (item_number_t)), 1)
|
||||||
|
|
||||||
|
/* Print on OUT all the lookaheads such that this STATE wants to
|
||||||
|
reduce this RULE. */
|
||||||
|
|
||||||
|
void state_rule_lookaheads_print PARAMS ((state_t *state, rule_t *rule,
|
||||||
|
FILE *out));
|
||||||
|
|
||||||
#endif /* !STATE_H_ */
|
#endif /* !STATE_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user