aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--HelpMe.md4
-rw-r--r--README.md29
-rw-r--r--diceparser.h15
-rw-r--r--node/executionnode.h11
-rw-r--r--node/filternode.cpp2
-rw-r--r--node/keepdiceexecnode.cpp2
-rw-r--r--node/rerolldicenode.cpp7
-rw-r--r--node/scalaroperatornode.cpp2
8 files changed, 38 insertions, 34 deletions
diff --git a/HelpMe.md b/HelpMe.md
index fa635bc..17b417d 100644
--- a/HelpMe.md
+++ b/HelpMe.md
@@ -250,8 +250,8 @@ https://gist.github.com/obiwankennedy/62101383d411e55d205e44df78aa5299
The amount of color is depending of client application of DiceParser.
-With Rolisteam, you may set any Qt color's name or set the Hexcode of your color: #ff28AC.
-The cli application supports few colors.
+- With Rolisteam, you may set any Qt color's name or set the Hexcode of your color: #ff28AC.
+- The cli application supports few colors: black, white, blue, red, black, green, yellow.
### Merge
diff --git a/README.md b/README.md
index 79561c9..c23ea6c 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Instruction =: Expression
Expression =: number | number Dice DiceOperation | ScalarOperator Expression | string | variable Expression
Dice =: DiceOperator Number(faces) | DiceOperator ListOfValues
DiceOperator =: D | L
-DiceOperation =: Keep | KeepAndExplose | sort | if | explose | jumpbackward | merge | filter | parenthese | count | paint | group
+DiceOperation =: Keep | KeepAndExplose | Sort | Count | Reroll | If | Explose | RerollAndAdd | Jumpbackward | Merge | Filter | Split | Parenthese | Count | Paint | Group
ScalarOperator =: [x,-,*,x,/]
number =: [0-9]+ | constantValue
constantValue =: ${id | label}
@@ -30,16 +30,23 @@ ListOfValue=: String[Range],ListOfValue | String[Range]
String =: [A-z0-9]+
Keep =: k Number
KeepAndExplose =: K number
-sort =: s
-if =: i compareMethod [Validator] {Expression}[{Expression}]
-paint =: p [ count : color ]
-group =: number
-explose =: e Validator
-jumpbackward =: @DiceOperation
-merge =: m | m Expression
-filter =: f Validator
-parenthese =: (expression)
-count =: c Validator
+Reroll =: r
+Explosing =: e
+RerollOnceAndAdd =: a
+RerollAndAdd =: A
+Painter =: p
+Split =: u
+Group =: g
+Sort =: s
+If =: i compareMethod [Validator] {Expression}[{Expression}]
+Paint =: p [ Count : color ]
+Group =: number
+Explose =: e Validator
+Jumpbackward =: @DiceOperation
+Merge =: m | m Expression
+Filter =: f Validator
+Parenthese =: (expression)
+Count =: c Validator
```
diff --git a/diceparser.h b/diceparser.h
index abe19a1..6c59bae 100644
--- a/diceparser.h
+++ b/diceparser.h
@@ -47,20 +47,7 @@ class ExploseDiceNode;
*
* @section grammar The Grammar
*
- * The grammar is something like this:
- *
- * Line =: Command | Command;Command<br/>
- * Command =: Expression | ScalarOperator Expression | ScalarOperator NodeAction Expression<br/>
- * Expression =: number | number Dice | Command<br/>
- * Dice =: DiceOperator Number(faces) | DiceOperator List<br/>
- * List =: [Word[range|percentage],Number[range|percentage],',']+<br/>
- * Persentage =: Number <br/>
- * NodeAction =: @<br/>
- * DiceOperator =: [D,L]<br/>
- * ScalarOperator =: [x,-,*,x,/]<br/>
- * number =: [0-9]+<br/>
- * Word =: [A-z]+<br/>
- *
+ * The grammar is described in Readme.md
*/
/**
diff --git a/node/executionnode.h b/node/executionnode.h
index a84bef0..796831d 100644
--- a/node/executionnode.h
+++ b/node/executionnode.h
@@ -10,9 +10,14 @@
class ExecutionNode
{
public:
- enum DICE_ERROR_CODE {NO_DICE_ERROR,DIE_RESULT_EXPECTED,BAD_SYNTAXE,
- ENDLESS_LOOP_ERROR,DIVIDE_BY_ZERO,NOTHING_UNDERSTOOD,
- NO_DICE_TO_ROLL,TOO_MANY_DICE,NO_VARIBALE,
+ enum DICE_ERROR_CODE {NO_DICE_ERROR,
+ DIE_RESULT_EXPECTED,
+ BAD_SYNTAXE,
+ ENDLESS_LOOP_ERROR,
+ DIVIDE_BY_ZERO,
+ NOTHING_UNDERSTOOD,
+ NO_DICE_TO_ROLL,
+ TOO_MANY_DICE,NO_VARIBALE,
INVALID_INDEX};
/**
* @brief ExecutionNode
diff --git a/node/filternode.cpp b/node/filternode.cpp
index 462774b..b2a2db9 100644
--- a/node/filternode.cpp
+++ b/node/filternode.cpp
@@ -24,7 +24,7 @@ void FilterNode::run(ExecutionNode* previous)
{
return;
}
- DiceResult* previousDiceResult = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previousDiceResult = dynamic_cast<DiceResult*>(previous->getResult());
m_result->setPrevious(previousDiceResult);
if(nullptr!=previousDiceResult)
{
diff --git a/node/keepdiceexecnode.cpp b/node/keepdiceexecnode.cpp
index 547e343..89cda38 100644
--- a/node/keepdiceexecnode.cpp
+++ b/node/keepdiceexecnode.cpp
@@ -40,7 +40,7 @@ void KeepDiceExecNode::run(ExecutionNode* previous)
{
return;
}
- DiceResult* previousDiceResult = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previousDiceResult = dynamic_cast<DiceResult*>(previous->getResult());
m_result->setPrevious(previousDiceResult);
if(nullptr!=previousDiceResult)
{
diff --git a/node/rerolldicenode.cpp b/node/rerolldicenode.cpp
index c156dac..2ead761 100644
--- a/node/rerolldicenode.cpp
+++ b/node/rerolldicenode.cpp
@@ -19,7 +19,7 @@ void RerollDiceNode::run(ExecutionNode* previous)
m_previousNode = previous;
if((nullptr!=previous)&&(nullptr!=previous->getResult()))
{
- DiceResult* previous_result = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previous_result = dynamic_cast<DiceResult*>(previous->getResult());
m_result->setPrevious(previous_result);
if(nullptr!=previous_result)
{
@@ -47,6 +47,11 @@ void RerollDiceNode::run(ExecutionNode* previous)
m_nextNode->run(this);
}
}
+ else
+ {
+ m_errors.insert(ExecutionNode::DIE_RESULT_EXPECTED,
+ QObject::tr(" The a operator expects dice result. Please check the documentation and fix your command."));
+ }
}
}
void RerollDiceNode::setValidator(Validator* val)
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp
index a9a19e3..17ddecb 100644
--- a/node/scalaroperatornode.cpp
+++ b/node/scalaroperatornode.cpp
@@ -54,7 +54,7 @@ void ScalarOperatorNode::run(ExecutionNode* previous)
}
if(nullptr!=previous)
{
- DiceResult* previousResult = static_cast<DiceResult*>(previous->getResult());
+ DiceResult* previousResult = dynamic_cast<DiceResult*>(previous->getResult());
if(nullptr!=previousResult)
{