THEN: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 66: | Строка 66: | ||
== История == | == История == | ||
Слово THEN является одним из самых древних сохранившихся слов Форта. «Условные операторы» (''англ.'' Conditional statements) IF ELSE THEN были реализованы Чаком Муром для 2Кб версии B-5500 | Слово THEN является одним из самых древних сохранившихся слов Форта. «Условные операторы» (''англ.'' Conditional statements) IF ELSE THEN были реализованы Чаком Муром для 2Кб версии Форта на Burroughs B-5500 в 1970 году. | ||
Следущий код B-5500 FORTH проверял вершину стека на истинность и дублировал её, если она истина: | Следущий код B-5500 FORTH проверял вершину стека на истинность и дублировал её, если она истина: |
Версия от 17:44, 20 марта 2016
THEN (тогда, то) — стандартное слово Каллисто.
Конец ветвления "IF".
Ввод слова THEN
В режиме ЛАТ последовательно нажмите четыре клавиши 2 ПП ИП 4
THEN в стандарте ANS Forth
6.1.2270 THEN CORE Интерпретация: Семантика интерпретации для этого слова не определена.
Компиляция: ( C: orig -- ) Добавляет семантику времени-выполнения, данную ниже к текущему определению. Разрешает ссылку вперед orig, используя адрес ячейки добавленной семантики времени-выполнения.
Время-выполнения: ( -- ) Продолжает выполнение.
См.: 6.1.1310 ELSE, 6.1.1700 IF.
A.6.1.2270 THEN Типичное использование: : X ... test IF ... THEN ... ; или : X ... test IF ... ELSE ... THEN ... ;
THEN в предыдущем стандарте Forth-83 (англ.)
THEN -- C,I,79 sys -- (compiling) Used in the form: flag IF ... ELSE ... THEN or flag IF ... THEN THEN is the point where execution continues after ELSE , or IF when no ELSE is present. sys is balanced with its corresponding IF or ELSE . See: IF ELSE
Пример реализации THEN из предыдущего стандарта Forth-83
: THEN >RESOLVE ; IMMEDIATE
THEN в стандарте Forth-79 (англ.)
THEN I,C,161 Used in a colon-definition in the form: IF ... ELSE ... THEN or IF ... THEN THEN is the point where execution resumes after ELSE or IF (when no ELSE is present).
THEN в fig-FORTH Release 1 glossary, май 1979 (англ.)
THEN P,CO,L0 An alias for ENDIF.
ENDIF addr n --- (compile) P,CO,L0 Occurs in a colon-definition in form: IF ... ENDIF IF ... ELSE ... ENDIF At run-time, ENDIF serves only as the destination of a forward branch from IF or ELSE. It marks the conclusion of the conditional structure. THEN is another name for ENDIF. Both names are supported in fig-FORTH. See also IF and ELSE.
At compile-time, ENDIF computes the forward branch offset from addr to HERE and stores it at addr. n is used for error tests.
История
Слово THEN является одним из самых древних сохранившихся слов Форта. «Условные операторы» (англ. Conditional statements) IF ELSE THEN были реализованы Чаком Муром для 2Кб версии Форта на Burroughs B-5500 в 1970 году.
Следущий код B-5500 FORTH проверял вершину стека на истинность и дублировал её, если она истина:
IF DUP THEN
Реализация THEN
Юрий Семёнов приводит следующее описание слова THEN (стр. 59):
: THEN ?COMP 2 ?PAIR HERE OVER - ↔ ! ; IMMEDIATE
У Баранова-Ноздрунова определение слова THEN выглядит так (стр. 58):
: THEN ( A,1 ---> ) 1 ?PAIRS >RESOLVE ; IMMEDIATE
Ссылки
- Слово THEN и комментарий к нему в стандарте ANS Forth (англ.)
- Слово THEN и комментарий к нему в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |