diff options
author | Roland Reichwein <mail@reichwein.it> | 2020-02-15 15:06:25 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2020-02-15 15:06:25 +0100 |
commit | ed724a70c92560f13213d745409f45d8c60cf5e0 (patch) | |
tree | 05d52432cdee4d0de83029078748a41e0efa8691 | |
parent | 991b493afc385de84e916e7e23e9313825d6e6d9 (diff) |
Debug code
-rw-r--r-- | grammer.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/grammer.cpp b/grammer.cpp index 2fc136c..bbaaa79 100644 --- a/grammer.cpp +++ b/grammer.cpp @@ -95,12 +95,16 @@ void Compiler::DumpTree() index_t token_id {TokenIdFromChildId(current_index)}; std::cout << "Token(" << token_id << "): " << tokens[token_id].type << "(" << tokens[token_id].value << ")"; } else { - std::cout << "Node(" << current_index << "): " << nodes[current_index].type; + auto& node {nodes[current_index]}; + std::cout << "Node(" << current_index << "): " << node.type << "/" << node.variant; - auto child_ids{nodes[current_index].child_ids}; + auto child_ids{node.child_ids}; for (int i = 0; i < child_ids.size(); i++) { todo.insert(todo.begin() + i, std::pair<int32_t, size_t>{child_ids[i], indent + 1}); } + if (node.alternatives.size()) { + std::cout << ", " << node.alternatives.size() << " alternatives available"; + } } std::cout << std::endl; @@ -397,6 +401,9 @@ index_t Compiler::AddNode(const std::string& child_type, index_t parent_index) nodes.emplace_back(TreeNode{parent_index, index, child_type, variant, alternatives, std::vector<int32_t>{}}); //root stays, tokens_used stays + std::cout << "AddNode(): " << index << std::endl; + DumpTree(); + return index; } @@ -408,6 +415,9 @@ void Compiler::AddPath(const std::vector<std::string>& path, index_t current_ind nodes.back().child_ids.emplace_back(ChildIdFromTokenId(tokens_used)); tokens_used++; + + std::cout << "AddPath(): token " << tokens.back().type << std::endl; + DumpTree(); } bool Compiler::FillTree() @@ -423,6 +433,8 @@ bool Compiler::FillTree() if (next_child == tokens[tokens_used].type) { // add token directly node.child_ids.push_back(ChildIdFromTokenId(tokens_used)); tokens_used++; + std::cout << "tokens_used++: " << tokens_used << std::endl; + DumpTree(); } else { // add inner nodes auto list = GetPath(next_child, tokens[tokens_used].type); if (list.size() > 0) { |