DRAKON.SU
https://forum.drakon.su/

DRAKON Editor: генерация кода из диаграмм
https://forum.drakon.su/viewtopic.php?f=145&t=3716
Страница 1 из 15

Автор:  Степан Митькин [ Воскресенье, 11 Декабрь, 2011 03:18 ]
Заголовок сообщения:  DRAKON Editor: генерация кода из диаграмм

DRAKON Editor теперь позволяет программировать на С/С++, Python, Tcl.
Из диаграмм генерируется код на этих языках.
http://sourceforge.net/projects/drakon-editor/files/

Причём та часть редактора, которая генерирует код, сама нарисована в редакторе. (Поднимает себя за волосы из болота.)

Автор:  Дмитрий_ВБ [ Воскресенье, 11 Декабрь, 2011 12:51 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

То, что генерится код - это понятно.
ИС Дракон уже давно это умеет.

Вопрос в том, какой именно код генерится и как - при помощи операторов безусловных
переходов, как в ИС Дракон, или структурированный код без использования goto.

И есть ли возможность считывания уже сгенерированного кода обратно в среду.

Ответьте пожалуйста, а то фраза "мы можем генерить код из ДРАКОН-редактора
является слишком общей и нуждается хотя бы в кратких пояснениях, прежде чем
разбираться более подробно, а что там и как.

А чтобы было более наглядно выложите, пожалуйста, текст какой-нибудь сгенерированной
вашим ДРАКОН-редактором процедуры (метода) на С++ .

Автор:  Степан Митькин [ Воскресенье, 11 Декабрь, 2011 23:05 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

1) При генерации кода на C и C++ используются goto.
2) В Питоне и Tcl goto нет, поэтому приходится его эмулировать.
3) Дисассемблера из C++ в ДРАКОН нет и не будет. :)
4) Примеры диаграмм и код, который из них получается, расположены в папке examples внутри drakon_editor1.5.zip
Его можно взять здесь: http://sourceforge.net/projects/drakon-editor/files/drakon_editor1.5.zip/download

Автор:  Степан Митькин [ Воскресенье, 11 Декабрь, 2011 23:08 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Страничка проекта здесь:
http://drakon-editor.sourceforge.net/

Автор:  Владислав Жаринов [ Понедельник, 12 Декабрь, 2011 08:54 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Степан Митькин писал(а):
...
2) В Питоне и Tcl goto нет, поэтому приходится его эмулировать.
Чем?.. :)
Степан Митькин писал(а):
...
3) Дисассемблера из C++ в ДРАКОН нет и не будет. :)
...
Ну и не надо... :wink:

