////////////////////////////////// // MT2Q3.cpp - ScopeStack #include #include #include #include class ScopeStack { public: enum ScopeType { namespace_key, class_key, function, control, anonymous }; typedef std::pair scope; void push(const scope& s); scope pop(); size_t size(); scope top(); std::string toString(ScopeType s); private: std::stack _sstack; }; void ScopeStack::push(const scope& s) { _sstack.push(s); } ScopeStack::scope ScopeStack::pop() { scope temp = _sstack.top(); _sstack.pop(); return temp; } ScopeStack::scope ScopeStack::top() { return _sstack.top(); } size_t ScopeStack::size() { return _sstack.size(); } std::string ScopeStack::toString(ScopeType t) { switch(t) { case namespace_key : return "namespace"; case function : return "function"; case control : return "control"; case anonymous : return "anonymous"; } return "unknown"; } // void main() { ScopeStack sstack; sstack.push(ScopeStack::scope(ScopeStack::namespace_key, "CSE687")); sstack.push(ScopeStack::scope(ScopeStack::function, "main")); size_t numScopes = sstack.size(); for(size_t i=0; i