diff options
-rw-r--r-- | main.c | 1 | ||||
-rw-r--r-- | pc.y | 2 | ||||
-rw-r--r-- | tree.c | 11 | ||||
-rw-r--r-- | tree.h | 2 |
4 files changed, 16 insertions, 0 deletions
@@ -142,6 +142,7 @@ int main() assert(cur_scope); yyparse(); + free_scope(cur_scope); return 0; } @@ -93,6 +93,7 @@ program '.' { print_tree($9); + free_tree($4); } ; @@ -159,6 +160,7 @@ sub_prog_declaration compound_statement { print_tree($4); + free_tree($4); pop_scope(&cur_scope); } ; @@ -143,3 +143,14 @@ int spaces; } } + +void free_tree(t) +ptree *t; +{ + if (!t) + return; + + free_tree(t->l); + free_tree(t->r); + free(t); +} @@ -26,4 +26,6 @@ ptree* mkop(int, int, ptree*, ptree*); void update_type_info(ptree*, int); +void free_tree(ptree*); + #endif |