comparison lwlib/lw_expr.c @ 43:18b49cf10ae9

Added an instruction reduction immediately after instruction parsing to minimize memory footprint and expression complexity
author lost@l-w.ca
date Mon, 04 Apr 2011 17:55:08 -0600
parents 6b9991fb39b6
children b5785eb3441f
comparison
equal deleted inserted replaced
42:31adb7c09b4e 43:18b49cf10ae9
38 static int level = 0; 38 static int level = 0;
39 static int bailing = 0; 39 static int bailing = 0;
40 40
41 int lw_expr_istype(lw_expr_t e, int t) 41 int lw_expr_istype(lw_expr_t e, int t)
42 { 42 {
43 /* NULL expression is never of any type */
44 if (!e)
45 return 0;
43 if (e -> type == t) 46 if (e -> type == t)
44 return 1; 47 return 1;
45 return 0; 48 return 0;
46 } 49 }
47 50
113 lw_expr_t lw_expr_copy(lw_expr_t E) 116 lw_expr_t lw_expr_copy(lw_expr_t E)
114 { 117 {
115 lw_expr_t r; 118 lw_expr_t r;
116 struct lw_expr_opers *o; 119 struct lw_expr_opers *o;
117 120
121 if (!E)
122 return NULL;
118 r = lw_alloc(sizeof(struct lw_expr_priv)); 123 r = lw_alloc(sizeof(struct lw_expr_priv));
119 *r = *E; 124 *r = *E;
120 r -> operands = NULL; 125 r -> operands = NULL;
121 126
122 if (E -> type == lw_expr_type_var) 127 if (E -> type == lw_expr_type_var)