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


              

Чтобы понять, как он действует,


Чтобы понять, как он действует, изучим компилятор двоеточия. Компилятор двоеточия функционирует аналогично текстовому интерпретатору. Он выбирает из входного потока слова и пытается отыскать их в словаре. Однако, вместо того чтобы (как ИНТЕРПРЕТАТОР) исполнять эти слова немедленно, он, как правило, компилирует их адреса в словарь. Но компилятор распознает компилирующие слова и только их исполняет сразу, подобно текстовому интерпретатору. Каким образом компилятор двоеточия отличает компилирующие слова? По биту немедленного исполнения данного определения (гл. 9 «Структура словарной статьи»): если бит сброшен, то компилируется адрес слова, если установлен, что слово немедленно исполняется. Такие слова называются словами немедленного исполнения (immediate). Слово IMMEDIATE делает слово немедленно исполняемым. Его формат: : имя определение ; IMMEDIATE

т. е. это слово выполняется сразу после компиляции определения. Допустим, у нас есть определение: : ТЕСТ ; IMMEDIATE

Это слово немедленного исполнения которое ничего не выполняет. Если мы обратимся к нему из определения другого слова, например: : 2CRS CR ТЕСТ CR ;

то будет скомпилирован следующий фрагмент словаря:



Как видите, определение скомпилировано без слова ТЕСТ. На самом деле оно выполнено во время компиляции слова 2CRS. Поскольку слово ТЕСТ ничего не выполняет, оно бесполезно. Приведем другой пример. Предположим, что у нас есть слово с именем ТЮЛЬПАН и определение: : ТЕСТ COMPILE ТЮЛЬПАН ; IMMEDIATE

Теперь переопределим слово 2CRS точно так же, как и ранее: : 2CRS CR ТЕСТ CR ;

и получим следующий результат:



На сей раз слово ТЕСТ во время компиляции определения 2CRS скомпилировало адрес слова ТЮЛЬПАН. На самом деле мы нашим определением как бы сказали: : 2CRS CR ТЮЛЬПАН CR ;

и что компилировать, а что нет, определяет ТЕСТ, потому что это слово немедленного исполнения. Обратите внимание на слово COMPILE (КОМПИЛЯЦИЯ). Мы ввели его как бы между прочим, поскольку его функции проще понять в контексте.

Содержание  Назад  Вперед