| 105 | } |
| 106 | |
| 107 | void expr_free(struct expr *e) |
| 108 | { |
| 109 | if (!e) |
| 110 | return; |
| 111 | |
| 112 | switch (e->type) { |
| 113 | case E_SYMBOL: |
| 114 | break; |
| 115 | case E_NOT: |
| 116 | expr_free(e->left.expr); |
| 117 | break; |
| 118 | case E_EQUAL: |
| 119 | case E_GEQ: |
| 120 | case E_GTH: |
| 121 | case E_LEQ: |
| 122 | case E_LTH: |
| 123 | case E_UNEQUAL: |
| 124 | break; |
| 125 | case E_OR: |
| 126 | case E_AND: |
| 127 | expr_free(e->left.expr); |
| 128 | expr_free(e->right.expr); |
| 129 | break; |
| 130 | default: |
| 131 | fprintf(stderr, "how to free type %d?\n", e->type); |
| 132 | break; |
| 133 | } |
| 134 | free(e); |
| 135 | } |
| 136 | |
| 137 | static int trans_count; |
| 138 |
no outgoing calls
no test coverage detected