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


              

Конкретные команды редактора переключают контекст


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

Различные версии Форт-систем имеют различные реализации контекстных словарей. Однако существуют некоторые общие положения, которые можно распространить на большинство систем.

Словарь, где должен осуществляться поиск, определяется пользовательской переменной с именем CONTEXT (КОНТЕКСТ). Как

уже упоминалось выше, команды FORTH, EDITOR и ASSEMBLER изменяют контекст поиска.

Известен еще один вид контекста: словарь, к которому должно быть присоединено новое определение. Такой словарь задается другой переменной с именем CURRENT (ТЕКУЩИЙ). Поскольку CURRENT обычно определяет словарь Форта, то новые определения, как правило, присоединяются к данному словарю.

А каким образом система компилирует слова в словари редактора и ассемблера? Это делается с помощью слова DEFINITIONS (ОПРЕДЕЛЕНИЯ), например: EDITOR DEFINITIONS

Вы знаете, что слово EDITOR устанавливает CONTEXT для редактора. Слово DEFINITIONS копирует содержимое слова CONTEXT, каким бы оно ни было, в слово CURRENT. Слово DEFINITIONS имеет простое определение:: DEFINITIONS CONTEXT @ CURRENT ! ;

После вывода выражения EDITOR DEFINITIONS все компилируемые с этого момента слова заносятся в словарь редактора до тех пор, пока вы не введете выражение FORTH DEFINITIONS, чтобы поместить в CURRENT Форт.

Техника работы с контекстными словарями существенно зависит от конкретной системы и в какой-то степени противоречива. В Стандарте-83 подробности опущены, а потому обойдемся без них и мы. Обращайтесь к документации по своей системе.





























































' ххх 

( -- а)



Осуществляется поиск в словаре адреса слова ххх ( следующего слова из входного потока ) .



['] 

период-компиляции: ( -- ) период-выполнения: ( -- a)



Используется только в определении через двоеточие. Компиляция адреса следующего слова из определения как литерала.



EXECUTE 



( a -- )



Выполнение элемента словаря, адрес поля параметров которого находится на стеке.



@EXECUTE 

( a -- )



Выполнение элемента словаря, на pfa которого ссылается содержимое по адресу а. Если адрес содержит нуль, то @EXECUTE ничего не выполняет.



>BODY 

( cfa -- pfa)



Вычисление адреса поля параметров определения, адрес компиляции которого находится на стеке.



EXIT



( -- )



Удаление адреса возврата, из вершины стена возвратов и занесение его в указатель адресного интерпретатора. Если слово EXIT скомпилировано в определении через двоеточие, то оно завершает выполнение этого определения в данной точке.



QUIT



( -- )



Очистки стека возвратов и передача управлений терминалу, ожидающему ввода. Сообщения при этом ни выдается.



ABORT



( -- )



Очистке стека данных и выполнение функций слова QUIT. Сообщения не выдаются.



H или DP



( -- a)



Занесение в стек адреса указателя словаря.



HERE



( -- a)



Занесение в стек адреса очередного доступного участка словаря.



PAD



( -- a)



Занесение в стен адреса начала рабочей области, в которой хранятся строки символов в процессе промежуточной обработки.



SP@ или 'S



( -- a)



Занесение в стек адреса вершины стека данных до того, как исполнено сама слово SP@.



S0



( -- a)



Содержится адрес дна стека данных.



TIB



( -- a)



Занесение в стек адреса начала буфера входного текста.




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