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



Глава 5. Разработка: элементы Форт-стиля - часть 18


----------------------------------------------------------------

"Смещение" - это разница, выраженная в абсолютных единицах, например, байтах.

"Индекс" - это разница, выраженная в логических единицах, например, элементах записи.

Знак равенства после символов "t" и "f" показывает, что этот флаг имеет определенное значение. Результат во втором варианте примера можно прочесть как "истина означает отсутствие равенства".

ЗАПИСЬ ДЛЯ РАЗЛИЧНЫХ ВАРИАНТОВ.

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

Если количество чисел на стеке в любом случае остается неизменным, а меняются лишь функции этих чисел, можно использовать вертикальную черту (|) для обозначения "или". Следующий комментарий изменения стека описывает слово, возвращающее либо адрес файла, либо нуль, если файл не найден:

( -- адрес|0=файла-нет)

Если количество чисел на стековой картинке может меняться - как на картинке "до", так и "после", - Вам следует писать обе версии полной стековой картинки, каждую - со своим двойным тире, разделенные символом "или". К примеру:

-FIND ( -- apf len t=найдено | -- f=не-найдено )

Этот комментарий показывает, что если слово найдено, то на стеке возвращаются три аргумента (с флагом на вершине); иначе возвращается только флаг "ложь".

Обратите внимание на важность второго появления "--". Если его опустить, то это будет означать, что определение всегда возвращает три аргумента с флагом на вершине стека.

При желании можно записывать весь стековый комментарий дважды, либо в одной строке, отделяя записи тремя пробелами:

?DUP \ если 0: ( n -- n) если не-0: ( n -- n n )

либо по вертикали:

-FIND \ найдено: ( -- apf len t ) \ не-найдено: ( -- f )

КОММЕНТАРИИ К СТРУКТУРАМ ДАННЫХ.

"Комментарий к структуре данных" изображает элементы такой структуры. Для примера, вот определение буфера для вставки по имени |ВСТАВКА:




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