@@ -94,29 +94,30 @@ comma_args -> Vec<ExprNode>
94
94
= expr_node ** COMMA
95
95
96
96
binary_expr_node -> ExprNode
97
- = __ lpos:#position e:binary_expr rpos:#position __ {
98
- // hackily check if e is a proper binary expr
99
- if e.pos == (0, 0) {
100
- ExprNode { pos: (lpos, rpos), data: e.data }
101
- } else {
102
- // e is actually a single_expr, so just propagate
103
- e
104
- }
105
- }
97
+ = binary_expr
98
+ // __ lpos:#position e:binary_expr rpos:#position __ {
99
+ // // hackily check if e is a proper binary expr
100
+ // if e.pos == (0, 0) {
101
+ // ExprNode { pos: (lpos, rpos), data: e.data }
102
+ // } else {
103
+ // // e is actually a single_expr, so just propagate
104
+ // e
105
+ // }
106
+ // }
106
107
107
108
binary_expr -> ExprNode = #infix<single_expr_node> {
108
- #L x AND y { ExprNode { pos: (0, 0 ), data: Expr::BinaryLogical(Box::new(x), LogicalBinOp::And, Box::new(y)) } }
109
- x OR y { ExprNode { pos: (0, 0 ), data: Expr::BinaryLogical(Box::new(x), LogicalBinOp::Or, Box::new(y)) } }
110
- #L x OP_STRICT_EQUALS y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Eq, Box::new(y)) } }
111
- #L x OP_LESS_THAN y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Lt, Box::new(y)) } }
112
- x OP_LESS_THAN_OR_EQUAL y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Lte, Box::new(y)) } }
113
- x OP_GREATER_THAN y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Gt, Box::new(y)) } }
114
- x OP_GREATER_THAN_OR_EQUAL y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Gte, Box::new(y)) } }
115
- #L x OP_PLUS y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Add, Box::new(y)) } }
116
- x OP_MINUS y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Sub, Box::new(y)) } }
117
- #L x OP_ASTERISK y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Mul, Box::new(y)) } }
118
- x OP_SLASH y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Div, Box::new(y)) } }
119
- x OP_MOD y { ExprNode { pos: (0, 0 ), data: Expr::Binary(Box::new(x), BinOp::Mod, Box::new(y)) } }
109
+ #L x AND y { ExprNode { pos: (x.pos. 0, y.pos.1 ), data: Expr::BinaryLogical(Box::new(x), LogicalBinOp::And, Box::new(y)) } }
110
+ x OR y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::BinaryLogical(Box::new(x), LogicalBinOp::Or, Box::new(y)) } }
111
+ #L x OP_STRICT_EQUALS y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Eq, Box::new(y)) } }
112
+ #L x OP_LESS_THAN y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Lt, Box::new(y)) } }
113
+ x OP_LESS_THAN_OR_EQUAL y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Lte, Box::new(y)) } }
114
+ x OP_GREATER_THAN y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Gt, Box::new(y)) } }
115
+ x OP_GREATER_THAN_OR_EQUAL y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Gte, Box::new(y)) } }
116
+ #L x OP_PLUS y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Add, Box::new(y)) } }
117
+ x OP_MINUS y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Sub, Box::new(y)) } }
118
+ #L x OP_ASTERISK y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Mul, Box::new(y)) } }
119
+ x OP_SLASH y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Div, Box::new(y)) } }
120
+ x OP_MOD y { ExprNode { pos : (x.pos. 0, y.pos.1 ), data: Expr::Binary(Box::new(x), BinOp::Mod, Box::new(y)) } }
120
121
}
121
122
122
123
single_expr_node -> ExprNode
0 commit comments