aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/parsingtoolbox.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2022-01-21 10:28:32 +0100
committerRenaud G <renaud@rolisteam.org>2022-01-21 10:28:32 +0100
commit82eb7c25f863c930d3138cdcbc95fb797cc77600 (patch)
treea96a77ac0927359ffcec5c6c2f7d472899e83362 /parsingtoolbox.cpp
parentbf774bcce4d4e3ba98e8681b875fc49975fe40f5 (diff)
downloadOneRoll-82eb7c25f863c930d3138cdcbc95fb797cc77600.tar.gz
OneRoll-82eb7c25f863c930d3138cdcbc95fb797cc77600.zip
[keep] Fix operator keep after a value list operator.
Diffstat (limited to 'parsingtoolbox.cpp')
-rw-r--r--parsingtoolbox.cpp68
1 files changed, 34 insertions, 34 deletions
diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp
index 83c703c..4453f03 100644
--- a/parsingtoolbox.cpp
+++ b/parsingtoolbox.cpp
@@ -1504,40 +1504,38 @@ bool ParsingToolBox::readExpression(QString& str, ExecutionNode*& node)
bool ParsingToolBox::readValuesList(QString& str, ExecutionNode*& node)
{
- if(str.startsWith("["))
+ if(!str.startsWith("["))
+ return false;
+
+ str= str.remove(0, 1);
+ int pos= ParsingToolBox::findClosingCharacterIndexOf('[', ']', str, 1); // str.indexOf("]");
+ if(-1 == pos)
+ return false;
+
+ QString liststr= str.left(pos);
+ auto list= liststr.split(",");
+ str= str.remove(0, pos + 1);
+ auto values= new ValuesListNode();
+ for(auto var : qAsConst(list))
{
- str= str.remove(0, 1);
- int pos= ParsingToolBox::findClosingCharacterIndexOf('[', ']', str, 1); // str.indexOf("]");
- if(-1 != pos)
+ qint64 number= 1;
+ var= var.trimmed();
+ if(ParsingToolBox::readDynamicVariable(var, number))
{
- QString liststr= str.left(pos);
- auto list= liststr.split(",");
- str= str.remove(0, pos + 1);
- auto values= new ValuesListNode();
- for(auto var : list)
- {
- qint64 number= 1;
- QString error;
- var= var.trimmed();
- if(ParsingToolBox::readDynamicVariable(var, number))
- {
- VariableNode* variableNode= new VariableNode();
- variableNode->setIndex(static_cast<quint64>(number - 1));
- variableNode->setData(&m_startNodes);
- values->insertValue(variableNode);
- }
- else if(ParsingToolBox::readNumber(var, number))
- {
- NumberNode* numberNode= new NumberNode();
- numberNode->setNumber(number);
- values->insertValue(numberNode);
- }
- }
- node= values;
- return true;
+ VariableNode* variableNode= new VariableNode();
+ variableNode->setIndex(static_cast<quint64>(number - 1));
+ variableNode->setData(&m_startNodes);
+ values->insertValue(variableNode);
+ }
+ else if(ParsingToolBox::readNumber(var, number))
+ {
+ NumberNode* numberNode= new NumberNode();
+ numberNode->setNumber(number);
+ values->insertValue(numberNode);
}
}
- return false;
+ node= values;
+ return true;
}
bool ParsingToolBox::readOptionFromNull(QString& str, ExecutionNode*& node)
{
@@ -2188,9 +2186,10 @@ bool ParsingToolBox::readDiceExpression(QString& str, ExecutionNode*& node)
bool ParsingToolBox::readOperator(QString& str, ExecutionNode* previous)
{
+ bool result= false;
if(str.isEmpty() || nullptr == previous)
{
- return false;
+ return result;
}
Die::ArithmeticOperator op;
@@ -2205,7 +2204,7 @@ bool ParsingToolBox::readOperator(QString& str, ExecutionNode* previous)
if(nullptr == nodeExec)
{
delete node;
- return false;
+ return result;
}
ExecutionNode* nodeExecOrChild= nodeExec;
ExecutionNode* parent= nullptr;
@@ -2234,7 +2233,7 @@ bool ParsingToolBox::readOperator(QString& str, ExecutionNode* previous)
// nodeResult = node;
previous->setNextNode(node);
- return true;
+ result= true;
}
else
{
@@ -2246,9 +2245,10 @@ bool ParsingToolBox::readOperator(QString& str, ExecutionNode* previous)
while(readOption(str, previous))
{
previous= ParsingToolBox::getLeafNode(previous);
+ result= true;
}
}
- return false;
+ return result;
}
bool ParsingToolBox::readFunction(QString& str, ExecutionNode*& node)
{