aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-25 18:42:24 +0900
committernsfisis <nsfisis@gmail.com>2026-01-25 18:42:24 +0900
commitafb238972816b560b082229ac20cdab64bca8aca (patch)
tree1a61e9c0e2f013baa2001008a631780087ef3914 /src/jq
parent11ff1132c8116aef2296cc6ebd3c40b5e7e7b43f (diff)
downloadzgjq-afb238972816b560b082229ac20cdab64bca8aca.tar.gz
zgjq-afb238972816b560b082229ac20cdab64bca8aca.tar.zst
zgjq-afb238972816b560b082229ac20cdab64bca8aca.zip
implement empty array/object literals
Diffstat (limited to 'src/jq')
-rw-r--r--src/jq/parse.zig18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/jq/parse.zig b/src/jq/parse.zig
index d197c26..b466bd8 100644
--- a/src/jq/parse.zig
+++ b/src/jq/parse.zig
@@ -366,6 +366,24 @@ fn parsePrimary(allocator: std.mem.Allocator, parse_allocator: std.mem.Allocator
ast.* = .identity;
return ast;
},
+ .bracket_left => {
+ _ = try tokens.next();
+ _ = try tokens.expect(.bracket_right);
+ const array_value = try allocator.create(jv.Value);
+ array_value.* = .{ .array = jv.Array.init(allocator) };
+ const array_node = try parse_allocator.create(Ast);
+ array_node.* = .{ .literal = array_value };
+ return array_node;
+ },
+ .brace_left => {
+ _ = try tokens.next();
+ _ = try tokens.expect(.brace_right);
+ const object_value = try allocator.create(jv.Value);
+ object_value.* = .{ .object = jv.Object.init(allocator) };
+ const object_node = try parse_allocator.create(Ast);
+ object_node.* = .{ .literal = object_value };
+ return object_node;
+ },
.field => |name| {
_ = try tokens.next();
const ast = try parse_allocator.create(Ast);