DRAKON.SU

Текущее время: Пятница, 24 Май, 2019 20:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Дракон-схемы => на любой прогязык
СообщениеДобавлено: Среда, 04 Август, 2010 20:43 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Это переводчик схем Дракон-редактора Геннадия Тышова на любой текстовый язык программирования.

Вложение:

(Новое: уменьшен размер, обеспечена правильная распаковка)

Дополнения (помощь, варианты редактора для полей разного размера и исходный код перевода на прогязык) здесь:
http://files.mail.ru/I7WJ3O


Пройдёмся по верхам, постараюсь осветить главное:
_______________________________

I. НАСТРОЙКИ. Можно выбирать шаблон оформления и язык программирования из набора существующих. Их может быть сколько угодно.
1) Настройка шаблонов оформления:
а) создание фигур-шаблонов, по которым узнаются фигуры прогсхемы для перевода.
В шаблоне участвуют тексты фигуры и метка. Допускаются подстановочные знаки. Можно указывать и ключевые слова для распознания фигуры, и места для выражений, которые копируются из прогсхемы в прогтекст как есть.
Например:
Вложение:
1.jpg
1.jpg [ 17.35 КБ | Просмотров: 9956 ]


Здесь (в метках) слова «строк» и «отсека от» - ключевые, остальное переводится как есть.

Ключевые слова могут быть и в тексте фигуры:
Вложение:
2.jpg
2.jpg [ 27.58 КБ | Просмотров: 9956 ]

Несколько примеров для языка Дракон-Базик
(т.е. если выбран язык программирования «Basic»):
Вложение:
3.jpg
3.jpg [ 80.23 КБ | Просмотров: 9956 ]


б) Общие настройки оформления.
- Параметры «Действия»:
* через запятую,
* в каждой следующей строке -- тогда активизируется флажок «В начале строк имя приёмника»; если этот флажок включён, то
Вложение:
4.jpg
4.jpg [ 7.54 КБ | Просмотров: 9956 ]

(отдельно настраиваются отделители имени приёмника, по умолчанию – пробел и двоеточие).
- Параметры «Вставки» - то же, но могут быть ещё и в присоединяемой фигуре «Параметры».
- Текст фигуры ложного варианта. Вариант с одним из этих текстов переводится как ложный (Case Else или Default).
в) Пометки маршрутной части (русские подсказки, которые пишутся в прогфайл для облегчения понимания).

2) Настройка языков программирования:
а) расширение прогфайла,
б) ключевые слова прогязыка,
в) определение перевода фигур-шаблонов на прогязык:

- код для данной фигуры;
- объявления библиотек или подфункции, которые добавляются в специальный файл в проекте, если данная фигура хоть раз использована;
- разделители строк этажа (символы, которые пишутся в прогфайл при разрыве строки в тексте фигуры). В качестве разделителя строк можно указать повтор. Например, если у этой фигуры разделитель строк нижнего этажа – повтор, то
Вложение:
5.jpg
5.jpg [ 15 КБ | Просмотров: 9956 ]


3) Куда сохранять прогфайлы. Путь относительно исходного Дракон-проекта.
4) Команды после сборки. Здесь могут быть:
программа дополнительной обработки кода,
программа для сборки проекта на прогязыке,
командная строка для компилятора
и т.п.
Получается, что достаточно в Дракон-редакторе нажать одну клавишу —
и нарисованная программа запускается.


С настройками всё.
_____________________


II. Удобочитаемый прогтекст.
Вложение:
6.jpg
6.jpg [ 29.89 КБ | Просмотров: 9956 ]


переводится так:


Код:
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
7Новый_1.png [ 1.17 КБ | Просмотров: 9956 ]

На другой фигуре – обрабатывается, как установлено в настройках выбранного языка оформления.



V. Использование текстовых приложений.

Первое и второе переписываются закомментированными, а в третьем приложении:
листа – объявления уровня листа (переписывается как есть в начале модуля),
схемы – объявления уровня схемы (переписывается как есть в начале схемы),
фигуры – программный код. Если оно есть, оно и переписывается, а текст фигуры – закомментирован. Иначе обрабатывается текст фигуры.


VI. Cистема обработки ошибок. Если:
схемы с одинаковыми заголовками,
одинаковые имена веток в одной схеме,
пустой адрес,
фигура не совпадает с шаблоном,
у Вставки есть фигура «Параметры», хотя задан режим «в каждой строке»,
Вставка содержит несколько строк, хотя задан режим «В Параметрах»,

то выдаётся подробное сообщение ошибки, где указываются:
лист (если их несколько),
схема (если на листе несколько схем),
фигура (её метка и тексты обоих этажей)

