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


Глава 4. Детализированная разработка/решение задачи - часть 14


: ТЕМА ( n -- адрес) 1- ЗАПИСЬ ;

------------------------------------------------------------ СОВЕТ Пусть адреса предшествуют отсчетам. ------------------------------------------------------------

Опять-таки, это соглашение, а не требование Форта, которое способствуют читаемости кода. Вы найдете примеры применения этого правила в словах TYPE, ERASE и BLANK.

------------------------------------------------------------ СОВЕТ Пусть источник стоит перед приемником. ------------------------------------------------------------

Еще одно соглашение для удобочитаемости. К примеру, в некоторых системах фраза

22 37 COPY

копирует блок 22 в блок 37. Синтаксис слова CMOVE включает в себя как это, так и предыдущее соглашение:

источник приемник количество CMOVE

------------------------------------------------------------ СОВЕТ Остерегайтесь упреждающих выборок (из входного потока). ------------------------------------------------------------

В общем случае старайтесь не создавать определений, подразумевающих, что во входном потоке для них будут подготовлены другие слова.

Предположим, в Вашем компьютере с цветным дисплеем синий представлен числом 1, а светло-синий - числом 9. Вы хотите определить два слова: СИНИЙ будет возвращать 1; СВЕТЛО может предварять СИНИЙ для преобразования его в 9.

На Форте можно определить СИНИЙ как константу, так что при исполнении оно будет всегда возвращать требуемую 1.

1 CONSTANT СИНИЙ

А теперь определим СВЕТЛО так, чтобы оно искало следующее слово во входном потоке, исполняло его и делало логическое "ИЛИ" с восьмеркой (логика этого процесса станет ясной, когда мы вернемся к этому примеру позже в нашей книге):

: СВЕТЛО ( предшествует цвету) ( -- число цвета) ' EXECUTE 8 OR ;

(для FIG-Форта: : СВЕТЛО [COMPILE] ' CFA EXECUTE 8 OR ; )

(Для новичков: апостроф в определении СВЕТЛО - это слово Форта (по-другому - "штрих"). Штрих используется для поиска по словарю; он выбирает имя и ищет его в словаре, возвращая адрес начала определения.


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