package uva.qls.interpreter.typecheck.table;
import java.util.HashMap;
import java.util.Map;
import uva.qls.ast.literal.*;
public class SymbolTable {
private Map <String, SymbolTableValue> symbolMap;
public SymbolTable(){
this.symbolMap = new HashMap<String,SymbolTableValue>();
}
public Map<String, SymbolTableValue> getTable(){
return this.symbolMap;
}
public boolean keyExists(Identifier identifier) {
return this.retrieveValue(identifier) != null;
}
public boolean valueExists(Identifier identifier, SymbolTableValue value) {
return this.symbolMap.get(identifier.evaluatedValue())!=null;
}
public void putValue(Identifier identifier, SymbolTableValue value) {
this.symbolMap.put(identifier.evaluatedValue(), value);
}
public SymbolTableValue retrieveValue(Identifier identifier) {
return this.symbolMap.get(identifier.evaluatedValue());
}
@Override
public String toString() {
String s = "";
for (String key : this.symbolMap.keySet())
s += key + " " + this.symbolMap.get(key) + " ";
return s;
}
}