и суть ошибки.



VII. Автоматическая сборка проекта.
Не нужна фигура «Сборка текста» и «Проект». Считается, что проект – это папка с Дракон-схемами, в которой находится редактируемая схема. Поэтому программа берёт заголовок окна Дракон-редактора – там полный путь текущей схемы – и переводит эту схему и все остальные DRT-файлы в этой папке. Затем (если заданы настройки и есть программа сборки) автоматически создаёт проект на код-языке и запускает созданную программу.
Можно также перенести на значок программы (указать в качестве параметра) файл (тогда переводится только он) или папку (переведутся все файлы в ней).


VIII. Система настроек для людей.

Настройки производятся через специальную программу – «Настройки.exe»:

Вложение:
8Настройки.jpg
8Настройки.jpg [ 37.89 КБ | Просмотров: 9956 ]


Сами настройки хранятся в разных файлах. В основном это Дракон-схемы и внутренние файлы настроек, которыми управляет эта же настрой-программа, создавая «дочерние окна»:

Вложение:
9Настройки яз оф.jpg
9Настройки яз оф.jpg [ 39.65 КБ | Просмотров: 9956 ]





IX. Большая справка в Дракон-схемах.





Х. Вдобавок ко всему, публикую исходный код (vb 6).






_____________________________________________

Да, чуть не забыл. Моя программа предназначена для перевода на абсолютно любой прогязык, НО, к сожалению, пока есть шаблон только для языка Visual Basic. Но это не страшно: ведь шаблоны прогязыка создавать очень легко. Дело в том, что я совершенно не знаю других прогязыков, а специально изучать их, думаю, нерационально, да и ошибок наваляю, не зная специфики. На первых порах, чтобы пользоваться программой «Дракон - куда хошь», пусть каждый напишет шаблон для своего прогязыка. А заодно и опубликует. Как только появятся шаблоны для Дельфина, Обертона, С и т.д, - программа станет полноценной. Правильно?

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




Спасибо за внимание!


Последний раз редактировалось С. Тарасенко Воскресенье, 05 Декабрь, 2010 21:46, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 04 Август, 2010 20:56 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
В принципе, это архив из темы
"Улучшенные варианты Дракон-редактора"
(viewtopic.php?f=79&t=2604),
но в этой теме предлагаю обсудить именно перевод схем в текст.

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

К сожалению, моя программа привязана к версии DRAKON_2010_06_01. В поздних версиях редактора вторично изменён формат файлов, поэтому переводчик работать не будет. Но если будут интересующиеся - адаптирую под новый формат.


Последний раз редактировалось С. Тарасенко Суббота, 04 Декабрь, 2010 17:20, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Август, 2010 13:33 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Возможные ошибки:
1. При запуске "Дракон.ехе" пишет длинное сообщение и в конце "Invalid hotkey".
Значит, у вас по умолчанию стоит английская раскладка.
1) Скачайте
Вложение:

2) Распакуйте с заменой в папку "Дракон".

2. При вызове "Создать программу по файлу" пишет "Error optning destination file".

1) Снимите атрибуты "Только чтение" у вех файлов в папке (главное - у файла "Дракон.ехе").
2) Если всё равно не работает, посмотрите в "трей" - там должен быть значон Дракона. Если он есть, закройте все окна Дракона. Если окна закрыты, нажмите на значок правой кнопной и "Exit". После этого всё должно работать.

3. Что-то другое...
Пишите сюда или личным - буду рад. Исправлю ошибку, а не удастся - пополню этот список.


Последний раз редактировалось С. Тарасенко Понедельник, 23 Август, 2010 10:05, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 11 Август, 2010 05:09 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1442
С. Тарасенко писал(а):
Ветки переводятся как метки (плохие символы в названиях заменяются на похожие, которые прогязык распознаёт как допустимые).

Наконец-то есть прототипный дракон-конвертор для Ты-среды :)
Относительно других языков - интересно было бы переводить силуэт, которого нигде нет :) (а Info21 выступал против расширения структурных текстовых языков, вроде Оберона, операторами границ веток, и где-то с ним можно согласиться), в цикл Дейкстры, который кое-где есть - напр., в Обероне-07:
Вложение:
Комментарий к файлу: Описание цикла Дейкстры на текстовых прогязыках
Вирт-АлгоСтр2010-Прил_С(цикл_Дейкстры).djvu [17.18 КБ]
Скачиваний: 281

или в этом языке спецификаций (из приложений к этой книге):
Вложение:
Комментарий к файлу: Руководство по ModelChecking-среде Spin, включая её входной язык Promela
Guige_Spin(Promela).pdf [1.25 МБ]
Скачиваний: 1360

