aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud.guezennec@ext.mpsa.com>2016-01-26 12:53:12 +0100
committerRenaud Guezennec <renaud.guezennec@ext.mpsa.com>2016-01-26 12:53:12 +0100
commit24e2e454f619b04657b09fd0efb040795cb458bc (patch)
treedc453c57ae3a8a623408e6e53c8ac369dc4f020c
parenta72b0a68a42de414270a1c0333b27683271d260c (diff)
downloadOneRoll-24e2e454f619b04657b09fd0efb040795cb458bc.tar.gz
OneRoll-24e2e454f619b04657b09fd0efb040795cb458bc.zip
First shot for implementing ifnode.
-rw-r--r--diceparser.cpp17
-rw-r--r--diceparser.h2
-rw-r--r--parsingtoolbox.cpp8
-rw-r--r--parsingtoolbox.h3
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;