Учебное пособие по языку ФОРТ
- Автор: ИТФ «Технофорт»
- Жанр: Современные российские издания / Литература ХX века (эпоха Социальных революций) / Программирование: прочее / Forth
- Дата выхода: 1993
Читать книгу "Учебное пособие по языку ФОРТ"
5. Определение новых слов
Одно из главных достоинств языка Форт заключается в его расширяемости, то есть программист может расширять базовый набор слов Форт-системы, определяя новые слова через уже определенные.
Слова, которые указывают Форт-системе, что пользователь заводит новое слово, называются ОПРЕДЕЛЯЮЩИМИ словами. Наиболее употребительное определяющее слово - это ":" (двоеточие). Формально соответствующее определение (или описание) выглядит следующим образом:
: имя тело ;
• "имя" как раз и есть новое придуманное слово,
• "тело" представляет собой перечень через пробелы уже имеющихся в Форт-системе слов; совокупность их функций образует те действия, которые будут выполнены при исполнении данного слова,
• наличие слова ";" (точка с запятой) обязательно, оно завершает определение.
Например, текст
: S2 DUP * SWAP DUP * + ;
определяет слово "S2", вычисляющее сумму квадратов двух чисел из стека
S2 ... a b --> ... a*a+b*b
Если в теле определения встретятся слова, которых нет в словаре, система напечатает ошибочное слово со знаком '-?'. При этом вся наработанная информация о новом слове исчезает.
При разработке новых слов нужно внимательно следить за изменениями стека. Рекомендуется писать комментарии. Комментарий начинается словом "(" (открывающая скобка), и система пропускает следующий за ним текст до первого символа ")" (закрывающая скобка).
Скомпилированные слова сразу же могут использоваться и в вычислениях и в определении других слов. Например, сумму четырех квадратов можно определить так:
: S4 ( a b c d --> a*a+b*b+c*c+d*d )
S2 -ROT S2 + ;
Можно отменить уже определенное слово ("забыть" его), но при этом забываются также и все слова, определенные позже него. Для этого используется слово "FORGET". Например, действие
FORGET S2
"забудет" S2 и все определенные позже слова.
Прежде, чем заводить новое слово, стоит убедиться, что его еще нет в словаре. Одному и тому же слову можно дать несколько определений с разным смыслом, но выполняться будет только последнее введенное. Однако прежнее определение не уничтожается. Если теперь выполнить слово "FORGET" c этим словом, то снова будет действовать прежнее определение. При отладке больших программ полезно иногда применять слово "FORGET", чтобы избежать переполнения словаря.
Надо помнить, что при вводе нового слова с клавиатуры его исходный текст пропадает. В словаре запоминается только скомпилированная форма. Чтобы внести изменения в уже определенное слово для перекомпиляции, приходится перенабирать его определение полностью или использовать внешнюю память.
При завершении сеанса работы с Форт-системой, что обычно задается словом "BYE", из словаря исчезают все новые слова, определенные в этом сеансе. Способ сохранения наработанной версии Форт-системы зависит от конкретной реализации.
Приведем еще пару примеров. Слово "8MOD" эквивалентно тексту "8 MOD" , но использует логические операции. Слово "LAST1" выделяет в двоичном разложении числа младшую единицу.
: 8MOD 7 AND ;
: LAST1 DUP DUP 1- XOR AND ;