From 8cfa2c11ad3354e74d5ba9b50eb6cea222a85463 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Tue, 2 Jul 2019 21:10:41 +0200 Subject: Add binary complement operation to the parser. Signed-off-by: Pavel Pisa --- qtmips_gui/fixmatheval.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'qtmips_gui') diff --git a/qtmips_gui/fixmatheval.cpp b/qtmips_gui/fixmatheval.cpp index f695e30..c06d892 100644 --- a/qtmips_gui/fixmatheval.cpp +++ b/qtmips_gui/fixmatheval.cpp @@ -231,7 +231,11 @@ bool FmeExpression::parse(const QString &expression, QString &error) { FmeValue (*binary_op)(FmeValue &a, FmeValue &b) = nullptr; FmeValue (*unary_op)(FmeValue &a) = nullptr; int prio = base_prio; - if (ch == '-') { + + if (ch == '~') { + prio += 90; + unary_op = [](FmeValue &a) -> FmeValue { return ~a; }; + } else if (ch == '-') { if (is_unary) { prio += 90; unary_op = [](FmeValue &a) -> FmeValue { return -a; }; @@ -256,6 +260,9 @@ bool FmeExpression::parse(const QString &expression, QString &error) { } else if (ch == '&') { binary_op = [](FmeValue &a, FmeValue &b) -> FmeValue { return a & b; }; prio += 15; + } else if (ch == '^') { + binary_op = [](FmeValue &a, FmeValue &b) -> FmeValue { return a ^ b; }; + prio += 15; } else if (ch == '(') { base_prio += 100; } else if (ch == ')') { -- cgit v1.2.3