From aa923364615b77e152d532b021fe1536fcf96a50 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 29 Dec 2021 21:57:33 +0800 Subject: ... --- include/cru/parse/ParsingAlgorithmContext.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'include/cru/parse/ParsingAlgorithmContext.hpp') diff --git a/include/cru/parse/ParsingAlgorithmContext.hpp b/include/cru/parse/ParsingAlgorithmContext.hpp index 072203ec..f67ccbbc 100644 --- a/include/cru/parse/ParsingAlgorithmContext.hpp +++ b/include/cru/parse/ParsingAlgorithmContext.hpp @@ -1,5 +1,8 @@ #pragma once +#include #include "Grammar.hpp" +#include "cru/parse/ParsingTreeNode.hpp" +#include "cru/parse/Terminal.hpp" namespace cru::parse { class ParsingAlgorithm; @@ -9,15 +12,17 @@ class ParsingAlgorithm; // contain any state machine. class ParsingAlgorithmContext { public: - ParsingAlgorithmContext(Grammar* grammar, ParsingAlgorithm* algorithm); + ParsingAlgorithmContext(Grammar* grammar, const ParsingAlgorithm* algorithm); CRU_DELETE_COPY(ParsingAlgorithmContext) CRU_DELETE_MOVE(ParsingAlgorithmContext) - ~ParsingAlgorithmContext(); + virtual ~ParsingAlgorithmContext(); + + virtual ParsingTreeNode* Parse(const std::vector& input) = 0; private: Grammar* grammar_; - ParsingAlgorithm* algorithm_; + const ParsingAlgorithm* algorithm_; }; } // namespace cru::parse -- cgit v1.2.3