From 57f06b7309aad18d83e9ecb04d7c59ccea527f17 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 25 Jan 2026 22:10:05 +0900 Subject: implement and/or operators --- src/jq/parse.zig | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/jq/parse.zig') 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, } }; -- cgit v1.3-1-g0d28