parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 24.11.2013 10:47 / 24.11.2013 11:07

- в @stem_word баг. в одной ветке if используется result, в другой -- нет. в один день он вылезет.

- @s[] мне не нравится. во первых — способом безусловной записи в $caller.RV, а во вторых — тем, что он делает лишнее сравнение когда от него этого не требуется. например:
^if(!^s[$RV;$PERFECTIVEGROUND]){^s[$RV;$REFLEXIVE]}
в condition result нужен, в теле -- нет. поэтому я сделал бы ещё один метод без сравнения и вызывал бы его где надо.
кстати можно вообще избавиться от сравнения строк (но надо потестировать что быстрее/жрёт меньше памяти):
@s[RV;regex]
$result(false)
$caller.RV[^RV.match[$regex][]{$result(true)}]
- в куче шаблонов можно написать (?:...) вместо (...), т.к. найденные результаты совпадения не используются.

- непонятно, почему некоторые regex-ы не засунуты в regex-объекты. ведь скорее всего обрабатывается не одно слово.

- некоторые regexp-ы я бы изменил, например:
(ив|ивши|ившись|ыв|ывши|ывшись)
=>
([иы]в(?:ши|шись)?)
хотя такие regexp-ы хуже читаются и поэтому это лучше отложить до окончания отладки.