diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2012-11-18 21:43:28 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2012-11-18 21:43:28 (GMT) |
commit | fee4053bd3dd075a2dd2cba4da8166ec5307eadd (patch) | |
tree | 94365b932426de715b3a479094b7056e0c4f878b /src/condparser.h | |
parent | ceb4115c7b941039411e1793e01239610ff112a2 (diff) | |
download | Doxygen-fee4053bd3dd075a2dd2cba4da8166ec5307eadd.zip Doxygen-fee4053bd3dd075a2dd2cba4da8166ec5307eadd.tar.gz Doxygen-fee4053bd3dd075a2dd2cba4da8166ec5307eadd.tar.bz2 |
Release-1.8.2-20121118
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 + |