diff options
Diffstat (limited to 'src/core/parser/stack/TokenStack.cpp')
-rw-r--r-- | src/core/parser/stack/TokenStack.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/parser/stack/TokenStack.cpp b/src/core/parser/stack/TokenStack.cpp index c20c764..1c26a7c 100644 --- a/src/core/parser/stack/TokenStack.cpp +++ b/src/core/parser/stack/TokenStack.cpp @@ -30,6 +30,24 @@ void TokenStack::pushTokens(const std::vector<SyntaxDescriptor> &tokens, stack.push_back(tokens); } +TokenDescriptor TokenStack::lookup(TokenId token) const +{ + TokenDescriptor res; + if (!stack.empty()) { + for (const SyntaxDescriptor &descr : stack.back()) { + if (descr.close == token) { + res.close.emplace_back(descr); + } + if (descr.shortForm == token) { + res.shortForm.emplace_back(descr); + } + if (descr.open == token) { + res.open.emplace_back(descr); + } + } + } + return res; +} void TokenStack::popTokens() { stack.pop_back(); } TokenSet TokenStack::tokens() const |