В системе есть полезная функция objwords, позволяющая узнать какой именно лексемой был запрошен объект, что используется в функции "спросить об" и ещё одной фиче.
Вопрос знатокам - есть ли оптимальный способ узнать, какие были лексемы у глаголов и предлогов?
Например, было ли написано "спросить об" или "распросить про", что существенно для согласования ("про штуку" - "о штуке").
Неактивен
Решил проблему следующей функцией:
// пытается опознать предложный или винительный падеж // указанного слова и возвращает либо "о(б)" - предложный, // либо "про" - винительный // только существительные opro: function(word) { local ret, ob=0; // признаки предложного падежа ret := reSearch('(е|ах|ях)$',word); if (ret!=nil) { ret := reSearch('^[аеёиоуэюя]',word); // первая буква - гласная if (ret!=nil) return 'об'; else { if (word='мне') return 'обо'; return 'о'; } } // признаки винительного ret := reSearch('(я|а|у)$',word); if (ret!=nil) return 'про'; // если окончание -и, например "молнии", - то будем считать, что число мн-ое // для несклоняемых и прочего - "про" return 'про'; }
Результат:
>спросить шушпанчика про двери
- Что скажешь, таинственный Шушпанчик, про двери?
>спросить шушпанчика обо мне
- Что скажешь, таинственный Шушпанчик, обо мне?
Неактивен