* src/print.c (print_core): Use it.
+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>
* src/conflicts.c (log_resolution): Accept the rule involved in
/* Display the lookaheads? */
if (report_flag & report_lookaheads)
- {
- 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, "]");
- }
- }
+ state_rule_lookaheads_print (state, &rules[rule], out);
fprintf (out, _(" (rule %d)"), rule - 1);
fputc ('\n', out);
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, "]");
+ }
+}
(state_t *) xcalloc ((unsigned) (sizeof (state_t) \
+ (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_ */