Всем добрый день.
Пишу дипломный проект - программу, позволяющую из блоков, подобных UML блокам составлять простые алгоритмы (линейные, условные и циклические) и выполнять их.
Одной из обязательных условий является генерация кода на языке C из готовой блок-схему.
Вот с генерацией у меня проблемы. Линейные алгоритмы без проблем, а вот условные никак не могу сделать.
Блок-схема представляет из себя xml файл.
То-есть нужен алгоритм генерации кода на в принципе любом языке программирования из xml файла.
Дипломка на языке Java, но мне главное алгоритм, а перевести его в другой язык в принципе не проблема.
Может кто-то сталкивался с подобной задачей, буду благодарен за любую помощь.
Прикрепляю пример блок-схемы в виде xml файла (в принципе его я могу изменить) и ту же блок-схему в виде изображения.
blockschema.jpg
blockschema.xml
Генерация программного кода по xml файлу
Модераторы: Naeel Maqsudov, C_O_D_E
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Тут бы прочесть литературу по компиляторам, многие вопросы бы отпали
Я с удовольствием почитаю и про компиляторы и про интерпретаторы, уже даже книгу в магазине присмотрел, но мне в субботу здавать программу и диплом, программа не дописана, диплом не написан вообще.
Вот сижу, пишу, каждый день не вставая из-за компа. 60 страниц это не так уж и быстро.
По этому и прошу подсказать готовый алгоритм, или где конкретно о нем написано.
Вот сижу, пишу, каждый день не вставая из-за компа. 60 страниц это не так уж и быстро.
По этому и прошу подсказать готовый алгоритм, или где конкретно о нем написано.
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Про компиляторы ничего не знаю. Чтобы программу на Си представить себе максимально просто и схематично - скачайте где-нибудь книгу Дейтел Х., Дейтел П. Как программировать на Cи и быстренько ее пролистать. Там показано, как все алгоритмы строятся на основе несколько видов блоков (7, если не ошибаюсь) и всего 2-х видов их соединения: вложения структур друг в друга и последовательного следования структур друг за другом. Это конценция структурированного кода. В общем-то xml как раз позволяет строить такие структуры, так что одно перевести в другое должно быть относительно просто. Что-то вреде рекурсивной функции по разбору xml, внутри которой реализовано 2 типа соелинений структур и для каждого виде 7 видов структур.
На заказ: VBA, Excel mc-black@yandex.ru
Книгу пролистал, примерно такие блоки у меня и используются. Тоже 7 штук, но без блоков цикла, у меня их можно реализовать с помощью условий, и нет блока свич, так как не нужен особо. Но у меня не получается придумать алгоритм, который сможет сгенерировать код как для простой блок-схемы ( http://liosha.hut2.ru/prosto.png ) так и для более сложного ( http://liosha.hut2.ru/slozhno.png ).
ps. Со сложным примером я конечно перестарался, но вложенность может быть любая.
ps. Со сложным примером я конечно перестарался, но вложенность может быть любая.
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Если ты меня правильно понимаешь, работа с циклами с точки зрения структурных алгоритмов - это то, что этот "кирпичик" можно или поставить после чего-нибудь, или вставить во что-нибудь. Придется тебе цикл не подменять условиями, а держать его как отдельный самостоятельный и самодостаточный блок. Понимаю, для этого прогу надо переделывать, это время которого у тебя нет. Но иначе фиг сделаешь, наверное, без глубокого изучения теории построения компиляторов.
Что ж ты так мало на все времени оставил?
Идея, изложенная в этой книжке максимально проста как раз для твоей задачи и хорошо вписывается в описание при помощи xml. Будь у меня такая тема диплома, я делал бы это на VBA в MS Visio.
Что ж ты так мало на все времени оставил?

На заказ: VBA, Excel mc-black@yandex.ru