|
|
|
@ -13,7 +13,7 @@ |
|
|
|
|
|
|
|
|
|
struct expr *expr_alloc_symbol(struct symbol *sym) |
|
|
|
|
{ |
|
|
|
|
struct expr *e = calloc(1, sizeof(*e)); |
|
|
|
|
struct expr *e = xcalloc(1, sizeof(*e)); |
|
|
|
|
e->type = E_SYMBOL; |
|
|
|
|
e->left.sym = sym; |
|
|
|
|
return e; |
|
|
|
@ -21,7 +21,7 @@ struct expr *expr_alloc_symbol(struct symbol *sym) |
|
|
|
|
|
|
|
|
|
struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) |
|
|
|
|
{ |
|
|
|
|
struct expr *e = calloc(1, sizeof(*e)); |
|
|
|
|
struct expr *e = xcalloc(1, sizeof(*e)); |
|
|
|
|
e->type = type; |
|
|
|
|
e->left.expr = ce; |
|
|
|
|
return e; |
|
|
|
@ -29,7 +29,7 @@ struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) |
|
|
|
|
|
|
|
|
|
struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) |
|
|
|
|
{ |
|
|
|
|
struct expr *e = calloc(1, sizeof(*e)); |
|
|
|
|
struct expr *e = xcalloc(1, sizeof(*e)); |
|
|
|
|
e->type = type; |
|
|
|
|
e->left.expr = e1; |
|
|
|
|
e->right.expr = e2; |
|
|
|
@ -38,7 +38,7 @@ struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e |
|
|
|
|
|
|
|
|
|
struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) |
|
|
|
|
{ |
|
|
|
|
struct expr *e = calloc(1, sizeof(*e)); |
|
|
|
|
struct expr *e = xcalloc(1, sizeof(*e)); |
|
|
|
|
e->type = type; |
|
|
|
|
e->left.sym = s1; |
|
|
|
|
e->right.sym = s2; |
|
|
|
@ -66,7 +66,7 @@ struct expr *expr_copy(const struct expr *org) |
|
|
|
|
if (!org) |
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
e = malloc(sizeof(*org)); |
|
|
|
|
e = xmalloc(sizeof(*org)); |
|
|
|
|
memcpy(e, org, sizeof(*org)); |
|
|
|
|
switch (org->type) { |
|
|
|
|
case E_SYMBOL: |
|
|
|
|