ELSE: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
Строка 60: | Строка 60: | ||
== История == | == История == | ||
Слово ELSE является одним из самых древних сохранившихся слов Форта. «Условные операторы» (''англ.'' Conditional statements) IF ELSE THEN были реализованы Чаком Муром для 2Кб версии B-5500 | Слово ELSE является одним из самых древних сохранившихся слов Форта. «Условные операторы» (''англ.'' Conditional statements) IF ELSE THEN были реализованы Чаком Муром для 2Кб версии Форта на Burroughs B-5500 в 1970 году. | ||
== Реализация ELSE == | == Реализация ELSE == |
Версия от 17:43, 20 марта 2016
ELSE (иначе) — стандартное слово Каллисто.
Начало 2-ой ветви ветвления "IF".
Ввод слова ELSE
В режиме ЛАТ последовательно нажмите четыре клавиши ИП − 1 ИП
ELSE в стандарте ANS Forth
6.1.1310 ELSE CORE Интерпретация: Семантика интерпретации для этого слова не определена.
Компиляция: ( C: orig1 -- orig2 ) Помещает адрес ячейки новой неразрешенной ссылки вперед orig2 на стек потока управления. Добавляет семантику времени-выполнения данную ниже к текущему определению. Семантика будет не завершена, пока orig2 не разрешена (например, THEN). Разрешает ссылку вперед orig1 использованием адреса ячейки после добавленной семантики времени-выполнения.
Время-выполнения: ( -- ) Продолжает выполнение с адреса ячейки данного ссылкой orig2.
См.: 6.1.1700 IF, 6.1.2270 THEN.
A.6.1.1310 ELSE Типичное использование: : X ... test IF ... ELSE ... THEN ;
ELSE в предыдущем стандарте Forth-83 (англ.)
ELSE -- C,I,79 sys1 -- sys2 (compiling) Used in the form: flag IF ... ELSE ... THEN ELSE executes after the true part following IF . ELSE forces execution to continue at just after THEN . sys1 is balanced with its corresponding IF . sys2 is balanced with its corresponding THEN . See: IF THEN
ELSE в стандарте Forth-79 (англ.)
ELSE -- I,C,167 Used in a colon-definition in the form: IF ... ELSE ... THEN ELSE executes after the true part following IF. ELSE forces execution to skip till just after THEN. It has no effect on the stack. (see IF)
ELSE в fig-FORTH Release 1 glossary, май 1979 (англ.)
ELSE addr1 n1 --- addr2 n2 (compiling) P,C2,L0 Occurs within a colon-definition in the form: IF ... ELSE ... ENDIF At run-time, ELSE executes after the true part following IF. ELSE forces execution to skip over the following false part and resumes execution after the ENDIF. It has no stack effect.
At compile-time ELSE emplaces BRANCH reserving a branch offset, leaves the address addr2 and n2 for error testing. ELSE also resolves the pending forward branch from IF by calculating the offset from addr1 to HERE and storing at addr1.
История
Слово ELSE является одним из самых древних сохранившихся слов Форта. «Условные операторы» (англ. Conditional statements) IF ELSE THEN были реализованы Чаком Муром для 2Кб версии Форта на Burroughs B-5500 в 1970 году.
Реализация ELSE
У Баранова-Ноздрунова определение слова ELSE выглядит так (стр. 58):
: ELSE ( A1,1 ---> A2,1 ) 1 ?PAIRS COMPILE BRANCH >MARK ↔ >RESOLVE 1 ; IMMEDIATE
Ссылки
- Слово ELSE и комментарий к нему в стандарте ANS Forth (англ.)
- Слово ELSE и комментарий к нему в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |