diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp index f710ebe9ef9235c5e801a4a2c070a5414e163fc0..77bcd91f571ce75b9dcc3d8c672ad2a91f15d664 100644 --- a/src/language/PugsParser.cpp +++ b/src/language/PugsParser.cpp @@ -39,6 +39,15 @@ #include <unordered_map> #include <variant> +void +clear_symbol_tables(std::unique_ptr<ASTNode>& node) +{ + for (auto& child : node->children) { + clear_symbol_tables(child); + } + node->m_symbol_table->clearValues(); +} + void parser(const std::string& filename) { @@ -96,6 +105,7 @@ parser(const std::string& filename) } catch (language::Exit& e) { ExecutionStatManager::getInstance().setExitCode(e.code()); + clear_symbol_tables(root_node); } root_node->m_symbol_table->clearValues();