mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-27 19:17:19 +02:00
Eval
- Added Eval::getOperators to expose suported operator symbols.
This commit is contained in:
parent
fff1ae2d6e
commit
bf30fb3085
2 changed files with 19 additions and 8 deletions
25
src/Eval.cpp
25
src/Eval.cpp
|
@ -50,17 +50,17 @@ static struct
|
||||||
{ "_hastag_", 14, 'b', 'l'}, // +tag [Pseudo-op]
|
{ "_hastag_", 14, 'b', 'l'}, // +tag [Pseudo-op]
|
||||||
{ "_notag_", 14, 'b', 'l'}, // -tag [Pseudo-op]
|
{ "_notag_", 14, 'b', 'l'}, // -tag [Pseudo-op]
|
||||||
|
|
||||||
{ "*", 13, 'b', 'l' }, // Multiplication
|
{ "*", 13, 'b', 'l' }, // Multiplication
|
||||||
{ "/", 13, 'b', 'l' }, // Division
|
{ "/", 13, 'b', 'l' }, // Division
|
||||||
{ "%", 13, 'b', 'l' }, // Modulus
|
{ "%", 13, 'b', 'l' }, // Modulus
|
||||||
|
|
||||||
{ "+", 12, 'b', 'l' }, // Addition
|
{ "+", 12, 'b', 'l' }, // Addition
|
||||||
{ "-", 12, 'b', 'l' }, // Subtraction
|
{ "-", 12, 'b', 'l' }, // Subtraction
|
||||||
|
|
||||||
{ "<=", 10, 'b', 'l' }, // Less than or equal
|
{ "<=", 10, 'b', 'l' }, // Less than or equal
|
||||||
{ ">=", 10, 'b', 'l' }, // Greater than or equal
|
{ ">=", 10, 'b', 'l' }, // Greater than or equal
|
||||||
{ ">", 10, 'b', 'l' }, // Greater than
|
{ ">", 10, 'b', 'l' }, // Greater than
|
||||||
{ "<", 10, 'b', 'l' }, // Less than
|
{ "<", 10, 'b', 'l' }, // Less than
|
||||||
|
|
||||||
{ "=", 9, 'b', 'l' }, // Equal
|
{ "=", 9, 'b', 'l' }, // Equal
|
||||||
{ "==", 9, 'b', 'l' }, // Equal
|
{ "==", 9, 'b', 'l' }, // Equal
|
||||||
|
@ -73,8 +73,8 @@ static struct
|
||||||
{ "or", 4, 'b', 'l' }, // Disjunction
|
{ "or", 4, 'b', 'l' }, // Disjunction
|
||||||
{ "xor", 3, 'b', 'l' }, // Disjunction
|
{ "xor", 3, 'b', 'l' }, // Disjunction
|
||||||
|
|
||||||
{ "(", 0, 'b', 'l' }, // Precedence start
|
{ "(", 0, 'b', 'l' }, // Precedence start
|
||||||
{ ")", 0, 'b', 'l' }, // Precedence end
|
{ ")", 0, 'b', 'l' }, // Precedence end
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NUM_OPERATORS (sizeof (operators) / sizeof (operators[0]))
|
#define NUM_OPERATORS (sizeof (operators) / sizeof (operators[0]))
|
||||||
|
@ -171,6 +171,15 @@ void Eval::debug ()
|
||||||
_debug = true;
|
_debug = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Static.
|
||||||
|
void Eval::getOperators (std::vector <std::string>& all)
|
||||||
|
{
|
||||||
|
all.clear ();
|
||||||
|
for (unsigned int i = 0; i < NUM_OPERATORS; ++i)
|
||||||
|
all.push_back (operators[i].op);
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void Eval::evaluatePostfixStack (
|
void Eval::evaluatePostfixStack (
|
||||||
const std::vector <std::pair <std::string, Lexer::Type> >& tokens,
|
const std::vector <std::pair <std::string, Lexer::Type> >& tokens,
|
||||||
|
|
|
@ -47,6 +47,8 @@ public:
|
||||||
void ambiguity (bool);
|
void ambiguity (bool);
|
||||||
void debug ();
|
void debug ();
|
||||||
|
|
||||||
|
static void getOperators (std::vector <std::string>&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void evaluatePostfixStack (const std::vector <std::pair <std::string, Lexer::Type> >&, Variant&) const;
|
void evaluatePostfixStack (const std::vector <std::pair <std::string, Lexer::Type> >&, Variant&) const;
|
||||||
void infixToPostfix (std::vector <std::pair <std::string, Lexer::Type> >&) const;
|
void infixToPostfix (std::vector <std::pair <std::string, Lexer::Type> >&) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue