aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq/parse.zig
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-25 16:20:23 +0900
committernsfisis <nsfisis@gmail.com>2026-01-25 16:20:23 +0900
commit7e5382e6eac497f6be55a7d947a8c6e6c2ecb390 (patch)
treee3fca3bc11e4618a1a56ebe811d0e24c7f54a2b7 /src/jq/parse.zig
parent3e78bb75c4b431b0a4d07892aba6a64f11da2210 (diff)
downloadzgjq-7e5382e6eac497f6be55a7d947a8c6e6c2ecb390.tar.gz
zgjq-7e5382e6eac497f6be55a7d947a8c6e6c2ecb390.tar.zst
zgjq-7e5382e6eac497f6be55a7d947a8c6e6c2ecb390.zip
implement null/true/false
Diffstat (limited to 'src/jq/parse.zig')
-rw-r--r--src/jq/parse.zig27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/jq/parse.zig b/src/jq/parse.zig
index 24151a6..6a76861 100644
--- a/src/jq/parse.zig
+++ b/src/jq/parse.zig
@@ -316,6 +316,33 @@ fn parseTerm(allocator: std.mem.Allocator, parse_allocator: std.mem.Allocator, t
return number_node;
}
+ if (first_token.kind() == .keyword_null) {
+ _ = try tokens.next();
+ const null_value = try allocator.create(jv.Value);
+ null_value.* = .null;
+ const null_node = try parse_allocator.create(Ast);
+ null_node.* = .{ .literal = null_value };
+ return null_node;
+ }
+
+ if (first_token.kind() == .keyword_true) {
+ _ = try tokens.next();
+ const true_value = try allocator.create(jv.Value);
+ true_value.* = .{ .bool = true };
+ const true_node = try parse_allocator.create(Ast);
+ true_node.* = .{ .literal = true_value };
+ return true_node;
+ }
+
+ if (first_token.kind() == .keyword_false) {
+ _ = try tokens.next();
+ const false_value = try allocator.create(jv.Value);
+ false_value.* = .{ .bool = false };
+ const false_node = try parse_allocator.create(Ast);
+ false_node.* = .{ .literal = false_value };
+ return false_node;
+ }
+
_ = try tokens.expect(.dot);
const next_token = try tokens.peek();