diff options
| -rw-r--r-- | HelpMe.md | 4 | ||||
| -rw-r--r-- | README.md | 29 | ||||
| -rw-r--r-- | diceparser.h | 15 | ||||
| -rw-r--r-- | node/executionnode.h | 11 | ||||
| -rw-r--r-- | node/filternode.cpp | 2 | ||||
| -rw-r--r-- | node/keepdiceexecnode.cpp | 2 | ||||
| -rw-r--r-- | node/rerolldicenode.cpp | 7 | ||||
| -rw-r--r-- | node/scalaroperatornode.cpp | 2 |
8 files changed, 38 insertions, 34 deletions
@@ -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 @@ -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) { |