ExpressionParser: Add XOR operator.
This commit is contained in:
parent
6282b0d83e
commit
1fe44238b1
|
@ -234,6 +234,7 @@ void IOWindow::CreateMainLayout()
|
||||||
m_operators_combo->addItem(tr("> Greater-than"));
|
m_operators_combo->addItem(tr("> Greater-than"));
|
||||||
m_operators_combo->addItem(tr("< Less-than"));
|
m_operators_combo->addItem(tr("< Less-than"));
|
||||||
m_operators_combo->addItem(tr("& And"));
|
m_operators_combo->addItem(tr("& And"));
|
||||||
|
m_operators_combo->addItem(tr("^ Xor"));
|
||||||
}
|
}
|
||||||
m_operators_combo->addItem(tr("| Or"));
|
m_operators_combo->addItem(tr("| Or"));
|
||||||
if (m_type == Type::Input)
|
if (m_type == Type::Input)
|
||||||
|
|
|
@ -136,6 +136,8 @@ Token Lexer::NextToken()
|
||||||
return Token(TOK_GTHAN);
|
return Token(TOK_GTHAN);
|
||||||
case ',':
|
case ',':
|
||||||
return Token(TOK_COMMA);
|
return Token(TOK_COMMA);
|
||||||
|
case '^':
|
||||||
|
return Token(TOK_XOR);
|
||||||
case '\'':
|
case '\'':
|
||||||
return GetDelimitedLiteral();
|
return GetDelimitedLiteral();
|
||||||
case '$':
|
case '$':
|
||||||
|
@ -278,6 +280,12 @@ public:
|
||||||
lhs->GetValue();
|
lhs->GetValue();
|
||||||
return rhs->GetValue();
|
return rhs->GetValue();
|
||||||
}
|
}
|
||||||
|
case TOK_XOR:
|
||||||
|
{
|
||||||
|
const auto lval = lhs->GetValue();
|
||||||
|
const auto rval = rhs->GetValue();
|
||||||
|
return std::max(std::min(1 - lval, rval), std::min(lval, 1 - rval));
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -621,12 +629,14 @@ private:
|
||||||
return 3;
|
return 3;
|
||||||
case TOK_AND:
|
case TOK_AND:
|
||||||
return 4;
|
return 4;
|
||||||
case TOK_OR:
|
case TOK_XOR:
|
||||||
return 5;
|
return 5;
|
||||||
case TOK_ASSIGN:
|
case TOK_OR:
|
||||||
return 6;
|
return 6;
|
||||||
case TOK_COMMA:
|
case TOK_ASSIGN:
|
||||||
return 7;
|
return 7;
|
||||||
|
case TOK_COMMA:
|
||||||
|
return 8;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -39,6 +39,7 @@ enum TokenType
|
||||||
TOK_LTHAN,
|
TOK_LTHAN,
|
||||||
TOK_GTHAN,
|
TOK_GTHAN,
|
||||||
TOK_COMMA,
|
TOK_COMMA,
|
||||||
|
TOK_XOR,
|
||||||
TOK_BINARY_OPS_END,
|
TOK_BINARY_OPS_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue