/* SI 413 Fall 2011
* Implementations of SymbolTable methods
*/
#include "st.hpp"
SymbolTable ST; // The actual declaration of the global symbol table
Value SymbolTable::lookup(string name) {
if (bindings.count(name) == 0) {
cerr << "No binding for variable " << name << endl;
return Value();
}
else return bindings[name];
}
void SymbolTable::bind(string name, Value val) {
if (bindings.count(name) != 0) {
cerr << "Variable " << name << " already bound!" << endl;
return;
}
else bindings[name] = val;
}
void SymbolTable::rebind(string name, Value val) {
if (bindings.count(name) == 0) {
cerr << "Can't rebind " << name << "; not yet bound!" << endl;
return;
}
else bindings[name] = val;
}