#pragma once #include #include #include #include namespace EightBit { class Symbols { public: Symbols(std::string path = "") noexcept; const std::map& labels() const { return m_labels; } const std::map& constants() const { return m_constants; } const std::map& scopes() const { return m_scopes; } const std::map& addresses() const { return m_addresses; } private: static std::vector split(const std::string& input, const std::string& regex); void assignScopes(); void assignSymbols(); void parse(std::string path); std::map m_labels; std::map m_constants; std::map m_scopes; std::map m_addresses; struct kv_pair_t { std::map element; }; std::map> m_parsed; }; }