#pragma once #include #include class Scope { public: explicit Scope(std::string name, int level, std::unique_ptr parent); std::string getScopeName(); int getScopeLevel(); std::unique_ptr getParentScope(); void define(Symbol symbol); std::unique_ptr lookup(std::string name); bool isDeclared(std::string name); std::unordered_map getAllSymbols(); std::string toString(); private: std::string scope_name; int scope_level std::unique_ptr parent_scope; std::unordered_map; };