[']
['] — стандартное слово Каллисто.
['] ( −− | т ) Скомпилировать токен (CFA) следующего слова, как числовой литерал.
Используется только в определении через двоеточие. Компиляция адреса (CFA) следующего слова из определения, как литерала.
Ввод слова ['][править]
В режиме NUM последовательно нажмите четыре клавиши БП F 1 ПП
['] в стандарте ANS Forth[править]
6.1.2510 ['] "bracket-tick" CORE Интерпретация: Семантика интерпретации для этого слова не определена. Компиляция: ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Находит name. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Неопределенная ситуация существует, если name не найдено. Время-выполнения: ( -- xt ) Помещает идентификатор исполнения name xt на стек. Идентификатор исполнения, возвращенный скомпилированной фразой "['] X " , имеет то же значение, как и возвращенный "' X " вне состояния компиляции. См.: 3.4.1 Синтаксический анализ, A.6.1.0070 ', A.6.1.2033 POSTPONE, D.6.7 Immediate-ности. A.6.1.2510 ['] Типичное использование: : X ... ['] name ... ; См.: A.6.1.1550 FIND.
История[править]
['] в предыдущем стандарте Forth-83 (англ.)[править]
['] -- addr C,I,M,83 "bracket-tick" -- (compiling) Used in the form: ['] <name> Compiles the compilation address addr of <name> as a literal. When the colon definition is later executed addr is left on the stack. An error condition exists if <name> is not found in the currently active search order. See: LITERAL
Реализация[править]
3621 ;#BracketTick 3622 ; ['] I ( −− | т ) Скомпилировать токен (CFA) следующего слова, как числовой литерал. 3623 ; Используется только в определении через двоеточие. Компиляция адреса (CFA) следующего слова из определения, как литерала. 3624 LBTICK: .DB 83H 3625 .TEXT "[']" ; состояние компиляции: ( "<пр>имя" −− ) 3626 .DW LTICKCFA ; состояние выполнения: ( −− cfa ) 3627 BTICK: .DW CALL, TICKCFA, BRAN,RLITER
Реализации из SP-Forth 4.20:
: ['] \ 94 \ Интерпретация: семантика неопределена. \ Компиляция: ( "<spaces>name" -- ) \ Пропустить ведущие пробелы. Выделить name, ограниченное пробелом. Найти name. \ Добавить семантику времени выполнения, данную ниже, к текущему определению. \ Неопределенная ситуация возникает, если name не найдено. \ Добавить семантику времени выполнения, данную ниже, к текущему определению, \ Время выполнения: ( -- xt ) \ Положить выполнимый токен имени xt на стек. Выполнимый токен, возвращаемый \ скомпилированной фразой "['] X" является тем же значением, что и возвращаемое \ "' X" вне состояния компиляции. ?COMP ' LIT, ; IMMEDIATE
: ['] ALSO TC-WL ' >VIRT TC-LIT, PREVIOUS ; IMMEDIATE
Советская реализация[править]
У Баранова-Ноздрунова определение слова ['] выглядит так (стр. 65):
: ['] ( ---> ) ' COMPILE (LITERAL) , ; IMMEDIATE
Описание и определение слова ['] в ядре ФОРТ-ЕС:
['] НК -> /КОМПИЛЯЦИЯ/ СКОМПИЛИРОВАТЬ CFA 41 -> CFA /ИСПОЛНЕНИЕ/ СЛЕДУЮЩЕГО СЛОВА КАК ЧИСЛОВОЙ ЛИТЕРАЛ Экран номер 41 ( 31.03.86 -TRAILING ' ['] [COMPILE] LOAD THRU ;S --> ) : ['] ( -> ) ?COMP ' [COMPILE] LITERAL ; IMMEDIATE
Ссылки[править]
- Исходный текст слова ['] в Каллисто Классик 1.0
- Слово ['] (bracket-tick) и комментарий к нему в стандарте ANS Forth (англ.)
- Слово ['] (bracket-tick) и комментарий к нему в черновике Forth 200x (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Under the Hood в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |