⟨BUILDS
<BUILDS — архаичное слово Каллисто. В паре со словом DOES> используется при разработке порождающего слова с каллистянской исполняющей частью (обработчиком).
<BUILDS ( −− ) Начало определяющей части порождающего слова.
Такой подход сравнивают с объектно-ориентированным программированием, хотя исторически ООП появилось позже Форта.
Порождающее слово описывает новый класс слов. При исполнении порождающего слова создаётся новая инстанция класса — словарная статья со своим индивидуальным именем, содержащая в поле данных индивидуальную информацию, которую обрабатывает исполняющая часть, общая для всех слов данного класса.
Примеры порождающих слов в ядре Каллисто: VARIABLE создаёт переменные, CONSTANT создаёт константы, VALUE создаёт величины и т.д. Ваше собственное порождающее слово сможет также создавать слова, разработанные по вашему проекту.
Ввод слова <BUILDS[править]
В режиме NUM последовательно нажмите клавиши F ШГ→ Р-ГРД-Г В/О 3 7 − K 1
Для возврата в режим NUM нажмите синюю клавишу P .
История[править]
В Форте-79 конструкция <BUILDS…DOES> была вытеснена CREATE…DOES> — которая трудно реализуема на МК-161 из-за фон-Неймановской архитектуры последней. В Каллисто используется первоначальный вариант <BUILDS…DOES>.
Основное отличие <BUILDS…DOES> в том, что поле кода создаваемого слова займёт две ячейки, а не одну. В большинстве случаев при переносе на Каллисто конструкции CREATE…DOES> достаточно просто заменить в ней слово CREATE на <BUILDS
Если слово CREATE употребляется отдельно, менять его не нужно. Различие здесь в реализации слова DOES>, которому в Каллисто приходится выполнять немного другие действия, требующие отдельного слова <BUILDS
<BUILDS в предыдущем стандарте Forth-83 (англ.)[править]
<BUILDS -- C,M "builds" Used in conjunction with DOES> in defining words, in the form: : <namex> ... <BUILDS ... DOES> ... ; and then <namex> <name> When <namex> executes, <BUILDS creates a dictionary entry for the new <name>. The sequence of words between <BUILDS and DOES> established a parameter field for <name>. When <name> is later executed, the sequence of words following DOES> will be executed, with the parameter field address of <name> on the data stack.
<BUILDS в стандарте Forth-79 (англ.)[править]
<BUILDS C "builds" Used in conjunction with DOES> in defining words, in the form: : <name> . . . <BUILDS . . . DOES> ... ; and then <name> <namex> When <name> executes, <BUILDS creates a dictionary entry for the new <namex>. The sequence of words between <BUILDS and DOES> established a parameter field for <namex>. When <namex> is later executed, the sequence of words following DOES> will be executed, with the parameter field address of <namex> on the data stack.
<BUILDS в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
<BUILDS C,L0 Used within a colon-definition: : cccc <BUILDS ... DOES> ... ; Each time cccc is executed, <BUILDS defines a new word with a high-level execution proceedure. Executing cccc in the form: cccc nnnn uses <BUILDS to create a dictionary entry for nnnn with a call to the DOES> part for nnnn. When nnnn is later executed, it has the address of its parameter area on the stack and executes the words after DOES> in cccc. <BUILDS and DOES> allow runtime proceedures to written in high-level rather than in assembler code (as required by ;CODE).
Реализация[править]
3085 ;#BUILDS 3086 ; <BUILDS ( −− ) Начать определяющую часть порождающего слова. 3087 ; <BUILDS переводится с Форта на русский как "компилируется". 3088 ; Слово взято из Форта−79 и ранее, в Форте−83 и последующих вместо него можно использовать просто CREATE 3089 LBUILD: .DB 7 3090 .TEXT "<BUILDS" ; ( −− a) 3091 .DW LSMUG 3092 BUILD: .DW CALL, ZERO,BRAN,RCON ; 0 CONSTANT
Советская реализация[править]
Юрий Семёнов приводит следующее описание слова <BUILDS через определяющее слово CONSTANT (стр. 88):
: <BUILDS 0 CONSTANT ;
Определение слова <BUILDS в FORTH ИТЭФ:
HEAD 207Q,'<BUILD',323Q,BUILD,$COL ; <BUILDS DW ZERO,CON,SEMI
Ссылки[править]
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |