WHILE: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 23: | Строка 23: | ||
Типичное использование: | Типичное использование: | ||
: X ... BEGIN ... test WHILE ... REPEAT ... ; | : X ... BEGIN ... test WHILE ... REPEAT ... ; | ||
== WHILE в предыдущем стандарте Forth-83 (англ.) == | == WHILE в предыдущем стандарте Forth-83 (англ.) == | ||
Строка 37: | Строка 36: | ||
balanced with its corresponding BEGIN . sys2 is balanced | balanced with its corresponding BEGIN . sys2 is balanced | ||
with its corresponding REPEAT . See: BEGIN | with its corresponding REPEAT . See: BEGIN | ||
== WHILE в стандарте Forth-79 (англ.) == | == WHILE в стандарте Forth-79 (англ.) == | ||
Строка 47: | Строка 45: | ||
to just after BEGIN. On a false flag, skip execution to just | to just after BEGIN. On a false flag, skip execution to just | ||
after REPEAT, exiting the structure. | after REPEAT, exiting the structure. | ||
== WHILE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | == WHILE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | ||
Строка 61: | Строка 58: | ||
At compile time, WHILE emplaces (0BRANCH) and leaves ad2 of the | At compile time, WHILE emplaces (0BRANCH) and leaves ad2 of the | ||
reserved offset. The stack values will be resolved by REPEAT. | reserved offset. The stack values will be resolved by REPEAT. | ||
== Реализация WHILE == | == Реализация WHILE == | ||
Строка 80: | Строка 76: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Слова с признаком IMMEDIATE]] | |||
[[Категория:Структуры управления Каллисто]] | [[Категория:Структуры управления Каллисто]] | ||
[[Категория:Слова Каллисто без стековых диаграмм]] | [[Категория:Слова Каллисто без стековых диаграмм]] |
Версия от 01:54, 20 марта 2016
WHILE (пока) — стандартное слово Каллисто.
Ветвление "WHILE" в цикле "BEGIN WHILE REPEAT".
Ввод слова WHILE
В режиме ЛАТ последовательно нажмите клавиши В↑ ПП 7 − ИП
WHILE в стандарте ANS Forth
6.1.2430 WHILE CORE Интерпретация: Семантика интерпретации для этого слова не определена.
Компиляция: ( C: dest -- orig dest ) Помещает адрес ячейки новой неразрешенной ссылки вперед orig на стек потока управления, под существующим dest. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Семантика не завершена до разрешения orig и dest (например, REPEAT).
Время-выполнения: ( x -- ) Если все биты x нулевые, продолжает выполнение с адреса ячейки определенного ссылкой orig.
A.6.1.2430 WHILE Типичное использование: : X ... BEGIN ... test WHILE ... REPEAT ... ;
WHILE в предыдущем стандарте Forth-83 (англ.)
WHILE flag -- C,I,79 sys1 -- sys2 (compiling) Used in the form: BEGIN ... flag WHILE ... REPEAT Selects conditional execution based on flag. When flag is true, execution continues to just after the WHILE through to the REPEAT which then continues execution back to just after the BEGIN . When flag is false, execution continues to just after the REPEAT , exiting the control structure. sys1 is balanced with its corresponding BEGIN . sys2 is balanced with its corresponding REPEAT . See: BEGIN
WHILE в стандарте Forth-79 (англ.)
WHILE flag -- I,C,149 Used in the form: BEGIN ... flag WHILE ... REPEAT Select conditional execution based on flag. On a true flag, continue execution through to REPEAT, which then returns back to just after BEGIN. On a false flag, skip execution to just after REPEAT, exiting the structure.
WHILE в fig-FORTH Release 1 glossary, май 1979 (англ.)
WHILE f --- (run-time) ad1 nl --- ad1 n1 ad2 n2 p,C2 Occurs in a colon-definition in the form: BEGIN ... WHILE (tp) ... REPEAT At run-time, WHILE selects conditional execution based on boolean flag f. If f is true (non-zero), WHILE continues execution of the true part thru to REPEAT, which then branches back to BEGIN. If f is false (zero), execution skips to just after REPEAT, exiting the structure.
At compile time, WHILE emplaces (0BRANCH) and leaves ad2 of the reserved offset. The stack values will be resolved by REPEAT.
Реализация WHILE
Юрий Семёнов приводит следующее описание слова WHILE (стр. 65):
: WHILE [COMPILE] IF ; IMMEDIATE
У Баранова-Ноздрунова определение слова WHILE выглядит так (стр. 58):
: WHILE ( A1,2 ---> A1,A2,3 ) 2 ?PAIRS COMPILE ?BRANCH >MARK 3 ; IMMEDIATE
Ссылка
- Слово WHILE и комментарий к нему в стандарте ANS Forth (англ.)
- Слово WHILE и комментарий к нему в черновике Forth 200x (англ.)
- While loop в английской Википедии (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |