+ statep->shifts = sp;
+ sp->number = nstates++;
+ sp->shifts[0] = nstates;
+
+ last_shift->next = sp;
+ last_shift = sp;
+}
+
+
+/*-----------------------------------------------------------------.
+| Subroutine of augment_automaton. Create the final state, which |
+| shifts `0', the end of file. The initial state shifts the start |
+| symbol, and goes to here. |
+`-----------------------------------------------------------------*/
+
+static void
+insert_eof_shifting_state (void)
+{
+ state_t *statep;
+ shifts *sp;
+
+ /* Make the final state--the one that follows a shift from the
+ next-to-final state.
+ The symbol for that shift is 0 (end-of-file). */
+ statep = STATE_ALLOC (0);
+ statep->number = nstates;
+
+ last_state->next = statep;
+ last_state = statep;
+
+ /* Make the shift from the final state to the termination state. */
+ sp = shifts_new (1);
+ statep->shifts = sp;