NEXT

Материал из ПМК вики
Версия от 01:42, 22 января 2018; AtH (обсуждение | вклад) (→‎Реализация)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

NEXT (читается «нэкст») — усовершенствованное слово Каллисто. Конец цикла со счётчиком.

NEXT           ( −− )                               Вернуться к FOR, если ещё остались повторения цикла.
Пример работы слова NEXT

Ввод слова NEXT[править]

В режиме ЛАТ последовательно нажмите четыре клавиши  4   ИП   0   2 

История цикла со счётчиком[править]

Имя NEXT традиционно для цикла FOR. До включения в Каллисто и colorForth оно использовалось в Бейсике.

Слово NEXT не надо путать с точкой NEXT адресного интерпретатора.

Реализация[править]

В Каллисто 1.0 на этапе компиляции слово NEXT может вызывать авост с кодом ошибки 19. Авост вызывает слово ?PAIRS, если не находит слово FOR, которому соответствует данный NEXT .

3730 ;#NEXT
3731 ; NEXT           I ( −− )                               Вернуться к FOR, если ещё остались повторения цикла.
3732 LSNEXT:         .DB     84H
3733                 .TEXT   "NEXT"                  ; К
3734                 .DW     LFOR                    ; Конец цикла со счётчиком.
3735 SNEXT:          .DW CALL, PI,QPAIR, COMP,XNEXTD, LRESOLVE, BRAN,RGRESOLVE

Советская реализация цикла со счётчиком[править]

Описание слов LOOP +LOOP и определение цикла DO…LOOP в ядре ФОРТ-ЕС:

  +LOOP    НК A1,A2,3 -> /КОМПИЛЯЦИЯ/                        КОНЕЦ ЦИКЛА  47
              N ->       /ИСПОЛНЕНИЕ/               "DO +LOOP" С ШАГОМ N

LOOP      HK A1,A2,3-> /КОМПИЛЯЦИЯ/ КОНЕЦ ЦИКЛА "DO LOOP"       47
             -> /ИСПОЛНЕНИЕ/

                      Экран номер 47
 ( 31.03.86   СТАНДАРТНЫЕ СТРУКТУРЫ УПРАВЛЕНИЯ )

 : DO      ?COMP  COMPILE (DO) >MARK <MARK 3 ; IMMEDIATE
 : LOOP    3 ?PAIRS COMPILE (LOOP) <RESOLVE >RESOLVE ; IMMEDIATE
 : +LOOP   3 7PAIRS COMPILE (+LOOP) <RESOLVE >RESOLVE ; IMMEDIATE

Определения цикла DO…LOOP/+LOOP в FORTH ИТЭФ через (DO) и (LOOP)/(+LOOP):

             HEAD    302Q,'D',317Q,$DO,$COL               ; DO
             DW  COMP,XDO,HERE,THREE,SEMI

             HEAD    304Q,'LOO',320Q,LOOP,$COL            ; LOOP
             DW  THREE,QPAIR,COMP,XLOOP,BACK,SEMI

             HEAD    305Q,'+LOO',320Q,PLOOP,$COL          ; +LOOP
             DW  THREE,QPAIR,COMP,XPLOO,BACK,SEMI

Ссылки[править]


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