- The operator classifier failed to include '!=='.
This commit is contained in:
Paul Beckingham 2014-10-13 21:39:51 -04:00
parent 086a3b0d11
commit 8905dd1c32

View file

@ -136,7 +136,6 @@ void Eval::evaluateInfixExpression (const std::string& e, Variant& v) const
// Parse for syntax checking and operator replacement. // Parse for syntax checking and operator replacement.
if (_debug) if (_debug)
context.debug ("FILTER Infix " + dump (tokens)); context.debug ("FILTER Infix " + dump (tokens));
infixParse (tokens); infixParse (tokens);
if (_debug) if (_debug)
context.debug ("FILTER Infix parsed " + dump (tokens)); context.debug ("FILTER Infix parsed " + dump (tokens));
@ -478,7 +477,7 @@ bool Eval::parseRegex (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Equality --> Comparative {( "==" | "=" | "!=" ) Comparative} // Equality --> Comparative {( "==" | "=" | "!==" | "!=" ) Comparative}
bool Eval::parseEquality ( bool Eval::parseEquality (
std::vector <std::pair <std::string, Lexer::Type> >& infix, std::vector <std::pair <std::string, Lexer::Type> >& infix,
int &i) const int &i) const
@ -487,8 +486,9 @@ bool Eval::parseEquality (
parseComparative (infix, i)) parseComparative (infix, i))
{ {
while (i < infix.size () && while (i < infix.size () &&
(infix[i].first == "==" || (infix[i].first == "==" ||
infix[i].first == "=" || infix[i].first == "=" ||
infix[i].first == "!==" ||
infix[i].first == "!=") && infix[i].first == "!=") &&
infix[i].second == Lexer::typeOperator) infix[i].second == Lexer::typeOperator)
{ {