about summary refs log tree commit diff
path: root/src/evaluator.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-01-21 00:32:14 +0100
committerBaitinq <[email protected]>2025-01-21 00:32:14 +0100
commitfbdf799d6081ffd86137e62f3e58d828a4d0335f (patch)
treedd038d87758bfe17edba4c1ba5457b1ebbde9184 /src/evaluator.zig
parentParser: Add support for parenthesis grouping (diff)
downloadpry-lang-fbdf799d6081ffd86137e62f3e58d828a4d0335f.tar.gz
pry-lang-fbdf799d6081ffd86137e62f3e58d828a4d0335f.tar.bz2
pry-lang-fbdf799d6081ffd86137e62f3e58d828a4d0335f.zip
Feature: Add support for NOT unary expression
Diffstat (limited to 'src/evaluator.zig')
-rw-r--r--src/evaluator.zig5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/evaluator.zig b/src/evaluator.zig
index f35956a..c1997f3 100644
--- a/src/evaluator.zig
+++ b/src/evaluator.zig
@@ -144,6 +144,11 @@ pub const Evaluator = struct {
                 if (x.addition) return try self.create_variable(.{ .NUMBER = lhs.NUMBER + rhs.NUMBER });
                 return try self.create_variable(.{ .NUMBER = lhs.NUMBER - rhs.NUMBER });
             },
+            .UNARY_EXPRESSION => |x| {
+                const val = try self.get_expression_value(x.expression) orelse return EvaluatorError.EvaluationError;
+                std.debug.assert(val.* == .BOOLEAN);
+                return try self.create_variable(.{ .BOOLEAN = !val.BOOLEAN });
+            },
             .EQUALITY_EXPRESSION => |x| {
                 const lhs = try self.get_expression_value(x.lhs) orelse return EvaluatorError.EvaluationError;
                 const rhs = try self.get_expression_value(x.rhs) orelse return EvaluatorError.EvaluationError;