parse_command(3)

."parse commands given in a string according to a specified pattern

NAME
parse_command() - parse commands given in a string

SYNOPSIS
int parse_command(string str, object source, string pattern, var1, var2 ...);

DESCRIPTION
Parses commands given in `str' against the pattern in `pattern' and returns 1 if it matches. `source' is either an object or an array of objects. This is essentially a 'hotted' sscanf and it has a similar syntax, although parse_command works on word basis where sscanf works on character basis.

`str'
    Given command.

`source'
    source is either an object or an array of objects.

array
    array holding the accessible objects

object
    object from which to recurse and create the list of accessible objects, normally ob = environment(this_player())

`pattern'
    Parse pattern as list of words and formats:

word
    obligatory text (One word)

[word]
    optional text (One word)

/   Alternative marker

%o  Single item, object

%l  Single living object

%s  Any text (multiple words)

%w  Any word

%p  Preposition

%i  Any items

%d  Number 0- or tx(0-99) Example string: " 'get' / 'take' %i " Items as in %o and %i be can on many forms. Some examples: apple, two apples, twentyfirst apple apples, all apples, all green apples, all green ones

`varN'
    This is the list of result variables as in sscanf. One variable is needed for each %_ The return types of different %_ are:

%o  Returns an object

%l  Returns an object

%s  Returns a string of words

%w  Returns a string of one word

%p  Can on entry hold a list of word in array or an empty variable Returns: if empty variable: a string if array: array[0]=matched word

%i  Returns a special array on the form: [0] = (int) given numeric prefix
        =0: all or a pluralform given
        >0: numeral given: two, three, four...
        <0: order given: second, third ... [1..n] (object) Objectpointers
        A list of the POSSIBLE objects that can match
        the given %i. No choosing of third or such.

%d  Returns a number
     Example: a = parse_command("take apple",environment(this_player()),
         " 'get' / 'take' %i ",items);

SEE ALSO
sscanf(3), explode(3)