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
Ссылки[править]
- Исходный текст слова WORDS в Каллисто Классик 1.0
- Слово WORDS и комментарий к нему в стандарте ANS Forth (англ.)
- Слово WORDS и комментарий к нему в черновике Forth 200x (англ.)
- ОСНОВЫ ФОРТА в книге Л.Броуди «Начальный курс программирования на языке Форт»
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |