-
- for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
- if (!SHIFT_IS_DISABLED (shiftp, i))
- {
- /* if this state has a shift for the error token, don't use a
- default rule. */
- if (SHIFT_IS_ERROR (shiftp, i))
- nodefault = 1;
- bitset_set (shiftset, SHIFT_SYMBOL (shiftp, i));
- }
-
- for (i = 0; i < errp->nerrs; i++)
- if (errp->errs[i])
- bitset_set (shiftset, errp->errs[i]);
-
- if (state->nlookaheads == 1 && !nodefault)
+ {
+ shifts_t *shiftp = state->shifts;
+ for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
+ if (!SHIFT_IS_DISABLED (shiftp, i))
+ {
+ /* If this state has a shift for the error token, don't use a
+ default rule. */
+ if (SHIFT_IS_ERROR (shiftp, i))
+ return NULL;
+ bitset_set (shiftset, SHIFT_SYMBOL (shiftp, i));
+ }
+ }
+
+ /* 2. Each reduction is possibly masked by the lookaheads on which
+ we raise an error (due to %nonassoc). */
+ {
+ errs_t *errp = state->errs;
+ for (i = 0; i < errp->nerrs; i++)
+ if (errp->errs[i])
+ bitset_set (shiftset, errp->errs[i]);
+ }
+
+ for (i = 0; i < state->nlookaheads; ++i)