Mercurial > hg > index.cgi
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) |