Doxygen
Toggle main menu visibility
Loading...
Searching...
No Matches
condparser.h
Go to the documentation of this file.
1
#ifndef CONDPARSER_H
2
#define CONDPARSER_H
3
4
/**
5
* Copyright (C) 1997-2015 by Dimitri van Heesch.
6
*
7
* Permission to use, copy, modify, and distribute this software and its
8
* documentation under the terms of the GNU General Public License is hereby
9
* granted. No representations are made about the suitability of this software
10
* for any purpose. It is provided "as is" without express or implied warranty.
11
* See the GNU General Public License for more details.
12
*
13
* Documents produced by Doxygen are derivative works derived from the
14
* input used in their production; they are not affected by this license.
15
*
16
* C++ Expression parser for ENABLED_SECTIONS in Doxygen
17
*
18
* Features used:
19
* Operators:
20
* && AND operator
21
* || OR operator
22
* ! NOT operator
23
*/
24
25
#include "
dstring.h
"
26
27
class
CondParser
28
{
29
// public functions
30
public
:
31
CondParser
() :
m_e
(nullptr),
m_tokenType
(
NOTHING
) {}
32
bool
parse
(
const
DString
&fileName,
int
lineNr,
const
DString
&expr);
33
34
// enumerations
35
private
:
36
enum
TOKENTYPE
37
{
38
NOTHING
= -1,
39
DELIMITER
,
40
VARIABLE
,
41
UNKNOWN
42
};
43
enum
OPERATOR_ID
44
{
45
UNKNOWN_OP
= -1,
46
AND
= 1,
47
OR
,
48
NOT
49
};
50
51
// data
52
private
:
53
54
DString
m_err
;
//!< error state
55
DString
m_expr
;
//!< holds the expression
56
const
char
*
m_e
;
//!< points to a character in expr
57
58
DString
m_token
;
//!< holds the token
59
TOKENTYPE
m_tokenType
;
//!< type of the token
60
61
// private functions
62
private
:
63
void
getToken
();
64
65
bool
parseLevel1
();
66
bool
parseLevel2
();
67
bool
parseLevel3
();
68
bool
parseVar
();
69
70
bool
evalOperator
(
const
int
opId,
bool
lhs,
bool
rhs);
71
bool
evalVariable
(
const
DString
&varName);
72
int
getOperatorId
(
const
DString
&opName);
73
};
74
75
#endif
76
CondParser::m_token
DString m_token
holds the token
Definition
condparser.h:58
CondParser::CondParser
CondParser()
Definition
condparser.h:31
CondParser::m_err
DString m_err
error state
Definition
condparser.h:54
CondParser::parseLevel2
bool parseLevel2()
NOT.
Definition
condparser.cpp:195
CondParser::TOKENTYPE
TOKENTYPE
Definition
condparser.h:37
CondParser::UNKNOWN
@ UNKNOWN
Definition
condparser.h:41
CondParser::VARIABLE
@ VARIABLE
Definition
condparser.h:40
CondParser::DELIMITER
@ DELIMITER
Definition
condparser.h:39
CondParser::NOTHING
@ NOTHING
Definition
condparser.h:38
CondParser::OPERATOR_ID
OPERATOR_ID
Definition
condparser.h:44
CondParser::OR
@ OR
Definition
condparser.h:47
CondParser::NOT
@ NOT
Definition
condparser.h:48
CondParser::AND
@ AND
Definition
condparser.h:46
CondParser::UNKNOWN_OP
@ UNKNOWN_OP
Definition
condparser.h:45
CondParser::parse
bool parse(const DString &fileName, int lineNr, const DString &expr)
parses and evaluates the given expression.
Definition
condparser.cpp:41
CondParser::m_tokenType
TOKENTYPE m_tokenType
type of the token
Definition
condparser.h:59
CondParser::m_expr
DString m_expr
holds the expression
Definition
condparser.h:55
CondParser::getOperatorId
int getOperatorId(const DString &opName)
returns the id of the given operator returns -1 if the operator is not recognized
Definition
condparser.cpp:95
CondParser::parseLevel1
bool parseLevel1()
conditional operators AND and OR
Definition
condparser.cpp:177
CondParser::getToken
void getToken()
Get next token in the current string expr.
Definition
condparser.cpp:112
CondParser::evalVariable
bool evalVariable(const DString &varName)
evaluate a variable
Definition
condparser.cpp:284
CondParser::evalOperator
bool evalOperator(const int opId, bool lhs, bool rhs)
evaluate an operator for given values
Definition
condparser.cpp:268
CondParser::m_e
const char * m_e
points to a character in expr
Definition
condparser.h:56
CondParser::parseVar
bool parseVar()
Definition
condparser.cpp:237
CondParser::parseLevel3
bool parseLevel3()
parenthesized expression or variable
Definition
condparser.cpp:213
DString
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition
dstring.h:89
dstring.h
src
condparser.h
Generated by
1.19.0