Чтобы было понятнее, приведу пример:
Посмотрим на PatternForth от Родригеса: методом добавления новых лексиконов (1) он расширил FORTH ассоциативными хранилищами строк, строковыми операциями и операцией сравнения строки с шаблоном. Кому лень читать первоисточник, можете посмотреть
у меня пересказ.
При всех достоинствах проекта можно отметить следующие очевидные недостатки:
- перевод разговора на обсуждение лексиконов замаскировал тот факт, что задача управления памятью оказалась, по-сути, нерешенной (мол, сами доработайте свой FORTH для работы за пределами 64Kb).
- C-подобный набор строковых операций - вещь совершенно не нужная в реальном программировании.
- предложенный язык шаблонов слишком тяжеловесен.
Попробуем посмотреть, нельзя ли применить другие методы:
(2) - упрятывание в интерпретатор. Конечно! Ведь предложенный механизм работы со строками практически делает работу FIND. Не проще ли переписать свой FORTH так, чтобы словари могли занимать более 64Kb (размещаться по-блочно) и хранить более длинные имена (с пробелами)? Можно и хеширование добавить... И все. Фортер даже не будет знать, что хранение и поиск строк что-то "весят".
(3) - нестандартный интерпретатор. Думаю, можно доказать, что подогнать язык шаблонов под стандарты FORTH-языка невозможно (разве что, применить стек приоритетов, как классики делали с инфиксной арифметикой). Но зачем? Интерпретатор для шаблонов давно описан и обсчитан (конечные автоматы). Так добавим к нашей FORTH-системе еще пару процедур - чтения-применения регулярных выражений. Создадим дополнительное хранилище для построенных конечных автоматов...
(4) - несколько интерпретаторов. Возвращаемся к постановке задачи. Не будет ли наш FORTH слишком тяжеловесным, получив "на борт" все эти строковые механизмы? Ведь он должен еще и что-то делать? Так может объединим две FORTH-системы: одна маленькая (на 64Kb) - для работы - и большой строковый процессор. Точнее, даже, наоборот. Большой FORTH-управлятор многими видами памяти (в т.ч. строковыми) будет содержать и рабочую FORTH-систему (которой выделит немного места и пару потоков ввода-вывода). Но, опять же, т.к. теории этого дела нет, фантазировать можно сколько угодно...