> -- igor писал(а):
> Я бы не стал пользоваться таким автоматом.

Почему?

> -- igor писал(а):
> Где гарантия, что эти действия не переведут автомат в какое-то состояние, отличное от 1?

Гарантия в том, что единственная переменная состояния является локальной переменной автомата, не доступной ни из ветвей автомата, ни снаружи. У нее нет даже имени или указателя, по которому можно было бы обратиться. Изменение состояния производится только самим автоматом (на основе стартового состояния, таблицы переходов, входных условий/символов), и больше никем. Разумеется, можно себе представить функцию, возвращающую состояние автомата, но лишь как копию.

Ваш вопрос аналогичен вопросу: а что если мы внутри циклаforизменим значение параметра цикла? В Си такая вещь возможна, и порождает ошибки. В других языках - не знаю. Но вообще я считаю, что это должно быть запрещено и восприниматься компилятором как ошибка.

В языке Паскаль такой запрет существует лишь в качестве пожелания:
> -- Цитата:
> На использование параметра цикла в операторе for налагаются ограничения: 1) в качестве параметра цикла должна использоваться переменная порядкового типа; начальное и конечное значение должны иметь тип, совместимый с типом параметра цикла; 2) переменная, используемая в качестве параметра цикла должна быть локальной для того блока, в котором находится оператор for. ; после завершения цикла значение управляющей переменной считается неопределённым. Ограничения первой группы отслеживаются компилятором, ограничения второй группы являются пожеланиями для программиста.(см.источник)