#ifndef COMPILER_PREPARED_GRAMMAR_H_ #define COMPILER_PREPARED_GRAMMAR_H_ #include #include #include #include "tree_sitter/compiler.h" #include "compiler/rules/symbol.h" namespace tree_sitter { class PreparedGrammar { public: PreparedGrammar(); PreparedGrammar( const std::vector> &rules, const std::vector> &aux_rules); const std::vector> rules; const std::vector> aux_rules; const std::string & rule_name(const rules::Symbol &symbol) const; const rules::rule_ptr & rule(const rules::Symbol &symbol) const; }; class SyntaxGrammar : public PreparedGrammar { public: SyntaxGrammar(); SyntaxGrammar( const std::vector> &rules, const std::vector> &aux_rules, const std::vector &ubiquitous_tokens); std::vector ubiquitous_tokens; }; class LexicalGrammar : public PreparedGrammar { public: LexicalGrammar(); LexicalGrammar( const std::vector> &rules, const std::vector> &aux_rules, const std::vector &separators); std::vector separators; }; } #endif // COMPILER_PREPARED_GRAMMAR_H_