From 061f9ad04131febcc66975fd3d95b332789da52f Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 21 Dec 2021 15:13:55 +0800 Subject: ... --- src/parse/CMakeLists.txt | 1 + src/parse/ParsingTreeNode.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/parse/ParsingTreeNode.cpp (limited to 'src/parse') diff --git a/src/parse/CMakeLists.txt b/src/parse/CMakeLists.txt index 7c868f98..631c9881 100644 --- a/src/parse/CMakeLists.txt +++ b/src/parse/CMakeLists.txt @@ -4,6 +4,7 @@ add_library(cru_parse SHARED ParsingAlgorithm.cpp ParsingAlgorithmContext.cpp ParsingContext.cpp + ParsingTreeNode.cpp Production.cpp Symbol.cpp Terminal.cpp diff --git a/src/parse/ParsingTreeNode.cpp b/src/parse/ParsingTreeNode.cpp new file mode 100644 index 00000000..23bbf803 --- /dev/null +++ b/src/parse/ParsingTreeNode.cpp @@ -0,0 +1,27 @@ +#include "cru/parse/ParsingTreeNode.hpp" + +namespace cru::parse { +ParsingTreeNode::ParsingTreeNode(Symbol* symbol, Production* production) + : symbol_(symbol), production_(production) {} + +ParsingTreeNode::~ParsingTreeNode() { + for (auto child : children_) { + delete child; + } +} + +Grammar* ParsingTreeNode::GetGrammar() const { return symbol_->GetGrammar(); } + +void ParsingTreeNode::AddChild(ParsingTreeNode* child) { + children_.push_back(child); +} + +void ParsingTreeNode::AddChild(ParsingTreeNode* child, Index index) { + children_.insert(children_.begin() + index, child); +} + +void ParsingTreeNode::RemoveChild(Index index) { + delete children_[index]; + children_.erase(children_.begin() + index); +} +} // namespace cru::parse -- cgit v1.2.3