expr_alloc_two
*ep1 = expr_alloc_two(type, l, r);
*ep2 = expr_alloc_two(type, l, r);
*ep1 = expr_alloc_two(type, l, r);
*ep2 = expr_alloc_two(type, l, r);
e = expr_alloc_two(e->type, l, r);
e = expr_alloc_two(e->type,
e = expr_alloc_two(E_AND, e1, e2);
e = expr_alloc_two(E_OR, e1, e2);
e = expr_alloc_two(E_OR, e1, e2);
return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
e = expr_alloc_two(E_AND, e1, e2);
return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
e = expr_alloc_two(e->type,
| expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); }
| expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); }