From bd44adf2b180fcc1198d612a8ae0d2a28468088d Mon Sep 17 00:00:00 2001 From: bd-912 Date: Thu, 25 Apr 2024 00:35:18 -0600 Subject: Basic support for 'extended' classes in SymbolTable --- st/SymbolTable.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'st/SymbolTable.java') diff --git a/st/SymbolTable.java b/st/SymbolTable.java index e6c4738..dcc1f5b 100644 --- a/st/SymbolTable.java +++ b/st/SymbolTable.java @@ -50,8 +50,18 @@ public class SymbolTable { cls.getName(), ext.getName())); cls.setExtend(ext); - // for (TypeInstance : ext.attrs) //FIXME add the extended classes' stuff - // cls.add + for (TypeInstance t : ext.getLocals()) { + MinimalLogger.info(String.format("Added %s (%s) as a local var of %s (%s)", + t.getName(), t.getType(), + cls.getName(), cls.getType())); + cls.addLocal(t); + } + for (MethodInstance m : ext.getMethods()) { + MinimalLogger.info(String.format("Added %s (%s) as a method of %s (%s)", + m.getName(), m.getType(), + cls.getName(), cls.getType())); + cls.addMethod(m); + } } public void addLocal(TokenKey lvar) { @@ -60,12 +70,10 @@ public class SymbolTable { if (this.active.get(TypeEnum.method) != null) { // we are in a method MethodInstance par1 = (MethodInstance) this.active.get(TypeEnum.method); par1.addLocal(var); - var.setScope(par1); par = par1; } else { ClassInstance par1 = (ClassInstance) this.active.get(TypeEnum.classname); par1.addLocal(var); - var.setScope(par1); par = par1; } MinimalLogger.info(String.format("Added %s (%s) as a local var of %s (%s)", @@ -77,7 +85,6 @@ public class SymbolTable { ClassInstance cls = (ClassInstance) this.active.get(TypeEnum.classname); MethodInstance lmtd = this.getMethod(mtd); - lmtd.setScope(cls); cls.addMethod(lmtd); MinimalLogger.info(String.format("Added %s as a method of %s", @@ -88,7 +95,6 @@ public class SymbolTable { MethodInstance mtd = (MethodInstance) this.active.get(TypeEnum.method); TypeInstance para = this.getType(arg); - para.setScope(mtd); mtd.addArgument(para); // also adds to local vars MinimalLogger.info(String.format("Added %s as a parameter of %s", -- cgit v1.2.3