#include #include namespace Interpret { int & Value::GetValue(Execute::Registers & registers) { if (type == ValueType::ImmediateInteger) { return integer; } return registers.registers[registerIndex]; } void Value::CreateFromToken(Token::Token const & token) { if (token.type == Token::TokenType::ImmediateInteger) { type = ValueType::ImmediateInteger; integer = std::get(token.data); } else if (token.type == Token::TokenType::Register) { type = ValueType::Register; registerIndex = static_cast(std::get(token.data)); } else { throw Internal::BadTokenForValue(token); } } }