- state_number_t i;
- nLA = 0;
-
- /* Count */
- for (i = 0; i < nstates; i++)
- {
- int k;
- int nlookaheads = 0;
- reductions_t *rp = states[i]->reductions;
- transitions_t *sp = states[i]->transitions;
-
- /* We need a lookahead either to distinguish different
- reductions (i.e., there are two or more), or to distinguish a
- reduction from a shift. Otherwise, it is straightforward,
- and the state is `consistent'. */
- if (rp->num > 1
- || (rp->num == 1 && sp->num &&
- !TRANSITION_IS_DISABLED (sp, 0) && TRANSITION_IS_SHIFT (sp, 0)))
- nlookaheads += rp->num;
- else
- states[i]->consistent = 1;
-
- for (k = 0; k < sp->num; k++)
- if (!TRANSITION_IS_DISABLED (sp, k) && TRANSITION_IS_ERROR (sp, k))
- {
- states[i]->consistent = 0;
- break;
- }
-
- states[i]->nlookaheads = nlookaheads;
- nLA += nlookaheads;
- }
+ int n_lookahead_tokens = 0;
+ reductions *rp = s->reductions;
+ transitions *sp = s->transitions;
+
+ /* We need a lookahead either to distinguish different
+ reductions (i.e., there are two or more), or to distinguish a
+ reduction from a shift. Otherwise, it is straightforward,
+ and the state is `consistent'. There is no need to check that
+ transition 0 hasn't been disabled before checking if it is a
+ shift since transitions are only disabled during conflict
+ resolution, and that hasn't happened yet. */
+ aver (sp->num == 0 || !TRANSITION_IS_DISABLED (sp, 0));
+ if (rp->num > 1
+ || (rp->num == 1 && sp->num && TRANSITION_IS_SHIFT (sp, 0)))
+ n_lookahead_tokens += rp->num;
+ else
+ s->consistent = 1;
+
+ return n_lookahead_tokens;