diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-10-15 10:45:59 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-10-15 10:45:59 +0900 |
commit | 046aece77e373b5280b56bf871fa6e974d06e85d (patch) | |
tree | 629c4681a5158d26512b815623754b33165d8d23 /src/condparser.h | |
parent | cccf3a7c7888ce7bd7a8f8d48a34c5474ad9feeb (diff) | |
download | doxygen-046aece77e373b5280b56bf871fa6e974d06e85d.tar.gz doxygen-046aece77e373b5280b56bf871fa6e974d06e85d.tar.bz2 doxygen-046aece77e373b5280b56bf871fa6e974d06e85d.zip |
Imported Upstream version 1.8.3upstream/1.8.3
Diffstat (limited to 'src/condparser.h')
-rw-r--r-- | src/condparser.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/condparser.h b/src/condparser.h new file mode 100644 index 0000000..74a05cf --- /dev/null +++ b/src/condparser.h @@ -0,0 +1,75 @@ +#ifndef CONDPARSER_H +#define CONDPARSER_H + +/** + * Copyright (C) 1997-2012 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + * C++ Expression parser for EXTABLED_SETIONS in Doxygen + * + * Features used: + * Operators: + * && AND operator + * || OR operator + * ! NOT operator + */ + +#include <qcstring.h> + +class CondParser +{ + // public functions + public: + bool parse(const char *fileName,int lineNr,const char *expr); + + // enumerations + private: + enum TOKENTYPE + { + NOTHING = -1, + DELIMITER, + VARIABLE, + UNKNOWN + }; + enum OPERATOR_ID + { + UNKNOWN_OP = -1, + AND = 1, + OR, + NOT + }; + + // data + private: + + QCString m_err; //!< error state + QCString m_expr; //!< holds the expression + const char *m_e; //!< points to a character in expr + + QCString m_token; //!< holds the token + TOKENTYPE m_tokenType; //!< type of the token + + // private functions + private: + void getToken(); + + bool parseLevel1(); + bool parseLevel2(); + bool parseLevel3(); + bool parseVar(); + + bool evalOperator(const int opId, bool lhs, bool rhs); + bool evalVariable(const char *varName); + int getOperatorId(const QCString &opName); +}; + +#endif + |