From 3e78bb75c4b431b0a4d07892aba6a64f11da2210 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 25 Jan 2026 16:14:57 +0900 Subject: implement arithmetic operations --- src/jq/execute.zig | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/jq/execute.zig') diff --git a/src/jq/execute.zig b/src/jq/execute.zig index 6d4f194..3c83d23 100644 --- a/src/jq/execute.zig +++ b/src/jq/execute.zig @@ -198,6 +198,42 @@ pub const Runtime = struct { const result = lhs + rhs; try self.values.push(.{ .integer = result }); }, + .sub => { + std.debug.assert(self.values.ensureSize(3)); + + _ = self.values.pop(); + const lhs = try self.values.popInteger(); + const rhs = try self.values.popInteger(); + const result = lhs - rhs; + try self.values.push(.{ .integer = result }); + }, + .mul => { + std.debug.assert(self.values.ensureSize(3)); + + _ = self.values.pop(); + const lhs = try self.values.popInteger(); + const rhs = try self.values.popInteger(); + const result = lhs * rhs; + try self.values.push(.{ .integer = result }); + }, + .div => { + std.debug.assert(self.values.ensureSize(3)); + + _ = self.values.pop(); + const lhs = try self.values.popInteger(); + const rhs = try self.values.popInteger(); + const result = @divTrunc(lhs, rhs); + try self.values.push(.{ .integer = result }); + }, + .mod => { + std.debug.assert(self.values.ensureSize(3)); + + _ = self.values.pop(); + const lhs = try self.values.popInteger(); + const rhs = try self.values.popInteger(); + const result = @mod(lhs, rhs); + try self.values.push(.{ .integer = result }); + }, .object_key => |key| { std.debug.assert(self.values.ensureSize(1)); -- cgit v1.3-1-g0d28