aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq/parse.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/jq/parse.zig')
-rw-r--r--src/jq/parse.zig9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/jq/parse.zig b/src/jq/parse.zig
index ad64824..17138ae 100644
--- a/src/jq/parse.zig
+++ b/src/jq/parse.zig
@@ -20,6 +20,7 @@ pub const AstKind = enum {
pipe,
comma,
construct_array,
+ each,
};
pub const BinaryOp = enum {
@@ -56,6 +57,7 @@ pub const Ast = union(AstKind) {
pipe: struct { lhs: *Ast, rhs: *Ast },
comma: struct { lhs: *Ast, rhs: *Ast },
construct_array: struct { items: *Ast },
+ each: struct { base: *Ast },
pub fn kind(self: @This()) AstKind {
return self;
@@ -400,6 +402,13 @@ const Parser = struct {
fn parseSuffix(self: *Self, base: *Ast) Error!*Ast {
_ = try self.tokens.expect(.bracket_left);
+ // Handle [] form.
+ if (self.tokens.consumeIf(.bracket_right)) {
+ const ast = try self.compile_allocator.create(Ast);
+ ast.* = .{ .each = .{ .base = base } };
+ return ast;
+ }
+
// Handle [:to] form.
if (self.tokens.consumeIf(.colon)) {
const to_expr = try self.parseQuery();