aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/include/diceparser/diceparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libparser/include/diceparser/diceparser.h')
-rw-r--r--src/libparser/include/diceparser/diceparser.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/libparser/include/diceparser/diceparser.h b/src/libparser/include/diceparser/diceparser.h
new file mode 100644
index 0000000..bf2d570
--- /dev/null
+++ b/src/libparser/include/diceparser/diceparser.h
@@ -0,0 +1,130 @@
+/***************************************************************************
+ * Copyright (C) 2014 by Renaud Guezennec *
+ * https://rolisteam.org/contact *
+ * *
+ * 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 DICEPARSER_H
+#define DICEPARSER_H
+
+#include <QJsonObject>
+#include <QMap>
+#include <QString>
+#include <QVariant>
+#include <memory>
+#include <vector>
+
+#include <diceparser/diceparser_global.h>
+
+#include <diceparser/diceparserhelper.h>
+#include <diceparser/highlightdice.h>
+
+class ExplodeDiceNode;
+class ParsingToolBox;
+class DiceRollerNode;
+class DiceAlias;
+class ExecutionNode;
+/**
+ * @page DiceParser Dice Parser
+ *
+ * @section Intro Introduction
+ * Diceparser is the software component dedicated to compute dice command in rolisteam.<br/>
+ *
+ * @section grammar The Grammar
+ *
+ * The grammar is described in Readme.md
+ */
+
+/**
+ * @brief The DiceParser class facade class, it receives a command and return a DiceResult class (not yet implemented).
+ */
+class DICEPARSER_EXPORT DiceParser
+{
+public:
+ /**
+ * @brief DiceParser default constructor
+ */
+ DiceParser();
+ /**
+ * @brief ~DiceParser
+ */
+ virtual ~DiceParser();
+
+ // Command process methods
+ /**
+ * @brief parseLine, method to call for starting the dice roll. It will parse the command and run the execution
+ * tree.
+ * @param str dice command
+ * @return bool every thing is fine or not
+ */
+ bool parseLine(QString str, bool allowAlias= true);
+ void start();
+ void cleanAll();
+
+ // debug
+ void writeDownDotTree(QString filepath);
+
+ // control methods
+ bool hasIntegerResultNotInFirst() const;
+ bool hasDiceResult() const;
+ bool hasStringResult() const;
+ bool hasSeparator() const;
+
+ // alias management
+ const QList<DiceAlias*>& constAliases() const;
+ QList<DiceAlias*>* aliases() const;
+ void cleanAliases();
+ void insertAlias(DiceAlias*, int);
+ QString convertAlias(const QString& cmd) const;
+
+ QStringList allFirstResultAsString(bool& hasAlias);
+ QStringList getAllDiceResult(bool& hasAlias);
+
+ // Accessors
+ int startNodeCount() const;
+ QList<qreal> scalarResultsFromEachInstruction() const;
+ QStringList stringResultFromEachInstruction(bool& hasAlias) const;
+ void diceResultFromEachInstruction(QList<ExportedDiceResult>& resultList) const;
+ QString finalStringResult(std::function<QString(const QString&, const QString&, bool)> colorize) const;
+
+ QString diceCommand() const;
+ QMap<Dice::ERROR_CODE, QString> errorMap() const;
+ QString comment() const;
+ QString humanReadableWarning() const;
+ QString humanReadableError() const;
+ QString resultAsJSon(std::function<QString(const QString&, const QString&, bool)> colorize,
+ bool removeUnhighligthed= false) const;
+
+ // QStringList stringResult() const;
+ // QStringList allDiceResult(bool& hasAlias) const;
+ // void lastDiceResult(QList<ExportedDiceResult>& diceValues, bool& homogeneous) const;
+
+ // setters
+ void setPathToHelp(QString l);
+ void setVariableDictionary(const QHash<QString, QString>& variables);
+ void setComment(const QString& comment);
+
+private:
+ bool readBlocInstruction(QString& str, ExecutionNode*& resultnode);
+
+private:
+ std::unique_ptr<ParsingToolBox> m_parsingToolbox;
+ QString m_command;
+};
+
+#endif // DICEPARSER_H