История изменений
Исправление AntonI, (текущая версия) :
Ок, не буду спорить насчет терминов - Вы тут похоже более компетентны (знаете больше слов;-)).
Я сходу могу предложить несколько концепций:
-
Пытаемся задать AST какого нить ЯП, возможно кастрированного. Что то рисуем, что то текстом, что то заметаем под ковер (если это возможно). Из бонусов - все уже придумано в общем, но это скучно.
-
Просто рисуем блок-схему. Опять таки все бол-мен придумано, но это ОЧЕНЬ скучно.
-
ФП/декларативщина-стайл (я их все время путаю;-(), направленный ациклический граф (зависимостей). Есть блоки (действия) со входами и выходами, есть стрелочки, из одного выхода может идти несколько стрелочек, в один вход может приходить только одна стрелочка. По стрелочкам могут «ходить сигналы». Если у блока все зависимости разрешены (пришли сигналы на все входы) блок атомарно выполняется и отправляет сигналы по всем стрелочкам из выходов. Блок может содержать фрагмент диаграммы или текст на каком то ЯП, при этом входы/выходы проименованы (ау, ТС - мультиязычность это возможность использовать РАЗНЫЕ ЯП в разных блоках на одной диаграмме а не то что у Вас). Данные от пользователя скрыты (это детали реализации), есть только данные на входе/выходе из диаграммы (то что с-но делает сама программа).
-
Вариант 3, но в один вход блока может приходить несколько стрелочек, считается что зависимость разрешена если сигнал пришел хотя бы по одной из. Это открывает возможности для всяких интересных извращений, но будет создавать неоднозначности с которыми надо будет как то бороться.
Исходная версия AntonI, :
Ок, не буду спорить насчет терминов - Вы тут похоже более компетентны (знаете больше слов;-)).
Я сходу могу предложить несколько концепций:
-
Пытаемся задать AST какого нить ЯП, возможно кастрированного. Что то рисуем, что то текстом, что то заметаем под ковер (если это возможно). Из бонусов - все уже придумано в общем, но это скучно.
-
Просто рисуем блок-схему. Опять таки все бол-мен придумано, но это ОЧЕНЬ скучно.
-
ФП/декларативщина-стайл (я их все время путаю;-(), направленный ациклический граф (зависимостей). Есть блоки (действия) со входами и выходами, есть стрелочки, из одного выхода может идти несколько стрелочек, в один вход может приходить только одна стрелочка. По стрелочкам могут «ходить сигналы». Если у блока все зависимости разрешены (пришли сигналы на все входы) блок атомарно выполняется и отправляет сигналы по всем стрелочкам из выходов. Блок может содержать фрагмент диаграммы или текст на каком то ЯП, при этом выходы проименованы (ау, ТС - мультиязычность это возможность использовать РАЗНЫЕ ЯП в разных блоках на одной диаграмме а не то что у Вас). Данные от пользователя скрыты (детали реализации), есть только данные на входе/выходы из диаграммы.
-
Вариант 3, но в один вход блока может приходить несколько стрелочек, считается что зависимость разрешена если сигнал пришел хотя бы по одной из. Это открывает возможности для всяких интересных извращений, но будет создавать неоднозначности с которыми надо будет как то бороться.