Слово [

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

[ (открывающая квадратная скобка) — стандартное слово Каллисто. Перейти в состояние исполнения.

[              ( −− )                               Установить состояние исполнения.

Переключить текстовый интерпретатор Каллисто в состояние исполнения (интерпретации). При исполнения введённые слова исполняются сразу же после их нахождения в словаре.

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

В режиме NUM нажмите чёрную клавишу  БП 

[ в стандарте ANS Forth[править]

 6.1.2500   [                               "left-bracket"                  CORE
        Интерпретация: Семантика интерпретации для этого слова не определена.

        Компиляция: Исполняет семантику выполнения, данную ниже.

        Выполнение: ( -- )
            Вводит состояние интерпретации. [ - слово немедленного выполнения.

        См.: 3.4 Интерпретатор текста Forth, 3.4.5 Компиляция, 6.1.2540 ].

 A.6.1.2500   [
 Типичное использование:
        : X ... [ 4321 ] LITERAL ... ;

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

Состояние исполнения Каллисто напоминает режим автоматической работы ЭКВМ, ведь в этом состоянии вводимые слова исполняются сразу же после их ввода.

Слово [ вошло во все стандарты Форта и хорошо устоялось, не изменившись со времён fig-Форта в 1979 году.

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

     [            --                            I,79    "left-bracket"
                  --   (compiling)
          Sets interpret state.  The text from the input stream is
          subsequently interpreted.  For typical usage see LITERAL .
          See:  ]

[ в стандарте Forth-79 (англ.)[править]

[                                            I,125   "left-bracket"
    End the compilation mode.   The text from the input stream  is
    subsequently executed.  See ]

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

[                                               P,L1
       Used in a colon-definition in form:
                          :  xxx    [  words   ]    more   ;
       Suspend compilation. The words after [ are executed, not compiled.
       This allows calculation or compilation exceptions before resuming
       compilation with ] .  See LITERAL, ].

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

Слово [ обнуляет переменную STATE. Поскольку переключать текстовый интерпретатор в состояние исполнения имеет смысл только из состояния компиляции, слово [ имеет признак немедленного исполнения — чтобы исполниться и выполнить своё назначение, когда происходит компиляция.

Слово [ чаще всего используется во время определения слова для временного переключения в состояние исполнения. Например, чтобы что-то подсчитать в стеке во время компиляции, а потом переключиться обратно с помощью слова ].

  96 rrSTATE         .EQU     1108                   ; 11108  STATE − STATE=0 − исполнение, STATE=128 − компиляция
  97 pSTATE          .EQU      108
  98 rlSTATE         .EQU     1109                   ;     
…
2347 ;#Bracket
2348 ; [              I ( −− )                               Установить состояние исполнения.
2349 LLBRAC:         .DB     81H
2350                 .TEXT   "["
2351                 .DW     LDALLOT
2352 LBRAC:          .DW     JLBRAC                  ; Переключить текстовый интерпретатор в состояние исполнения
2353 JLBRAC:         CX                              ; Прекратить компиляцию, начать исполнение (обнулить STATE)
2354 SETSTATE:       PPM rlSTATE
2355                 CX
2356                 PPM rrSTATE
2357                 KGOTO9

Реализации в SP-Forth 4.20[править]

: [   \ 94 CORE
\ Интерпретация: семантика неопределена.
\ Компиляция: Выполнить семантику выполнения, данную ниже.
\ Выполнение: ( -- )
\ Установить состояние интерпретации. [ слово немедленного выполнения.
  STATE 0!
; IMMEDIATE
: [ [COMPILE] [ ; IMMEDIATE

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

У Баранова-Ноздрунова приводится следующее описание слова [ (стр. 24):

 : [   ( ---> )    0 STATE ! ; IMMEDIATE

Определение [ в ядре ФОРТ-ЕС использует слово 0!

[         Н ->        ПЕРЕКЛЮЧИТЬ ТЕКСТОВЫЙ ИНТЕРПРЕТАТОР  22
                                       В РЕЖИМ ИСПОЛНЕНИЯ

                     Экран номер 11
( 31.03.86      !  0!  @  С!  С@  , С, EXECUTE )

: 0!  ( A-> )   0 SWAP ! ;

                     Экран номер 22
( 31.03.86   FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)

: [  ( -> ) STATE 0! ;  IMMEDIATE

В FORTH ИТЭФ слово [ было примитивом, вот его определение:

            HEAD     301Q,,333Q,LBRAC                     ; [
   ; Прекращение компил., начало исполн. (обнуление STATE)
            MOV  WORD PTR [DI]+54Q,0
            NEXT

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


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


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