From 07c5f6ec23fcf9237a24e71adcfacabce677f818 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Fri, 29 Apr 2022 10:48:09 +0200 Subject: Change file organization. --- src/libparser/include/diceparser/diceparser.h | 130 ++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/libparser/include/diceparser/diceparser.h (limited to 'src/libparser/include/diceparser/diceparser.h') 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 +#include +#include +#include +#include +#include + +#include + +#include +#include + +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.
+ * + * @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& constAliases() const; + QList* 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 scalarResultsFromEachInstruction() const; + QStringList stringResultFromEachInstruction(bool& hasAlias) const; + void diceResultFromEachInstruction(QList& resultList) const; + QString finalStringResult(std::function colorize) const; + + QString diceCommand() const; + QMap errorMap() const; + QString comment() const; + QString humanReadableWarning() const; + QString humanReadableError() const; + QString resultAsJSon(std::function colorize, + bool removeUnhighligthed= false) const; + + // QStringList stringResult() const; + // QStringList allDiceResult(bool& hasAlias) const; + // void lastDiceResult(QList& diceValues, bool& homogeneous) const; + + // setters + void setPathToHelp(QString l); + void setVariableDictionary(const QHash& variables); + void setComment(const QString& comment); + +private: + bool readBlocInstruction(QString& str, ExecutionNode*& resultnode); + +private: + std::unique_ptr m_parsingToolbox; + QString m_command; +}; + +#endif // DICEPARSER_H -- cgit v1.2.3-70-g09d2