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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 1: Строка 1:
'''UNLOOP''' (читается «анлуп») — стандартное слово [[Каллисто]].
'''UNLOOP''' (читается «анлуп») — стандартное слово [[Каллисто]].
 
UNLOOP        ( −− )                              Снять со стека возвратов параметры управления циклом FOR для текущего уровня вложенности.
Снимает со [[Стек возвратов Каллисто|стека возвратов]] служебную информацию одного цикла [[FOR]] … [[NEXT]], что позволяет использовать слово [[EXIT]] для досрочного выхода из определения. Чтобы покинуть слово изнутри несколько вложенных циклов [[FOR]] … [[NEXT]], требуется предварительно выполнить слово UNLOOP нужное число раз.
Снимает со [[Стек возвратов Каллисто|стека возвратов]] служебную информацию одного цикла [[FOR]] … [[NEXT]], что позволяет использовать слово [[EXIT]] для досрочного выхода из определения. Чтобы покинуть слово изнутри несколько вложенных циклов [[FOR]] … [[NEXT]], требуется предварительно выполнить слово UNLOOP нужное число раз.


Строка 39: Строка 39:


== Ссылки ==
== Ссылки ==
* {{Исходник|UNLOOP|UNLOOP}}
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2380 UNLOOP] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.2380 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2380 UNLOOP] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.2380 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/UNLOOP UNLOOP] и [http://forth-standard.org/standard/rationale#rat:core:UNLOOP комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слово [http://forth-standard.org/standard/core/UNLOOP UNLOOP] и [http://forth-standard.org/standard/rationale#rat:core:UNLOOP комментарий к нему] в черновике Forth 200x ''(англ.)''
Строка 49: Строка 50:
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Структуры управления Каллисто]]
[[Категория:Структуры управления Каллисто]]
[[Категория:Слова Каллисто без стековых диаграмм]]

Версия от 14:51, 4 июня 2016

UNLOOP (читается «анлуп») — стандартное слово Каллисто.

UNLOOP         ( −− )                               Снять со стека возвратов параметры управления циклом FOR для текущего уровня вложенности.

Снимает со стека возвратов служебную информацию одного цикла FORNEXT, что позволяет использовать слово EXIT для досрочного выхода из определения. Чтобы покинуть слово изнутри несколько вложенных циклов FORNEXT, требуется предварительно выполнить слово UNLOOP нужное число раз.

Ввод слова UNLOOP

В режиме ЛАТ последовательно нажмите белые клавиши  3   4      5   5   6 

UNLOOP в стандарте ANS Forth

6.1.2380   UNLOOP                                                          CORE
       Интерпретация: Семантика интерпретации для этого слова не определена.
       Выполнение: ( -- ) ( R: loop-sys -- )
           Снимает параметры управления циклом для текущего уровня 
           вложенности. UNLOOP требуется для каждого уровня вложенности 
           прежде, чем может быть выполнено EXIT определения. Неопределенная 
           ситуация существует если параметры управления циклом недоступны.
       См.: 3.2.3.3 Стек возвратов.
A.6.1.2380   UNLOOP
Типичное использование:
       : X  ...
        limit first
        DO
          ... test IF ... UNLOOP EXIT THEN ...
        LOOP ...
       ;
UNLOOP позволяет использование EXIT в пределах контекста, DO ... LOOP и 
связанной do-loop конструкции. UNLOOP как функция был назван UNDO. UNLOOP более 
выражает действие: ничто не отменяется - мы просто прекращаем делать это.

Замечание

Хотя в стандарте ANS Forth это явно не указано, после слова UNLOOP должно быть исполнено слово EXIT. Конечно, между ними могут быть выполнены и другие действия. Но если EXIT не будет выполнен до конца цикла, ситуация станет неопределённой.

Также UNLOOP может быть использован перед словом LEAVE, если требуется завершить внешний цикл.

UNLOOP может быть использован несколько раз, для выхода из вложенных циклов.

Ссылки


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


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