#pragma once #include "antlr4-runtime.h" #include "HooLexer.h" #include "HooParser.h" #include "Visitor.hpp" #include "ParseErrorHandler.hpp" #include #include class Compiler { private: const std::string &_input; const std::string &_moduleName; antlr4::ANTLRInputStream *_input_stream; HooLexer *_lexer; antlr4::CommonTokenStream *_tokens; HooParser *_parser; Visitor *_visitor; public: Compiler(const std::string &input, const std::string &moduleName); ~Compiler(); public: std::any compile(); antlr4::tree::ParseTree *parse(); public: std::shared_ptr getContext() const { return _visitor->getContext(); } };