diff options
| author | Baitinq <[email protected]> | 2025-01-19 16:04:08 +0100 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-01-19 16:43:59 +0100 |
| commit | f076be1254aa2934402837f44d0271d279ae74c9 (patch) | |
| tree | e6b3f445aa8578b2bcaa5de2d2d91214755230b9 /src/evaluator.zig | |
| parent | Feature: Add support for boolean values (diff) | |
| download | interpreter-f076be1254aa2934402837f44d0271d279ae74c9.tar.gz interpreter-f076be1254aa2934402837f44d0271d279ae74c9.tar.bz2 interpreter-f076be1254aa2934402837f44d0271d279ae74c9.zip | |
Feature: Add basic support for equality expression
Diffstat (limited to 'src/evaluator.zig')
| -rw-r--r-- | src/evaluator.zig | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/evaluator.zig b/src/evaluator.zig index 39c7235..f35956a 100644 --- a/src/evaluator.zig +++ b/src/evaluator.zig @@ -141,10 +141,14 @@ pub const Evaluator = struct { 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; std.debug.assert(lhs.* == .NUMBER and rhs.* == .NUMBER); - var res: i64 = undefined; - if (x.addition) res = lhs.NUMBER + rhs.NUMBER; - res = lhs.NUMBER - rhs.NUMBER; - return try self.create_variable(.{ .NUMBER = res }); + if (x.addition) return try self.create_variable(.{ .NUMBER = lhs.NUMBER + rhs.NUMBER }); + return try self.create_variable(.{ .NUMBER = lhs.NUMBER - rhs.NUMBER }); + }, + .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; + std.debug.assert(lhs.* == .NUMBER and rhs.* == .NUMBER); //TODO: Generic + return try self.create_variable(.{ .BOOLEAN = (lhs.NUMBER == rhs.NUMBER) }); }, .PRIMARY_EXPRESSION => |x| { switch (x) { |