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 | |
parent | 360a3bdbc9cf7084d9f1f1af09ea99831edffd34 (diff) | |
download | cru-061f9ad04131febcc66975fd3d95b332789da52f.tar.gz cru-061f9ad04131febcc66975fd3d95b332789da52f.tar.bz2 cru-061f9ad04131febcc66975fd3d95b332789da52f.zip |
...
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/parse/ParsingTreeNode.cpp | 27 |
2 files changed, 28 insertions, 0 deletions
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 |