Logo
 

 

система разработки интерактивной литературы на русском языке
главная/материалы

Свойства, методы,
объекты, и функции

Перевод главы из мануала по парсеру "Parser Summary and Quick Reference".

Парсер может вызывать методы или функции, которые определены для объектов. Здесь можно видеть только краткое описание каждой функции, а за подробностями придётся обращаться к английскому руководству.

Свойства и методы

action(actor)
Вызывается в deepverb объекте в течение выполнения команды для исполнения команды без объекта.
actorAction(verb, dobj, prep, iobj)
Вызывается actor объектом в течение выполнения команды.
sdesc
Используется для отображения короткого описания объекта.
adjective
Определяет слова как прилагательные и создаёт ассоциацию с объектом.
anyvalue(num)
Парсер вызывает этот метод для объекта с обычным числовым прилагательным (adjective = '#') когда игрок использует "любой" с существительным ссылающим на объект. Этот метод возвращает число для использования парсером.
article
Определяет слово как артикль. Как в русском языке использовать, ума не приложу.
cantReach(actor)
Вызывается в объекте (только если cantReach не определён в глаголе) когда объект видим, но не доступен; подразумевается, что должно быть выдано соответствующее сообщение.
cantReach(actor, dolist, iolist, prep)
Вызывается в глаголе когда список объектов (только один из dolist или iolist будет не nil) видим, но не доступен; подразумевается что метод всё объяснит.
construct
Вызывается как только объект создан исполнением new оператора. Как минимум, метод вставит объект в список содержимого contents контейнера.
contents
Список содержимого контейнера.
destruct
Вызывается сразу перед уничтожением объекта оператором delete. Как минимум, метод удаляет объект из списка содержимого contents, и должен убедиться, что объект не упоминается больше нигде.
disambigDobj(actor, prep, iobj, verprop, wordlist, objlist, flaglist, numberWanted, isAmbiguous, silent)
Парсер вызывает этот метод в объекте deepverb для разбора обыкновенной фразы с существительным, используемым как прямой объект. Парсер вызывает этот метод для любой обыкновенной фразы с существительным, используемым как прямой объект, вне зависимости от того, является ли фраза действительно двусмысленной, или нет.
disambigIobj(actor, prep, dobj, verprop, wordlist, objlist, flaglist, numberWanted, isAmbiguous, silent)
Парсер вызывает этот метод в объекте deepverb для разбора обычной фразы с существительным, используемым как косвенный объект. Парсер вызывает этот метод для любой обычной фразы с существительным, используемым как косвенный объект, вне зависимости от того, является ли фраза действительно двусмысленной, или нет.
doAction
Действие с прямым объектом (Direct Object Action). Связано с объектом deepverb. Определяет глагольный шаблон для команд с "односуществительным" глаголом, и определяет суффикс используемый для действий и верификационных методов для глаголов (doSuffix и verDoSuffix, соответсвенно).
dobjCheck(actor, verb, iobj, prep)
Главная проверка прямого объекта, вызываемая в течение выполнения команды перед тем, как вызывается dobjGen.
dobjGen(actor, verb, iobj, prep)
Основной обработчик прямого объекта, вызываемый в течение выполнения команды для прямого объекта, главным образом предназначен для обработки глагольных верификаций и действий-методов. Парсер не вызывает этот метод, если объект перегружает его с детальным описанием, а не просто наследует верификационный метод (verDoVerb) или метод-действие (doVerb) для глагола.
doDefault(actor, prep, iobj)
Направляет объект по умолчанию. Ассоциируется с объектом deepverb. Возвращает список объектов для глагола по умолчанию.
ioAction(prep)
Действие с косвенным объектом; ассоциирован с объектом deepverb. Определяет шаблон глагола для двухобъектной команды глаголу с имеющимся предлогом, и определяет суффикс для использования действиями и верификационными методами для глагола (io Suffix и verIoSuffix, соответственно).
iobjCheck(actor, verb, iobj, prep)
Главная проверка косвенного объекта, вызываемая в течение выполнения команды перед тем, как вызывается iobjGen.
iobjGen(actor, verb, dobj,prep)
Основной обработчик косвенных объектов, вызываемый в течение выполнения команды над косвенным объектом. Главным образом предназначен для обработки глагольных верификаций и действий-методов. Парсер не вызывает этот метод, если объект перегружает его с детальным описанием, а не просто наследует верификационный метод (verIOVerb) или метод-действие (ioVerb) для глагола.
ioDefault(actor, prep)
косвенный объект по умолчанию(Indirect Object Default); ассоциирован с объектом deepverb. Возвращает список объектов по умолчанию для глагола.
isEquivalent
Используется для определения нужно ли обращаться с объектом как эквивалентным объектам его родного суперкласса. Если это свойство true, парсер обращается со всеми объектами одного суперкласса и этим объектом как к взаимозаменяемым в процессе устранения неоднозначности.
isHim
Если true, объект может быть доступен через "его,нему,им." Это также преобразует сообщения о объекте в advr.t в соответствии с мужским родом объекта.
isHer
Если true, объект может быть доступен через "её,ей,ею." Это также преобразует сообщения о объекте в advr.t в соответствии с женским родом объекта.
isThem
Если значение true, парсер создаёт описания в множественном числе (парсер будет говорить о объекте "они" вместо "он(о,а)"). Некоторое сообщения в adv.t также дают описание в множ. числе если свойство true. Это свойство может использоваться для единичных объектов, которые имеют имена в мн.числе, такие как "штаны" or "ножницы", а также может быть полезным для представления объекта, который является объединением множества других. Например, "куча камней".
isVisible(vantage)
Используется для определения видимости объектов с данного объекта. Парсер использует это для определения вида сообщения в случае если объект не доступен: если что-то видимо, но не доступно, парсер будет использовать cantReach для объяснения, в ином случае он попросту скажет "Этого здесь не видно."
location
Свойство указывающее Объект, который содержит объект.
locationOK
Если это свойтсво равно true, это укажет компилятору на то, что вы знаете, что свойство location не константа-объект, и поэтому он не выведет соответствующее предупреждение.
multisdesc
Используется парсером для отображения текущего объекта во время прохождения по списку прямых объектов в команде. Заметьте, что парсер не будет вызывать этот метод если в объекте определён или наследован метод prefixdesc.
newNumbered(actor, verb, num)
Парсер вызывает этот метод для объекта с общим числовым прилагательным (adjective = '#'), когда игрок использует объект как фразу-существительное. Этот метод возвращает объект для использования как результата разбора фразы-существительного; num даёт номер, который игрок использует в фразе-существительном (для примера, в "посмотреть в коробку 55", num будет числом 55).
nilPrep
Связан с объектом deepverb; используется парсером для определения предлога, используемого глаголом вида VERB IOBJ DOBJ(глагол косв.объект прям.объект). сли не определено, объект-предлог ассоциируется со предлогом "to (к)", используемым по умолчанию.
noun
Определяет слова как существительное и ассоциирует их с объектом.
parseUnknownDobj(actor, prep, iobj, wordlist)
Парсер вызывает этот метод чтобы разобрать фразу-существительное (значащие строки которого передаются с помощью wordlist), которая содержит незнакомое слово вместо прямого объекта. Этот метод применяется на объекте deepverb для глагола команды.
parseUnknownIobj(actor, prep, iobj, wordlist)
Парсер вызывает этот метод для разбора фразы-существительного (значащие строки которого передаются с помощью wordlist), которая содержит незнакомое слово вместо косвенного объекта. Этот метод применяется на объекте deepverb для глагола команды.
plural
Определяет слова как множественное число и ассоциирует их с объектом.
pluraldesc
Отображает описание объекта во множественном числе. Парсер, и определённые прикладные функции в adv.t, используют его для отображения коллективного имени для группы неразличимых объектов ("пять золотых монет").
preferredActor
Используется парсером для определения является ли объект "предпочитаемым" актёром; если это свойство true, объект выбирается как актёр в случаях где актёр не явен, и ни один из других объектов не является предпочитаемым актёром.
prefixdesc(show, current_index, count, multi_flags)
Вызывается парсером перед фазой выполнения для каждого прямого объекта в команде, для отображения префикса перед объектом прежде, чем результаты выполнения отобразятся. Парсер вызывает этот метод для каждого прямого объекта в команде, независимо от того, имеет команда один прямой объект, или множество прямых объектов. Парсер вызывает этот метод в предпочтение multisdesc.
prepDefault
Связан с объектом deepverb. Парсер использует это свойство чтобы найти предлог по умолчанию для использования в тех случаях, когда игрок вводит частичную команду, начинающуюся с глагола и прямого объекта, но с опущенными предлогом и косвенным объектом.
preposition
Определяет слова как предлоги, и ассоциирует их с объектом.
rejectMultiDobj(prep)
Связан с объектом deepverb. Если этот метод возвращает true, глпгол не позволяет множественные прямые объекты или "все."
roomAction(actor, verb, dobj, prep, iobj)
Вызывается в локации актёра в течении выполнения команды.
roomCheck(verb)
Вызывается в актёре в начале выполнения, перед распознаванием объектов.
statusLine
Вызывается в локации актера для обновления статусной строки.
validActor
Вызывается для определения годится ли объект для роли актёра. Этот метод не проверяет является ли объект логичным для роли актёра, а просто проверяет доступен ли объект, как объект для команды.
validDo(actor, obj, seqno)
Связан с объектом deepverb. Возвращает true если объект доступен как прямой объект для глагола.
validDoList(actor, prep, iobj)
Связан с объектом deepverb.Возвращает список возможных верных прямых объектов для глагола. Возвращённые объекты будут протестированны на допустимость validDo, так что список может содержать также и недопустимые объекты, но он должен содержать все допустимые прямые объекты для глагола.
validIo(actor, obj, seqno)
Связан с объектом deepverb. Возвращает true если объект доступен как косвенный объект для глагола.
validIoList(actor, prep, dobj)
Связан с объектом deepverb. Возвращает список потенциально верных косвенных объектов для глагола. Возвращённые объекты будут проверены validIo, так что список вполне может содержать неподходящие объекты, но он должен содержать все верные косвенные объекты для глагола.
value
Парсер присваивает этому свойству объектов strObj или numObj текущее знначение строки или числа (соответсвенно) введённых в команде.
verb
Определяет слова как глаголы, и связывает их с объектом. Строки в этом списке могут состоять из одного или двух слов; второе слово должно быть отдельно определено как предлог.
verbAction(actor, dobj, prep, iobj)
Парсер вызывает этот метод на объекте deepverb для комнды, точно перед вызовом метода actorAction на актёра в команде.

