summaryrefslogtreecommitdiffstats
path: root/src/condparser.h
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2012-11-18 21:43:28 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2012-11-18 21:43:28 (GMT)
commitfee4053bd3dd075a2dd2cba4da8166ec5307eadd (patch)
tree94365b932426de715b3a479094b7056e0c4f878b /src/condparser.h
parentceb4115c7b941039411e1793e01239610ff112a2 (diff)
downloadDoxygen-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.h75
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
+