- /* Matching precedence levels.
- For left association, keep only the reduction.
- For right association, keep only the shift.
- For nonassociation, keep neither. */
-
- switch (sassoc[i])
- {
-
- case RIGHT_ASSOC:
- if (verboseflag) log_resolution(state, lookaheadnum, i, _("shift"));
- break;
-
- case LEFT_ASSOC:
- if (verboseflag) log_resolution(state, lookaheadnum, i, _("reduce"));
- break;
-
- case NON_ASSOC:
- if (verboseflag) log_resolution(state, lookaheadnum, i, _("an error"));
- break;
- }
-
- if (sassoc[i] != RIGHT_ASSOC)
- {
- *fp2 &= ~mask; /* flush the shift for this token */
- flush_shift(state, i);
- }
- if (sassoc[i] != LEFT_ASSOC)
- {
- *fp1 &= ~mask; /* flush the reduce for this token */
- }
- if (sassoc[i] == NON_ASSOC)
- {
- /* Record an explicit error for this token. */
- *errtokens++ = i;
- }
+ case right_assoc:
+ log_resolution (redrule, i, right_resolution);
+ flush_reduce (lookaheads, i);
+ break;
+
+ case left_assoc:
+ log_resolution (redrule, i, left_resolution);
+ flush_shift (s, i);
+ break;
+
+ case non_assoc:
+ log_resolution (redrule, i, nonassoc_resolution);
+ flush_shift (s, i);
+ flush_reduce (lookaheads, i);
+ /* Record an explicit error for this token. */
+ errors[nerrs++] = symbols[i];
+ break;
+
+ case undef_assoc:
+ abort ();