Возможность такого перевода обсуждается пока в этом примере; если выкладки правильны, то можно реализовывать... хотя неплохо, чтобы и сам редактор Ты-среды поддерживал такое преобразование для избранных языков.

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

P.S. В результате получается, по сути, дейкстрал-диоформа визуала. Допускающая формальное построение и верификацию структуры маршрутов. Практическое приложение обсуждается, в частности, в этом примере.


Последний раз редактировалось Владислав Жаринов Вторник, 06 Декабрь, 2011 18:52, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 11 Август, 2010 05:12 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1442
С. Тарасенко писал(а):
III. Поддержка схем любой сложности. Куда угодно можно пересаживать лианы и петли циклов - на другие шампуры, на другие адреса веток и т.д.

Интересно, что можно и редактировать DRT-схемы.
Мне кажется, лучше не пересаживать куда угодно, а всё-таки соблюдать базовые запреты техноязыка и воспользоваться предложением Ильи в этом сообщении. Возможно, введённая мной для перевода "силуэт-ЦД" разметка вершин (или подобная) тоже годится для формулировки правил нестрогого редактирования (фактически - отношений между лианами, проверяемых при пересадке/заземлении).
Кстати, пересадка "куда угодно", помимо прочего, означает, что структура маршрутов принимает вид "спагетти", и её без явных БП не запишешь текстом, т.е. на структурные текстовые языки перевод невозможен. Это ещё один аргумент за сохранение запретов техноязыка (а в ряде случаев нужно отказаться и от пересадок лиан, т.к. их результаты тоже не везде выразимы).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 12 Август, 2010 20:08 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Драконограф писал(а):
Мне кажется, лучше не пересаживать куда угодно, а всё-таки соблюдать базовые запреты техноязыка

Запреты соблюдаются. Ну естественно, структуры, которые Ты-редактор не позволяет создать, не переводятся. А Ты-среда отлично реализует все запреты.

"Куда угодно" - это относительно ДРОНа, где движение разрешено строго сверху вниз и слева направо плюс естественные циклы. Здесь же циклы могут быть неестественными - тогда они переводятся с использованием GOTO. Вот и всё!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 13 Август, 2010 16:38 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
До октября отвечать, скорее всего, не смогу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Дракон-схемы => на Оберон-2
СообщениеДобавлено: Пятница, 27 Август, 2010 08:10 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1442
Ежели кто действительно захочет заложить конверсию в Оберон-2, пущай здесь будет для удобства:
Вложение:
Свердлов-ЯПиМТ-Прил1(специф_О-2).djvu [375.69 КБ]
Скачиваний: 281

P.S. Одной спецификации м.б. мало, также здесь введение в язык:
Вложение:
Комментарий к файлу: Введение в Оберон-2 и родственные языки, обзор концепций АТД и ООП
Свердлов-ЯПиМТ-Языки(АТД+ООП+Конц).djvu [822.2 КБ]
Скачиваний: 451

Само собой, предназначено для ознакомления, научных, культурных и полемических целей.


Последний раз редактировалось Владислав Жаринов Воскресенье, 05 Сентябрь, 2010 03:44, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Ещё о Дракон-схемы => на Оберон-2
СообщениеДобавлено: Суббота, 28 Август, 2010 11:26 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1442
Есть также вопросы по стандарту языка (возможно, документ был где-то на конференции):
Вложение:
CritiqueOberonLanguage_RUS.pdf [173.59 КБ]
Скачиваний: 444

Интересно, что одно из предложений также связано с ограничением числовых типов только целыми, как и для верификации по model checking. Что из этого следует - см. в этом сообщении.
Если считать, что Оберон-программа есть реализация спецификации, верифицированной в ModelChecking-среде (конкретно - в Spin), то также имеем вопрос с соответствием отражения взаимодействия процессов - в АО принят механизм кринтервалов (AWAIT), а в Promela, как и в техноязыке - рандеву...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 05 Декабрь, 2010 21:52 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Ничего тут не пойму. Смех: создал тему и ничего в ней не понимаю...

Сейчас есть идея заняться отладкой схем. Работаю медленно, т.к. есть и другие дела.

Новых версий перевода схем в текст не предвидится (во всяком случае пока не будет вопросов со стороны пользователей).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 08 Декабрь, 2010 06:14 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1442
С. Тарасенко писал(а):
Ничего тут не пойму. Смех: создал тему и ничего в ней не понимаю...

Да это постепенно придёт :) формулируйте конкретные вопросы - тогод, возможно, и ответы найдутся :wink:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2019, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB