From 9a727aa83b878932b4342c51aef8dd537b94391a Mon Sep 17 00:00:00 2001 From: Brandon Rozek Date: Fri, 28 Sep 2018 13:33:11 -0400 Subject: [PATCH] Delete node now is replaced by deconstructor --- src/main.cpp | 3 ++- src/operations/node.cpp | 9 --------- src/operations/node.hpp | 6 +++++- src/shell.cpp | 2 +- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2a851ce..4d10960 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,5 +38,6 @@ void interpret_file(char* fileName) { struct Environment* env = new Environment(); eval_statement(result, env); delete_environment(env); - delete_tree(result); + + delete result; } \ No newline at end of file diff --git a/src/operations/node.cpp b/src/operations/node.cpp index 3bfa1ee..4d4e0f9 100644 --- a/src/operations/node.cpp +++ b/src/operations/node.cpp @@ -73,15 +73,6 @@ void print_tree(struct Node* node, int tabs) { } } -void delete_tree(struct Node* node) { - if (!node) { return; } - for(int i = 0; i < node->num_children; i++) { - delete_tree(node->children[i]); - } - free(node); -} - - struct Value* eval_expression(struct Node* node, struct Environment* env) { /* base case */ diff --git a/src/operations/node.hpp b/src/operations/node.hpp index 8035ac3..257b206 100644 --- a/src/operations/node.hpp +++ b/src/operations/node.hpp @@ -28,13 +28,17 @@ struct Node { children[i] = nullptr; } } + ~Node() { + for (int i = 0; i < num_children; i++) { + delete children[i]; + } + } }; // Abstract Syntax Tree Functions // struct Node* make_node(int type, struct Value* value, std::string id); void attach_node(struct Node* parent, struct Node* child); void print_tree(struct Node* node, int tabs); -void delete_tree(struct Node* node); // Interpreting AST void eval_statement(struct Node* node, struct Environment* env); diff --git a/src/shell.cpp b/src/shell.cpp index f5de742..342bc24 100644 --- a/src/shell.cpp +++ b/src/shell.cpp @@ -70,5 +70,5 @@ void start_shell() { } delete_environment(env); - delete_tree(result); + delete result; } \ No newline at end of file