Nikkolay-BIG писал(а):
if (условие) goto L<NN>;
А что нельзя генерить вот по такой схеме. ...
Nikkolay-BIG, да, иначе нельзя.
Любую Дракон-схему преобразовать к структурному виду нельзя.
Почему нельзя?
Для Дракон-схем и структурного программного кода (без goto) имеется принципиальное отличие:
При структурном коде, логический оператор определяют выполнение определенного блока кода (одиночного оператора, begin ... end, { ... }). Логический оператор, при любых условиях, имеет общий выход. Логический оператор может быть вложен в другой логический оператор, уровень вложенности может быть большим.
Для Дракон-схемы, логический оператор определяет выбор направления (маршрута) передачи управления. Для логического оператора, при любых условиях, нет общего выхода, маршруты могут не соединятся, а расходятся. В сгенерированном программном коде нет вложенности операторов, исключение - вложенность в Цикл ДЛЯ.
Nikkolay-BIG писал(а):
написать скриптовый движок генерирующий код.
В составе ИС Дракон имеется так называемый Маршрутный транслятор, реализующий генерацию программного кода в части управления логикой выполнения. Используются метки, безусловные и условные переходы, программный код напоминает код на ассемблере. Такой стиль не должен вас смущать.
Сгенерированный программный код является структурированным, в смысле такой же упорядоченности, что и размещение графических элементов в Дракон-схеме.
Nikkolay-BIG писал(а):
И вообще генератор кода надо вытащить отдельно
В этом нет необходимости. Реализовано в одном исполнительном файле, т.е. дополнительно ничего не требуется и не потеряете что либо.