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



             

Введение новых слов


Замечательное свойство языка Форт — это возможность вводить в него новые слова, расширяя тем самым набор его команд в нужном программисту направлении. Для введения новых слов чаще всего используется определение через двоеточие — определение нового слова через уже известные. Такое определение начинается словом : (двоеточие) и заканчивается словом ; (точка с запятой). Сразу после двоеточия идет определяемое слово, а за ним — последовательность слов, через которые оно определяется. Например, текст : S2 DUP * SWAP DUP * + ; определяет слово S2, вычисляющее сумму квадратов двух чисел, снимаемых с вершины стека S2 A,B --> A**2+B**2. После ввода данного описания слово S2 можно исполнять и включать в описания других слов. При создании таких определений рекомендуется тщательно комментировать все изменения стека. Слово ( (открывающая круглая скобка) отмечает начало комментария; все следующие литеры до первой ) (закрывающей скобки) считаются комментарием и при обработке вводимого форт-текста пропускаются.

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

: S2 ( A,B ---> A**2+B**2 сумма квадратов) DUP ( A,B,B) * SWAP ( B**2,A) DUP * ( B**2,A**2) + ; ( A**2+B**2)

По-видимому, минимальным требованием к документированности определения следует считать задание начального и конечного состояний вершины стека при работе слова.

Рассмотрим подробнее работу форт-системы во время определения новых слов. Мы уже знаем, что получив от программиста очередную порцию входного текста, форт-система выделяет в ней отдельные слова и ищет их в своем словаре. Эту работу выполняет текстовый интерпретатор форт-системы. Если слово в словаре не найдено, то текстовый интерпретатор пытается понять его как число, используя описанное выше правило умолчания. Если слово найдено или оказалось записью числа, то дальнейшие действия интерпретатора зависят от его текущего состояния. В каждый момент времени текстовый интерпретатор находится в одном из двух состояний: в состоянии исполнения или в состоянии компиляции.


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