#ifndef DLANG_COMPILER_HPP #define DLANG_COMPILER_HPP #include #include #include #include "types/include.hpp" #include "program.hpp" #include "parser/expressions.hpp" #include "parser/statements.hpp" class Compiler { private: std::vector _bytecode; std::vector _stringTable; std::vector _includes; Program* _program = nullptr; private: void Emit(Opcodes op); void Emit(const std::string& str); void Emit(double value); void Compile(Statement* stmt); void Compile(Expression* expr); void FinalCompile(); public: Compiler(Program* program); void Compile(); const std::vector& GetBytecode() const; void Print(); }; #endif