Язык Форт и его реализации


         

другим примером такого слова помимо


> 5 4 S2 . 41 ОК
Слова с признаком немедленного исполнения ( другим примером такого слова помимо точки с запятой является открывающая круглая скобка — начало комментария) выполняются по-разному в зависимости от состояния текстового интерпретатора. Некоторые из них даже используются только в одном из этих состояний. Поэтому на диаграмме для таких слов будем отмечать эти случаи, специально указывая состояние компиляции
( ---> ---> (компиляция)
Слово ( в обоих состояниях действует одинаково: пропускает все следующие вводимые литеры до закрывающей круглой скобки включительно или до конца введенной строки, если закрывающая скобка отсутствует.
Слово ; допустимо применять только в состоянии компиляции: ; --> (компиляция). Оно завершает построение нового определения и переключает текстовый интерпретатор в состояние исполнения.
Слово IMMEDIATE (немедленный) --> устанавливает признак немедленного исполнения для последнего определенного слова. (Подробнее использование этого признака рассматривается в п.1.7.)
Введенные слова можно исключить из словаря с помощью слова FORGET (забыть) -->, которое выбирает из входной строки следующее слово и исключает его из словаря вместе со всеми словами, определенными позже.
Разберем следующий протокол диалога:
> 2 2 * . 4 ОК > : 2 3 ; ОК > 2 2 * . 9 ОК > FORGET 2 ОК > 2 2 * . 4 ОК
Сначала программист вычисляет произведение от умножения 2 на 2 и получает ответ 4. Введя затем определение слова 2 как числа 3, он в дальнейшем получает уже другой ответ. Исключив это определение слова 2 через FORGET, он возвращается к прежней семантике слова 2.
В процессе работы текстового интерпретатора программист может переключать его из состояния компиляции в состояние исполнения и обратно с помощью слов [ (открывающая квадратная скобка) --> и ] (закрывающая квадратная скобка) -->. Слово [ имеет признак немедленного исполнения и переключает интерпретатор в состояние исполнения, а слово ] переключает его в состояние компиляции.

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