Начальный курс программирования на языке Форт


ЧТО ТАКОЕ ОПРЕДЕЛЯЮЩЕЕ СЛОВО? - часть 3


Проследим еще раз все наши действия:

: CONSTANT CREATE , DOES> @ ;

Определение определяющего слова CONSTANT.

76 CONSTANT ТРОМБОНЫ

Исполнение слова CONSTANT, которое в свою очередь выполняет следующие три действия:

Создает с помощью CREATE заголовок словарной статьи с именем ТРОМБОНЫ. Выбирает из стека значение (например, 76) и заносит его в поле параметров константы. Устанавливает указатель поля кода слова ТРОМБОНЫ на код, следующий за словом DOES.

ТРОМБОНЫ

Выполнение слова ТРОМБОНЫ. Поскольку указатель поля кода слова ТРОМБОНЫ теперь указывает код, следующий за DOES>, выбирается значение (76) и помещается в вершину стека. Обратите внимание на то, что в фазе 3 слово DOES> сначала помещает в вершину стека pfa ребенка. Иными словами, определение : VARIABLE CREATE 0 , ;

эквивалентно следующему: : VARIABLE CREATE 0 , DOES> ;

Последнее в период выполнения помещает в вершину стека pfa, а в период компиляции ничего не выполняет.

Так как определяющее слово задает поведение в двух различных фазах (периодах компиляции и выполнения), нужно соответствующим образом отразить это в стековой нотации. В частности, стековый комментарий определения слова CONSTANT имеет вид: : CONSTANT ( n -- ) CREATE , DOES> ( -- n) @ ;

Верхняя строка стекового комментария описывает поведение родителя во время компиляции, а нижняя, после DOES>, задает поведение ребенка.

DOES>

период-выполнения : ( - a)

Используется при создании определяющих слов. Отмечается конец участка периода компиляции и начала участка периода выполнения. Операции периода выполнения определены на высокоуровневом форте. Во время выполнения на стеке будет находиться pfa определенного слова.




Начало  Назад  Вперед