diff options
author | crupest <crupest@outlook.com> | 2021-12-29 21:57:33 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-12-29 21:57:33 +0800 |
commit | aa923364615b77e152d532b021fe1536fcf96a50 (patch) | |
tree | 9f4a949315d0a5e53f51caee0c937d49e764f661 /include/cru/parse/ParsingAlgorithmContext.hpp | |
parent | 63b39863b9d567068480f9c1d59177c92a8c6169 (diff) | |
download | cru-aa923364615b77e152d532b021fe1536fcf96a50.tar.gz cru-aa923364615b77e152d532b021fe1536fcf96a50.tar.bz2 cru-aa923364615b77e152d532b021fe1536fcf96a50.zip |
...
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 |