Для сравнения опишем алгоритм компилятора
Далее повторяем цикл входного потока.
Для сравнения опишем алгоритм компилятора двоеточия. Начинаем цикл. В теле цикла выбираем очередное слово из входного потока и осуществляем поиск его определения в словаре. Если определение найдено, - это слово Форта. Слово немедленного исполнения сразу выполняем и проверяем, не исчерпан ли стек. Для слова, не имеющего признака немедленного исполнения, определяем адрес компиляции. Если определение слова в словаре не найдено, пытаемся преобразовать его в число и скомпилировать в качестве литерала. Затем повторяем цикл до тех пор, пока не исчерпается входной поток или система не будет переведена в режим интерпретации. Схема рассмотренного алгоритма:
(Если вам доступен исходный текст системы, мы рекомендуем вам изучить настоящие определения слов INTERPRET и ].)
Сравните обе диаграммы, и вы увидите, что интерпретатор может вызывать ] для того, чтобы определить, будет данное слово выполняться или компилироваться. Такая простота в организации системы позволит вам легко добавлять новые компилирующие слова.
Итак, существуют два способа расширения Форт-компилятора:
- добавление новых, специализированных компиляторов посредством создания новых определяющих слов;
- расширение имеющегося компилятора посредством создания новых компилирующих слов.
В то время как традиционные компиляторы претендуют на роль универсальных инструментальных средств, Форт-компилятор представляет собой набор отдельных простых инструментов и позволяет на их основе создавать дополнительный инструментарий. Что, на ваш взгляд, лучше:

Ниже приводится перечень слов Форта, рассмотренных в настоящей главе.
DOES>
|
период-выполнения: ( - a)
|
Используется при создании определяющих слов. Отмечается конец участка периода компиляции и начала участка периода выполнения. Операции периода выполнения определены на высокоуровневом форте. Во время выполнения на стеке будет находиться pfa определенного слова.
|
IMMEDIATE
|
( - )
|
Последнее определенное слово становится немедленно исполняемым, то есть во время компиляции оно будет не компилироваться, а выполняться.
|
COMPILE xxx
|
( - )
|
Применяется при определении компилируйте-то слова. Когда это компилируйте* слово будет в свою очередь использоваться в исходном определении, адрес поля кода ххх будет скомпилирован в словарную статью, так что когда вновь созданное определение выполняется, выполняется и ххх.
|
LITERAL
|
период-компиляции: ( n -- ) териод-вполнемия: ( -- n)
|
Используется только внутри определения через двоеточие. Во время компиляции значение из стека компилируется как литерал в определение. Во время выполнения это значение будет помещено на стек.
|
[
|
( -- )
|
Переключение с режима компиляции на режим интерпретации.
|
]
|
( -- )
|
Переключение на режим компиляции.
|
[COMPILE] xxxx
|
( - )
|
При использовании внутри определения через двоеточие вызывает компиляции слова немедленного исполнения ххх , как если бы оно не было словом немедленного исполнения, ххх будет выполняться при выполнении данного определения.
|
INTERPRET
| ( -- )
|
Интерпретация текста из входного потока по указателю >IN до исчерпания входного потока.
|
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий