diff --git a/src/de/dhbwstuttgart/myexception/NotImplementedException.java b/src/de/dhbwstuttgart/myexception/NotImplementedException.java new file mode 100644 index 000000000..bbaf52c6e --- /dev/null +++ b/src/de/dhbwstuttgart/myexception/NotImplementedException.java @@ -0,0 +1,10 @@ +package de.dhbwstuttgart.myexception; + +public class NotImplementedException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + +} diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java b/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java index af54441db..60b2657b5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java @@ -10,6 +10,7 @@ import org.apache.commons.bcel6.generic.ClassGen; import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -213,11 +214,15 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { ret.add(this.expr2); return ret; } + + private InstructionList genUnboxByteCode(ClassGen _cg, Type t){ + return null; + } @Override - public InstructionList genByteCode(ClassGen _cg, TypeAssumptions ass) { + public InstructionList genByteCode(ClassGenerator _cg) { InstructionList linkeSeite = this.expr1.genByteCode(_cg); InstructionList rechteSeite = this.expr2.genByteCode(_cg); if(this.getReturnType().getName().equals(new JavaClassName("String"))){ @@ -227,9 +232,5 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { return null; } - private InstructionList genUnboxByteCode(ClassGen _cg, Type t){ - return null; - } - } // ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java index 806bd1ac3..88dcc2042 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/BoolLiteral.java @@ -5,10 +5,12 @@ package de.dhbwstuttgart.syntaxtree.statement; import java.util.Hashtable; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionConstants; import org.apache.commons.bcel6.generic.InstructionFactory; import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -128,17 +130,16 @@ public class BoolLiteral extends Literal } @Override - public InstructionList genByteCode(ClassGen cg) { - InstructionFactory _factory = new InstructionFactory(cg, cg.getConstantPool()); + public InstructionList genByteCode(ClassGenerator _cg) { + InstructionFactory _factory = new InstructionFactory(_cg, _cg.getConstantPool()); InstructionList il = new InstructionList(); if (Bool == true){ - il.append(_factory.ICONST_1); + il.append(InstructionConstants.ICONST_1); }else { - il.append(_factory.ICONST_0); + il.append(InstructionConstants.ICONST_0); } - return il; } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java index 13d9c7147..e711d8763 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java @@ -6,11 +6,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCExcept; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; @@ -119,12 +122,10 @@ public class CastExpr extends UnaryExpr return ret; } - - @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/CharLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/CharLiteral.java index c4c87e8e6..ead6230b5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/CharLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/CharLiteral.java @@ -10,6 +10,7 @@ import org.apache.commons.bcel6.generic.InstructionFactory; import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -118,12 +119,14 @@ public class CharLiteral extends Literal public char get_Char() // ino.end // ino.method.get_Int.25463.body - { + { return Char; - } + } + + @Override - public InstructionList genByteCode(ClassGen cg) { - InstructionFactory _factory = new InstructionFactory(cg, cg.getConstantPool()); + public InstructionList genByteCode(ClassGenerator _cg) { + InstructionFactory _factory = new InstructionFactory(_cg, _cg.getConstantPool()); InstructionList il = new InstructionList(); il.append(new BIPUSH((byte) get_Char())); return il; diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/DoubleLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/DoubleLiteral.java index 1ac8ee43c..705f43055 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/DoubleLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/DoubleLiteral.java @@ -13,6 +13,7 @@ import org.apache.commons.bcel6.generic.LDC; import org.apache.commons.bcel6.generic.LDC2_W; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -142,17 +143,16 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { il.append(new BIPUSH(new Double(get_Double()).byteValue())); return il; }*/ - + @Override - public InstructionList genByteCode(ClassGen cg) { - ConstantPoolGen cp = cg.getConstantPool(); + public InstructionList genByteCode(ClassGenerator _cg) { + ConstantPoolGen cp = _cg.getConstantPool(); //InstructionFactory _factory = new InstructionFactory(cg, cp); InstructionList il = new InstructionList(); cp.addDouble(get_Double()); il.append(new LDC2_W(cp.getSize()-1)); return il; - } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java index 4eb7c37d6..f1a96b3ea 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java @@ -5,8 +5,10 @@ package de.dhbwstuttgart.syntaxtree.statement; import java.util.Hashtable; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -86,11 +88,10 @@ public class EmptyStmt extends Statement return new Menge(); } - @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/FloatLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/FloatLiteral.java index be8d12a88..55c26b410 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/FloatLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/FloatLiteral.java @@ -11,6 +11,7 @@ import org.apache.commons.bcel6.generic.LDC; import org.apache.commons.bcel6.generic.LDC2_W; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -132,14 +133,13 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public InstructionList genByteCode(ClassGen cg) { - ConstantPoolGen cp = cg.getConstantPool(); + public InstructionList genByteCode(ClassGenerator _cg) { + ConstantPoolGen cp = _cg.getConstantPool(); InstructionList il = new InstructionList(); cp.addFloat(get_Float()); il.append(new LDC(cp.getSize()-1)); return il; - } } // ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java index 72da14d6f..6f5ab5214 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java @@ -5,8 +5,10 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -118,8 +120,8 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } \ No newline at end of file diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java index b897ce029..a8eac1234 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java @@ -6,10 +6,26 @@ import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; +import org.apache.commons.bcel6.Constants; +import org.apache.commons.bcel6.generic.ALOAD; +import org.apache.commons.bcel6.generic.ASTORE; +import org.apache.commons.bcel6.generic.BranchInstruction; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.GOTO; +import org.apache.commons.bcel6.generic.GotoInstruction; +import org.apache.commons.bcel6.generic.IFEQ; +import org.apache.commons.bcel6.generic.IFNONNULL; +import org.apache.commons.bcel6.generic.IfInstruction; +import org.apache.commons.bcel6.generic.Instruction; +import org.apache.commons.bcel6.generic.InstructionFactory; +import org.apache.commons.bcel6.generic.InstructionHandle; +import org.apache.commons.bcel6.generic.InstructionList; +import org.apache.commons.bcel6.generic.NOP; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; +import de.dhbwstuttgart.logger.Section; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; import de.dhbwstuttgart.myexception.SCExcept; @@ -161,12 +177,27 @@ public class IfStmt extends Statement return ret; } - - @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub + public InstructionList genByteCode(ClassGenerator _cg) { + InstructionFactory _factory = new InstructionFactory(_cg, _cg.getConstantPool()); + InstructionList il = new InstructionList(); + IfInstruction ifInstruction = new IFEQ(null); + + il.append(expr.genByteCode(_cg)); + il.append(ifInstruction); + il.append(then_block.genByteCode(_cg)); + + if(else_block != null && !(else_block instanceof EmptyStmt)){ + GotoInstruction gotoInstruction = new GOTO(null); + il.append(gotoInstruction); + ifInstruction.setTarget(il.append(else_block.genByteCode(_cg))); + gotoInstruction.setTarget(il.append(new NOP())); + }else{ + ifInstruction.setTarget(il.append(new NOP())); + } + + return il; } } // ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java b/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java index c2e09b721..368db4317 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java @@ -7,11 +7,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.misc.UsedId; @@ -217,9 +220,9 @@ public class InstVar extends Expr } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } // ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java b/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java index c541a2ef9..b3939f4c8 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java @@ -6,11 +6,14 @@ import java.util.Enumeration; import java.util.Hashtable; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; @@ -116,9 +119,9 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LongLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/LongLiteral.java index 8aac0961d..2d3c79109 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LongLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LongLiteral.java @@ -10,6 +10,7 @@ import org.apache.commons.bcel6.generic.InstructionList; import org.apache.commons.bcel6.generic.LDC2_W; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -128,15 +129,14 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public InstructionList genByteCode(ClassGen cg) { - ConstantPoolGen cp = cg.getConstantPool(); + public InstructionList genByteCode(ClassGenerator _cg) { + ConstantPoolGen cp = _cg.getConstantPool(); //InstructionFactory _factory = new InstructionFactory(cg, cp); InstructionList il = new InstructionList(); cp.addLong(get_Long()); il.append(new LDC2_W(cp.getSize()-1)); return il; - } } // ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/NegativeExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/NegativeExpr.java index 2f19b9756..b4f592a14 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/NegativeExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/NegativeExpr.java @@ -6,11 +6,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCExcept; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; @@ -109,9 +112,9 @@ public class NegativeExpr extends UnaryExpr } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/NewArray.java b/src/de/dhbwstuttgart/syntaxtree/statement/NewArray.java index 630ca25f8..c99cfe6c4 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/NewArray.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/NewArray.java @@ -9,6 +9,7 @@ import org.apache.commons.bcel6.generic.InstructionFactory; import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -146,12 +147,11 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public InstructionList genByteCode(ClassGen cg) { - - InstructionFactory _factory = new InstructionFactory(cg, cg.getConstantPool()); + public InstructionList genByteCode(ClassGenerator _cg) { + InstructionFactory _factory = new InstructionFactory(_cg, _cg.getConstantPool()); InstructionList il = new InstructionList(); - il.append(expr.elementAt(0).genByteCode(cg)); + il.append(expr.elementAt(0).genByteCode(_cg)); il.append(_factory.createNewArray( org.apache.commons.bcel6.generic.Type.getType(getTypeName()), (short)1)); diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java b/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java index 22fdf2096..cc6d68b3e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java @@ -7,11 +7,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCExcept; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; @@ -204,9 +207,9 @@ public class NewClass extends Expr } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/NotExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/NotExpr.java index ca22f922a..8b3563c6a 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/NotExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/NotExpr.java @@ -6,11 +6,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; @@ -133,9 +136,9 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PositivExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PositivExpr.java index 0ff9198f2..2aa6ef6ae 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PositivExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PositivExpr.java @@ -5,11 +5,14 @@ package de.dhbwstuttgart.syntaxtree.statement; import java.util.Hashtable; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; @@ -117,9 +120,9 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java index c5fb39d87..1b3272568 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.java @@ -6,11 +6,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCExcept; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; @@ -90,9 +93,9 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java index e82263198..2eab1c72f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java @@ -12,6 +12,7 @@ import org.apache.commons.bcel6.generic.InstructionFactory; import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -100,9 +101,10 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } public static int counterPostInc = 0; + @Override - public InstructionList genByteCode(ClassGen cg) { - InstructionFactory _factory = new InstructionFactory(cg, cg.getConstantPool()); + public InstructionList genByteCode(ClassGenerator _cg) { + InstructionFactory _factory = new InstructionFactory(_cg, _cg.getConstantPool()); InstructionList il = new InstructionList(); counterPostInc++; il.append(new IINC(counterPostInc,1)); diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PreDecExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PreDecExpr.java index 54d7abc96..00afda787 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PreDecExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PreDecExpr.java @@ -6,11 +6,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCExcept; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; @@ -87,10 +90,11 @@ public class PreDecExpr extends UnaryExpr ret.add(this.expr); return ret; } + @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PreIncExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PreIncExpr.java index 49824e5a1..4005523ed 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PreIncExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PreIncExpr.java @@ -6,11 +6,14 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; +import de.dhbwstuttgart.myexception.NotImplementedException; import de.dhbwstuttgart.myexception.SCExcept; import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; @@ -91,9 +94,9 @@ public JavaCodeResult printJavaCode(ResultSet resultSet) { } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java index 29496d9dd..771ea7ad5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java @@ -7,8 +7,10 @@ import java.util.Hashtable; import java.util.Iterator; import org.apache.commons.bcel6.generic.ClassGen; +import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; @@ -135,9 +137,9 @@ public class WhileStmt extends Statement } @Override - public void genByteCode(ClassGen _cg) { - // TODO Auto-generated method stub - + public InstructionList genByteCode(ClassGenerator _cg) { + // TODO Bytecode + throw new NotImplementedException(); } } // ino.end diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java index fc5c73389..33f153e0d 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/FreshWildcardType.java @@ -1,7 +1,7 @@ package de.dhbwstuttgart.syntaxtree.type; import de.dhbwstuttgart.typeinference.Menge; - +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.parser.JavaClassName; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.typeinference.JavaCodeResult; @@ -170,4 +170,10 @@ public class FreshWildcardType extends Type { public JavaCodeResult printJavaCode(ResultSet resultSet) { throw new NotImplementedException(); } + + @Override + public org.apache.commons.bcel6.generic.Type getBytecodeType(ClassGenerator cg) { + // TODO: Bytecode + return null; + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java b/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java index f97dc6ddb..9a4af3d1b 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/GenericTypeVar.java @@ -17,6 +17,7 @@ import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; import de.dhbwstuttgart.typeinference.exceptions.DebugException; import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint; +import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.parser.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.GTVDeclarationContext; @@ -229,6 +230,12 @@ public class GenericTypeVar extends ObjectType public GTVDeclarationContext getDeclarationContext() { return this.getGTVDeclarationContext(); } + + @Override + public org.apache.commons.bcel6.generic.Type getBytecodeType(ClassGenerator cg) { + // TODO Bytecode + return null; + } } diff --git a/test/bytecode/ForTest.jav b/test/bytecode/ForTest.jav new file mode 100644 index 000000000..7343a1b89 --- /dev/null +++ b/test/bytecode/ForTest.jav @@ -0,0 +1,7 @@ +class IfElse{ + method(){ + while(true){ + + } + } +} \ No newline at end of file diff --git a/test/bytecode/ForTest.java b/test/bytecode/ForTest.java new file mode 100644 index 000000000..fea1e7c5a --- /dev/null +++ b/test/bytecode/ForTest.java @@ -0,0 +1,14 @@ +package bytecode; + +import org.junit.Test; + +public class ForTest { + public final static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + public final static String testFile = "ForTest.jav"; + public final static String outputFile = "ForTest.class"; + + @Test + public void test() { + SingleClassTester.compileToBytecode(rootDirectory+testFile, rootDirectory+outputFile); + } +} diff --git a/test/bytecode/IfElseIfStatement.jav b/test/bytecode/IfElseIfStatement.jav new file mode 100644 index 000000000..50ad49af6 --- /dev/null +++ b/test/bytecode/IfElseIfStatement.jav @@ -0,0 +1,9 @@ +class IfElseStatement{ + method(flag){ + if(flag){ + + }else if(flag){ + + } + } +} \ No newline at end of file diff --git a/test/bytecode/IfElseIfStatementTest.java b/test/bytecode/IfElseIfStatementTest.java new file mode 100644 index 000000000..0566b98f7 --- /dev/null +++ b/test/bytecode/IfElseIfStatementTest.java @@ -0,0 +1,14 @@ +package bytecode; + +import org.junit.Test; + +public class IfElseIfStatementTest { + public final static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + public final static String testFile = "IfElseIfStatement.jav"; + public final static String outputFile = "IfElseIfStatement.class"; + + @Test + public void test() { + SingleClassTester.compileToBytecode(rootDirectory+testFile, rootDirectory+outputFile); + } +} diff --git a/test/bytecode/IfElseStatement.jav b/test/bytecode/IfElseStatement.jav new file mode 100644 index 000000000..82c9d5a85 --- /dev/null +++ b/test/bytecode/IfElseStatement.jav @@ -0,0 +1,9 @@ +class IfElseStatement{ + method(flag){ + if(flag){ + + }else{ + + } + } +} \ No newline at end of file diff --git a/test/bytecode/IfElseStatementTest.java b/test/bytecode/IfElseStatementTest.java new file mode 100644 index 000000000..4f8750a0a --- /dev/null +++ b/test/bytecode/IfElseStatementTest.java @@ -0,0 +1,14 @@ +package bytecode; + +import org.junit.Test; + +public class IfElseStatementTest { + public final static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + public final static String testFile = "IfElseStatement.jav"; + public final static String outputFile = "IfElseStatement.class"; + + @Test + public void test() { + SingleClassTester.compileToBytecode(rootDirectory+testFile, rootDirectory+outputFile); + } +} diff --git a/test/bytecode/IfStatement.jav b/test/bytecode/IfStatement.jav new file mode 100644 index 000000000..476c9bc0c --- /dev/null +++ b/test/bytecode/IfStatement.jav @@ -0,0 +1,7 @@ +class IfStatement{ + method(flag){ + if(flag){ + + } + } +} \ No newline at end of file diff --git a/test/bytecode/IfStatementTest.java b/test/bytecode/IfStatementTest.java new file mode 100644 index 000000000..e38d5a1dc --- /dev/null +++ b/test/bytecode/IfStatementTest.java @@ -0,0 +1,14 @@ +package bytecode; + +import org.junit.Test; + +public class IfStatementTest { + public final static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + public final static String testFile = "IfStatement.jav"; + public final static String outputFile = "IfStatement.class"; + + @Test + public void test() { + SingleClassTester.compileToBytecode(rootDirectory+testFile, rootDirectory+outputFile); + } +} diff --git a/test/bytecode/PostDecrement.jav b/test/bytecode/PostDecrement.jav new file mode 100644 index 000000000..7622014f5 --- /dev/null +++ b/test/bytecode/PostDecrement.jav @@ -0,0 +1,6 @@ +class PostIncrement{ + +void method() {a; a = 20; a--;} + + +} \ No newline at end of file diff --git a/test/bytecode/PostDecrement.java b/test/bytecode/PostDecrement.java new file mode 100644 index 000000000..075cf135e --- /dev/null +++ b/test/bytecode/PostDecrement.java @@ -0,0 +1,34 @@ +package bytecode; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.IOException; + +import junit.framework.TestCase; + +import org.junit.Test; + +import plugindevelopment.TypeInsertTester; +import de.dhbwstuttgart.core.MyCompiler; +import de.dhbwstuttgart.core.MyCompilerAPI; +import de.dhbwstuttgart.logger.LoggerConfiguration; +import de.dhbwstuttgart.logger.Section; +import de.dhbwstuttgart.parser.JavaParser.yyException; +import de.dhbwstuttgart.typeinference.ByteCodeResult; +import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; +import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; + +public class PostDecrement { + + public final static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + public final static String testFile = "PostDecrement.jav"; + public final static String outputFile = "PostDecrement.class"; + + @Test + public void test() { + SingleClassTester.compileToBytecode(rootDirectory+testFile, rootDirectory+outputFile); + } + +} diff --git a/test/bytecode/WhileTest.jav b/test/bytecode/WhileTest.jav new file mode 100644 index 000000000..7343a1b89 --- /dev/null +++ b/test/bytecode/WhileTest.jav @@ -0,0 +1,7 @@ +class IfElse{ + method(){ + while(true){ + + } + } +} \ No newline at end of file diff --git a/test/bytecode/WhileTest.java b/test/bytecode/WhileTest.java new file mode 100644 index 000000000..cd7e4f8f9 --- /dev/null +++ b/test/bytecode/WhileTest.java @@ -0,0 +1,14 @@ +package bytecode; + +import org.junit.Test; + +public class WhileTest { + public final static String rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + public final static String testFile = "WhileTest.jav"; + public final static String outputFile = "WhileTest.class"; + + @Test + public void test() { + SingleClassTester.compileToBytecode(rootDirectory+testFile, rootDirectory+outputFile); + } +}