summaryrefslogtreecommitdiff
path: root/src/core/parser/stack/TokenStack.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-03-31 23:49:44 +0200
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2016-04-25 22:19:28 +0200
commit5aed7c46cff192311a208dc5e9cf7f81a40771a8 (patch)
tree4752441e30fb216bdb6dc43da008c6b0d828ad05 /src/core/parser/stack/TokenStack.cpp
parente35445b4e8fecde55b93a4b92037aa0adf70d6d1 (diff)
Implement TokenStack::lookup method used to lookup the SyntaxDescriptors associated with a certain token.
Diffstat (limited to 'src/core/parser/stack/TokenStack.cpp')
-rw-r--r--src/core/parser/stack/TokenStack.cpp18
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