config->start while (config->has_more_input) { if (config->state->attempt_transition) { # move + advance config->remember if config->state->accepts # memo } else { config->rewind # rewind + restart push output_queue, config->token # token } }