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

Как изобразить condition-case в ДРАКОН-Lisp
https://forum.drakon.su/viewtopic.php?f=78&t=2774
Страница 1 из 1

Автор:  usr345 [ Понедельник, 09 Август, 2010 22:38 ]
Заголовок сообщения:  Как изобразить condition-case в ДРАКОН-Lisp

Я нарисовал схему функции на комбинированном языке ДРАКОН-Lisp. В emacs-lisp есть оператор condition-case. Выражение:

(condition-case nil
(read prop)
(error prop))

получает строку prop. функция read пытается преобразовать ее из строкового формата в Lisp-выражение. Если произошла ошибка (prop невозможно преобразовать), то condition-case вернет непреобразованную prop.
Например:

prop

"(1 2 3)" -> (1 2 3) - здесь строка преобразована в список
"((1 2 3)" -> "((1 2 3)" - здесь преобразовать нельзя, т.к. скобки не сбалансированы.

Сейчас я загнал все выражение в икону действие. Как можно более эргономично записать такую ситуацию и вообще работу с исключениями в других языках программирования? Это не совсем ветвление, поэтому икона "Вопрос" не подойдет.

Вложения:
Комментарий к файлу: Полная схема функции
org-collector.pdf [6.8 КБ]
Скачиваний: 534

Автор:  Владислав Жаринов [ Вторник, 17 Август, 2010 04:54 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

usr345 в viewtopic.php?p=50456#p50456 писал(а):
"(1 2 3)" -> (1 2 3) - здесь строка преобразована в список
"((1 2 3)" -> "((1 2 3)" - здесь преобразовать нельзя, т.к. скобки не сбалансированы.

Сейчас я загнал все выражение в икону действие. Как можно более эргономично записать такую ситуацию и вообще работу с исключениями в других языках программирования? Это не совсем ветвление, поэтому икона "Вопрос" не подойдет.

Имеется в виду, что последнее Действие на главной вертикали надо рассматривать как укрупнённое?
Видимо, нужно выявить признаки, которыми определяется условие "можно ли преобразовать строку в список?" и сформулировать условие от них. Очевидно, признаки в данном случае будут отражать результат работы read (на чём "споткнулся" разборщик строки). Тем самым "не совсем ветвление" станет ветвлением, и на маршруте, где цель укрупнённого действия не достигается, можно предусмотреть обработку этой ситуации. По-моему, так.
Кстати, а что за переменная выбора cond в переключателе? В полке данных не объявлена... вообще формат объявлений хорошо бы уточнить, раз язык "нетиповой".

Автор:  usr345 [ Вторник, 24 Август, 2010 09:20 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

cond - это не переменная, а ключевое слово в Lisp типа switch из С++.

Цитата:
формат объявлений хорошо бы уточнить, раз язык "нетиповой"


Сделаю.

Автор:  Владислав Жаринов [ Вторник, 24 Август, 2010 10:35 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

[quote="usr345"]cond - это не переменная, а ключевое слово в Lisp типа switch из С++.

А-а, так это маршрутный оператор... получается, он должен кодироваться графикой иконы (в данном случае - Выбор)... правда, это в предположении, что у нас есть полноценный стандарт дракон-ЛИСП и редактор-транслятор :)

Автор:  usr345 [ Вторник, 24 Август, 2010 17:20 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

Новая версия схемы

Вложения:
org-collector.pdf [6.94 КБ]
Скачиваний: 495

Автор:  Владислав Жаринов [ Пятница, 03 Сентябрь, 2010 04:55 ]
Заголовок сообщения:  Ещё о визуальном синтаксисе

usr345 писал(а):
Новая версия схемы

Одно соображение - у Вас в качестве боковика к заголовку присоединена икона Полка. На мой взгляд, в принципе это имеет смысл, если дракон-схема визуализирует нечто эквивалентное процедуре, связанной с типом запись в Обероне (спецификацию языка см. вложение в это сообщение) - тогда удобно на верхнем этаже записывать параметр-приёмник, а на нижнем - то, что обычно пишется в иконе Формальные параметры - получается новая макроикона Заголовок с типом.
Как я понимаю, у Вас алгоритм не изображает такого рода процедуру (выбираемую для вызова сообразно динамическому типу значения приёмника из числа одноимённых, что даёт эквивалент полиморфизма метода)? Тогда разумнее классическая макроикона Заголовок с параметрами.

Автор:  usr345 [ Пятница, 03 Сентябрь, 2010 06:14 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

Драконограф, покажите, пожалуйста, как использовать икону Заголовок с параметрами - у Паронджанова в книге не нашел. На вашем сайте долго искать.

Автор:  Владислав Жаринов [ Пятница, 03 Сентябрь, 2010 20:01 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

usr345 писал(а):
Драконограф, покажите, пожалуйста, как использовать икону Заголовок с параметрами - у Паронджанова в книге не нашел. На вашем сайте долго искать.

Конкретно можно посмотреть в графчасти этого примера - там между визуалами дракон-инструкции параметры передаются. Наверное, поиск по сайту облегчил бы предметный указатель - может быть, когда-нибудь что-то такое и появится :wink:
Что касается заголовка с типом - этого и там нет, только сейчас придумал, когда с визуализацией Оберон-программ стал разбираться :)

Автор:  Владимир Паронджанов [ Понедельник, 14 Май, 2012 20:27 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

Даю ссылку на работу usr345 по Латех.

Полное название
Цитата:
Создание дракон-схем на базе LaTeX пакета pgf/tikz

http://dxdy.ru/topic43519.html

Возможно, кому-нибудь пригодится

Автор:  Владислав Жаринов [ Понедельник, 23 Июль, 2012 11:09 ]
Заголовок сообщения:  Re: Как изобразить condition-case в ДРАКОН-Lisp

Кстати, по работе в ЛаТеКс есть такой ресурс: http://eskdx.org.ua/. Там об оформлении документов по ЕСКД - но также разбираются некоторые особенности языка.

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