Для генерации кода можно использовать развитый подход на кафедре технологии программирования в ЛИТМО.
1.
Преобразование графов переходов, представленных в формате MS Visio, в исходные коды программ для различных языков программирования (инструментальное средство MetaAuto) // [электронный ресурс] -
http://is.ifmo.ru/projects/metaauto/2.
Исходные тексты инструментального средства MetaAuto // [электронный ресурс] -
http://is.ifmo.ru/projects/metaauto/Цитата:
Настоящая работа посвящена разработке инструментального средства, названного MetaAuto, позволяющего по графам переходов, построенным с помощью редактора MS Visio, автоматически генерировать изоморфные им исходные коды программ на разных языках программирования, для каждого из которых предварительно должен быть создан шаблон.
Изложим последовательность действий для построения программы по графам переходов, например, на языке C#:
1. Выбрать из готовых или создать, как это указано в работе, шаблон для используемого языка программирования. Для языка C# этот шаблон находится в папке CSharpProject.
2. С помощью редактора MS Visio cтроятся графы переходов автоматов.
3. Запускается программа Visio2Xml.exe (находится в папке Utils), которой в качестве параметров пользователем должны быть переданы путь к файлу, содержащему графы переходов, полученные на шаге 2, и путь к генерируемому этой программой XML-файлу.
4. Запускается программа XSLTransform.exe (находится в той же папке), которой в качестве параметров пользователем указываются путь к полученному на третьем этапе XML-файлу, путь к XSLT-шаблону и путь к генерируемому файлу с исходным кодом.
Комментарий. Я использовал раннюю версию приложения, которая транслировала из MS Visio диаграммы автоматов переходов на язык Си. Автор любезно прислал мне исходные коды приложения. Кстати, действительно получался и код. и комментарии И. главноеЮ проект собирался в готовое приложение!
Новый проект пошёл ещё дальше. Используется промежуточное представление графа переходов состоний автомата в XML виде. Это позволило транслировать на три языка. тестировал - работает.
Куда можно развивать?(а) - Добавить трансляцию на язык Оберон.
(б) - Добавить трансляцию на язык Компонентный Паскаль.
(в) - Использовать какой-нибудь открытый инструмент создания графов, например ДРАКОН, или же OpenOffice.
А самая передовая идея -
построить транслятор исходных кодов с языка Компонентного Паскаля (Оберона) в XML- виде! Это даст новые возможности работать с исходными проектами и транслировать на другие языки.
"В ручную" транслировал пример кода в виде XML-вид:
3. Пример трансляции исходного кода фрагмента программы с языка С в вид XML // [электронный ресурс] - 1.1. Исходный код на С -
http://robot-ivan.narod.ru/samples/HelloRobot.c 1.2. Вид программы в виде XML
http://robot-ivan.narod.ru/samples/CPlusPlusToMLP.xml