#ifndef jk_COMPILER_HPP #define jk_COMPILER_HPP #include "commons.hpp" #include "SymTable.hpp" #include "Logger.hpp" #include "Node.hpp" #include "Program.hpp" #include "VM.hpp" namespace jk { JK_ERROR(compile_error); class StaticFunction; class Compiler { public: explicit Compiler(Logger& logger); virtual ~Compiler(); void compile(std::shared_ptr node, std::shared_ptr program, std::shared_ptr sym); void declare_static(std::string const& name, std::shared_ptr fun); private: Logger& m_logger; std::unordered_map> m_statics; }; } #endif