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)" - здесь преобразовать нельзя, т.к. скобки не сбалансированы. Сейчас я загнал все выражение в икону действие. Как можно более эргономично записать такую ситуацию и вообще работу с исключениями в других языках программирования? Это не совсем ветвление, поэтому икона "Вопрос" не подойдет.
|
Автор: | Владислав Жаринов [ Вторник, 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 | ||
Новая версия схемы
|
Автор: | Владислав Жаринов [ Пятница, 03 Сентябрь, 2010 04:55 ] |
Заголовок сообщения: | Ещё о визуальном синтаксисе |
usr345 писал(а): Новая версия схемы Одно соображение - у Вас в качестве боковика к заголовку присоединена икона Полка. На мой взгляд, в принципе это имеет смысл, если дракон-схема визуализирует нечто эквивалентное процедуре, связанной с типом запись в Обероне (спецификацию языка см. вложение в это сообщение) - тогда удобно на верхнем этаже записывать параметр-приёмник, а на нижнем - то, что обычно пишется в иконе Формальные параметры - получается новая макроикона Заголовок с типом. Как я понимаю, у Вас алгоритм не изображает такого рода процедуру (выбираемую для вызова сообразно динамическому типу значения приёмника из числа одноимённых, что даёт эквивалент полиморфизма метода)? Тогда разумнее классическая макроикона Заголовок с параметрами. |
Автор: | usr345 [ Пятница, 03 Сентябрь, 2010 06:14 ] |
Заголовок сообщения: | Re: Как изобразить condition-case в ДРАКОН-Lisp |
Драконограф, покажите, пожалуйста, как использовать икону Заголовок с параметрами - у Паронджанова в книге не нашел. На вашем сайте долго искать. |
Автор: | Владислав Жаринов [ Пятница, 03 Сентябрь, 2010 20:01 ] |
Заголовок сообщения: | Re: Как изобразить condition-case в ДРАКОН-Lisp |
usr345 писал(а): Драконограф, покажите, пожалуйста, как использовать икону Заголовок с параметрами - у Паронджанова в книге не нашел. На вашем сайте долго искать. Конкретно можно посмотреть в графчасти этого примера - там между визуалами дракон-инструкции параметры передаются. Наверное, поиск по сайту облегчил бы предметный указатель - может быть, когда-нибудь что-то такое и появится ![]() Что касается заголовка с типом - этого и там нет, только сейчас придумал, когда с визуализацией Оберон-программ стал разбираться ![]() |
Автор: | Владимир Паронджанов [ Понедельник, 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/ |