parser

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

 

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

Ответ

Misha v.3 26.11.2013 04:05 / 26.11.2013 04:32

- расширение возможностей с помощью partial -- не лучший вариант. работа с классом динамически -- на порядок лучше. при этом, например, извращение с инициализацией просто выносится в @auto класса-потомка и код проверки инициализации НЕ выполняется при каждом вызове @stem

- в PARTICIPLE и REFLEXIVE тоже можно использовать (?:...)

- в чем смысл замены ^taint[^#20] на пробел? ^taint[^#20] -- это пробел и есть.

- ^try{$ccn[EREP_$language]$word[^word.replace[$$ccn]]}{^blad[]} -- это для чего (особенно else)?

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

- следующая конструкция читается очень плохо:
^if(^s[$RV;$ADJECTIVE]){^s[$RV;$PARTICIPLE]}{
	^if(!^s[$RV;$VERB]){^s[$RV;$NOUN]}
}
лучше code-if-true и code-if-false записывать на одном уровне:
^if(^s[$RV;$ADJECTIVE]){
	^s[$RV;$PARTICIPLE]
}{
	^if(!^s[$RV;$VERB]){^s[$RV;$NOUN]}
}
- не везде заменили пустые фигурные скобки при match-замене на квадратные. это чуточку, но быстрее.

- с моей точки зрения изменение метода @s -- это самое главное, что нужно было сделать. заметьте, в некоторых местах доп. вызова @s (где делается лишняя работа) нет и используется in-place match:
^if(^s[$RV;$DERIVATIONAL]){$RV[^RV.match[$ADJNOUN][]{}]}
т.е. надо сделать по аналогии:
^if(!^s[$RV;$PERFECTIVEGROUND]){^s[$RV;$REFLEXIVE]}
=>
^if(!^s[$RV;$PERFECTIVEGROUND]){$RV[^RV.match[$REFLEXIVE][][]]}
хэшфайл не закрывается уже несколько версий Парсера подряд, стоит заплатка. Когда почините?
мы ничего про это не знаем :)
что вы имеете в виду, под "хэшфайл не закрывается"?