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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 73: Строка 73:
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2390 UNTIL] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.2390 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2390 UNTIL] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.2390 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://www.forth200x.org/documents/html3/core/UNTIL.html UNTIL] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:UNTIL комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слово [http://www.forth200x.org/documents/html3/core/UNTIL.html UNTIL] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:UNTIL комментарий к нему] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\06.ZIKLITESKIE%20STRUKTURY ЦИКЛИЧЕСКИЕ СТРУКТУРЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [https://en.wikipedia.org/wiki/Do_while_loop Do while loop в английской Википедии] ''(англ.)''
* [https://en.wikipedia.org/wiki/Do_while_loop Do while loop в английской Википедии] ''(англ.)''



Версия от 23:35, 24 марта 2016

Цикл BEGIN xxx f UNTIL всегда выполняется хотя бы 1 раз.
Картинка из книги Лео Броди «Starting FORTH»

UNTIL (до, пока не) — стандартное слово Каллисто.

Конец описания цикла "BEGIN UNTIL".

Ввод слова UNTIL

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

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

6.1.2390   UNTIL                                                           CORE
       Интерпретация: Семантика интерпретации для этого слова не определена.
       Компиляция: ( C: dest -- )
           Добавляет семантику времени-выполнения, данную ниже к текущему 
           определению, разрешая ссылку назад dest.
       Время-выполнения: ( x -- )
           Если все биты x нулевые, продолжает выполнение с адреса ячейки 
           определенного dest.
       См.: 6.1.0760 BEGIN.
A.6.1.2390   UNTIL
Типичное использование:
       : X ... BEGIN ... test UNTIL ... ;

UNTIL в предыдущем стандарте Forth-83 (англ.)

     UNTIL        flag --                       C,I,79
                  sys --   (compiling)
          Used in the form:
                  BEGIN ... flag UNTIL
          Marks the end of a BEGIN-UNTIL loop which will terminate
          based on flag.  If flag is true, the loop is terminated.  If
          flag is false, execution continues to just after the
          corresponding BEGIN .  sys is balanced with its
          corresponding BEGIN .  See:  BEGIN

UNTIL в стандарте Forth-79 (англ.)

UNTIL          flag --                       I,C,,237
    Within a colon-definition, mark the end of a BEGIN-UNTIL loop,
    which will terminate based on flag.  If flag is true, the loop
    is  terminated.   If flag is false,  execution returns to  the
    first word after BEGIN.  BEGIN-UNTIL structures may be nested.

UNTIL в fig-FORTH Release 1 glossary, май 1979 (англ.)

UNTIL          f --- (run-time)       addr n --- (compile) P,C2,L0
       Occurs within a colon-definition in the form:
                       BEGIN ... UNTIL
       At run-time, UNTIL controls the conditional branch back to the
       corresponding BEGIN. If f is false, execution returns to just after.
       BEGIN;
       if true, execution continues ahead.
       At compile-time, UNTIL compiles (0BRANCH) and an offset from HERE to
       addr. n is used for error tests.

Реализация UNTIL

Юрий Семёнов приводит следующее описание слова UNTIL (стр. 65):

 : UNTIL   1 ?PAIR COMPILE ?BRANCH <RESOLVE ; IMMEDIATE

У Баранова-Ноздрунова определение слова UNTIL выглядит так (стр. 58):

: UNTIL  ( A1,2 ---> )   2 ?PAIRS
      COMPILE  ?BRANCH  <RESOLVE  ;  IMMEDIATE

История

В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово UNTIL под именем END

Слово END, как синоним UNTIL, допускали Форт-83, Форт-79 и fig-Форт.

Создатель Форта Чак Мур признался, что заимствовал цикл BEGIN…UNTIL из языка Алгол.

Ссылка


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