LITERAL: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 79: | Строка 79: | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
: TC-LITERAL \ 94 CORE | : TC-LITERAL \ 94 CORE | ||
\ Интерпретация: семантика неопределена. | \ Интерпретация: семантика неопределена. |
Версия от 21:13, 13 ноября 2017
LITERAL (литерал) — стандартное слово Каллисто. Целочисленный литерал.
LITERAL ( D −− | D ) Скомпилировать D в литерал. В режиме исполнения оставляет D на стеке.
- При компиляции переносит код D из стека в описание нового слова, а при интерпретации описанного слова записывает в стек указанное 16-битное число со знаком D. Скомпилированный код может зависеть от значения компилируемого числа.
- При исполнении оставляет D на вершине стека.
Обычно разработчики пользуются словом LITERAL неявно. Оно вызывается из текстового интерпретатора, когда тот обработал число во входном потоке. Но слово LITERAL может оказаться полезным при разработке собственных компилирующих слов.
Ввод слова LITERAL
В режиме ЛАТ последовательно нажмите клавиши − 7 2 ИП × ШГ← −
LITERAL в стандарте ANS Forth
6.1.1780 LITERAL CORE Интерпретация: Семантика интерпретации для этого слова не определена. Компиляция: ( x -- ) Добавляет семантику времени-выполнения, данную ниже к текущему определению. Время-выполнения: ( -- x ) Помещает x на стек. A.6.1.1780 LITERAL Типичное использование: : X ... [ x ] LITERAL ... ;
История
В некоторых Фортах слово LITERAL называлось LIT
LITERAL в предыдущем стандарте Forth-83 (англ.)
LITERAL -- 16b C,I,79 16b -- (compiling) Typically used in the form: [ 16b ] LITERAL Compiles a system dependent operation so that when later executed, 16b will be left on the stack.
LITERAL в стандарте Forth-79 (англ.)
LITERAL n -- I,215 If compiling, then compile the stack value n as a 16-bit literal, which when later executed, will leave n on the stack.
LITERAL в fig-FORTH Release 1 glossary, май 1979 (англ.)
LITERAL n --- (compiling) P,C2,L0 If compiling, then compile the stack value n as a 16 bit literal. This definition is immediate so that it will execute during a colon definition. The intended use is: : xxx [ calculate ] LITERAL ; Compilation is suspended for the compile time calculation of m value. Compilation is resumed and LITERAL compiles this value.
Реализация
3351 ;#LITERAL 3352 ; LITERAL I ( D −− | D ) Скомпилировать D в литерал. В режиме исполнения оставить D на стеке. 3353 ; 1. При компиляции перенести код D из стека в описание нового слова, 3354 ; а при интерпретации записанное слово кладёт D на стек. 3355 ; Скомпилированный код может зависеть от значения компилируемого числа. 3356 ; 2. При исполнении оставить D на вершине стека. 3357 LLITER: .DB 87H 3358 .TEXT "LITERAL" ; ( n −− ) 3359 .DW LTO 3360 LITER: .DW CALL 3361 RLITER: .DW STATE,UAT, ZBRAN,REXIT, COMP,LITD, BRAN,RCOMMA
Реализации из SP-Forth 4.20:
: LITERAL \ 94 CORE \ Интерпретация: семантика неопределена. \ Компиляция: ( x -- ) \ Добавить семантику времени выполнения, данную ниже, к текущему определению. \ Время выполнения: ( -- x ) \ Положить x на стек. STATE @ IF LIT, THEN ; IMMEDIATE
: TC-LITERAL \ 94 CORE \ Интерпретация: семантика неопределена. \ Компиляция: ( x -- ) \ Добавить семантику времени выполнения, данную ниже, к текущему определению. \ Время выполнения: ( -- x ) \ Положить x на стек. STATE @ IF TC-LIT, THEN ; IMMEDIATE … : LITERAL STATE @ IF TC-LIT, THEN ; IMMEDIATE
Советская реализация
Cледующее описание оператора LITERAL через примитив (LITERAL) приведено у Юрия Семёнова (стр. 84) и Баранова-Ноздрунова (стр. 55):
: LITERAL ( A ---> A / ) STATE @ IF ( если интерпретация) COMPILE (LITERAL) ( введение в описание слова [CFA] системного оператора (LITERAL) , ( введение в описание слова значения константы) THEN ; IMMEDIATE
Описание и определение слова LITERAL в ядре ФОРТ-ЕС:
LITERAL H W-> /КОМПИЛЯЦИЯ/ СКОМПИЛИРОВАТЬ W КАК 23 ->W /ИСПОЛНЕНИЕ/ ЛИТЕРАЛ Экран номер 23 ( 31.03.84 LIT 2LIT LITERAL 2LITERAL SPACE SPACES ) : LITERAL ( W->) STATE @ IF COMPILE LIT , THEN ; IMMEDIATE
Определение слова LITERAL в FORTH ИТЭФ:
HEAD 307Q,'LITERA',314Q,LITER,$COL ; LITERAL DW STATE,AT,ZBRAN,LIL-$,COMP,LIT,COMMA LIL: DW SEMI
Ссылки
- Исходный текст слова LITERAL в Каллисто Классик 1.0
- См. слова (LITERAL) и FLITERAL
- Слово LITERAL и комментарий к нему в стандарте ANS Forth (англ.)
- Слово LITERAL и комментарий к нему в черновике Forth 200x (англ.)
- РАСШИРЕНИЕ КОМПИЛЯТОРА: ОПРЕДЕЛЯЮЩИЕ И КОМПИЛИРУЮЩИЕ СЛОВА в книге Л.Броуди «Начальный курс программирования на языке Форт»
- См. главу Extending the Compiler, More Compiler-Controlling Words в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |