Генерация программного кода по xml файлу

Всем добрый день.
Пишу дипломный проект — программу, позволяющую из блоков, подобных UML блокам составлять простые алгоритмы (линейные, условные и циклические) и выполнять их.
Одной из обязательных условий является генерация кода на языке C из готовой блок-схему.
Вот с генерацией у меня проблемы. Линейные алгоритмы без проблем, а вот условные никак не могу сделать.
Блок-схема представляет из себя xml файл.
То-есть нужен алгоритм генерации кода на в принципе любом языке программирования из xml файла.
Дипломка на языке Java, но мне главное алгоритм, а перевести его в другой язык в принципе не проблема.

Может кто-то сталкивался с подобной задачей, буду благодарен за любую помощь.
Прикрепляю пример блок-схемы в виде xml файла (в принципе его я могу изменить) и ту же блок-схему в виде изображения.

http://liosha.hut2.ru/blockschema.jpg
http://liosha.hut2.ru/blockschema.xml

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

DmitriyK, в ветвлении особенного то, что оно может иметь произвольную вложенность самих ветвлений и произвольное количество блоков внутри каждой ветки. А еще с помощью ветвления можно организовать цикл. Если Вы решали подобную задачу, то прикрепите пример кода, я ведь не думаю что это какой-то секретный код.

silverwolf, про JSTL идея интересная, надо посмотреть.

Все це на XSLT спокійно робиться..

не могу понять в чем проблема сделать это xslt . Рекурсии все такое, думаю можно раскрутить. Правда думаю не очень простой код получится это да
код прикрепить не могу — лет 6 назад делали )

xslt вещ специфическая — привыкнуть к нему надо и мышление перестроить чуток. может в этом затык

Лучше использовать лисп — там это «out-of-the-box»:)

Классный проект.

Когда-то делал кодогенерацию PHP на лиспе (github.com/...aleryz/macrophp — заглохло, потому что уже не нужно оно). Делается язык промежуточный (скобочный, который pretty printer’ом превращается в C). потом делается довольно просто компиляция из чего угодно (пожалуйста, из XML) в этот язык. Зачем промежуточный язык — с ним можно проводить множество манипуляций, оптимизаций по правилам и т.п. Плюс нужно какие-то переменные вводить, которых в блок схеме нет, а на C могут быть.

На java все то же самое, только раз в 10 больше работы (и поэтому действительно тянет на дипломный проект, на лиспе — только на курсач :)), нужно придумать некое представление программы (abstract syntax tree) — потом его преобразованиями довести до маппинга в С код один к одному, так чтобы было полное соотвествие. И тупо выплюнуть результат.

Странная у вас какая-то структура xml. То что можно было реализовать как элементы вы сделали атрибутами, я особо не вчитывался, может это и имеет смысл.

Посмотрите на jstl (хотя бы на core) и на его реализацию, она открыта, проблем быть не должно.

С трудом пытаюсь понять в чем может быть проблема — что такого в ветвлении особенного. На одной из прошлых работ мы генерировали весьма не простой pl\sql код таким способом и не облезли...

Что-то я слабо представляю как с помощью xslt можно из xml сгенерить Си код с ветвлениями.

используй xslt и не парься с самопальными парсерами

Підписатись на коментарі