package st; import java.util.*; public class SymbolTable { private HashMap symt; public SymbolTable() { this.symt = new HashMap<>(); } public String toString() { StringBuilder mapAsString = new StringBuilder("{"); for (String key : this.symt.keySet()) { mapAsString.append(key + ":" + this.symt.get(key) + ", "); } mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append("}"); return mapAsString.toString(); } public void addMethod() { this. } public void put(String id, AbstractInstance symbol) { this.symt.put(id, symbol); } public TypeInstance getType(String index) { AbstractInstance symbol; return ((symbol = this.symt.get(index)) != null && symbol.getType() != TypeEnum.classname && symbol.getType() != TypeEnum.method) ? (TypeInstance) symbol : null; } public MethodInstance getMethod(String index) { AbstractInstance symbol; return ((symbol = this.symt.get(index)) != null && symbol.getType() == TypeEnum.method) ? (MethodInstance) symbol : null; } public ClassInstance getClass(String index) { AbstractInstance symbol; return ((symbol = this.symt.get(index)) != null && symbol.getType() == TypeEnum.classname) ? (ClassInstance) symbol : null; } }