void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
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)
return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
struct expr *expr_copy(const struct expr *org)