#pragma once #include #include #include class Wassembler { private: Execute::VirtualMachine vm; bool printSubstitutions; bool printTokens; bool printTranslatedBytes; bool LoadTextFile( std::string const & filePath, std::vector & lines) const; bool Preprocess(std::vector & lines) const; bool Tokenize( std::vector const & lines, std::vector & tokens) const; bool CompileToBytes( std::vector const & tokens, std::vector const & lines, std::vector & bytes) const; void ExecuteCode(std::vector const & bytes); bool CompileFile( std::string const & filePath, std::vector & bytes) const; public: void SetMemorySize(unsigned const size); void EnableSubstitutionsLogging(); void EnableTokensLogging(); void EnableByteTranslationLogging(); bool CompileAndRun(std::string const & filePath); bool CompileToFile( std::string const & inputFilePath, std::string const & outputFilePath); Wassembler() = default; };