Слово '

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

' (штрих) — стандартное слово Каллисто.

'              ( −− т )                             Дать токен (CFA) следующего слова.

Фраза  ' XXX  ищет слово с именем XXX (из входного или экранного буфера) в словаре Форта.

Слово ' вводит очередное слово и ищет его в словаре, возвращая токен найденной статьи. Если слово не найдено, это считается ошибкой.

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

В режиме NUM последовательно нажмите две клавиши  F   1 

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

 6.1.0070   '                              "tick"                           CORE
            ( "<spaces>name" -- xt )
            Пропускает ведущие разделители пробелы. Выделяет name ограниченное 
            пробелом. Ищет name, и возвращает xt, идентификатор исполнения для 
            name. Неопределенная ситуация существует, если name не найдено.

            При интерпретации, ' xyz EXECUTE, эквивалентно xyz.

        См.: 3.4 Интерпретатор текста Forth, 3.4.1 Синтаксический анализ, 
            A.6.1.2033 POSTPONE, A.6.1.2510 ['], D.6.7 Immediate-ности.

 A.6.1.0070   '
 Типичное использование:
        ... ' name .

 Много систем Forth используют это изящное слово. Многие нет. ANS Forth 
 наследует использование Forth 83.

 См.: 3.4.3..2 Семантика интерпретации, A.6.1.1550 FIND.

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

В fig-Форте и Форте-79 слово ' возвращало PFA. Начиная с Форта-83 слово ' возвращает CFA, он же xt.

В Каллисто невозможно превратить токен в NFA, но есть слово 'N, которое возвращает NFA.

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

     '            -- addr                       M,83            "tick"
          Used in the form:
                  ' <name>
          addr is the compilation address of <name>.  An error
          condition exists if <name> is not found in the currently
          active search order.

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

'              -- addr                       I,171           "tick"
    Used in the form:
         '  <name>
    If  executing,  leave the parameter field address of the  next
    word accepted from the input stream.   If  compiling,  compile
    this  address  as a literal;  later execution will place  this
    value  on the stack.   An error condition exists if not  found
    after a search of the CONTEXT and FORTH vocabularies.   Within
    a  colon-definition  '  <name> is identical to [  '  <name>  ]
    LITERAL.

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

'              ---  addr                       P,L0
       Used in the form: .
       ' nnnn
       Leaves the parameter field address of dictionary word nnnn.
       As a compiler directive, executes in a colon-definition to compile
       the address as a literal. If the word is not found after a search of
       CONTEXT and CURRENT, an appropriate error message is given.
       Pronounced "tick".

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

Слово ' взято из Форта и очень удобно, если вам необходим именно токен. Большую гибкость предоставляет более общее каллистянское слово 'N, возвращающее NFA найденного слова. См. также стандартное слово Форта ['].

3614 ;#Tick
3615 ; '                ( −− т )                             Дать токен (CFA) следующего слова.
3616 LTICKCFA:       .DB     1
3617                 .TEXT   "'"                     ; ( −− cfa )
3618                 .DW     LTICK
3619 TICKCFA:        .DW CALL, TICK,BRAN,RN2CFA      ; Стандартный ' реализован поверх каллистянского 'N

Реализации из SP-Forth 4.20:

: ' ALSO TC-WL ' PREVIOUS ;
: ' ( "<spaces>name" -- xt ) \ 94
\ Пропустить ведущие пробелы. Выделить name, ограниченное пробелом. Найти name 
\ и вернуть xt, выполнимый токен для name. Неопределенная ситуация возникает, 
\ если name не найдено.
\ Во время интерпретации  ' name EXECUTE  равносильно  name.
  ALSO NON-OPT-WL CONTEXT !
  PARSE-NAME SFIND 0= PREVIOUS
  IF -321 THROW THEN (  -? )
;

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

Юрий Семёнов приводит следующее описание слова ' через -FIND (стр. 74):

 : '   -FIND 0= 0 ?ERROR  ( если XXXX не найдено, то сообщение
                          об ошибке)
             DROP LITERAL ; IMMEDIATE

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

: '  ( ---> A )   BL  WORD  FINDN  IF NAME> EXIT  THEN
  COUNT  TYPE  -1  ABORT"  ?"  ;

Описание и определение слова ' в ядре ФОРТ-ЕС:

'        ->CFA ДАТЬ CFA ДЛЯ СЛЕДУЮЩЕГО СЛОВА                    41

                    Экран номер 41
( 31.03.86  -TRAILING  ' ['] [COMPILE] LOAD THRU ;S  --> )

: ' ( ->CFA)  -FIND  0= IF  BADWORD THEN ;

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


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


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