Пустое слово

Материал из ПМК вики
Перейти к навигации Перейти к поиску

Пустое (точнее безымянное) слово — стандартное слово Каллисто.

без имени      ( −− )                               Пустышка. Закончить интерпретацию входного потока.

Пустое слово — закончить интерпретацию. При исполнении прерывает текущий бесконечный цикл и возвращает управление из текущего слова.

История[править]

Специальное «пустое» имя выдаёт слово WORD, когда натыкается на символ с кодом 0, расположенный в конце входного буфера — терминала или экранного. Слово с таким именем невозможно ввести каким-либо другим образом. Его исполнение грубо (через манипуляцию стеком возвратов) прерывает бесконечный цикл входного интерпретатора.

Механизм «пустого имени» позволял избежать расходов на проверку исчерпания входного потока. По мере роста производительности микропроцессоров от него в Форте отказались, предпочтя явный контроль за введённым количеством символов. Переход на этот уровень планируется в высокопроизводительной Каллисто 2.0

X в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

X
       This is pseudonym for the "null" or dictionary entry for a name of
       one character of ascii null. It is the execution proceedure to
       terminate interpretation of a line of text from the terminal or
       within a disc buffer, as both buffers always have a null at the
       end.

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

3146 ;#null
3147 ; без имени      I ( −− )                               Пустышка. Закончить интерпретацию входного потока.
3148 ; Нулевое слово прерывает цикл INTERPRET
3149 ; Старый, но весьма сомнительный приём.  В Каллисто−2 будет удалён.
3150 LNULL:          .DB     81H
3151                 .DB     0                               ; "\0"
3152                 .DW     LQUERY
3153 NULL:           .DW CALL, BLK,UAT,ZBRAN,NUL
3154                 .DW ONE,BLK,PSTOR, IN,ZSTORE, QEXEC
3155 NUL:            .DW LEV, EXIT

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

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

 : 0   BLK @                                  ( экранный буфер?)
       IF                                             ( если да)
          1 BLK +!  ( переключение указателя на следующий экран)
          0 IN !                 ( обнуление указателя смещения)
          ?EXEC                  ( система в режиме исполнения?)
       THEN R> DROP ;                             ( уход в QUIT)

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

: X  ( ---> )   R>  DROP  ;  IMMEDIATE

Слово \0 в ФОРТ-ЕС было примитивом. Вот его описание и определение:

         *Н ->   (ПУСТОЕ СЛОВО) - ЗАКОНЧИТЬ ИНТЕРПРЕТАЦИЮ  40
                                          ВХОДНОГО ПОТОКА

                     Экран номер 40
( 31.03.84      EXPECT  OUERY INTERPRET  ФОРТ-СИСТЕМА  X )

CODE  X  ( ->) ЗАБИТЬ-Х (  НУЛЕВОЙ КОД  ВМЕСТО БУКВЫ "X")
 EXIT# B, END-CODE    IMMEDIATE

Определение слова \0 в FORTH ИТЭФ:

             HEAD    301Q,,200Q,NULL,$COL                 ; NULL
             DW  BLK,AT,ZBRAN,NUL-$
             DW  ONE,BLK,PSTOR,ZERO,IN,STORE,QEXEC
   NUL:      DW  LEV,SEMI

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


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


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