Будуте готовы- маякните:) >> нужно "перестроить мозги"
: Для прототридов не нужно перестраивать мозги?
Да, не нужно. Прототриды позволяют писать в строго императивном стиле, а он наиболее читабелен "сходу".
>> разницы между goto и метками switch нет ни малейшей
: Да, конечно! Пока мы не пытаемся реализовать автомат, в одном случае не имеем состояния, во другом - имеем.
Состояние мы имеем В ЛЮБОМ СЛУЧАЕ.
Только в одном - документированное значение из enum,
в другом - анонимное, сгенерированное макросом прототридсов.
Если "очень нужно", подправить макросы Дункелса и сделать их также именованными - на пять минут работы.
Но тогда теряется сама суть прототридсов.
А goto это другое. Это не само состояние, а переход на блок его инициализации.
Мне удобно придерживаться схемы:
1) инициализировали выходы под новое состояние 2) цикл, начинающийся с YIELD (собственно новое состояние),
в котором анализируем ветки переходов из него.
//Если надо, добавьте в yield параметр(имя состояния) и получите его в pt, в чистом виде.
//Просто мне - наоборот, такое бы сильно мешало. Слишком много "недо-состояний" чистых задержек,
//замахаешся именовать. Кроме того, будет в тексте два имени - метки кода инициализации
//и скрытого в yield case'а, а это плохой дзен.
... но не любой ценой.