summary refs log tree commit diff
path: root/src/evaluator.zig
diff options
context:
space:
mode:
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();