static int expr_eq(struct expr *e1, struct expr *e2);
static struct expr *expr_eliminate_yn(struct expr *e);
struct expr *expr_alloc_symbol(struct symbol *sym)
struct expr *e = xcalloc(1, sizeof(*e));
struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
struct expr *e = xcalloc(1, sizeof(*e));
struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
struct expr *e = xcalloc(1, sizeof(*e));
struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
struct expr *e = xcalloc(1, sizeof(*e));
struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)