diff options
Diffstat (limited to 'include/cru/parse/ParsingAlgorithmContext.hpp')
-rw-r--r-- | include/cru/parse/ParsingAlgorithmContext.hpp | 11 |
1 files changed, 8 insertions, 3 deletions
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 <vector> #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<Terminal*>& input) = 0; private: Grammar* grammar_; - ParsingAlgorithm* algorithm_; + const ParsingAlgorithm* algorithm_; }; } // namespace cru::parse |