Take a look at the std::unordered_multimap for hash tables with buckets. Remember the beginScope() and endScope() functions in the symbol table interface. Remember the global scope stack to be manipulated by beginScape() and endScope() functions.