+
+/*--------------------------------------.
+| Initializing the lookaheads members. |
+`--------------------------------------*/
+
+static void
+states_lookaheads_initialize (void)
+{
+ size_t i;
+ bitsetv pLA = LA;
+ rule_t **pLArule = LArule;
+
+ /* Initialize the members LOOKAHEADS and LOOKAHEADS_RULE for each
+ state. */
+ for (i = 0; i < nstates; i++)
+ {
+ states[i]->lookaheads = pLA;
+ states[i]->lookaheads_rule = pLArule;
+ pLA += states[i]->nlookaheads;
+ pLArule += states[i]->nlookaheads;
+ }
+}
+
+
+/*---------------------------------------.
+| Output the lookaheads for each state. |
+`---------------------------------------*/
+
+static void
+lookaheads_print (FILE *out)
+{
+ size_t i;
+ int j, k;
+ fprintf (out, "Lookaheads: BEGIN\n");
+ for (i = 0; i < nstates; ++i)
+ {
+ fprintf (out, "State %d: %d lookaheads\n",
+ i, states[i]->nlookaheads);
+
+ for (j = 0; j < states[i]->nlookaheads; ++j)
+ for (k = 0; k < ntokens; ++k)
+ if (bitset_test (states[i]->lookaheads[j], k))
+ fprintf (out, " on %d (%s) -> rule %d\n",
+ k, symbol_tag_get (symbols[k]),
+ states[i]->lookaheads_rule[j]->number - 1);
+ }
+ fprintf (out, "Lookaheads: END\n");
+}
+