summaryrefslogtreecommitdiff
path: root/src/core/parser/stack/TokenStack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/parser/stack/TokenStack.cpp')
-rw-r--r--src/core/parser/stack/TokenStack.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/core/parser/stack/TokenStack.cpp b/src/core/parser/stack/TokenStack.cpp
index 1c26a7c..95424c7 100644
--- a/src/core/parser/stack/TokenStack.cpp
+++ b/src/core/parser/stack/TokenStack.cpp
@@ -16,18 +16,23 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "TokenStack.hpp"
+#include <cassert>
-#include <iostream>
+#include "TokenStack.hpp"
namespace ousia {
namespace parser_stack {
-void TokenStack::pushTokens(const std::vector<SyntaxDescriptor> &tokens,
- bool inherit)
+void TokenStack::pushTokens(const std::vector<SyntaxDescriptor> &tokens)
+{
+ stack.emplace_back(tokens);
+ std::sort(stack.back().begin(), stack.back().end());
+}
+
+void TokenStack::popTokens()
{
- // TODO: Implement inheritance
- stack.push_back(tokens);
+ assert(!stack.empty() && "too many calls to popTokens");
+ stack.pop_back();
}
TokenDescriptor TokenStack::lookup(TokenId token) const
@@ -48,7 +53,6 @@ TokenDescriptor TokenStack::lookup(TokenId token) const
}
return res;
}
-void TokenStack::popTokens() { stack.pop_back(); }
TokenSet TokenStack::tokens() const
{