mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-07 22:58:34 +02:00
Eval
- Added the new Variant::operator_hastag and Variant::operator_notag operators to the expression evaluator. All operators now implemented, at least in stubbed form.
This commit is contained in:
parent
ae356a1d32
commit
e88ccee1e6
1 changed files with 22 additions and 20 deletions
42
src/Eval.cpp
42
src/Eval.cpp
|
@ -267,26 +267,28 @@ void Eval::evaluatePostfixStack (
|
||||||
values.pop_back ();
|
values.pop_back ();
|
||||||
|
|
||||||
// Ordering these by anticipation frequency of use is a good idea.
|
// Ordering these by anticipation frequency of use is a good idea.
|
||||||
if (token->first == "and") left = left && right;
|
if (token->first == "and") left = left && right;
|
||||||
else if (token->first == "or") left = left || right;
|
else if (token->first == "or") left = left || right;
|
||||||
else if (token->first == "&&") left = left && right;
|
else if (token->first == "&&") left = left && right;
|
||||||
else if (token->first == "||") left = left || right;
|
else if (token->first == "||") left = left || right;
|
||||||
else if (token->first == "<") left = left < right;
|
else if (token->first == "<") left = left < right;
|
||||||
else if (token->first == "<=") left = left <= right;
|
else if (token->first == "<=") left = left <= right;
|
||||||
else if (token->first == ">") left = left > right;
|
else if (token->first == ">") left = left > right;
|
||||||
else if (token->first == ">=") left = left >= right;
|
else if (token->first == ">=") left = left >= right;
|
||||||
else if (token->first == "==") left = left.operator== (right);
|
else if (token->first == "==") left = left.operator== (right);
|
||||||
else if (token->first == "=") left = left.operator_partial (right);
|
else if (token->first == "=") left = left.operator_partial (right);
|
||||||
else if (token->first == "!=") left = left.operator!= (right);
|
else if (token->first == "!=") left = left.operator!= (right);
|
||||||
else if (token->first == "+") left += right;
|
else if (token->first == "+") left += right;
|
||||||
else if (token->first == "-") left -= right;
|
else if (token->first == "-") left -= right;
|
||||||
else if (token->first == "*") left *= right;
|
else if (token->first == "*") left *= right;
|
||||||
else if (token->first == "/") left /= right;
|
else if (token->first == "/") left /= right;
|
||||||
else if (token->first == "^") left ^= right;
|
else if (token->first == "^") left ^= right;
|
||||||
else if (token->first == "%") left %= right;
|
else if (token->first == "%") left %= right;
|
||||||
else if (token->first == "xor") left = left.operator_xor (right);
|
else if (token->first == "xor") left = left.operator_xor (right);
|
||||||
else if (token->first == "~") left = left.operator_match (right);
|
else if (token->first == "~") left = left.operator_match (right);
|
||||||
else if (token->first == "!~") left = left.operator_nomatch (right);
|
else if (token->first == "!~") left = left.operator_nomatch (right);
|
||||||
|
else if (token->first == "_hastag_") left = left.operator_hastag (right);
|
||||||
|
else if (token->first == "_notag_") left = left.operator_notag (right);
|
||||||
else
|
else
|
||||||
std::cout << "# Unrecognized operator '" << token->first << "'\n";
|
std::cout << "# Unrecognized operator '" << token->first << "'\n";
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue