aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq/codegen.zig
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-01 20:43:22 +0900
committernsfisis <nsfisis@gmail.com>2026-02-03 00:13:51 +0900
commitbeff4b6048cc3783d538769a307f8e679a33894c (patch)
treebd1bd3e6aff00cf2f9030262d674adef047672ff /src/jq/codegen.zig
parent7712c1d10ec45349c1cd6e66281b7d602350065d (diff)
downloadzgjq-beff4b6048cc3783d538769a307f8e679a33894c.tar.gz
zgjq-beff4b6048cc3783d538769a307f8e679a33894c.tar.zst
zgjq-beff4b6048cc3783d538769a307f8e679a33894c.zip
implement array iteration
Diffstat (limited to 'src/jq/codegen.zig')
-rw-r--r--src/jq/codegen.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/jq/codegen.zig b/src/jq/codegen.zig
index 62535c1..23383bf 100644
--- a/src/jq/codegen.zig
+++ b/src/jq/codegen.zig
@@ -37,6 +37,7 @@ pub const Opcode = enum {
load,
store,
append,
+ each,
};
pub const Instr = union(Opcode) {
@@ -72,6 +73,7 @@ pub const Instr = union(Opcode) {
load: VariableIndex,
store: VariableIndex,
append: VariableIndex,
+ each,
pub fn op(self: Self) Opcode {
return self;
@@ -264,6 +266,12 @@ const Codegen = struct {
try self.emit(.backtrack);
try self.emit(.{ .load = v });
},
+ .each => |each| {
+ // <base>
+ // EACH
+ try self.generate(each.base);
+ try self.emit(.each);
+ },
}
}