Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:37

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: конструкции || && ** ==
СообщениеДобавлено: Вт янв 20, 2009 22:08 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
<pre>
\ 2009-01-20 ~mOleg
\ Сopyright [C] 2009 mOleg mininoleg@yahoo.com
\ || && ** ==

\ вернуть адрес слова, скомпилированного в коде по указанному адресу
?DEFINED TOKEN@ : TOKEN@ ( addr --> xt ) DUP 1 + A@ + CFL + ;

\ см описание ||
: (|) ( r: addr --> flag )
R@ TOKEN@ EXECUTE
*IF ELSE DROP R@ CFL + TOKEN@ EXECUTE THEN
[ CFL DUP + ] LITERAL R+ ;

\ см описание &&
: (&) ( r: addr --> flag )
R@ TOKEN@ EXECUTE 0 <>
R@ CFL + TOKEN@ SWAP >R EXECUTE 0 <> R> AND
[ CFL DUP + ] LITERAL R+ ;

\ см описание **
: (*) ( r: addr --> flag )
R@ TOKEN@ EXECUTE 0 <>
R@ CFL + TOKEN@ SWAP >R EXECUTE 0 <> R> XOR
[ CFL DUP + ] LITERAL R+ ;

\ см описание ==
: (=) ( r: addr --> flag )
R@ TOKEN@ EXECUTE 0 <>
R@ CFL + TOKEN@ SWAP >R EXECUTE 0 <> R> =
[ CFL DUP + ] LITERAL R+ ;

\ выполнить fna, если успех - выйти вернув флаг завершения fna,
\ иначе выполнить fnb, если успех вернуть флаг завершения fnb
\ Если и fna и fnb вернули неуспех - возвращается false
: || ( --> flag ) ?COMP COMPILE (|) ; IMMEDIATE

\ выполнить fna и fnb скомпилированные в коде за &&
\ если оба вернули успех - вернуть true
\ иначе вернуть false
: && ( --> flag ) ?COMP COMPILE (&) ; IMMEDIATE

\ выполнить fna и fnb скомпилированные в коде за **
\ если результат работы fna бутет отличаться от fnb вернуть true
\ иначе вернуть FALSE
: ** ( --> flag ) ?COMP COMPILE (*) ; IMMEDIATE

\ выполнить fna и fnb скомпилированные в коде за ==
\ если результат работы fna бутет совпадать с fnb вернуть true
\ иначе вернуть FALSE
: == ( --> flag ) ?COMP COMPILE (=) ; IMMEDIATE
</pre>
примеры использования:
<pre>
: aaaa ( --> flag ) ." успех " TRUE ;
: bbbb ( --> flag ) ." провал " FALSE ;

: ~ ." --> " . CR ;

: test| ." тест || \n\r"
|| aaaa aaaa ~
|| aaaa bbbb ~
|| bbbb aaaa ~
|| bbbb bbbb ~ ;

: test& ." тест && \n\r"
&& aaaa aaaa ~
&& aaaa bbbb ~
&& bbbb aaaa ~
&& bbbb bbbb ~ ;

: test* ." тест ** \n\r"
** aaaa aaaa ~
** aaaa bbbb ~
** bbbb aaaa ~
** bbbb bbbb ~ ;

: test= ." тест == \n\r"
== aaaa aaaa ~
== aaaa bbbb ~
== bbbb aaaa ~
== bbbb bbbb ~ ;

test| test& test* test=
</pre>

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


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
И что это такое?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
бывает, что надо проверить выполнение нескольких условий для чего необходимо сделать опять же несколько запросов.
Тут, к примеру в || проверяется вернул ли один из двух запросов TRUE,
а в && оба запроса должны вернуть истину,
соответственно запросы - это обычные форт слова, возвращающие флаг завершения операции.

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

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


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Я делал нечто похожее обычным кейсом - надо было в зависимости от пападания числа в разные диапазоны делать несколько разные вещи:
Код:
\ num
  -1 CASE
    DUP 10 >  OF ." >10" ENDOF
    DUP 65 <  OF ." <65" ENDOF
             0 =  OF ." =0" ENDOF
  ENDCASE

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 21, 2009 00:36 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
|| aaaa aaaa ~
инфиксным его никак сделать нельзя?

Цитата:
Вообще такая штука есть в Сях, и вообще это все близко к прологу.
Выглядит привычно, лишь бы не забывать о различиях, если таковые появятся
:)

Когда мы уже дождёмся защищённой ВМ? Всё мелочи какие-то :wink:

_________________
понимаю некоторую бестолковость некоторых вопросов


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

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

можно. Вопрос только в том, какой синтаксис лучше сделать.

вопрос писал(а):
Цитата:Вообще такая штука есть в Сях, и вообще это все близко к прологу.
Выглядит привычно, лишь бы не забывать о различиях, если таковые появятся

угу.

вопрос писал(а):
Когда мы уже дождёмся защищённой ВМ? Всё мелочи какие-то

как только, так и сразу. Это не первоочердная задача. к тому же к форку отношения не имеющая.

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


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

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


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

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


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

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