Рис. 5.5. Древовидная структура словаря
В момент компиляции анализируется входной поток, и в такт появления слова во входном потоке создается или абсолютная секция кода исполняемого, или создаются определения новых слов. Определение новых слов выглядит следующим образом:
: <имя> <слово>…<слово> ;
Имя – определяемое слово языка, слова – список слов, которые определены раньше и хранятся в древовидной структуре словаря. Эти слова определяют новое слово – имя, и должны быть исполнены, если в тексте встретится это слово.
Базовые слова:
1. Операции над стеком
SWAP nm®mn
DUP n®nn
DROP nm®n
OVER nm®nmn
2. Операции работы с памятью
@ a®m(a) по адресу а, находящемуся на вершине стека, читается содержимое
! na® слово n записывается в память по адресу a.
3. Логические операции
NOT n®n
AND nm®p
XOR nm®p
OR nm®p
4. Операции над целыми числами
+, -, *, /, MOD, ABS, MIN, MAX, MINUS
5. Управляющие конструкции
IF XXX ELSE YYY
THEN ZZZ
Если на вершине стека истина, то выполняется XXX, иначе YYY, в любом случае – ZZZ.
BEGIN XXX
WHILE YYY REPEAT
Тело цикла XXX исполняется всегда, YYY вычисляет условие завершения.
6. Стек адресов возврата
>R из стека операндов слово переносится в стек адресов возврата
R> из стека адресов возврата слово переносится в стек операндов
R слово из адресов возврата копируется в стек операндов
Рис. 5.6. Структура вычислительного механизма
Рис. 5.7. Вычислительный механизм