Словарь - это список слов, определененных во время выполнения скрипта. Словарь хранится в оперативной памяти. Пока нет возможности сохранить его на жесткий диск и загрузить, да и незачем. Каждое слово имеет следующие атрибуты:
Номер слова.
Код исполнения
Адрес процедуры исполнения
Имя слова.
Время исполнения (период выполнения / период компиляции).
Список атомов.
Список переменных.
Каждое слово нумеруется по порядку с словаре.
Атом состоит из двух полей - номер слова и значение константы.
Когда Вы нажимаете кнопку "Выполнить" происходит следующее.
Форту передается для выполнения текст скрипта. Система вычленяет кусочки текста (токены) из теста. Разделение текста на токены производится по пробелам и символам "(" и ")" (открывающая и закрывающая круглые скобки. Встретив круглую скобку, система пропускает все последующие символы, пока не встретит закрывающую круглую скобку.
Выделив токен, форт пробует интерпретировать его как константу - целую или с плавающей точкой число; текст, обрамленный двойными кавычками, слова FALSE или TRUE. Если токен интерпретируется как константа, то система заталкивает его в стек. Если токен не подходит под константу, то система обращается к словарю, где ищет слово с совпадающим наименованием. Если слово находится, то оно вызывается на выполнение. Если слово не находится, то вызывается ошибка и выполнение скрипта прерывается. Выполнив слово, система снова выделяет токен и так далее, пока текст не кончится.
В словаре системы изначально находится ряд слов, например "+", "-". Программист с помощью определяющих слов может добавить в словарь новые слова. В частности, с помощью слов ":" и ";".
Система помнит последнее определенное слово. Встретив в тексте скрипта токен ":", система запускает на выполнение слово ":". Слово ":" выбирает из текста скрипта следующий токен, создает новое слово в словаре (говорят "создает словарную статью") с этим именем и переводит систему в режим компиляции.
В режиме компиляции система, выбирая следующие токены из скрипта, также ищет соответствующие слова в словаре или интерпретирует константы. Найдя слово в словаре, система смотрит у него на признак времени исполнения: если период выполнения, то система добавляет атом с номером найденного слова в список атомов последнего определенного слова; если период компиляции, то система вызывает это слово на выполнение. Если интерпретировалась константа, то система добавляет атом со значением этой константы в список атомов последнего определенного слова.
В этом коренное различие Форта от остальных языков. Компиляция и выполнение кода производится одновременно. Процесс компиляции зависит от набора определяющих слов, которые можно определить дополнительно. То есть вы сами можете определить, как компилировать текст скрипта. Единственное ограничение - текст должен разделяться на токены пробелами.
При добавлении новых слов номер слова дается по порядку.
Код исполнения - число, идентификатор, который указывает интерпретатору, как выполнять данное слово. Коды исполнения зашиты в форте и не видны пользователю. Если код = pndfcCode (Так определена константа в тексте проекта ScriptFort на Delphi), то интерпретатор выбирает список атомов этого слова, выбирает из него слова один за другим и выполняет. Если код = pndfcUnitary, то у слова выбирается поле "Адрес процедуры выполнения" и вызывается процедура, зашитая в коде ScriptFort. Так определены почти все системные слова - они реализованы на Delphi. Некоторые слова имеют свой код и обрабатываются интерпретатором достаточно сложно.
Проект ScriptFort написана на Delphi. Артитектура его такова, что минимальными усилиями можно в текст проекта ScriptFort добавить новые системные слова. При условии конечно, что у Вас будет Delphi, программист и исходники данного проекта, которые можно купить у меня. Ну или я добавлю ряд системных слов и передам готовый ScriptFort вам, который Вы можете встроить в свой Delphi проект.