diff options
| author | bd-912 <bdunahu@colostate.edu> | 2024-04-16 13:55:21 -0600 | 
|---|---|---|
| committer | bd-912 <bdunahu@colostate.edu> | 2024-04-16 13:55:21 -0600 | 
| commit | 2288a8cd8e63b928d2e382f936e4463b2e3803d1 (patch) | |
| tree | 37cb2796e773a89200e1a9700511e98f1af98738 | |
| parent | 3415badef847db518daa9b46c6274ac3fb89f56d (diff) | |
Properly use Assignment Statement, rather than putting in Allocation
| -rw-r--r-- | boil/library/BoilSimp.java | 32 | ||||
| -rw-r--r-- | boil/tests/ex33.java | 2 | ||||
| -rw-r--r-- | st/AbstractInstance.java | 2 | 
3 files changed, 24 insertions, 12 deletions
diff --git a/boil/library/BoilSimp.java b/boil/library/BoilSimp.java index fd5b389..081b205 100644 --- a/boil/library/BoilSimp.java +++ b/boil/library/BoilSimp.java @@ -207,9 +207,10 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> {      public String visit(VarDeclaration n, SymbolTable symt) {          String mod = ""; -        n.f0.accept(this, symt); +        String cls = n.f0.accept(this, symt);          String id = n.f1.accept(this, symt);          TypeInstance t = symt.getType(id); +          this.vapor += String.format("  %s = HeapAllocZ(%d)\n",                                      this.tf.alias(t),                                      t.getSize()); @@ -403,12 +404,23 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> {              attr_index += cls.getMethods().size() * 4;          n.f1.accept(this, symt); -        n.f2.accept(this, symt); +        String expr = n.f2.accept(this, symt);          n.f3.accept(this, symt); +        this.vapor += String.format("  [%s+%d] = %s\n", +                                    this.tf.retrieveRecentList(1), +                                    attr_index, +                                    expr); +          return mod;      } +    //     if (t == null ) { // anonymous? +    //     t = new TypeInstance("tp1", TypeEnum.classname); // FIXME maybe this is wrong for arrays? +    //     t.addClassInstance(symt.getClass(cls)); +    // } + +      /**       * f0 -> Identifier()       * f1 -> "[" @@ -638,9 +650,9 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> {          TypeInstance cur = symt.getType(id); -        System.out.println("id: " + id); -        System.out.println("id2: " + id2); -        System.out.println("cur: " + symt.getType(id)); +        // System.out.println("id: " + id); +        // System.out.println("id2: " + id2); +        // System.out.println("cur: " + symt.getType(id));          int mtdIndex = cur.getClassInstance()              .getMethods().indexOf(symt.getMethod(id2)) * 4; @@ -794,15 +806,13 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> {          String mod = "";          n.f0.accept(this, symt);          String cls = n.f1.accept(this, symt); -        vapor += String.format("  [%s+%d] = :functable_%s\n", -                               this.tf.retrieveRecentList(1), -                               0, -                               cls); +        mod += String.format(":functable_%s", +                             cls); -        System.out.println(vapor); +        // System.out.println(vapor);          n.f2.accept(this, symt);          n.f3.accept(this, symt); -        return cls; +        return mod;      }      /** diff --git a/boil/tests/ex33.java b/boil/tests/ex33.java index d0eb045..d7f23ed 100644 --- a/boil/tests/ex33.java +++ b/boil/tests/ex33.java @@ -10,8 +10,10 @@ class ex33 {  class A {      int o ; +    int q ;      public int foo(int a, int b) { +        o = 3 ;          return 22 ;      } diff --git a/st/AbstractInstance.java b/st/AbstractInstance.java index 7214e6a..ddf7156 100644 --- a/st/AbstractInstance.java +++ b/st/AbstractInstance.java @@ -42,7 +42,7 @@ public abstract class AbstractInstance {          }      } -    protected void addClassInstance(ClassInstance cls) { +    public void addClassInstance(ClassInstance cls) {          this.cls = cls;      }  | 
