summaryrefslogtreecommitdiff
path: root/st/SymbolTable.java
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-06 19:02:21 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-06 19:02:21 -0600
commitb03859dce5991169b07d1d5040c8faf7ba82e5b5 (patch)
tree5a1217d441c9323976aef6e45018c9c2522930a6 /st/SymbolTable.java
parent0ae01301d572b2e69585c4d1cb753ed7fc89dfe3 (diff)
Rewrite SymbolTable again P1
Diffstat (limited to 'st/SymbolTable.java')
-rw-r--r--st/SymbolTable.java52
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;
+ }
+
+}