summaryrefslogtreecommitdiff
path: root/st
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-09 21:51:27 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-09 21:51:27 -0600
commitc1e124b957fa840f7bd8da9ffc6871140cfabf16 (patch)
tree46140a2cad0b9ff95ed0e5728b47bb1c46d1cca5 /st
parent0de1debf8b72c460d6974de8a8ab9cbbdeecb160 (diff)
Finished Vaporize.MessageSend
Diffstat (limited to 'st')
-rw-r--r--st/SymTableTopDown.java2
-rw-r--r--st/SymbolTable.java9
-rw-r--r--st/TypeInstance.java10
3 files changed, 21 insertions, 0 deletions
diff --git a/st/SymTableTopDown.java b/st/SymTableTopDown.java
index 7258211..a4c641c 100644
--- a/st/SymTableTopDown.java
+++ b/st/SymTableTopDown.java
@@ -116,8 +116,10 @@ public class SymTableTopDown<R> extends GJDepthFirst<R,SymbolTable> {
* f2 -> ";"
*/
public R visit(VarDeclaration n, SymbolTable symt) {
+ String cls = ((Identifier) n.f0.f0.choice).f0.tokenImage;
String id = n.f1.f0.tokenImage;
symt.addLocal(id);
+ symt.addClassInstance(id, cls);
n.f0.accept(this, symt);
diff --git a/st/SymbolTable.java b/st/SymbolTable.java
index d0ea221..1c0af09 100644
--- a/st/SymbolTable.java
+++ b/st/SymbolTable.java
@@ -80,6 +80,15 @@ public class SymbolTable {
mtd.addArgument(para); // also adds to local vars
}
+ public void addClassInstance(String t, String c) {
+ TypeInstance type = this.getType(t);
+ ClassInstance cls = (c != null) ?
+ this.getClass(c) :
+ null;
+
+ type.addClassInstance(cls);
+ }
+
/**
* Methods to safely retrieve differentiable types
diff --git a/st/TypeInstance.java b/st/TypeInstance.java
index 302f9f0..596f638 100644
--- a/st/TypeInstance.java
+++ b/st/TypeInstance.java
@@ -2,10 +2,20 @@ package st;
public class TypeInstance extends AbstractInstance {
+ ClassInstance cls;
+
public TypeInstance(String name, TypeEnum type) {
super(name, type);
}
+ public void addClassInstance(ClassInstance cls) {
+ this.cls = cls;
+ }
+
+ public ClassInstance getClassInstance() {
+ return this.cls;
+ }
+
public boolean sameType(TypeInstance other) {
/**
* Given a TypeInstance object other,