#pragma once #include "AST.hpp" #include "RegularCompiler.hpp" namespace tp { template class Parser { typedef TransitionMatrix RegularTable; typedef DFA RegularGraph; typedef RegularCompiler RegularCompiler; typedef NFA RegularNonDetGraph; public: Parser() = default; public: void compileTables(const ContextFreeGrammar& cfGrammar, const RegularGrammar& reGrammar) { // Compile Regular Grammar { RegularNonDetGraph nfa; RegularCompiler compiler; compiler.compile(nfa, reGrammar); RegularGraph dfa(nfa); mRegularTable.construct(dfa); } } void parse(const tAlphabetType* sentence, ualni sentenceLength, AST& out) {} public: // save load compiled tables RegularTable mRegularTable; }; }