aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq/parse.zig
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-25 22:10:05 +0900
committernsfisis <nsfisis@gmail.com>2026-01-25 22:10:05 +0900
commit57f06b7309aad18d83e9ecb04d7c59ccea527f17 (patch)
treea15454411e2dbd5fc9f6aa92b78a079e88b4ab14 /src/jq/parse.zig
parent8263832eb8c23968f0cfea15b5cb1bfa3546d540 (diff)
downloadzgjq-57f06b7309aad18d83e9ecb04d7c59ccea527f17.tar.gz
zgjq-57f06b7309aad18d83e9ecb04d7c59ccea527f17.tar.zst
zgjq-57f06b7309aad18d83e9ecb04d7c59ccea527f17.zip
implement and/or operators
Diffstat (limited to 'src/jq/parse.zig')
-rw-r--r--src/jq/parse.zig12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/jq/parse.zig b/src/jq/parse.zig
index 58c3722..1760875 100644
--- a/src/jq/parse.zig
+++ b/src/jq/parse.zig
@@ -14,6 +14,8 @@ pub const AstKind = enum {
index,
literal,
binary_expr,
+ or_expr,
+ and_expr,
pipe,
comma,
};
@@ -28,8 +30,6 @@ pub const BinaryOp = enum {
mul_assign,
div_assign,
mod_assign,
- @"or",
- @"and",
eq,
ne,
lt,
@@ -48,6 +48,8 @@ pub const Ast = union(AstKind) {
index: struct { base: *Ast, index: *Ast, is_optional: bool },
literal: ConstIndex,
binary_expr: struct { op: BinaryOp, lhs: *Ast, rhs: *Ast },
+ or_expr: struct { lhs: *Ast, rhs: *Ast },
+ and_expr: struct { lhs: *Ast, rhs: *Ast },
pipe: struct { lhs: *Ast, rhs: *Ast },
comma: struct { lhs: *Ast, rhs: *Ast },
@@ -202,8 +204,7 @@ const Parser = struct {
}
const rhs = try self.parseExpr4();
const ast = try self.parse_allocator.create(Ast);
- ast.* = .{ .binary_expr = .{
- .op = .@"or",
+ ast.* = .{ .or_expr = .{
.lhs = lhs,
.rhs = rhs,
} };
@@ -217,8 +218,7 @@ const Parser = struct {
}
const rhs = try self.parseExpr5();
const ast = try self.parse_allocator.create(Ast);
- ast.* = .{ .binary_expr = .{
- .op = .@"and",
+ ast.* = .{ .and_expr = .{
.lhs = lhs,
.rhs = rhs,
} };