.DT
parse_command
FR-MUD's efun help
parse_command
int parse_command(string str, object source, string pattern, var1, var2 ...)
.SP 5 5
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.
Essentialy find_match is a better interface to this. PLease use
find_match instead of this. Any of these constructs can be used with
add_command. Please see add_command for more details.
.EP
str
.SP 5 5
Given command.
.EP
source
.SP 5 5
source is either an object or an array of objects.
.EP
array
.SP 5 5
array holding the accessible objects
.EP
object
.SP 5 5
object from which to recurse and create
the list of accessible objects, normally
ob = environment(this_player())
.EP
pattern
.SP 5 5
Parsepattern as list of words and formats:
.EP
word
.SP 5 5
obligatory text (One word)
.EP
[word]
.SP 5 5
optional text (One word)
.EP
/
.SP 5 5
Alternative marker
.EP
%o
.SP 5 5
Single item, object
.EP
%l
.SP 5 5
Single living object
.EP
%s
.SP 5 5
Any text (multiple words)
.EP
%w
.SP 5 5
Any word
.EP
%p
.SP 5 5
Preposition
.EP
%i
.SP 5 5
Any items
.EP
%d
.SP 5 5
Number 0- or tx(0-99)
.EP
Example
.SI 5
Example string: " 'get' / 'take' %i "
.EI
.SP 5 5
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
.EP
varN
.SP 5 5
This is the list of result variables as in sscanf.
One variable is needed for each %_
The return types of different %_ are:
.EP
PS I give up on doing the formating at this point... (Pinkfish)
%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);