Автор:  Степан Митькин [ Вторник, 13 Декабрь, 2011 15:25 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

В DRAKON Editor'е редактировать сгенерённые исходники тоже не нужно. Можно подглядывать в них иногда для целей отладки. Генератор расставляет в коде метки, чтобы было ясно, откуда что в нём взялось.

Автор:  Степан Митькин [ Вторник, 13 Декабрь, 2011 16:33 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Для эмуляции goto в Python и Tcl используется вечный цикл, переменная со следующей меткой и конструкции if внутра цикла.
Кто-нибудь знает другие способы? eval/exec не подходят, так как делают генерируемый код ещё более трудночитаемым.

Вот пример расчёта последовательности Фибоначчи. Переменная с меткой называется _next_item_.
Код:
def fibonacci(n):
    _next_item_ = 153
    while True:
        if _next_item_ == 153:
            _sw_153 = n
            if _sw_153 == 0:
                #item 157
                result = [0]
                _next_item_ = 168
            elif _sw_153 == 1:
                #item 158
                result = [0, 1]
                _next_item_ = 168
            else:
                #item 159
                result = [0, 1]
                #item 1630001
                i = 2
                _next_item_ = 1630002
   
        if _next_item_ == 1630002:
            if i <= n:
                #item 164
                f2 = result[i - 2]
                f1 = result[i - 1]
                fib = f1 + f2
                #item 165
                result.append(fib)
                #item 1630003
                i += 1
                _next_item_ = 1630002
                continue
            else:
                _next_item_ = 168
   
        if _next_item_ == 168:
            return result

Автор:  Владислав Жаринов [ Воскресенье, 18 Декабрь, 2011 12:04 ]
Заголовок сообщения:  Re: DRAKON Editor: эмуляция силуэта без явных БП

Ага... типа "зацикливание кейса", как в /Поликарпова, Шалыто, 2010, Гл. 2/ для кодирования автоматов... Можно реальный ЦД сделать - типа показанного на схеме в этом посте.
Практически это делается "по методу" вкладыванием простых циклов друг в друга всегда перед условием предыдущего. Обсуждалось здесь - наглядно на картинке.
Сам порядок вложения можно обеспечивать "организационно" - чисто действиями сочинителя "по инструкции", а можно "технически" - реализовав в редакторе атом "цикл Дейкстры" и операцию "Добавление ветви в ЦД", по образцу описанного здесь. Метка не нужна, но надо правильно формулировать условия входа в ветки.

Автор:  Евгений Темиргалеев [ Воскресенье, 18 Декабрь, 2011 12:19 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

По предложению Владимира Паронджанова важное замечание Петра Приклонского выделено в отдельную тему viewtopic.php?f=79&t=3723

Автор:  Степан Митькин [ Понедельник, 02 Январь, 2012 01:23 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Вышла новая версия редактора - 1.8

Реализован новый, продвинутый режим редактирования. Теперь, если взять мышкой икону и передвинуть её, вместе с иконой потянется её шампур и всё, что на нём сидит. Движущиеся иконы и линии будут толкать перед собой другие элементы диаграммы. Целостность диаграммы при этом не нарушается - линии не пересекаются, а иконы не наезжают друг на друга.

Таким же образом можно передвигать и линии.

Вставлять иконы посередине больших шампуров теперь гораздо удобнее. Так же легко можно "расчистить" место в любом месте диаграммы под новый шампур.

Для активации продвинутого режима нужно удерживать кнопку Shift.

Скачать можно здесь:
http://drakon-editor.sourceforge.net/

Автор:  Владислав Жаринов [ Понедельник, 02 Январь, 2012 13:38 ]
Заголовок сообщения:  Автоперечерчивание дракон-схем

Ну наконец-то есть, видимо, обсуждавшееся здесь в правиле ДЗ.
А почему бы этот режим не сделать основным/единственным? Ещё руку задействовать не очень удобно...

Автор:  Степан Митькин [ Понедельник, 02 Январь, 2012 14:50 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Владислав Жаринов писал(а):
А почему бы этот режим не сделать основным/единственным?

Сделать "продвинутый" режим единственным нельзя. Дело в том, что работа в этом режиме оставляет топологию диаграммы без изменений. С его помощью можно как угодно "мять" геометрическую форму диаграммы, но логические связи между иконами остаются, как были.

Зачем этот "продвинутый" режим нужен:
1) Чтобы освободить место в диаграмме для новых икон или шампуров.
2) Чтобы, наоборот, "сжать" диаграмму, устранив ненужное свободное место.
3) (Самое главное!) Чтобы навести в диаграмме красоту и эстетический порядок.

И всё это - с минимальным количеством действий.

Владислав Жаринов писал(а):
Ещё руку задействовать не очень удобно...

Согласен. Что-то надо делать. Но другие альтернативы ещё хуже:
1) Переключение режимов специальной кнопкой на панели инструментов (далеко тянуться).
2) Одномоментное переключение на манер CapsLock (легко забыть, в каком режиме находишься).

Может, можно задействовать WSAD для выбора текущего режима использования мыши?

А то сейчас так:
Ctrl - выбор нескольких объектов
Shift - "продвинутый" режим.
Средняя кнопка мыши - перемотка (скроллирование) холста.

Автор:  Владислав Жаринов [ Понедельник, 02 Январь, 2012 14:58 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

А, я имел в виду "режим" как перечерчивания. Т.е. всегда, когда по результатам редактирования изменяется пространство, занимаемое хоть одним видимым элементом представления (текстом, фигурой/линией) - перечерчиваем. Ну а как отдельная от изменений содержания возможность "перетаскивать выделение" - это само по себе...

Автор:  Владимир Паронджанов [ Понедельник, 02 Январь, 2012 17:50 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Дополнительно о Степане Митькине см. здесь
viewtopic.php?f=62&t=3743

Автор:  Степан Митькин [ Вторник, 17 Январь, 2012 00:36 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Сделал видео процесса редактирования. Версия редактора - 1.8
При просмотре можно выбрать высокое разрешение.
http://www.youtube.com/watch?v=_4PV78oSdwk

Автор:  Владислав Жаринов [ Вторник, 17 Январь, 2012 09:03 ]
Заголовок сообщения:  DRAKON Editor: генерация кода из диаграмм

Ух ты... какое "интуитивное редактирование"... Сборка из фигур и линий как из "кубиков" - тоже ничего... :)
Хорошо, что можно перетаскивать вершины, как говорил Станислав, "с отпихиванием" части содержания, в которую упирается перетаскиваемое. Конечно, отдельное окно для текста снова... но хоть не закреплённое на экране... и рисуется вблизи соответствующей вершины...
Перечерчивается вроде бы нормально.
В общем, чисто "технологически" - вроде как ура Степану! :)

Вопросы (м.б. для будущих демок):
1) Если не туда ребро/вершину поставил - как убирать?
2) Есть копипаст по выделению?
3) Как готовится к трансляции?
4) Как со многими схемами работать (скажем, с "дракон-моделью")? Есть ли понятие проекта, для которого можно посмотреть содержание (в т.ч. связи схем, если имеются)?
5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)?

