WORDS

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

WORDS (слова, читается «вордс») — стандартное слово Каллисто.

WORDS          ( -- )                          Слова. Отобразить имена всех слов контекста.

Распечатать на индикаторе имена слов из набора слов CONTEXT.

Ввод слова WORDS

В режиме ЛАТ последовательно нажмите клавиши  В↑   5   ×   K   1 

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

 15.6.1.2465   WORDS                                                       TOOLS
            ( -- )
            Перечисляет имена определений в первом списке слов порядка поиска. 
            Формат отображения зависит от реализации.

            WORDS может быть реализовано, с использованием слов вывода 
            отображаемых чисел. Следовательно, его использование может 
            разрушать временную область, идентифицированную #>.

        См.: 3.3.3.6 Другие Временные Области.

 A.15.6.1.2465   WORDS
 WORDS - удобство отладки, найденное почти на всех системах Forth. Оно - повсюду 
 упомянуто в текстах Forth.

История

Слово называлось VLIST, пока кто-то англоязычный не подметил, как красиво выглядят последовательности команд FORTH WORDS, EDITOR WORDS и т.п. Интересно, что когда стандарты приняли соглашения ALSO/ONLY, это преимущество пропало.

В Форте FSP88M это слово известно под именем VL

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

      WORDS        --                            M
           List the word names in the first vocabulary of the currently
           active search order.

      WORDS        --                            ONLY
           Display the word names in the transient vocabulary, starting
           with the most recent definition.

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

VLIST
    List  the  word names of the CONTEXT vocabulary starting  with
    the most recent definition.
DLIST
       List the names of the dictionary entries in the CONTEXT vocabulary.

Реализация

Вывод на индикатор можно приостановить или остановить, см. ?BREAK

3890 ;#WORDS
3891 ; WORDS            ( −− )                               Слова. Отобразить имена всех слов контекста.
3892 LWORDS:         .DB     5
3893                 .TEXT   "WORDS"                 ; ( −− )
3894                 .DW     LINDEX                  ; Просмотр полного списка операторов, хранящихся в данный момент в контексте
3895 WORDS:          .DW CALL, CONT,UAT,UAT
3896 W1:             .DW DUP,IDDOT, QBREAK, NLINK,UAT, DUP,ZEQU, ZBRAN,W1, DROP, EXIT

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

\ $Id: spf_words.f,v 1.4 2006/12/04 21:15:59 ygreks Exp $

( Печать списка слов словаря - WORDS.
  ОС-независимые определения.
  Copyright [C] 1992-1999 A.Cherezov ac@forth.org
  Преобразование из 16-разрядного в 32-разрядный код - 1995-96гг
  Ревизия - сентябрь 1999
)

USER >OUT
USER W-CNT

: NLIST ( A -> )
  @
  >OUT 0! CR W-CNT 0!
  BEGIN
    DUP KEY? 0= AND
  WHILE
    W-CNT 1+! 
    DUP C@ >OUT @ + 74 >
    IF CR >OUT 0! THEN
    DUP ID.
    DUP C@ >OUT +!
    15 >OUT @ 15 MOD - DUP >OUT +! SPACES
    CDR
  REPEAT DROP KEY? IF KEY DROP THEN
  CR CR ." Words: " BASE @ DECIMAL W-CNT @ U. BASE ! CR
;

: WORDS ( -- ) \ 94 TOOLS
\ Список имен определений в первом списке слов порядка поиска. Формат зависит 
\ от реализации.
\ WORDS может быть реализован с использованием слов форматного преобразования 
\ чисел. Соответственно, он может испортить перемещаемую область, 
\ идентифицируемую #>.
  CONTEXT @ NLIST
;

Советская реализация

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

 : WORDS   CONTEXT @ @  ( запись в стек адреса начала просмотра
                          словаря)
           BEGIN ↵      ( начало бесконечного цикла просмотра)
             3 FOR       ( информация о трёх операторах помеща-
                          ется в одну строку)
                 ↑ ID.     ( печать имени очередного оператора)
                 13 OVER C@ '37 AND    ( вычисление длины имени
                                         очередного оператора)
                 - SPACES               ( организация табуляции
                                          операторов словаря)
                 N>BODY ↑ 6 I.R SPACE   ( печать PFA оператора)
                 '!' EMIT SPACE                   ( печать "!")
                 LFA @       ( запись в стек значения константы
                               связи)
                 ↑ 0=                         ( конец словаря?)
                 IF LEAVE            ( если да, выход из цикла)
                 THEN
               NEXT ?DUP 0=           ( это действительно конец
                                        словаря?)
           UNTIL ;

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

WORDS   +  -> РАСПЕЧАТАТЬ НА ТЕРМИНАЛЕ ИМЕНА СЛОВ              44
             ИЗ СПИСКА "CONTEXT"

                     Экран номер 44
( 31.03.86 WORDS  )
: WORDS ( -> )
 ." СПИСОК " CONTEXT @ DUP .VOC DUP (VOC)
 ." ВСЕГО СЛОВ - " . ."  СЛЕДУЮЩИЙ СПИСОК - "
 ?DUP IF 2+ .VOC THEN
 CR @ BEGIN DUP DUP IF @ [ &DWORD ] LITERAL <> THEN
    WHILE DUP С@ [ &SFLAG ] LITERAL AND 0=
   IF DUP ID. SPACE THEN
   N>LINK @ REPEAT DROP ;

В FORTH ИТЭФ слово WORDS имело имя VLIST

Вот его определение:

             HEAD    205Q,'VLIS',324Q,VLIST,$COL          ; VLIST
             DW  CONT,AT,AT
   VL0:      DW  CR,THREE,ZERO,XDO
   VL1:      DW  DUBL,IDDOT,LIT,15Q,OVER,CAT,LIT,37Q,$AND,SUB
             DW  SPACS,PFA,DUBL,LIT,6,UDOTR,SPACE,LIT,41Q
             DW  EMIT,SPACE,LFA,AT,DUBL,ZEQU,ZBRAN,VL2-$
             DW  LEAVE
   VL2:      DW  XLOOP,VL1-$,DDUP,ZEQU,ZBRAN,VL0-$,SEMI

Ссылки


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


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