Предложенная здесь методика "автоматного силуэта", прежде всего, предметно направленна (под конкретные потребности с соответствующей реализацией), что важно и ценно практически.
Общий же взгляд в целом на понимание "веток" силуэта как автоматных состояний выявляет следующие особенности.
Выше в теме отмечена проблематика входных и выходных действий в "состояниях". Видимо, согласно конкретной методике, интерпретирующей автомат как ООП-класс, достаточно конструктора и деструктора в разрезе всего класса, т.е. автомата. Напр., для чего можно задействовать специальные ветки (первая и последняя):
https://forum.drakon.su/viewtopic.php?t=4284#p78588Ветки силуэта (состояния) всегда "должны знать", куда перейти. Терминальным состоянием может быть только последняя ветка (т.е. деструктор). Например, в состоянии "обработка кавычек" должно быть известно, куда вернуться или следовать далее. В случаях немалого количества состояний, из которых может быть сделан переход в "обработку кавычек" и последующий возврат (или переход в отличное от исходного состояние) потребуется немалый анализ каких-то вспомогательных флагов (и в целом, состояние "должно знать" прочие возможные корреспондирующие состояния).
Скорее всего, "автомат" для таких реальных задач как "разбор программного кода" будет размазан по множеству алгоритмов (силуэтов), т.е. трансформируется в "виртуальный автомат" (в виде некой сети алгоритмов).
В противном случае, чтобы удовлетворить широкие потребности, потребуется существенное дополнительное изменение семантики исчисления икон (кроме спецветок "конструктор/деструктор", специального "выбора" для ожидания событий), в стиле:
https://forum.drakon.su/viewtopic.php?f=62&t=6097#p100629Вложение:
state.png [ 61.85 КБ | Просмотров: 8248 ]
Выше есть модификация образа иконы "ввод" для образования макроиконы "входные действия". Аналогично образуется и "выходные действия" через исходный образ "вывода" (исходный граф следования в Дракон-е и так задвинут на задний план). Адрес "Работа генератора" для перехода в это же состояние помечен вспомогательными линиями по бокам и интерпретируется как икона "шаг системы" -- нет "перехода" ("петли") -- не исполняются выходные/входные действия (в общем случае напрашиваются и переходы в другие состояние с "историей" или с "восстановлением" состояния, но в данной методике для них нет места).
Видимо, не помешают какие-то специальные переходы с ключевым словом аля "return". Т.е. кроме семантики переходов как "GOTO" необходима и семантика аля "GOSUB" -- при "return" происходит возврат туда, откуда пришли в ветку. И для прочей гибкости, видимо, нужны "метки" для переходов как переменные/параметры, как-то "передаваемые" в ветку, с последующим переходом по ним ("метки высшего порядка").
И т.п.
В таком случае (случае модификации Дракон-а до "автоматного диалекта") спорно, где "слишком сложно", в сравнении с "упорядоченными блок-схемами" (скорее, в блок-схемах не "когнитивны" терминаторы, торчащие как листья на шампуре, но с семантикой меньше заморочек). Без модификации -- ограниченные возможности в "ветках" как для "автоматных".