aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/diceparser.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2015-10-11 16:06:53 +0200
committerRenaud G <renaud@rolisteam.org>2015-10-11 16:06:53 +0200
commit2036d7d5e028c08b022390d607a2ead188e7cc90 (patch)
treea527c6409927189d1a5d126ac1576eab7e93caf5 /diceparser.cpp
parent84691771b54365160f5b1d54033e00187dbbf043 (diff)
parent29f0126a7b8ae3479597252f5056d5e67b6ed10d (diff)
downloadOneRoll-2036d7d5e028c08b022390d607a2ead188e7cc90.tar.gz
OneRoll-2036d7d5e028c08b022390d607a2ead188e7cc90.zip
Merge branch 'rangeInList'
resolved conflicts and merge rangeInList in master. Conflicts: HelpMe.md diceparser.cpp parsingtoolbox.cpp result/result.cpp result/stringresult.h
Diffstat (limited to 'diceparser.cpp')
-rw-r--r--diceparser.cpp29
1 files changed, 18 insertions, 11 deletions
diff --git a/diceparser.cpp b/diceparser.cpp
index 802b5f2..b7097d3 100644
--- a/diceparser.cpp
+++ b/diceparser.cpp
@@ -146,7 +146,6 @@ void DiceParser::insertAlias(DiceAlias* dice, int i)
bool DiceParser::parseLine(QString str)
{
- m_currentTreeHasSeparator = false;
m_errorMap.clear();
if(NULL!=m_start)
{
@@ -594,7 +593,7 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node)
else if(m_parsingToolbox->readDiceRange(str,num,end))
{
- int face = abs(num - end)+1;
+ qint64 face = abs(num - end)+1;
DiceRollerNode* drNode = new DiceRollerNode(face,num);
node = drNode;
ExecutionNode* current = drNode;
@@ -608,9 +607,16 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node)
else if(currentOperator ==L)
{
QStringList list;
- if(m_parsingToolbox->readList(str,list))
+ QList<Range> listRange;
+ ParsingToolBox::LIST_OPERATOR op = m_parsingToolbox->readListOperator(str);
+ if(m_parsingToolbox->readList(str,list,listRange))
{
ListSetRollNode* lsrNode = new ListSetRollNode();
+ lsrNode->setRangeList(listRange);
+ if(op == ParsingToolBox::UNIQUE)
+ {
+ lsrNode->setUnique(true);
+ }
lsrNode->setListValue(list);
node = lsrNode;
return true;
@@ -744,7 +750,6 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous)
previous->setNextNode(nodeExec);
m_currentTreeHasSeparator = true;
return true;
-
}
}
else
@@ -801,7 +806,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/
{
case Keep:
{
- int myNumber=0;
+ qint64 myNumber=0;
bool ascending = m_parsingToolbox->readAscending(str);
if(m_parsingToolbox->readNumber(str,myNumber))
{
@@ -822,7 +827,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/
break;
case KeepAndExplose:
{
- int myNumber=0;
+ qint64 myNumber=0;
bool ascending = m_parsingToolbox->readAscending(str);
if(m_parsingToolbox->readNumber(str,myNumber))
{
@@ -861,7 +866,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/
break;
case Count:
{
- Validator* validator = m_parsingToolbox->readValidator(str);
+ //Validator* validator = m_parsingToolbox->readValidator(str);
+ Validator* validator = m_parsingToolbox->readCompositeValidator(str);
if(NULL!=validator)
{
/// @todo display warning here.
@@ -884,7 +890,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/
case Reroll:
case RerollAndAdd:
{
- Validator* validator = m_parsingToolbox->readValidator(str);
+ //Validator* validator = m_parsingToolbox->readValidator(str);
+ Validator* validator = m_parsingToolbox->readCompositeValidator(str);
if(NULL!=validator)
{
/// @todo display warning here.
@@ -909,7 +916,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/
break;
case Explosing:
{
- Validator* validator = m_parsingToolbox->readValidator(str);
+ Validator* validator = m_parsingToolbox->readCompositeValidator(str);
if(NULL!=validator)
{
if(!m_parsingToolbox->isValidValidator(previous,validator))
@@ -964,7 +971,7 @@ QString DiceParser::humanReadableError()
bool DiceParser::readOperand(QString& str,ExecutionNode* & node)
{
- int myNumber=1;
+ qint64 myNumber=1;
if(m_parsingToolbox->readNumber(str,myNumber))
{
@@ -980,7 +987,7 @@ void DiceParser::writeDownDotTree(QString filepath)
{
QString str("digraph ExecutionTree {\n");
m_start->generateDotTree(str);
- str.append("}");
+ str.append("}\n");
QFile file(filepath);