#pragma once #ifndef SYMBOL_TABLE_HPP #define SYMBOL_TABLE_HPP #include class symbol_table { private: std::unordered_map symbols = { {"R0", 0}, {"R1", 1}, {"R2", 2}, {"R3", 3}, {"R4", 4}, {"R5", 5}, {"R6", 6}, {"R7", 7}, {"R8", 8}, {"R9", 9}, {"R10", 10}, {"R11", 11}, {"R12", 12}, {"R13", 13}, {"R14", 14}, {"R15", 15}, {"SP", 0}, {"LCL", 1}, {"ARG", 2}, {"THIS", 3}, {"THAT", 4}, {"SCREEN", 16384}, {"KBD", 24576}, }; int next = 15; public: symbol_table() {} int available(); void add_entry(std::string symbol, int address); bool contains(std::string symbol); int get_address(std::string symbol); }; #endif