diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-04-06 19:02:21 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-04-06 19:02:21 -0600 |
commit | b03859dce5991169b07d1d5040c8faf7ba82e5b5 (patch) | |
tree | 5a1217d441c9323976aef6e45018c9c2522930a6 /st/SymbolTable.java | |
parent | 0ae01301d572b2e69585c4d1cb753ed7fc89dfe3 (diff) |
Rewrite SymbolTable again P1
Diffstat (limited to 'st/SymbolTable.java')
-rw-r--r-- | st/SymbolTable.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/st/SymbolTable.java b/st/SymbolTable.java new file mode 100644 index 0000000..0757541 --- /dev/null +++ b/st/SymbolTable.java @@ -0,0 +1,52 @@ +package st; + +import java.util.*; + +public class SymbolTable { + + private HashMap<String,AbstractInstance> 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; + } + +} |