From af6056a83f0ed9fa6d0ac5531799ca0912cecc6d Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 7 Jul 2026 00:09:39 +0200 Subject: [PATCH] fix(checker): handle all unary ops in evaluator --- midas/checker/evaluator.py | 6 ++++++ midas/generator/constraints.py | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/midas/checker/evaluator.py b/midas/checker/evaluator.py index f7b946f..de8f9ad 100644 --- a/midas/checker/evaluator.py +++ b/midas/checker/evaluator.py @@ -99,6 +99,8 @@ class Evaluator(m.Expr.Visitor[Any]): left: Any = self.evaluate(expr.left) right: Any = self.evaluate(expr.right) match expr.operator.type: + case TokenType.PLUS: + return left + right case TokenType.MINUS: return left - right case TokenType.STAR: @@ -123,8 +125,12 @@ class Evaluator(m.Expr.Visitor[Any]): def visit_unary_expr(self, expr: m.UnaryExpr) -> Any: right: Any = self.evaluate(expr.right) match expr.operator.type: + case TokenType.PLUS: + return +right case TokenType.MINUS: return -right + case TokenType.BANG: + return not right case _: raise NotImplementedError diff --git a/midas/generator/constraints.py b/midas/generator/constraints.py index c936884..65022f2 100644 --- a/midas/generator/constraints.py +++ b/midas/generator/constraints.py @@ -18,14 +18,14 @@ LOGICAL_OPERATORS: dict[TokenType, type[ast.boolop]] = { } BINARY_OPERATORS: dict[TokenType, type[ast.operator]] = { - # TokenType.PLUS: ast.Add, + TokenType.PLUS: ast.Add, TokenType.MINUS: ast.Sub, TokenType.STAR: ast.Mult, TokenType.SLASH: ast.Div, } UNARY_OPERATORS: dict[TokenType, type[ast.unaryop]] = { - # TokenType.PLUS: ast.UAdd, + TokenType.PLUS: ast.UAdd, TokenType.MINUS: ast.USub, }