From b03859dce5991169b07d1d5040c8faf7ba82e5b5 Mon Sep 17 00:00:00 2001 From: bd-912 Date: Sat, 6 Apr 2024 19:02:21 -0600 Subject: Rewrite SymbolTable again P1 --- st/SymbolTable.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 st/SymbolTable.java (limited to 'st/SymbolTable.java') 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 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; + } + +} -- cgit v1.2.3