diff options
author | crupest <crupest@outlook.com> | 2021-12-21 15:13:55 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-12-21 15:13:55 +0800 |
commit | 061f9ad04131febcc66975fd3d95b332789da52f (patch) | |
tree | ecd33d0eefdd4fc124f081512906adb9c235dd50 /src/parse/ParsingTreeNode.cpp | |
parent | 360a3bdbc9cf7084d9f1f1af09ea99831edffd34 (diff) | |
download | cru-061f9ad04131febcc66975fd3d95b332789da52f.tar.gz cru-061f9ad04131febcc66975fd3d95b332789da52f.tar.bz2 cru-061f9ad04131febcc66975fd3d95b332789da52f.zip |
...
Diffstat (limited to 'src/parse/ParsingTreeNode.cpp')
-rw-r--r-- | src/parse/ParsingTreeNode.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
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 |