Объекты

againVerb
Объектdeepverb со словарём для "снова." Парсер внутренне обрабатывает "снова" когда это словарное слово глаголов введено как команда.
Me
Объект актёра игрока по умолчанию. Когда комманда явным образом не нацелена на другого актёра, этот объект является актёром, на которого посылается эта команда. Когда игра впервые загружена, парсер использует Me как персонаж игрока по умолчанию, но игра может изменить это используя parserSetMe(), встроенную функцию.
numObj
Специальный объект, который используется как прямой объект в случае если в команде введено число (например, в "ввести 30 на калькуляторе," где numObj является прямым объектом). Свойству value присваивается число, введённое в команде.
strObj
Специальный объект, который используется как прямой объект в случае если если в команде введена строка в ДК (например, в 'напечатать "Привет" на клавиатуре,' где strObj является прямым объектом). Свойству value присваивается строка, введённая в команде.
takeVerb
Формально нужна, но больше напрямую парсером не используется.

Функции

commandPrompt(type)
Парсер вызывает эту функцию, если она определена, чтобы показать строку запроса для команды. Код type определяет тип запрошенного ввода: 0 - для нормальной команды, 1 - для команды, которую вводят сразу за тем, как парсер пожаловался на незнакомое слово, 2 – для команды после жалобы на двусмысленность команды; 3 – для команды после запроса прямого объекта, а 4 – после запроса косвенного объекта.
commandAfterRead(type)
Парсер вызывает эту функцию, если она определена, немедленно после того, как Игрок заканчивает ввод очередной строки. Эта функция может изменить эффект, произведённый ранее commandPrompt established just before the command line. The type code has the same value as in the preceding commandPrompt call.
endCommand(actor, verb, dobj_list, prep, iobj, status)
The parser invokes this function, if defined, at the end of the command, after executing daemons and fuses.
init
The system calls this immediately after loading the game, and again whenever the game is restarted. This function can perform any startup operations, such as setting fuses and daemons, and displaying an introductory message. Note that the system does not call init() when the player starts the TADS interpreter and specifies on the command line (or local equivalent) a saved game position to restore; in this case, the system instead calls initRestore(). (However, if initRestore() isn't defined, the system does call init() in all cases.)
initRestore(savedGameFileName)
The system calls this function when the player starts the TADS interpreter and specifies a game to restore on the command line (or local equivalent). The purpose of this function is to allow the game to skip any introductory text that init() would normally display when starting a new game; since the player is explicitly jumping to a saved position, the player presumably doesn't need to see the introductory text again. If this function isn't defined, the system simply calls init() as though the game had been started without a saved game file.
pardon
The parser calls this function whenever the player enters an empty command. You can display an error message, if you wish.
parseAskobj(verb, ...)
The parser calls this function, if defined, to prompt for a missing direct or indirect object. If parseAskobjActor is defined, parseAskobj is ignored. If two arguments are provided, an indirect object is being requested, and the second argument is a preposition (which may be nil); therwise, a direct object is being requested.
parseAskobjActor(actor, verb,...)
The parser calls this function, if defined, to prompt for a missing direct or indirect object. If three arguments are provided, an indirect object is being requested, and the third argument is a preposition (which may be nil); otherwise, a direct object is being requested.
parseAskobjIndirect(actor, verb, prep, objectList)
The parser calls this function, if defined, to prompt for a missing indirect object. This is the parser's first choice when prompting for an indirect object; the parser calls this function in preference to parseAskobjActor() or parseAskobj().
parseDefault(obj, prep)
The parser calls this function, if defined, to display a message indicating that the object (and the preposition, if not nil) are being used by default.
parseDisambig(nameString, objList)
The parser calls this function, if defined, to prompt for more information when the player enters an ambiguous object name. The nameString is the string of words entered by the player (given as a single-quoted string), and the objList is a list of the objects matching the name.
parseError(num, str)
The parser calls this function, if defined, to get the text of an error message. num is the message number, and str is the text of the message that the parser would display by default if this function weren't defined. Note that the parser never calls this function if your game defines a parseErrorParam function.

parseErrorParam(num, str, ...)
The parser calls this function, if defined, to get the text of an error message. num is the message number, and str is the text of the message that the parser would display by default if this function weren't defined. Additional parameters are specify the values for any "%s" (string) or "%d" (number) sequences in the default message string.
parseError2(verb, dobj, prep, iobj)
The parser calls this function, if defined, to display a message indicating that the verb can't be applied to these objects (because one of the objects doesn't define or inherit a verification method for the verb).
parseNounPhrase(wordlist, typelist, currentIndex, complainOnNoMatch, isActorCheck)
The parser calls this function, if defined, to parse each noun phrase. This function can do its own noun phrase parsing for custom noun phrase syntax, or can defer to the standard built-in noun phrase parser.
parseUnknownVerb(actor, wordlist, typelist, errnum)
The parser calls this function, if defined, to parse a sentence that the parser doesn't recognize. The parser invokes this function if the command does not have a valid verb, or if the sentence does not fit a syntax pattern that the parser accepts.
preCommand(actor, verb, dobj_list, prep, iobj)
Парсер вызывает эту функцию, если указано, в начале фазы выполнения.
postAction(actor, verb, dobj, prep, iobj, status)
The parser invokes this function, if defined, at the end of the execution phase. The parser calls this function once for each direct object in a command with multiple direct objects. The parser invokes this function even when the execution phase terminates with exit, exitobj, or abort.
preinit
Called by the compiler, after compilation is complete, to perform any desired initialization. This function can't set any fuses or daemons, or display any messages; these functions are not saved in the compiled game file, so they must wait until the init function, which is invoked at run-time. The preinit function is intended to perform any time-consuming computation - for example, setting up lists of objects or initializing property values - that would otherwise be done in init every time the game is started. By performing these functions in preinit, the work can be done at compile-time, saving players from having to wait for it each time they run the game. Note that this function won't be called until run-time if the game is compiled for debugging; while this doesn't affect the behavior of the game (apart from slowing down run-time startup), it allows you to use the debugger to step through your preinit function.
preparse(cmd)
Парсер вызывает эту функцию с параметром строка в ОК, выдавая полный текст командной строки каждый раз, когда игрок вводит новую команду.
preparseCmd(wordList)
Парсер вызывает эту функцию со списком строк в ОК, передающих слова текущей команды. Эта функция вызывается для каждой отдельной команды в командной строке.

Желаю успехов!

Copyright © 2002-2015 Гранкин Андрей
Лицензионное соглашение
Жду писем: rtads@mail.ru
Сайт появился 13.09.2002
Дизайн и хостинг: Дмитрий Смирнов