Здравствуйте, господа!
Подскажите мне, пожалуйста, реализуема ли на TADS следующая команда:
"попросить Тимофея отвлечь продавца".
Глагол "попросить" сейчас определяется такmodify askVerb
verb = 'попросить'
;
Заранее спасибо.
Неактивен
В TADS-мануале совершенно точно есть именно такой пример - преобразование фразы "попросить актера сделать что-либо" в "актер, сделай что-либо", но прямо сейчас найти не смогу. Ищи где-то в главах, посвященных синтаксическому анализатору.
upd. См. в английском варианте мануала, глава 6 "The Parsing Sequence", , в разделе, посвященном функции preparseCmd. Вот текст примера (на английском):
Here’s a sample implementation of preparseCmd. This implementation converts commands
in the format “tell actor to command” to the standard TADS notation for these commands, “actor, command.”
#pragma C+
preparseCmd: function(cmd)
{
local i, tot, to_loc, actor, the_rest;
tot = length(cmd);
/* check to see if it starts with "tell" */
if (tot > 3 && cmd[1] == 'tell')
{
/* see if there's a word "to" */
for (i = 1, tot = length(cmd) ; i <= tot ; ++i)
{
if (cmd[i] == 'to')
to_loc = i;
}
/* if there's a "to", convert the command */
if (to_loc != nil && to_loc > 2)
{
/* find the parts before and after the 'to' */
for (i = 2, actor = [] ; i < to_loc ; ++i)
actor += cmd[i];
for (the_rest = [], i = to_loc + 1 ; i <= tot ; ++i)
the_rest += cmd[i];
/* convert it to "actor, command" */
return actor + ',' + the_rest;
}
}
/* otherwise, process the command as normal */
return true;
}
Из русского мануала я его убрал, заменив на описание работы preparseCmd в RTADS.
Отредактировано uux (22.11.2007 09:40)
Неактивен
GrAndrey написал:
Теперь я знаю, что могу спокойно уйти на покой...
Главное, чтобы это знание не послужило руководством к (без)действию.![]()
Неактивен