diff options
Diffstat (limited to 'boil')
-rw-r--r-- | boil/library/BoilSimp.java | 32 | ||||
-rw-r--r-- | boil/library/TypeFactory.java | 4 | ||||
-rw-r--r-- | boil/tests/ex33.java | 11 |
3 files changed, 32 insertions, 15 deletions
diff --git a/boil/library/BoilSimp.java b/boil/library/BoilSimp.java index b8fee08..9e8d40a 100644 --- a/boil/library/BoilSimp.java +++ b/boil/library/BoilSimp.java @@ -160,7 +160,7 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> { } mod += "\n"; mod += n.f2.accept(this, symt); - mod += n.f3.accept(this, symt); + n.f3.accept(this, symt); mod += n.f4.accept(this, symt); mod += n.f5.accept(this, symt); @@ -203,8 +203,10 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> { n.f0.accept(this, symt); String id = n.f1.accept(this, symt); - mod += String.format(" %s = HeapAllocZ(32)\n", - this.tf.alias(symt.getType(id))); // FIXME add proper allocation size + TypeInstance t = symt.getType(id); + mod += String.format(" %s = HeapAllocZ(%d)\n", + this.tf.alias(t), + t.getSize()); // FIXME add proper allocation size mod += String.format(" if0 %s goto :error\n", this.tf.alias(symt.getType(id))); mod += n.f2.accept(this, symt); @@ -452,6 +454,9 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> { mod += n.f2.accept(this, symt); mod += n.f3.accept(this, symt); mod += n.f4.accept(this, symt); + + mod += String.format(" PrintIntS(%s)\n", + this.tf.retrieveRecentList(1)); return mod; } @@ -504,7 +509,7 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> { * f2 -> PrimaryExpression() */ public String visit(PlusExpression n, SymbolTable symt) { - String mod = ""; + String mod = "p"; String oper1 = n.f0.accept(this, symt); mod += n.f1.accept(this, symt); String oper2 = n.f2.accept(this, symt); @@ -617,14 +622,19 @@ public class BoilSimp extends GJDepthFirst<String,SymbolTable> { mod += n.f4.accept(this, symt); mod += n.f5.accept(this, symt); - mod += String.format(" call %s(%s", - this.tf.alias(tp2), - this.tf.alias(cur)); + String call = String.format("call %s(%s", + this.tf.alias(tp2), + this.tf.alias(cur)); + + call += String.format(" %s)", + this.tf.retrieveRecentList(symt.getMethod(id2) + .getArguments() + .size())); - mod += String.format("%s)\n", - this.tf.retrieveRecentList(symt.getMethod(id2) - .getArguments() - .size())); + TypeInstance tp3 = new TypeInstance("tp3", TypeEnum.ERROR); + mod += String.format(" %s = %s\n", + this.tf.alias(tp3), + call); return mod; } diff --git a/boil/library/TypeFactory.java b/boil/library/TypeFactory.java index c84f64e..432fc0f 100644 --- a/boil/library/TypeFactory.java +++ b/boil/library/TypeFactory.java @@ -33,7 +33,9 @@ public class TypeFactory { * list of the x most recent entries. */ String rtn = ""; - for (int i = type_num-x; i < type_num; ++i) { + rtn += String.format("t.%d", + type_num-x); + for (int i = type_num-(x+1); i < type_num; ++i) { rtn += String.format(" t.%d", i); } diff --git a/boil/tests/ex33.java b/boil/tests/ex33.java index 53e369f..3325ea8 100644 --- a/boil/tests/ex33.java +++ b/boil/tests/ex33.java @@ -1,13 +1,18 @@ -class ex31 { +class ex33 { public static void main(String[] a) { A a ; a = new A() ; - System.out.println(a.foo(12 + 13)) ; + System.out.println(a.bar(0-1, 400, 6*7)) ; + System.out.println(a.foo(0+1, 400)) ; } } class A { - public int foo(int a) { + public int foo(int a, int b) { return 22 ; } + + public int bar(int x, int y, int z) { + return 6 ; + } } |