Редактирование:
VOCABULARY
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == <pre> 3405 ;#VOCABULARY 3406 ; VOCABULARY ( −− ) Определить следующее слово, как набор слов над набором CURRENT. 3407 ; Порождающее слово, которое создаёт новые наборы слов. Исполнение созданного слова делает набор контекстом CONTEXT 3408 LVOCAB: .DB 10 3409 .TEXT "VOCABULARY" 3410 .DW LIMMED 3411 VOCAB: .DW CALL, BUILD, LITP 3412 .DB 1,32 3413 .DW COMMA, CURR,UAT, CFA, COMMA 3414 .DW HERE, VOCLINK,UAT, COMMA, VOCLINK,STORE, DOESP 3415 DOVOC: .DW TWOP, CONT,STORE, EXIT </pre> Реализации из SP-Forth 4.20: <pre> : WORDLIST HERE VOC-LIST @ , VOC-LIST ! HERE 0 , \ здесь будет указатель на имя последнего слова списка 0 , \ здесь будет указатель на имя списка для именованых 0 , \ wid словаря-предка 0 , \ класс словаря = wid словаря, определяющего свойства данного 0 , \ reserved, для расширений ; </pre> <pre> : AT-WORDLIST-CREATING ( wid -- wid ) ... ; … : WORDLIST ( -- wid ) \ 94 SEARCH \ Создает новый пустой список слов, возвращая его идентификатор wid. \ Новый список слов может быть возвращен из предварительно распределенных \ списков слов или может динамически распределяться в пространстве данных. \ Система должна допускать создание как минимум 8 новых списков слов в \ дополнение к имеющимся в системе. HERE VOC-LIST @ , VOC-LIST ! HERE 0 , \ здесь будет указатель на имя последнего слова списка 0 , \ здесь будет указатель на имя списка для именованых 0 , \ wid словаря-предка 0 , \ класс словаря = wid словаря, определяющего свойства данного 0 , \ reserved, для расширений AT-WORDLIST-CREATING ( wid -- wid ) ; … : VOCABULARY ( "<spaces>name" -- ) \ Создать список слов с именем name. Выполнение name заменит первый список \ в порядке поиска на список с именем name. WORDLIST DUP CREATE , LATEST OVER CELL+ ! ( ссылка на имя словаря ) GET-CURRENT SWAP PAR! ( словарь-предок ) \ FORTH-WORDLIST SWAP CLASS! ( класс ) VOC ( DOES> не работает в этом ЦК) (DOES1) (DOES2) \ так сделал бы DOES>, определенный выше @ CONTEXT ! ; </pre> === Советская реализация === Юрий Семёнов приводит следующее определение определяющего слова VOCABULARY (стр. 79): : VOCABULARY <BUILDS ( формирование нового имени в словаре) '120201 , ( имитатор заголовка [PFA+2]) CURRENT @ CFA , ( ссылка на последнее описанное слово) HERE VOC-LINK @ , ( ссылка на словарь- "прародитель") VOC-LINK ! ( коррекция переменной VOC-LINK) DOES> ( запись PFA словаря в стек при исполнении) 2+ CONTEXT ! ; ( CONTEXT указывает на выбранный словарь) У Баранова-Ноздрунова определение слова VOCABULARY выглядит так (стр. 64): : VOCABULARY ( ---> ) CREATE 256 BL + , CONTEXT @ 2- , HERE VOC-LINK @ , VOC-LINK ! DOES> ( A ---> ) 2+ CONTEXT ! ; Описание и определение слова VOCABULARY в ядре ФОРТ-ЕС: <PRE> VOCABULARY -> ОПРЕДЕЛИТЬ СЛЕДУЮЩЕЕ СЛОВО КАК 33 СПИСОК НАД ТЕКУЩИМ ЗНАЧЕНИЕМ "CURRENT" VOCABULARY# А НАЧАЛО ИСПОЛНИТЕЛЬНОЙ ЧАСТИ "VOCABULARY" 33 Экран номер 33 ( 09.09.86 FORTH FORTH# FL# VOC-LINK VOCABULARY VOCABULARY#) VOC FORTH &DWORD H, ( FORTH-83) A: FORTH# LASTWORD ( ВХОД В СПИСОК СЛОВАРНЫХ СТАТЕЙ) A: FL# 0 Н, ( ПОЛЕ СВЯЗИ ДЛЯ СПИСКОВ СТАТЕЙ) CREATE VOC-LINK FL# ( ВХОД В СПИСОК СПИСКОВ СТАТЕЙ) : VOCABULARY ( -> ) CREATE [ &DWORD ] LITERAL , LIT [ FORTH# ] CONTEXT @ - IF CONTEXT @ 2- ELSE 0 THEN , HERE VOC- LINK @ , VOC-LINK ! DOES> [ THERE 4 - :A: VOCABULARY# ] 2+ CONTEXT ! ; </PRE> Определение слова VOCABULARY в FORTH ИТЭФ: <PRE> HEAD 212Q,'VOCABULAR',331Q,VOCAB,$COL ; VOCABULARY DW BUILD,LIT,120201Q,COMMA,CURR,AT,CFA,COMMA DW HERE,VOCL,AT,COMMA,VOCL,STORE,DOES DOVOC LABEL FAR DW TWOP,CONT,STORE,SEMI </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице