diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java b/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java index ca837203..dda29d3f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java @@ -6,6 +6,7 @@ import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; +import org.apache.bcel.generic.ASTORE; import org.apache.bcel.generic.ClassGen; import org.apache.bcel.generic.ISTORE; import org.apache.bcel.generic.InstructionFactory; @@ -171,7 +172,6 @@ public class Assign extends Expr } - public static int counterAssign = 0; //Zaehlvariable für ISTORE @Override @@ -180,8 +180,16 @@ public class Assign extends Expr InstructionFactory _factory = new InstructionFactory(cg, cg.getConstantPool()); InstructionList il = expr2.genByteCode(cg);//expr2 rechte expr counterAssign++; - il.append(new ISTORE(counterAssign)); //macht ISTORE für meherere Variable nutzbar (nicht nur ISTORE_1, ISTORE_2, etc.) + //il.append(new ISTORE(counterAssign)); //macht ISTORE für meherere Variable nutzbar (nicht nur ISTORE_1, ISTORE_2, etc.) //Anpassung für Variablen außerhalb von int = ISTORE nötig? + switch(expr2.getType().toString()){//welche rückgabewerte entstehen hier??? Integer und String scheinen nicht zu stimmen + case "Integer": il.append(new ISTORE(counterAssign)); + break; + + case "String": il.append(new ASTORE(counterAssign)); + break; + } + //System.out.println(expr2.getType().toString()); return il; }