From 061f9ad04131febcc66975fd3d95b332789da52f Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 21 Dec 2021 15:13:55 +0800 Subject: ... --- src/parse/ParsingTreeNode.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/parse/ParsingTreeNode.cpp (limited to 'src/parse/ParsingTreeNode.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