intficpy.parser module

class intficpy.parser.Parser(game)

Bases: object

callVerb()

Gets the Thing objects (if any) referred to in the player command, then calls the verb function

Returns a Boolean, True if a verb function is successfully called, False otherwise

checkAdjectives(noun_adj_arr, noun, things, scope, far_obj, obj_direction)

If there are multiple Thing objects matching the noun, check the adjectives to narrow down to exactly 1 Takes arguments self.game.app, noun_adj_arr, a list of strings referring to an in game item, taken from the player command,noun (string), things, a list of Thing objects (things.py) that are candidates for the target of the player’s action, and scope, a string specifying the range of the verb Returns a single Thing object or None

checkComponentObjects()

Check if any of the identified objects have subcomponents that are better candidates as objects of the current verb.

checkExtra(verb, verb_form, dobj, iobj)

Checks for words unaccounted for by verb form

Returns a list, empty or containing one word strings (extra words)

checkForConvCommand()
checkForImplicitObjects()

Raises AbortTurn in the event of a missing direct or indirect object.

Returns None, or a list of two items, either lists of strings, or None

checkRange(things, scope)

Eliminates all grammatical object candidates that are not within the scope of the current verb Takes arguments self.game.me, things, a list of Thing objects (thing.py) that are candidates for the target of a player’s action, and scope, a string representing the range of the verb Returns a list of Thing objects, or an empty list

clearCommand()
directionRangeCheck(obj)
disambig()

When disambiguation mode is active, use the player input to specify the target for the previous turn’s ambiguous command called by self.parseInput Returns a Boolean, True if disambiguation

generateVerbScopeErrorMsg(scope, noun_adj_arr)

Prints the appropriate Thing out of scope message Takes arguments, scope, a string, and noun_adj_arr, a list of strings Returns None

getConvCommand()
getCurVerb()

Identify the verb Called every turn by self.parseInput Returns a two item list. The first is a Verb object and an associated verb form (list of strings), or None. The second is True if potential verb matches were found, False otherwise

getDirection()

Check for direction statement as in “west” or “ne” Called every turn by self.parseInput Raises AbortTurn on discovering & executing a travel command

getDisambigIndexFromCommand()
getGrammarObj()

Analyze input using the chosen verb_form to find any objects

getObjWords(game, before, after)

Create a list of all nouns and adjectives (strings) referring to a direct or indirect object Takes arguments - before, the word expected before the grammatical object (string), - after, the word expected after the grammatical object (string or None), Called by self._analyzeSyntax Returns an array of strings or None

getObjectTargets()

Get the IFPObject instances for each of the grammar objects, if applicable

Arguments: - obj_words, array of words or IFPObjects for dobj, iobj

getThing(noun_adj_arr, scope, far_obj, obj_direction)

Get the Thing object in range associated with a list of adjectives and a noun Takes arguments noun_adj_array, a list of strings referring to an in game item, taken from the player command, and scope, a string specifying the range of the verb Called by self.callVerb Returns a single Thing object (thing.py) or None

getUniqueConcepts(things)

Eliminates all items with duplicate known_ix properties.

implicitRemoveNestedInventory()
invRangeCheck(thing)

Check if the Thing is in the Player contains Takes arguments self.game.me, pointing to the Player, and thing, a Thing Returns True if within range, False otherwise

knowsRangeCheck(thing)

Check if the Player knows about a Thing Takes arguments self.game.me, pointing to the Player, and thing, a Thing Returns True if within range, False otherwise

locationsDistinct(things)

Check if identically named items can be distinguished by their locations Takes a list of items to check Returns False if all locations are the same, True otherwise

matchPrepKeywords()

Check for prepositions in the self.tokenized player command, and remove any candidate verbs whose preposition does not match Returns a list of Verb objects or an empty list

nearRangeCheck(thing)

Check if the Thing is near (room or contains) Takes arguments self.game.me, pointing to the Player, and thing, a Thing Returns True if within range, False otherwise

parseInput(input_string)

Parse player input, and respond to commands each turn Takes argument input_string, the raw player input Called by mainLoop in terminal version, turnMain (gui.py) in GUI version Returns 0 when complete

recordInput(input_string)
replace_string_vars(text)

Perform string replacements for text in the format <<main_module.module.attribute … >>

This should be called by the Game instance when text is added to an event

resolveGrammarObjLocations()

Perform implicit actions to bring the objects into verb range where possible.

roomDescribe()

Wrapper for room describe function (room.py)

roomRangeCheck(thing)

Check if the Thing is in the current room Takes arguments self.game.me, pointing to the Player, and thing, a Thing Returns True if within range, False otherwise

runTurnCommand()
sendTokensToCurrentSequence()

If there is a sequence in progress, pass in current tokens

verbByObjects()

Disambiguates verbs based on syntax used Iterates through verb list, comparing syntax in input to the entries in the .syntax attribute of the verb

verboseNamesMatch(things)

Check if any of the potential grammatical objects have identical verbose names Takes the list of things associated with the direct or indirect object Returns a list of two items:

Item one is True if duplicates are present, else False Item two is dictionary mapping verbose names to lists of Things from the input with that name

wearRangeCheck(thing)

Check if the Thing is being worn Takes arguments self.game.me, pointing to the Player, and thing, a Thing Returns True if within range, False otherwise