From f6c39185f36070d4e092e4c9d2074b418b8bcf03 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 11 Sep 2021 16:54:06 +0800 Subject: ... --- src/parse/Grammar.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/parse/Grammar.cpp') diff --git a/src/parse/Grammar.cpp b/src/parse/Grammar.cpp index 3cf43237..5486542b 100644 --- a/src/parse/Grammar.cpp +++ b/src/parse/Grammar.cpp @@ -8,7 +8,15 @@ namespace cru::parse { Grammar::Grammar() {} -Grammar::~Grammar() {} +Grammar::~Grammar() { + for (auto symbol : symbols_) { + delete symbol; + } + + for (auto production : productions_) { + delete production; + } +} Terminal* Grammar::CreateTerminal(String name) { auto terminal = new Terminal(this, std::move(name)); @@ -86,6 +94,8 @@ Grammar* Grammar::Clone() const { symbol_map.emplace(old_nonterminal, new_nonterminal); } + g->SetStartSymbol(static_cast(symbol_map[start_symbol_])); + for (auto old_production : productions_) { std::vector new_right; std::transform(old_production->GetRight().cbegin(), -- cgit v1.2.3