diff options
| author | 2015-04-29 07:44:25 +0200 | |
|---|---|---|
| committer | 2015-04-29 07:44:25 +0200 | |
| commit | 590fc6528b09bf1abbd90caf31053cd5ef6b439b (patch) | |
| tree | d2dcbb2c751d9edf9b736a2fa5488fbcf41247dc | |
| parent | 942cf3f75f49d83c4e512d5350f7de69f0ec8aa7 (diff) | |
| parent | 5c73a6cb13b8c301d0e60f916998c3e683a2b043 (diff) | |
| download | OneRoll-590fc6528b09bf1abbd90caf31053cd5ef6b439b.tar.gz OneRoll-590fc6528b09bf1abbd90caf31053cd5ef6b439b.zip | |
Merge branch 'master' of github.com:obiwankennedy/DiceParser
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | cli/main.cpp | 6 | ||||
| -rw-r--r-- | diceparser.cpp | 15 | ||||
| -rw-r--r-- | diceparser.h | 10 | ||||
| -rw-r--r-- | node/executionnode.cpp | 9 | ||||
| -rw-r--r-- | node/executionnode.h | 4 | ||||
| -rw-r--r-- | node/scalaroperatornode.cpp | 41 | ||||
| -rw-r--r-- | node/scalaroperatornode.h | 30 |
8 files changed, 105 insertions, 12 deletions
@@ -12,9 +12,11 @@ # Qt-es +*.txt.user *.pro.user *.pro.user.* moc_*.cpp qrc_*.cpp Makefile *-build-* + diff --git a/cli/main.cpp b/cli/main.cpp index 0812059..94fcc00 100644 --- a/cli/main.cpp +++ b/cli/main.cpp @@ -91,6 +91,12 @@ void startDiceParsing(QString& cmd,QString& treeFile,bool highlight) if(treeFile.isEmpty()) { parser->Start(); + if(!parser->getErrorMap().isEmpty()) + { + qDebug() << "Error" << parser->humanReadableError(); + return; + } + ExportedDiceResult list; parser->getLastDiceResult(list); QString diceText = diceToText(list); diff --git a/diceparser.cpp b/diceparser.cpp index a946b86..ebe2e0e 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -179,7 +179,7 @@ bool DiceParser::parseLine(QString str) } else { - return false; + return false; } } @@ -862,9 +862,9 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ return isFine; } -QList<ExecutionNode::ERROR_CODE> DiceParser::getErrorList() +QMap<ExecutionNode::ERROR_CODE,QString> DiceParser::getErrorMap() { - return m_start->getErrorList(); + return m_start->getExecutionErrorMap(); } QString DiceParser::humanReadableError() { @@ -876,6 +876,15 @@ QString DiceParser::humanReadableError() str.append(i.value()); str.append("\n"); } + + ///list + QMapIterator<ExecutionNode::ERROR_CODE,QString> j(getErrorMap()); + while(j.hasNext()) + { + j.next(); + str.append(j.value()); + str.append("\n"); + } return str; } diff --git a/diceparser.h b/diceparser.h index 7cf72de..84c815b 100644 --- a/diceparser.h +++ b/diceparser.h @@ -182,6 +182,11 @@ public: * @return */ QString convertAlias(QString str); + /** + * @brief getErrorList + * @return + */ + QMap<ExecutionNode::ERROR_CODE,QString> getErrorMap(); private: /** @@ -244,11 +249,6 @@ private: */ bool readOperand(QString&,ExecutionNode* & node); - /** - * @brief getErrorList - * @return - */ - QList<ExecutionNode::ERROR_CODE> getErrorList(); /** * @brief readInstructionOperator * @param c diff --git a/node/executionnode.cpp b/node/executionnode.cpp index 0cb9c0b..dba56fc 100644 --- a/node/executionnode.cpp +++ b/node/executionnode.cpp @@ -32,8 +32,15 @@ ExecutionNode* ExecutionNode::getNextNode() { return m_nextNode; } -QList<ExecutionNode::ERROR_CODE> ExecutionNode::getErrorList() +QMap<ExecutionNode::ERROR_CODE,QString> ExecutionNode::getExecutionErrorMap() { + if(NULL!=m_nextNode) + { + foreach (ExecutionNode::ERROR_CODE key, m_nextNode->getExecutionErrorMap().keys()) + { + m_errors.insert(key,m_nextNode->getExecutionErrorMap().value(key)); + } + } return m_errors; } QString ExecutionNode::getHelp() diff --git a/node/executionnode.h b/node/executionnode.h index cc40867..834b062 100644 --- a/node/executionnode.h +++ b/node/executionnode.h @@ -56,7 +56,7 @@ public: * @brief getErrorList * @return */ - virtual QList<ExecutionNode::ERROR_CODE> getErrorList(); + virtual QMap<ExecutionNode::ERROR_CODE,QString> getExecutionErrorMap(); /** * @brief generateDotTree @@ -84,7 +84,7 @@ protected: /** * @brief m_errors */ - QList<ExecutionNode::ERROR_CODE> m_errors; + QMap<ExecutionNode::ERROR_CODE,QString> m_errors; }; #endif // EXECUTIONNODE_H diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index 8dfbc20..b7c183f 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** +* Copyright (C) 2014 by Renaud Guezennec * +* http://renaudguezennec.homelinux.org/accueil,3.html * +* * +* This file is part of DiceParser * +* * +* DiceParser is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ #include "scalaroperatornode.h" #include <QDebug> @@ -107,7 +128,7 @@ qreal ScalarOperatorNode::divide(qint64 a,qint64 b) { if(b==0) { - m_errors.append(DIVIDE_BY_ZERO); + m_errors.insert(DIVIDE_BY_ZERO,QObject::tr("Division by zero")); return 0; } return (qreal)a/b; @@ -160,3 +181,21 @@ void ScalarOperatorNode::generateDotTree(QString& s) } s.append(str); } +QMap<ExecutionNode::ERROR_CODE,QString> ScalarOperatorNode::getExecutionErrorMap() +{ + if(NULL!=m_internalNode) + { + foreach (ExecutionNode::ERROR_CODE key, m_internalNode->getExecutionErrorMap().keys()) + { + m_errors.insert(key,m_internalNode->getExecutionErrorMap().value(key)); + } + } + if(NULL!=m_nextNode) + { + foreach (ExecutionNode::ERROR_CODE key, m_nextNode->getExecutionErrorMap().keys()) + { + m_errors.insert(key,m_nextNode->getExecutionErrorMap().value(key)); + } + } + return m_errors; +} diff --git a/node/scalaroperatornode.h b/node/scalaroperatornode.h index 7193118..e43f6f8 100644 --- a/node/scalaroperatornode.h +++ b/node/scalaroperatornode.h @@ -1,3 +1,24 @@ +/*************************************************************************** +* Copyright (C) 2014 by Renaud Guezennec * +* http://renaudguezennec.homelinux.org/accueil,3.html * +* * +* This file is part of DiceParser * +* * +* DiceParser is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ #ifndef SCALAROPERATORNODE_H #define SCALAROPERATORNODE_H @@ -7,6 +28,10 @@ #include "executionnode.h" #include "result/scalarresult.h" + +/** + * @brief The ScalarOperatorNode class + */ class ScalarOperatorNode : public ExecutionNode { public: @@ -21,6 +46,11 @@ public: virtual qint64 getPriority() const; void generateDotTree(QString& s); + /** + * @brief getErrorList + * @return + */ + virtual QMap<ExecutionNode::ERROR_CODE,QString> getExecutionErrorMap(); private: qint64 add(qint64,qint64); |