Способ мышления-Форт



             

Приложение Б: Определение DOER/MAKE - часть 3


Теперь ;AND записывает HERE (место начала следующего участка кода, начинающегося со SPACE) в ячейку, которая содержала ноль. Теперь (MAKE) имеет указатель на место продолжения исполнения. Фраза

IF >R THEN

теперь положит на стек возвратов адрес кода, начинающегося со слова SPACE. Так выполнение перескочит через код между MAKE и ;AND и продолжится для остальной части определения через двоеточие. Слово UNDO получает адрес слова-DOERа и записывает в него ссылку на слово NOTHING. Одно последнее замечание: на некоторых системах может возникнуть проблема. Если Вы используете MAKE вне определения через двоеточие для создания ссылки вперед, то можете оказаться не в состоянии найти самое последнее из определенных слов. К примеру, если у Вас имеется

: ПРИПЕВ ТРАМ- ПАМ- ПАМ- ; MAKE ПЕСНЯ КУПЛЕТ ПРИПЕВ ;

то Ваша система может подумать, что ПРИПЕВ еще не определен. Проблема заключается в месторасположении слова SMUDGE. В качестве решения попытайтесь перегруппировать порядок определений или, при необходимости, уберите код с MAKE внутрь определения, которое потом можно исполнить:

: УСТАНОВКА MAKE ПЕСНЯ КУПЛЕТ ПРИПЕВ ; УСТАНОВКА - 286 -

В системе Laboratory Microsystems PC/FORTH 2.0 слово UNSMUDGE в 9-й строке устраняет эту проблему. В модели Форта Лексена/Перри/Харриса этой проблемы нет. Последний блок - это пример использования DOER/MAKE. После загрузки блока введите

RECITAL

а затем введите

WHY?

и возврат каретки столько раз, сколько захочется. (Всякий раз у Вас будет для этого своя причина.)

Блок # 21 0 ( DOER/MAKE Теневой блок LPB 12/05/83 ) 1 NOTHING нет операции 2 DOER определяет слово с векторизуемым поведением 3 MARKER хранит адрес служебного указателя продолжения 4 (MAKE) устанавлиает адрес последующего кода в поле 5 параметров слова типа DOER 6 MAKE интерпретация: MAKE doer-имя Форт-код ; 7 или внутри определения: 8 : ОПР MAKE doer-имя Форт-код ; 9 векторизует слово doer-имя на Форт-код. 10 ;AND разрешает продолжение определения с MAKE. 11 UNDO использование: UNDO doer-имя делает его 12 безопасным в использовании. 13 14 15




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