#pragma once #include #include namespace Compile { class CompilationError { public: Token::Token errorToken; CompilationError(std::string const & message, Token::Token const & token); static CompilationError CreateExpectedArgumentError(Token::Token const & token); static CompilationError CreateExpectedLabelError(Token::Token const & token); static CompilationError CreateExpectedImmediateError(Token::Token const & token); static CompilationError CreateExpectedImmediateOrRegisterOrMemory(Token::Token const & token); static CompilationError CreateExpectedRegisterError(Token::Token const & token); static CompilationError CreateExpectedRegisterOrMemoryError(Token::Token const & token); static CompilationError CreateExpectedOperandError(Token::Token const & token); static CompilationError CreateTooManyArgumentsError(Token::Token const & token); static CompilationError CreateTooFewArgumentsError(Token::Token const & token); static CompilationError CreateExpectedEndOfStatementError(Token::Token const & token); static CompilationError CreateDuplicateLabelError(Token::Token const & token); static CompilationError CreateNonExistingLabelError(Token::Token const & token); }; }