about summary refs log tree commit diff
path: root/src/evaluator.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-01-22 00:30:28 +0100
committerBaitinq <[email protected]>2025-01-22 00:30:59 +0100
commit774498ff4db405eadd8ce295eb699586ed217f6d (patch)
tree106c0926321316cac67d57ea94df8444fd0b3f8f /src/evaluator.zig
parentFeature: Add support for division and multiplication (diff)
downloadpry-lang-774498ff4db405eadd8ce295eb699586ed217f6d.tar.gz
pry-lang-774498ff4db405eadd8ce295eb699586ed217f6d.tar.bz2
pry-lang-774498ff4db405eadd8ce295eb699586ed217f6d.zip
Feature: Add support for negation
Diffstat (limited to 'src/evaluator.zig')
-rw-r--r--src/evaluator.zig5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/evaluator.zig b/src/evaluator.zig
index 9f8b61f..798d66c 100644
--- a/src/evaluator.zig
+++ b/src/evaluator.zig
@@ -174,6 +174,10 @@ pub const Evaluator = struct {
             },
             .UNARY_EXPRESSION => |x| {
                 const val = try self.get_expression_value(x.expression) orelse return EvaluatorError.EvaluationError;
+                if (!x.negation) {
+                    std.debug.assert(val.* == .NUMBER);
+                    return try self.create_variable(.{ .NUMBER = -val.NUMBER });
+                }
                 std.debug.assert(val.* == .BOOLEAN);
                 return try self.create_variable(.{ .BOOLEAN = !val.BOOLEAN });
             },
@@ -268,7 +272,6 @@ const Environment = struct {
             .allocator = allocator,
         };
 
-        //TODO: Add more scopes when evaluating functions
         // Create global scope
         try self.create_scope();