Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 23, 2008, 2:10:52 AM (16 years ago)
Author:
landauf
Message:

only girls sleep at this time :P

(started new implementation of ConsoleExecutor parser, but it's still buggy)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/console/src/core/CommandEvaluation.cc

    r1351 r1390  
    5252        this->bEvaluatedParams_ = false;
    5353
    54         this->listOfPossibleFunctionClasses_.clear();
     54        this->listOfPossibleIdentifiers_.clear();
    5555        this->listOfPossibleFunctions_.clear();
    5656
     
    6464    bool CommandEvaluation::isValid() const
    6565    {
    66         if (this->state_ == CS_Shortcut_Params || this->state_ == CS_Shortcut_Finished)
    67         {
    68             return this->function_;
    69         }
    70         else if (this->state_ == CS_Function_Params || this->state_ == CS_Function_Finished)
    71         {
    72             return (this->functionclass_ && this->function_);
    73         }
    74         else
    75         {
    76             return false;
    77         }
     66        return (this->function_);
    7867    }
    7968
     
    9483        unsigned int startindex = this->getStartindex();
    9584        if (this->originalCommandTokens_.size() > startindex)
    96             return evaluation.shortcut_->parse(removeSlashes(this->originalCommandTokens_.subSet(startindex).join() + evaluation.getAdditionalParameter()));
     85            return this->function_->parse(removeSlashes(this->originalCommandTokens_.subSet(startindex).join() + this->getAdditionalParameter()));
    9786        else
    98             return evaluation.shortcut_->parse(removeSlashes(evaluation.additionalParameter_));
     87            return this->function_->parse(removeSlashes(this->additionalParameter_));
    9988    }
    10089
     
    10392        switch (this->state_)
    10493        {
     94            case CS_Uninitialized:
    10595            case CS_Empty:
    106                 std::list<std::pair<const std::string*, const std::string*> > temp;
    107                 if (evaluation.state_ == CS_Empty)
    108                 {
    109                     temp.insert(temp.end(), this->listOfPossibleFunctions_.begin(), this->listOfPossibleFunctions_.end());
    110                     temp.insert(temp.end(), this->listOfPossibleFunctionClasses_.begin(), this->listOfPossibleFunctionClasses_.end());
    111                 }
    112                 return (CommandEvaluation::getCommonBegin(temp));
     96            case CS_ShortcutOrIdentifier:
     97                {
     98                    std::list<std::pair<const std::string*, const std::string*> > temp;
     99                    if (this->state_ == CS_Empty)
     100                    {
     101                        temp.insert(temp.end(), this->listOfPossibleFunctions_.begin(), this->listOfPossibleFunctions_.end());
     102                        temp.insert(temp.end(), this->listOfPossibleIdentifiers_.begin(), this->listOfPossibleIdentifiers_.end());
     103                    }
     104                    return (CommandEvaluation::getCommonBegin(temp));
     105                }
    113106                break;
    114107            case CS_Shortcut_Params:
    115108                if (this->function_)
    116                     return (this->function_->getName() + " ");
     109                {
     110                    if (this->commandTokens_.size() > 1)
     111                        return (this->function_->getName() + " " + this->commandTokens_.subSet(1, this->commandTokens_.size() - 1).join() + " " + CommandEvaluation::getCommonBegin(this->listOfPossibleArguments_));
     112                    else
     113                        return (this->function_->getName() + " ");
     114                }
    117115                break;
    118116            case CS_Shortcut_Finished:
    119117                if (this->function_)
    120118                {
    121                     if (this->function_->getParamCount() == 0)
     119                    if (this->commandTokens_.size() > 1)
     120                        return (this->function_->getName() + " " + this->originalCommandTokens_.subSet(1, this->originalCommandTokens_.size() - 1).join());
     121                    else
    122122                        return (this->function_->getName());
    123                     else if (this->originalCommandTokens_.size() > 1)
    124                         return (this->function_->getName() + " " + this->originalCommandTokens_.subSet(1).join());
    125123                }
    126124                break;
     
    131129            case CS_Function_Params:
    132130                if (this->functionclass_ && this->function_)
    133                     return (this->functionclass_->getName() + " " + this->function_->getName() + " ");
     131                {
     132                    if (this->commandTokens_.size() > 2)
     133                        return (this->functionclass_->getName() + " " + this->function_->getName() + " " + this->commandTokens_.subSet(2, this->commandTokens_.size() - 1).join() + " " + CommandEvaluation::getCommonBegin(this->listOfPossibleArguments_));
     134                    else
     135                        return (this->functionclass_->getName() + " " + this->function_->getName() + " ");
     136                }
    134137                break;
    135138            case CS_Function_Finished:
    136139                if (this->functionclass_ && this->function_)
    137140                {
    138                     if (this->function_->getParamCount() == 0)
    139                         return (this->functionclass_->getName() + " " + this->unction_->getName());
    140                     else if (this->originalCommandTokens_.size() > 2)
    141                         return (this->functionclass_->getName() + " " + this->function_->getName() + " " + this->originalCommandTokens_.subSet(2).join());
    142                 }
     141                    if (this->commandTokens_.size() > 2)
     142                        return (this->functionclass_->getName() + " " + this->function_->getName() + " " + this->originalCommandTokens_.subSet(2, this->originalCommandTokens_.size() - 1).join());
     143                    else
     144                        return (this->functionclass_->getName() + " " + this->function_->getName());
     145                }
     146               break;
     147            case CS_Error:
    143148                break;
    144149        }
     
    151156        switch (this->state_)
    152157        {
     158            case CS_Uninitialized:
     159                break;
    153160            case CS_Empty:
    154                 return (CommandEvaluation::dump(this->listOfPossibleFunctions_) + "\n" + CommandExecutor::dump(this->listOfPossibleFunctionClasses_));
     161            case CS_ShortcutOrIdentifier:
     162                return (CommandEvaluation::dump(this->listOfPossibleFunctions_) + "\n" + CommandEvaluation::dump(this->listOfPossibleIdentifiers_));
    155163                break;
    156164            case CS_Function:
     
    158166                break;
    159167            case CS_Shortcut_Params:
     168            case CS_Function_Params:
     169                return CommandEvaluation::dump(this->listOfPossibleArguments_);
    160170            case CS_Shortcut_Finished:
    161             case CS_Function_Params:
    162171            case CS_Function_Finished:
    163172                if (this->function_)
     
    175184    {
    176185        this->bEvaluatedParams_ = false;
    177         this->evaluatedExecutor_ = 0;
    178186
    179187        for (unsigned int i = 0; i < MAX_FUNCTOR_ARGUMENTS; i++)
     
    188196        {
    189197            if (this->function_->evaluate(this->getAdditionalParameter(), this->param_, " "))
    190             {
    191198                this->bEvaluatedParams_ = true;
    192                 this->evaluatedExecutor_ = this->function_;
    193             }
    194199        }
    195200        else if (this->originalCommandTokens_.size() > startindex)
    196201        {
    197202            if (this->function_->evaluate(this->originalCommandTokens_.subSet(startindex).join() + this->getAdditionalParameter(), this->param_, " "))
    198             {
    199203                this->bEvaluatedParams_ = true;
    200                 this->evaluatedExecutor_ = this->function_;
    201             }
    202204        }
    203205    }
     
    238240        if (this->state_ == CS_Shortcut_Params || this->state_ == CS_Shortcut_Finished)
    239241            return 1;
    240         else if (this->state_ == CS_Function_Params || this->state_ == CS_Function_Finished)
     242        else if (this->state_ == CS_Function || this->state_ == CS_Function_Params || this->state_ == CS_Function_Finished)
    241243            return 2;
    242244        else
Note: See TracChangeset for help on using the changeset viewer.