Forth
http://www.fforum.winglion.ru/

Можно ли к форку прикрутить самописный поиск по словарям
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2657
Страница 1 из 1

Автор:  Antender [ Вс сен 26, 2010 11:54 ]
Заголовок сообщения:  Можно ли к форку прикрутить самописный поиск по словарям

Например, как здесь: viewtopic.php?f=2&t=2639&start=45
В SPF не используется вектор FIND поэтому поиск приходится использовать через самописный INTERPRET.

Делаю скриптовый язык на основе Форта и возможность ограничить используемые пользователем слова очень бы пригодилась.

Автор:  mOleg [ Вс сен 26, 2010 12:27 ]
Заголовок сообщения:  Re: Можно ли к форку прикрутить самописный поиск по словарям

Antender писал(а):
В SPF не используется вектор FIND поэтому поиск приходится использовать через самописный INTERPRET.

ну, во-первых, таки можно глянуть в код, там все достаточно понятно и задокументировано.

Поиск в форке кардинально отличается от СПФа, и от всех ранее мною встречаемых фортов. И сразу нужно уловить, что в словаре поиск ведется самим словарем! Это значит, что склеивать словари очень небезопасно, т.к. формат записей в каждом из них может быть уникальным, а рассматриваемые вами древовидные словари возможны только в одной ветке(типе) словарей. Таким образом, FIND перехватывать смысла вообще нет, он в форке сводится к следующей конструкции:

1) взять следующий идентификатор словаря(из контекста)
2) найти в его структуре адрес слова, производящего поиск внутри данного словаря
3) вызвать его с помощью CATCH (чтобы в случае проблем с поиском внутри словаря система не упала).

Т.е. именно "древовидные"(согласно вашему определению) словари в форке просто бессмысленны (да и вредны), т.к. пользуется более гибкий и мощный механизм.

Antender писал(а):
Делаю скриптовый язык на основе Форта и возможность ограничить используемые пользователем слова очень бы пригодилась.

это делается вообще без проблем:
1) Создается отдельный словарь
2) внутрь добавляются нужные слова
3) в контексте оставляется лишь этот отдельный словарь.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/