[COMPILE]
[COMPILE] (компилировать) — стандартное слово Каллисто.
[COMPILE] ( −− ) Скомпилировать следующее слово, независимо от его признака IMMEDIATE.
Фраза [COMPILE] XXX заставляет слово XXX скомпилироваться, даже если оно обладает признаком немедленного исполнения. Используется внутри определений через двоеточие.
Ввод слова [COMPILE][править]
В режиме NUM последовательно нажмите клавиши БП Р-ГРД-Г С/П 5 ÷ 6 7 − ИП P ПП
[COMPILE] в стандарте ANS Forth[править]
6.2.2530 [COMPILE] "bracket-compile" CORE EXT Интерпретация: Семантика интерпретации для этого слова не определена. Компиляция: ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Находит name. Если name имеет семантику компиляции отличную от заданной по умолчанию, добавляет ее к текущему определению; иначе добавляет семантику выполнения name. Неопределенная ситуация существует, если name не найдено. См.: 3.4.1 Синтаксический анализ. A.6.2.2530 [COMPILE] Типичное использование: : name2 ... [COMPILE] name1 ... ; IMMEDIATE
История[править]
Сейчас вне Каллисто используется мало, в моде POSTPONE
[COMPILE] в предыдущем стандарте Forth-83 (англ.)[править]
[COMPILE] -- C,I,M,79 "bracket-compile" -- (compiling) Used in the form: [COMPILE] <name> Forces compilation of the following word <name>. This allows compilation of an immediate word when it would otherwise have been executed.
[COMPILE] в стандарте Forth-79 (англ.)[править]
[COMPILE] I,C,179 "bracket-compile" Used in a colon-definition in the form: [COMPILE] <name> Forces compilation of the following word. This allows compilation of an IMMEDIATE word when it would otherwise be executed.
[COMPILE] в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
[COMPILE] p,C Used in a colon-definition in form: : xxx [COMPILE] FORTH ; [COMPILE] will force the compilation of an immediate definitions, that would otherwise execute during compilation. The above example will select the FORTH vocabulary then xxx executes, rather than at compile time.
Реализация[править]
3333 ;#BracketCOMPILE 3334 ; [COMPILE] I ( −− ) Скомпилировать следующее слово независимо от его признака IMMEDIATE. 3335 ; Заставить следующее слово скомпилироваться, даже если оно обладает признаком немедленного исполнения. 3336 ; Используется внутри определений через двоеточие. Сейчас используется мало, в моде POSTPONE 3337 LBCOM: .DB 89H 3338 .TEXT "[COMPILE]" ; ( "<пр>имя" −− ) 3339 .DW LCREAT 3340 BCOM: .DW CALL, BL,WORD, FIND, ZEQU, ZERO,QERR, DROP, N2CFA, BRAN,RCOMMA
Реализации из SP-Forth 4.20:
: POSTPONE \ 94 \ Интерпретация: семантика не определена. \ Компиляция: ( "<spaces>name" -- ) \ Пропустить ведущие разделители. Выделить имя, ограниченное пробелами. \ Найти имя. Добавить семантику компиляции имени в текущее определение. ?COMP PARSE-NAME SFIND DUP 0= IF -321 THROW THEN 1 = IF COMPILE, ELSE LIT, ['] COMPILE, COMPILE, THEN ; IMMEDIATE … : [COMPILE] \ 94 CORE EXT \ Интерпретация: семантика неопределена. \ Компиляция: ( "<spaces>name" -- ) \ Пропустить ведущие пробелы. Выделить name, ограниченное пробелами. \ Найти name. Если имя имеет иную семантику компиляции, чем "по-умолчанию", \ добавить ее в текущее определение; иначе добавить семантику выполнения name. \ Неопределенная ситуация возникает, если name не найдено. ?COMP ' COMPILE, ; IMMEDIATE
: POSTPONE \ 94 ALSO TC-WL ?COMP PARSE-NAME SFIND DUP 0= IF -321 THROW THEN 1 = IF COMPILE, ELSE LIT, S" COMPILE," TC-FINDOUT COMPILE, THEN PREVIOUS ; IMMEDIATE : [COMPILE] \ 94 CORE EXT ALSO TC-WL ' PREVIOUS COMPILE, ; IMMEDIATE
Советская реализация[править]
У Баранова-Ноздрунова определение слова [COMPILE] выглядит так (стр. 65):
: [COMPILE] ( ---> ) 'N NAME> , ; IMMEDIATE
Описание и определение слова [COMPILE] в ядре ФОРТ-ЕС:
[COMPILE] НК -> СКОМПИЛИРОВАТЬ СЛЕДУЮЩЕЕ СЛОВО 41 НЕЗАВИСИМО ОТ ЕГО ПРИЗНАКА "IMMEDIATE" Экран номер 41 ( 31.03.86 -TRAILING ' ['] [COMPILE] LOAD THRU ;S --> ) : [COMPILE] ( ->) -FIND IF , EXIT THEN BADWORD ; IMMEDIATE
Определение слова [COMPILE] в FORTH ИТЭФ:
HEAD 311Q,'[COMPILE',335Q,BCOM,$COL ; [COMPILE] DW DFIND,ZEQU,ZERO,QERR,DROP,COMMA,SEMI
Ссылки[править]
- Исходный текст слова [COMPILE] в Каллисто Классик 1.0
- Слово [COMPILE] (bracket-compile) и комментарий к нему в стандарте ANS Forth (англ.)
- Слово [COMPILE] (bracket-compile) и комментарий к нему в черновике Forth 200x (англ.)
- РАСШИРЕНИЕ КОМПИЛЯТОРА: ОПРЕДЕЛЯЮЩИЕ И КОМПИЛИРУЮЩИЕ СЛОВА в книге Л.Броуди «Начальный курс программирования на языке Форт»
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |