Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 17, 2024 01:42

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: надумалась конструкция DEMAND REJECT
СообщениеДобавлено: Пн авг 18, 2008 22:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
пока вот какие размышления вышли:

Код:
\ 2008-08-17 ~mOleg
\ Сopyright [C] 2008 mOleg mininoleg@yahoo.com

.\lib\util\errors.f

\ код, вызываемый перед началом секции DEMAND
: (demand) ( --> )
           R@ CELL + CATCH
           IF R> @ EXECUTE
            ELSE RDROP
           THEN ;

\ начинает описатель обязатеьной для выполнения секции
: DEMAND ( --> )
         COMPILE (demand)
         HERE 0 A, 50689035
         ; IMMEDIATE

\ после этого слова
: REJECT ( --> )
         50689035 <> ABORT" несбалансированная конструкция"
         RET, HERE SWAP A! ; IMMEDIATE

\ пример использования конструкции
: sample ." foreword "  CR
         DEMAND ." try something" CR
         -1 THROW
         REJECT ." if something fails" CR
         ;


по сути прямая аналогия следующего кода:
Код:
... foreword ['] try_something CATCH IF if_something_fails THEN ...

но с другим синтаксисом и без необходимости оформления кода try_something в отдельном определении.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 20, 2008 02:31 
~day/lib/try.f
~ss/lib/except/try.f

Имена TRY, EXCEPT, FINALLY подходят лучше, чем DEMAND и REJECT.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 20, 2008 03:33 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Гость писал(а):
~day/lib/try.f

угу, видел.
Отличия есть, впрочем и вопросы тоже есть.
1) действительно ли надо сохранять стек данных?
2) нужен ли код ошибки?
S" LITERAL CATCH TRAP-CODE" EVALUATE - увидев эту дикость я в сторону day больше не смотрел.
(очень опасная методика, хотя и изящная по-своему)

Гость писал(а):
~ss/lib/except/try.f

это значительно интереснее, и его я только сейчас увидел. Спасибо за наводку!

Да, насчет синтаксиса я согласен, что не очень удачно, но мне как раз хотелось не повторять этих самых TRY TRAP .

Кстати, насчет вопроса 1. у ~ss стек данных не сохраняется.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 20, 2008 04:14 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
3) на столько ли удачны эти самые try finally end-try , try except end-try ?
заимствование не очень удачно в данном случае выглядит для форта

К сожалению я не нашел ни одного реального применения в рамках SPF использования данных либ...

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 20, 2008 09:36 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
3) на столько ли удачны эти самые try finally end-try , try except end-try ?
заимствование не очень удачно в данном случае выглядит для форта

К сожалению я не нашел ни одного реального применения в рамках SPF использования данных либ...

Естественно - калька с Дельфи тут мало уместна.


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB