WHILE: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 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

Ссылка


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.