+} shifts;
+
+shifts *shifts_new PARAMS ((int n));
+
+
+/* What is the symbol which is shifted by SHIFTS->shifts[Shift]? Can
+ be a token (amongst which the error token), or non terminals in
+ case of gotos. */
+
+#define SHIFT_SYMBOL(Shifts, Shift) \
+ (states[Shifts->shifts[Shift]]->accessing_symbol)
+
+/* Is the SHIFTS->shifts[Shift] a real shift? (as opposed to gotos.) */
+
+#define SHIFT_IS_SHIFT(Shifts, Shift) \
+ (ISTOKEN (SHIFT_SYMBOL (Shifts, Shift)))
+
+/* Is the SHIFTS->shifts[Shift] a goto?. */
+
+#define SHIFT_IS_GOTO(Shifts, Shift) \
+ (!SHIFT_IS_SHIFT (Shifts, Shift))
+
+/* Is the SHIFTS->shifts[Shift] then handling of the error token?. */
+
+#define SHIFT_IS_ERROR(Shifts, Shift) \
+ (SHIFT_SYMBOL (Shifts, Shift) == errtoken->number)
+
+/* When resolving a SR conflicts, if the reduction wins, the shift is
+ disabled. */