diff options
| -rw-r--r-- | diceparser.cpp | 17 | ||||
| -rw-r--r-- | diceparser.h | 2 | ||||
| -rw-r--r-- | parsingtoolbox.cpp | 8 | ||||
| -rw-r--r-- | parsingtoolbox.h | 3 |
4 files changed, 23 insertions, 7 deletions
diff --git a/diceparser.cpp b/diceparser.cpp index 7fcf267..6e63eec 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -39,6 +39,7 @@ #include "node/listsetrollnode.h" #include "node/listaliasnode.h" #include "node/mergenode.h" +#include "node/ifnode.h" #define DEFAULT_FACES_NUMBER 10 @@ -60,14 +61,9 @@ DiceParser::DiceParser() m_OptionOp->insert(QStringLiteral("r"),Reroll); m_OptionOp->insert(QStringLiteral("e"),Explosing); m_OptionOp->insert(QStringLiteral("a"),RerollAndAdd); - //m_OptionOp->insert(QObject::tr("@"),JumpBackward); - + m_OptionOp->insert(QStringLiteral("i"),ifOperator); m_aliasList = new QList<DiceAlias*>(); - /*m_aliasList->append(new DiceAlias("l5r","D10k")); - m_aliasList->append(new DiceAlias("l5R","D10K")); - m_aliasList->append(new DiceAlias("nwod","D10e10c[>7]")); - m_aliasList->append(new DiceAlias("(.*)wod(.*)","\\1d10e[=10]c[>=\\2]-@c[=1]",false));*/ m_nodeActionMap = new QMap<QString,NodeAction>(); m_nodeActionMap->insert(QStringLiteral("@"),JumpBackward); @@ -952,6 +948,15 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ } break; + case ifOperator: + { + IfNode* nodeif = new IfNode(); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); + if(NULL!=validator) + { + + } + } } } diff --git a/diceparser.h b/diceparser.h index bc92034..ae21ebc 100644 --- a/diceparser.h +++ b/diceparser.h @@ -77,7 +77,7 @@ public: /** * @brief The OptionOperator enum gathering all options availables for result. */ - enum OptionOperator {KeepAndExplose,Keep,Reroll,Explosing,Sort,Count,RerollAndAdd,Merge}; + enum OptionOperator {KeepAndExplose,Keep,Reroll,Explosing,Sort,Count,RerollAndAdd,Merge,ifOperator}; /** * @brief The CommandOperator enum */ diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 7646970..a7220a0 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -378,6 +378,14 @@ ParsingToolBox::LIST_OPERATOR ParsingToolBox::readListOperator(QString& str) } return NONE; } +bool ParsingToolBox::readIfInstruction(QString& str,ExecutionNode* trueNode,ExecutionNode* falseNode) +{ + if(str.startsWith('{')) + { + + } +} + void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) { quint64 totalDistance=0; diff --git a/parsingtoolbox.h b/parsingtoolbox.h index bf59c5c..04a46c4 100644 --- a/parsingtoolbox.h +++ b/parsingtoolbox.h @@ -143,6 +143,9 @@ public: bool readLogicOperation(QString& str,CompositeValidator::LogicOperation& op); bool readDiceLogicOperator(QString &str, OperationCondition::ConditionOperator &op); + + + bool readIfInstruction(QString& str,ExecutionNode* trueNode,ExecutionNode* falseNode); private: QMap<QString,BooleanCondition::LogicOperator>* m_logicOp; QMap<QString,CompositeValidator::LogicOperation>* m_logicOperation; |