В системе есть полезная функция 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 'про';
}Результат:
>спросить шушпанчика про двери
- Что скажешь, таинственный Шушпанчик, про двери?
>спросить шушпанчика обо мне
- Что скажешь, таинственный Шушпанчик, обо мне?
Неактивен