Начальный курс программирования на языке Форт


СТЕКОВАЯ НОТАЦИЯ - часть 2


Поскольку ( является словом, вы обязаны отделять этот символ пробелом так же, как и в случае применения слова ."1. 

Вы можете использовать обычный комментарий внутри некоторого определения следующим образом: : НИЧЕГО ( это слово ничего не выполняет ) ;

Текст «это слово ничего не выполняет» является комментарием. Вернемся к стековой нотации. Основной формат комментария этого вида выглядит так: ( -- )

1 Для начинающих. Закрывающая круглая скобка не является словом. Это просто символ, который служит ограничителем для слова ( . (Вспомните, что для слова ." ограничителем является символ ")

Такой комментарий означает, что данное определение никакого эффекта на стек не оказывает. К словам подобного рода относится CR или специфицированное нами слово STAR. (Во время своего исполнения слово STAR помещает в стек число 42, но извлекает его из стека до завершения работы, так что стековых эффектов в рассматриваемом случае нет.) Принято отделять стековую нотацию от имени определения двумя пробелами: : STAR ( -- ) 42 EMIT ;

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

Если некоторое слово должно выбрать из стека аргументы, то эти аргументы перечисляются слева от двойного дефиса. Например, стековая нотация для слова . («точка») выглядит следующим образом: ( n -- )

(Буква n заменяет число.) Если слово возвращает стеку аргументы, то они перечисляются справа от двойного дефиса. Стековая нотация для слова + имеет вид:

( n1 n2 — сумма )

Для обозначения аргументов вы можете использовать имена, сокращения или просто нумеровать их: nl, n2, nЗ и т. д., как было сделано в приведенном выше примере.

Когда вы указываете несколько аргументов справа или слева от дефиса, необходимо строго соблюдать порядок их размещения. Запомните следующее правило: крайний правый объект в стековой нотации является верхним элементом стека. 

Это легко запоминается, поскольку перечисление аргументов в стековой нотации совпадает с порядком их ввода.


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