Balancer: Все сообщения за 8 Февраля 2006 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
** Сообщение с ограниченным доступом **

Balancer

администратор
★★★★★
fixed
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
В последних сборках JBForth поддерживает (хотя ещё и небезбаговую) работу со словарями.

По словарям вкратце.

Словарь (изначально vocabulary, в последних стандартах - wordlist, "список слов") - это навроде каталога в файловой системе.

В разных словарях может быть слово с одним и тем же именем.

Поиск слова выполняется сперва в словаре, на который указывает переменная CONTEXT (для запоминания - "контекстный поиск"). Если не находит - то проходит по специальному списку, получить который можно по GET-ORDER, а просмотреть все переменные можно по voc.

Новый словарь создаётся устаревшим, но наиболее удобным способом по слову VOCABULARY.
code forth
  1. vocabulary events

создать словарь "events"

Если после этого вызвать слово events, то в переменную CONTEXT окажется записан наш новый словарь, и поиск слов будет вестись оттуда.

В случае неудачи, Форт будет пытаться искать по списку GET-ORDER, где обычно по умолчанию указан основной словарь Форта.

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

Словарь, в который идёт компиляция, определяется переменной CURRENT.

Проще всего в эту переменную записать текущий словарь поиска (CONTEXT) по слову DEFINITIONS.
code forth
  1. events  делаем контекстным словарь events
  2. definitions  пишем новые слова туда


Для работы со списком контекстного поиска (который просматривается по VOC.) служат слова:
ALSO - добавляет словарь из CONTEXT в список просмотра.
PREVIOUS - убирает последний словарь из списка, а предпоследний прописывает также в CONTEXT.
FORTH - основной словарь Форта.

Итак, примеры с голым консольным jbforth.jar (вывод описываю в виде комментария):
java -jar jbforth.jar

Создание слов в словарях, переключение словарей:
code forth
  1. voc.
  2.  Current=WordList:forth-wordlist, Context=WordList:forth-wordlist, order = [WordList:forth-wordlist]
  3. : test "Main dictionary" . ;
  4. test
  5.  Main dictionary
  6. vocabulary events
  7. events
  8. voc.
  9.  Current=WordList:forth-wordlist, Context=WordList:events, order = [WordList:forth-wordlist]
  10. definitions
  11. voc.
  12.  Current=WordList:events, Context=WordList:events, order = [WordList:forth-wordlist]
  13. : test "Events dictionary" . ;
  14. test
  15.  Events dictionary
  16. forth
  17. test
  18.  Main dictionary
  19. voc.
  20.  Current=WordList:events, Context=WordList:forth-wordlist, order = [WordList:forth-wordlist]
  21. events test
  22.  Events dictionary
  23. voc.
  24.  Current=WordList:events, Context=WordList:events, order = [WordList:forth-wordlist]


вложенные словари:
code forth
  1. vocabulary events
  2. events definitions
  3. vocabulary balancer
  4. balancer definitions
  5. : test "Events/Balancer dictionsry" . ;
  6. test
  7.  Events/Balancer dictionsry
  8. voc.
  9.  Current=WordList:balancer, Context=WordList:balancer, order = [WordList:forth-wordlist]
  10. forth
  11. test
  12.  Abort: Unknown word 'test' in >| test |<
  13. balancer
  14.  Abort: Unknown word 'balancer' in >| balancer |<
  15. events balancer
  16. voc.
  17.  Current=WordList:balancer, Context=WordList:balancer, order = [WordList:forth-wordlist]
  18. also
  19. voc.
  20.  Current=WordList:balancer, Context=WordList:balancer, order = [WordList:balancer, WordList:forth-wordlist]
  21. forth
  22. voc.
  23.  Current=WordList:balancer, Context=WordList:forth-wordlist, order = [WordList:balancer, WordList:forth-wordlist]
  24. test
  25.  Events/Balancer dictionsry
  26. previous
  27. voc.
  28.  Current=WordList:balancer, Context=WordList:forth-wordlist, order = [WordList:forth-wordlist]
  29. test
  30.  Abort: Unknown word 'test' in >| test |<


Что непонятно в примерах - спрашивайте :)

Посмотреть список слов в текущем словаре можно по слову WORDS. Но оно сейчас глючит в основном словаре. Для отладки же - вполне можно использовать.

Проблема с которой можно столкнуться в l2j при использовании словарей:

1. Слова admin_*, user_*, bypass_* и т.п. всегда ищутся в словаре по умолчанию. Он же для пользователя почти всегда - FORTH. Поэтому не забывайте, работая в своих словарях, при определении этих слов, переключаться в основной словарь:
code forth
  1.  ...
  2. events definitions
  3. : XXX ( это слово в словаре EVENTS ) ... ;
  4.  ...
  5. also forth definitions
  6. : bypass_XXX ( а это - уже в базовом словаре ) ... ;
  7. previous definitions
  8. : YYY ( снова словарь events ... ) ;
  9.  ...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Штрафы-то выставляются, но как-то странно: по набирании 100% штрафов в R/O пользователь не отправляется.
 


Это была моя личная доработка. В новой же версии код изменился настолько, что этот механизм надо писать заново. Предварительно разобравшись в совершенно изменившемся коде :-/ В общем - долгая это история.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
WaLL> Стоит ли трать деньги на инет , здоровье на бессоные ночи и спокойствие души на постоянный поиск приключений ?

Это уже от тебя зависит :) Могу только пообещать, что сервер не закроется пока тут будет хотя бы 5..10 человек онлайна. А на счёт перспектив - посмотрим...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
** Сообщение с ограниченным доступом **

Balancer

администратор
★★★★★
Дату смотрите... Больше года назад было :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru