DRAKON.SU https://forum.drakon.su/ |
|
Дракон-схемы => на любой прогязык https://forum.drakon.su/viewtopic.php?f=143&t=2768 |
Страница 1 из 1 |
Автор: | С. Тарасенко [ Среда, 04 Август, 2010 20:43 ] |
Заголовок сообщения: | Дракон-схемы => на любой прогязык |
Это переводчик схем Дракон-редактора Геннадия Тышова на любой текстовый язык программирования. Вложение: (Новое: уменьшен размер, обеспечена правильная распаковка) Дополнения (помощь, варианты редактора для полей разного размера и исходный код перевода на прогязык) здесь: http://files.mail.ru/I7WJ3O Пройдёмся по верхам, постараюсь осветить главное: _______________________________ I. НАСТРОЙКИ. Можно выбирать шаблон оформления и язык программирования из набора существующих. Их может быть сколько угодно. 1) Настройка шаблонов оформления: а) создание фигур-шаблонов, по которым узнаются фигуры прогсхемы для перевода. В шаблоне участвуют тексты фигуры и метка. Допускаются подстановочные знаки. Можно указывать и ключевые слова для распознания фигуры, и места для выражений, которые копируются из прогсхемы в прогтекст как есть. Например: Вложение: Здесь (в метках) слова «строк» и «отсека от» - ключевые, остальное переводится как есть. Ключевые слова могут быть и в тексте фигуры: Вложение: Несколько примеров для языка Дракон-Базик (т.е. если выбран язык программирования «Basic»): Вложение: б) Общие настройки оформления. - Параметры «Действия»: * через запятую, * в каждой следующей строке -- тогда активизируется флажок «В начале строк имя приёмника»; если этот флажок включён, то Вложение: 4.jpg [ 7.54 КБ | Просмотров: 15415 ] (отдельно настраиваются отделители имени приёмника, по умолчанию – пробел и двоеточие). - Параметры «Вставки» - то же, но могут быть ещё и в присоединяемой фигуре «Параметры». - Текст фигуры ложного варианта. Вариант с одним из этих текстов переводится как ложный (Case Else или Default). в) Пометки маршрутной части (русские подсказки, которые пишутся в прогфайл для облегчения понимания). 2) Настройка языков программирования: а) расширение прогфайла, б) ключевые слова прогязыка, в) определение перевода фигур-шаблонов на прогязык: - код для данной фигуры; - объявления библиотек или подфункции, которые добавляются в специальный файл в проекте, если данная фигура хоть раз использована; - разделители строк этажа (символы, которые пишутся в прогфайл при разрыве строки в тексте фигуры). В качестве разделителя строк можно указать повтор. Например, если у этой фигуры разделитель строк нижнего этажа – повтор, то Вложение: 5.jpg [ 15 КБ | Просмотров: 15415 ] 3) Куда сохранять прогфайлы. Путь относительно исходного Дракон-проекта. 4) Команды после сборки. Здесь могут быть: программа дополнительной обработки кода, программа для сборки проекта на прогязыке, командная строка для компилятора и т.п. Получается, что достаточно в Дракон-редакторе нажать одну клавишу — и нарисованная программа запускается. С настройками всё. _____________________ II. Удобочитаемый прогтекст. Вложение: переводится так: Код: Sub Заголовок '[Объявления уровня задачи:] Объявления... If not вопрос1 then If not Нет1 - вопрос 3 then Нет3 GoTo 2 'через 13 строк End If 'Конец условия Нет1 - вопрос 3 Да3 GoTo 1 'через 6 строк End If 'Конец условия вопрос1 If да1- вопрос2 then да2 else 'Если не да1- вопрос2 нет2 1 'Сюда переходим, если не вопрос1 нет2 и да3 End If 'Конец условия да1- вопрос2 2 'Сюда переходим, если не Нет1 - вопрос 3 После в1 End Sub '[Этот модуль создан 02.02.2010] III. Поддержка схем любой сложности. Куда угодно можно пересаживать лианы и петли циклов - на другие шампуры, на другие адреса веток и т.д. Ветки переводятся как метки (плохие символы в названиях заменяются на похожие, которые прогязык распознаёт как допустимые). IV. Широкое использование птичек и меток. Птичка равносильна знаку комментария. Птичка на фигуре: «Заголовок» - пропускаем всю схему, «Вопрос»- пропускаем сам вопрос и всё в правом выходе, «Выбор»- переходим на ложный вариант (если есть) и пишем только его содержимое, «Вариант» - перескакиваем на следующий вариант, «Начало цикла Для» - освобождаем все фигуры этого цикла от зацикленности, «Конец цикла» - если на начале этого цикла птички не было, то всё равно пишем, На другой фигуре - пропускаем эту фигуру. Метка на фигуре: «Заголовок» - переписываем метку как есть перед обозначением процедуры (напр, заголовок Сохранение с меткой Public переводится на vb как Public Sub Сохранение (или Public Function Сохранение, если схема с возвратом). «Действие» и «Вставка» - метка рассматривается как переменная, значение которой нужно изменить по возврату фигуры. Метка переписывается перед действием, а если в конце метки нет математического знака, то после неё добавляется знак =. Например, Вложение: 7Новый_1.png [ 1.17 КБ | Просмотров: 15415 ] На другой фигуре – обрабатывается, как установлено в настройках выбранного языка оформления. V. Использование текстовых приложений. Первое и второе переписываются закомментированными, а в третьем приложении: листа – объявления уровня листа (переписывается как есть в начале модуля), схемы – объявления уровня схемы (переписывается как есть в начале схемы), фигуры – программный код. Если оно есть, оно и переписывается, а текст фигуры – закомментирован. Иначе обрабатывается текст фигуры. VI. Cистема обработки ошибок. Если: схемы с одинаковыми заголовками, одинаковые имена веток в одной схеме, пустой адрес, фигура не совпадает с шаблоном, у Вставки есть фигура «Параметры», хотя задан режим «в каждой строке», Вставка содержит несколько строк, хотя задан режим «В Параметрах», то выдаётся подробное сообщение ошибки, где указываются: лист (если их несколько), схема (если на листе несколько схем), фигура (её метка и тексты обоих этажей) и суть ошибки. VII. Автоматическая сборка проекта. Не нужна фигура «Сборка текста» и «Проект». Считается, что проект – это папка с Дракон-схемами, в которой находится редактируемая схема. Поэтому программа берёт заголовок окна Дракон-редактора – там полный путь текущей схемы – и переводит эту схему и все остальные DRT-файлы в этой папке. Затем (если заданы настройки и есть программа сборки) автоматически создаёт проект на код-языке и запускает созданную программу. Можно также перенести на значок программы (указать в качестве параметра) файл (тогда переводится только он) или папку (переведутся все файлы в ней). VIII. Система настроек для людей. Настройки производятся через специальную программу – «Настройки.exe»: Вложение: Сами настройки хранятся в разных файлах. В основном это Дракон-схемы и внутренние файлы настроек, которыми управляет эта же настрой-программа, создавая «дочерние окна»: Вложение: IX. Большая справка в Дракон-схемах. Х. Вдобавок ко всему, публикую исходный код (vb 6). _____________________________________________ Да, чуть не забыл. Моя программа предназначена для перевода на абсолютно любой прогязык, НО, к сожалению, пока есть шаблон только для языка Visual Basic. Но это не страшно: ведь шаблоны прогязыка создавать очень легко. Дело в том, что я совершенно не знаю других прогязыков, а специально изучать их, думаю, нерационально, да и ошибок наваляю, не зная специфики. На первых порах, чтобы пользоваться программой «Дракон - куда хошь», пусть каждый напишет шаблон для своего прогязыка. А заодно и опубликует. Как только появятся шаблоны для Дельфина, Обертона, С и т.д, - программа станет полноценной. Правильно? Да и шаблон оформления можно значительно расширить. Ведь все настройки представляют собой файлы, расфасованные по папкам, и публиковать отдельные пункты настроек не составит никакого труда. Спасибо за внимание! |
Автор: | С. Тарасенко [ Среда, 04 Август, 2010 20:56 ] |
Заголовок сообщения: | |
В принципе, это архив из темы "Улучшенные варианты Дракон-редактора" (viewtopic.php?f=79&t=2604), но в этой теме предлагаю обсудить именно перевод схем в текст. Архив содержит сам Дракон-редактор Геннадия Тышова подходящей версии (несколько изменённый), переводчик на текстовые языки и полную справку обо всём этом. К сожалению, моя программа привязана к версии DRAKON_2010_06_01. В поздних версиях редактора вторично изменён формат файлов, поэтому переводчик работать не будет. Но если будут интересующиеся - адаптирую под новый формат. |
Автор: | С. Тарасенко [ Четверг, 05 Август, 2010 13:33 ] |
Заголовок сообщения: | Re: Дракон-схемы => на любой прогязык |
Возможные ошибки: 1. При запуске "Дракон.ехе" пишет длинное сообщение и в конце "Invalid hotkey". Значит, у вас по умолчанию стоит английская раскладка. 1) Скачайте Вложение: 2) Распакуйте с заменой в папку "Дракон". 2. При вызове "Создать программу по файлу" пишет "Error optning destination file". 1) Снимите атрибуты "Только чтение" у вех файлов в папке (главное - у файла "Дракон.ехе"). 2) Если всё равно не работает, посмотрите в "трей" - там должен быть значон Дракона. Если он есть, закройте все окна Дракона. Если окна закрыты, нажмите на значок правой кнопной и "Exit". После этого всё должно работать. 3. Что-то другое... Пишите сюда или личным - буду рад. Исправлю ошибку, а не удастся - пополню этот список. |
Автор: | Владислав Жаринов [ Среда, 11 Август, 2010 05:09 ] |
Заголовок сообщения: | О переводе схем на ТЯП и верификации |
С. Тарасенко писал(а): Ветки переводятся как метки (плохие символы в названиях заменяются на похожие, которые прогязык распознаёт как допустимые). Наконец-то есть прототипный дракон-конвертор для Ты-среды Относительно других языков - интересно было бы переводить силуэт, которого нигде нет (а Info21 выступал против расширения структурных текстовых языков, вроде Оберона, операторами границ веток, и где-то с ним можно согласиться), в цикл Дейкстры, который кое-где есть - напр., в Обероне-07: Вложение:
Комментарий к файлу: Описание цикла Дейкстры на текстовых прогязыках Вирт-АлгоСтр2010-Прил_С(цикл_Дейкстры).djvu [17.18 КБ] Скачиваний: 532 или в этом языке спецификаций (из приложений к этой книге): Вложение:
Комментарий к файлу: Руководство по ModelChecking-среде Spin, включая её входной язык Promela Guige_Spin(Promela).pdf [1.25 МБ] Скачиваний: 2382 Возможность такого перевода обсуждается пока в этом примере; если выкладки правильны, то можно реализовывать... хотя неплохо, чтобы и сам редактор Ты-среды поддерживал такое преобразование для избранных языков. Для перевода на прогязыки с модуляризацией структуры программы (таких, как Оберон), надо бы ещё ввести граф-язык визуализации модульной структуры (ДРАКОН годится только для визуализации импер-части тела модуля). P.S. В результате получается, по сути, дейкстрал-диоформа визуала. Допускающая формальное построение и верификацию структуры маршрутов. Практическое приложение обсуждается, в частности, в этом примере. |
Автор: | Владислав Жаринов [ Среда, 11 Август, 2010 05:12 ] |
Заголовок сообщения: | О преобразовании структуры дракон-схем |
С. Тарасенко писал(а): III. Поддержка схем любой сложности. Куда угодно можно пересаживать лианы и петли циклов - на другие шампуры, на другие адреса веток и т.д. Интересно, что можно и редактировать DRT-схемы. Мне кажется, лучше не пересаживать куда угодно, а всё-таки соблюдать базовые запреты техноязыка и воспользоваться предложением Ильи в этом сообщении. Возможно, введённая мной для перевода "силуэт-ЦД" разметка вершин (или подобная) тоже годится для формулировки правил нестрогого редактирования (фактически - отношений между лианами, проверяемых при пересадке/заземлении). Кстати, пересадка "куда угодно", помимо прочего, означает, что структура маршрутов принимает вид "спагетти", и её без явных БП не запишешь текстом, т.е. на структурные текстовые языки перевод невозможен. Это ещё один аргумент за сохранение запретов техноязыка (а в ряде случаев нужно отказаться и от пересадок лиан, т.к. их результаты тоже не везде выразимы). |
Автор: | С. Тарасенко [ Четверг, 12 Август, 2010 20:08 ] |
Заголовок сообщения: | Re: О преобразовании структуры дракон-схем |
Драконограф писал(а): Мне кажется, лучше не пересаживать куда угодно, а всё-таки соблюдать базовые запреты техноязыка Запреты соблюдаются. Ну естественно, структуры, которые Ты-редактор не позволяет создать, не переводятся. А Ты-среда отлично реализует все запреты. "Куда угодно" - это относительно ДРОНа, где движение разрешено строго сверху вниз и слева направо плюс естественные циклы. Здесь же циклы могут быть неестественными - тогда они переводятся с использованием GOTO. Вот и всё! |
Автор: | С. Тарасенко [ Пятница, 13 Август, 2010 16:38 ] |
Заголовок сообщения: | Re: Дракон-схемы => на любой прогязык |
До октября отвечать, скорее всего, не смогу. |
Автор: | Владислав Жаринов [ Пятница, 27 Август, 2010 08:10 ] |
Заголовок сообщения: | Дракон-схемы => на Оберон-2 |
Ежели кто действительно захочет заложить конверсию в Оберон-2, пущай здесь будет для удобства: Вложение: P.S. Одной спецификации м.б. мало, также здесь введение в язык: Вложение:
Комментарий к файлу: Введение в Оберон-2 и родственные языки, обзор концепций АТД и ООП Свердлов-ЯПиМТ-Языки(АТД+ООП+Конц).djvu [822.2 КБ] Скачиваний: 686 Само собой, предназначено для ознакомления, научных, культурных и полемических целей. |
Автор: | Владислав Жаринов [ Суббота, 28 Август, 2010 11:26 ] |
Заголовок сообщения: | Ещё о Дракон-схемы => на Оберон-2 |
Есть также вопросы по стандарту языка (возможно, документ был где-то на конференции): Вложение: Интересно, что одно из предложений также связано с ограничением числовых типов только целыми, как и для верификации по model checking. Что из этого следует - см. в этом сообщении. Если считать, что Оберон-программа есть реализация спецификации, верифицированной в ModelChecking-среде (конкретно - в Spin), то также имеем вопрос с соответствием отражения взаимодействия процессов - в АО принят механизм кринтервалов (AWAIT), а в Promela, как и в техноязыке - рандеву... |
Автор: | С. Тарасенко [ Воскресенье, 05 Декабрь, 2010 21:52 ] |
Заголовок сообщения: | Re: О преобразовании структуры дракон-схем |
Ничего тут не пойму. Смех: создал тему и ничего в ней не понимаю... Сейчас есть идея заняться отладкой схем. Работаю медленно, т.к. есть и другие дела. Новых версий перевода схем в текст не предвидится (во всяком случае пока не будет вопросов со стороны пользователей). |
Автор: | Владислав Жаринов [ Среда, 08 Декабрь, 2010 06:14 ] |
Заголовок сообщения: | Re: О преобразовании структуры дракон-схем |
С. Тарасенко писал(а): Ничего тут не пойму. Смех: создал тему и ничего в ней не понимаю... Да это постепенно придёт формулируйте конкретные вопросы - тогод, возможно, и ответы найдутся |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |