Итак, на входе - обычный FORTH, не имеющий на борту ничего, кроме того, что необходимо для его работы (саморазвития). Нам надо расширить его некоторыми свойствами операционной системы - взаимодействием с некими устройствами, многозадачностью и прочим...
Какое направление предпочесть?
1. Создавать лексиконы наподобие Си-библиотек?
Появляется новое устройство - пишем новый лексикон (особый словарь), и все. Например, определяем слова ввода-вывода в порты, опроса семафоров и т.д. Комбинируем их в высокоуровневые слова типа "вкл/выкл".
Плюс - можно подключить что угодно.
Минус - теряется преимущество FORTH-подхода, программа становится практически неотличимой от написанной на Си.
2. Прятать внутрь интерпретатора?
Закапываем всю машинерию вглубь интерпретатора. Пользователь даже не знает, что FORTH где-то что-то химичит.
Например, так обеспечивается работа с FORTH-консолью в графических ОС и реализуется классическая многопользовательность путем переключения пользовательских областей.
Плюс - FORTH-программы просты и стандартны.
Минус - теряется способность программиста получить легкий доступ к внутренностям системы.
3. Усложнять интерпретатор?
Расширяем классический интерпретатор не свойственными ему инструментами.
Дополнительные Циклы Управления, включение новых хранилищ данных, процедур их итерпретации...
Например, целевая компиляция, заменяющая стандартную интерпретацию реакцией на определенный ввод пользователя.
Плюс - идеально подходит для изготовления нужного проблемно-ориентированного языка.
Минус - FORTH перестает быть стандартным.
4. Использовать более одного интерпретатора?
Объединить несколько FORTH-систем вместе.
Например, у меня в FOBOS есть две форт-системы, объединенные общим словарем: одна заполняет словарь необходимыми для примера определениями, другая обрабатывает Win-сообщения примера.
Плюс - каждая из систем…
Дальше »»»