М.б. есть смысл давать также текстовый вариант, как у Ефанова - если есть желание/возможность делать... ;)

Автор:  Степан Митькин [ Вторник, 17 Январь, 2012 11:23 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Спасибо за отзыв!

Владислав Жаринов писал(а):
1) Если не туда ребро/вершину поставил - как убирать?

Просто взять икону или линию "за тушку" и перетащить. Чтобы икона толкала другие элементы, нужно держать Shift.

Владислав Жаринов писал(а):
2) Есть копипаст по выделению?

Есть. Можно также выделить несколько элементов.

Владислав Жаринов писал(а):
3) Как готовится к трансляции?

Никакая особенная подготовка не требуется. Язык программирования только надо выбрать.

Владислав Жаринов писал(а):
4) Как со многими схемами работать (скажем, с "дракон-моделью")? Есть ли понятие проекта, для которого можно посмотреть содержание (в т.ч. связи схем, если имеются)?

В одном файле может быть много схем. Внутри проекта можно создать дерево папок и хранить схемы внутри них.
Связь между схемами поддерживается через элементы контекстного меню "Find all references" и "Go to definition".

Владислав Жаринов писал(а):
5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)?

А вот этого нет совсем. Декларативная часть программы (название и поля класса, например) помещается в описание файла в текстовом виде на выбранном языке программирования.
ДРАКОН хорошо отражает динамическую сторону программы, а для "анатомии", описания структуры данных требуется что-то ещё. Изучаю этот вопрос.
Есть старые наработки, например http://knarvik.sourceforge.net/

Автор:  Владислав Жаринов [ Среда, 18 Январь, 2012 10:31 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Степан Митькин писал(а):
...
Владислав Жаринов писал(а):
5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)?
А вот этого нет совсем. Декларативная часть программы (название и поля класса, например) помещается в описание файла в текстовом виде на выбранном языке программирования.
ДРАКОН хорошо отражает динамическую сторону программы, а для "анатомии", описания структуры данных требуется что-то ещё. Изучаю этот вопрос.
А, нет, значит, и того, что у Ярослава в ДРОНе (D2O)... когда объявления помещаются в вершину как особый текст (у него в комментарий)?..
Собственно, оно, может, и лучше - изучить вопрос и дать что-то... ну, перспективные предложения Ярослава вы, наверное, видели... как и мои... :)
Степан Митькин писал(а):
...
Владислав Жаринов писал(а):
3) Как готовится к трансляции?

Никакая особенная подготовка не требуется. Язык программирования только надо выбрать.
Значит, просто "мысленно отбрасываем" от полного исхтекста на языке всё, кроме арифметических и логических выражений - и их пишем в релевантные вершины схемы? А редактор при трансляции всё добавит точно по стандарту выбранного языка?

Автор:  vasili111 [ Пятница, 03 Февраль, 2012 09:55 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

Очень понравился DRAKON Editor. Спасибо Вам за его создание.
При использование столкнулся с одним багом. При экспортировании дракон-схемы в png выдает изображение с дефектами (см. приложенные файлы).
Также было бы хорошо реализовать функцию drag and drop. То есть чтобы была возможность перетаскивать иконы прямо на дракон-схему. При этом было бы хорошо, если при перетаскивании икон учитывалось зажат shift или нет, и соответственно работал обычный или продвинутый режим. То есть при зажатом shift, когда мы берем из панели инструментов икону и располагаем ее на дракон-схеме, но не отпускаем пока левую кнопку мышки, эта икона прикреплялась к остальной дракон-схеме и вся дракон-схема действовала как в продвинутом режиме. А когда мы не зажимая shift, берем из панели инструментов икону и располагаем ее на дракон-схеме, она автоматически не присоединялась бы к дракон-схеме и перемещалась отдельно от дракон-схемы.

Вложения:
Цикл ДЛЯ_2.png
Цикл ДЛЯ_2.png [ 27.94 КБ | Просмотров: 28158 ]
Цикл ДЛЯ.png
Цикл ДЛЯ.png [ 15.6 КБ | Просмотров: 28158 ]
Цикл ДЛЯ.rar [2.02 КБ]
Скачиваний: 546

Автор:  vasili111 [ Пятница, 03 Февраль, 2012 13:50 ]
Заголовок сообщения:  Re: DRAKON Editor: генерация кода из диаграмм

В иконе "Loop end" невозможно вводить текст. Это баг или фитча?

Страница 1 из 15 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/