/
CDC-1.2b/
CDC-1.2b/src/
parent $user_parsers
object $command_parser

var $root child_index 0
var $root fertile 0
var $root manager $command_parser
var $root owners [$core]
var $root writable [$core]
var $root readable ['parameters, 'methods, 'code]
var $root trusted []
var $root owned [$command_parser]
var $root inited 1
var $root dbref 'command_parser

method parse
    arg user, str, next_parser, [other_parsers];
    var loc, cmdstr, cmd, obj;
    
    // Match commands on user/room.
    loc = user.location();
    
    // trim the string
    cmdstr = str;
    while (cmdstr && ((cmdstr[1]) == " "))
        cmdstr = substr(cmdstr, 2);
    if (str) {
        // Check commands on this.
        cmd = user.match_command(cmdstr);
        if (cmd)
            return [user, cmd[1], @cmd[2]];
    
        // Check commands on location.
        cmd = loc.match_command(cmdstr);
        if (cmd)
            return [loc, cmd[1], @cmd[2]];
    
        // Try exit names.
        for obj in (loc.exits()) {
            if ((obj.match_name(str)) || (obj.match_name_aliases(str)))
                return [obj, 'invoke];
        }
    }
    
    // no luck.
    return next_parser.parse(user, str, @other_parsers);
.