diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/EnhancedForStatement.java b/AlgebraicDataflowArchitectureModel/src/code/ast/EnhancedForStatement.java index a447d10..77377f4 100644 --- a/AlgebraicDataflowArchitectureModel/src/code/ast/EnhancedForStatement.java +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/EnhancedForStatement.java @@ -17,6 +17,7 @@ @Override public String toString() { - return "for (" + singleVariableDeclaration + " : " + expression + ") " + body; + String typeName = singleVariableDeclaration.getType().getImplementationTypeName(); + return "for (" + typeName + " " + singleVariableDeclaration.getName() + " : " + expression + ") " + body; } } diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/ForStatement.java b/AlgebraicDataflowArchitectureModel/src/code/ast/ForStatement.java index 479d6b5..3acee16 100644 --- a/AlgebraicDataflowArchitectureModel/src/code/ast/ForStatement.java +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/ForStatement.java @@ -48,7 +48,8 @@ sb.append("for ("); for (int i = 0; i < initializers.size(); i++) { - sb.append(initializers.get(i)); + String init = initializers.get(i).toString(); + sb.append(init.endsWith(";") ? init.substring(0, init.length() - 1) : init); if (i < initializers.size() - 1) sb.append(", "); } sb.append("; "); @@ -57,13 +58,13 @@ sb.append("; "); for (int i = 0; i < updaters.size(); i++) { - sb.append(updaters.get(i)); + String update = updaters.get(i).toString(); + sb.append(update.endsWith(";") ? update.substring(0, update.length() - 1) : update); if (i < updaters.size() - 1) sb.append(", "); } sb.append(") "); if (body != null) sb.append(body); - return sb.toString(); } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/IfStatement.java b/AlgebraicDataflowArchitectureModel/src/code/ast/IfStatement.java index d688700..3ad4b77 100644 --- a/AlgebraicDataflowArchitectureModel/src/code/ast/IfStatement.java +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/IfStatement.java @@ -33,7 +33,7 @@ @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("if (").append(expression).append(") "); + sb.append("if ").append(expression); sb.append(thenStatement); if (elseStatement != null) { sb.append(" else ").append(elseStatement); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/ASTTest.java b/AlgebraicDataflowArchitectureModel/src/tests/ASTTest.java index 74be013..784fab2 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/ASTTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/ASTTest.java @@ -7,7 +7,6 @@ import models.dataConstraintModel.DataConstraintModel; import org.junit.Test; -import java.util.Arrays; import java.util.List; public class ASTTest { @@ -15,30 +14,35 @@ public void test() { JavaSpecific javaGen = new JavaSpecific(); - MethodDeclaration methodDeclaration = javaGen.newMethodDeclaration("Test", JavaSpecific.typeVoid); + MethodDeclaration methodDeclaration = javaGen.newMethodDeclaration("Test", DataConstraintModel.typeInt); Block methodBody = new Block(); VariableDeclarationStatement variableDeclarationStatement = new VariableDeclarationStatement(); - variableDeclarationStatement.setModifiers(List.of(Modifier.PRIVATE)); - variableDeclarationStatement.setFragments(List.of( - new VariableDeclaration(DataConstraintModel.typeInt, "x"), - new VariableDeclaration(DataConstraintModel.typeInt, "sum") - )); + VariableDeclaration varX = javaGen.newVariableDeclaration(DataConstraintModel.typeInt, "x"); + varX.setInitializer(new Constant("20")); + VariableDeclaration varSum = javaGen.newVariableDeclaration(DataConstraintModel.typeInt, "sum"); + varSum.setInitializer(new Constant("0")); + variableDeclarationStatement.addFragment(varX); + variableDeclarationStatement.addFragment(varSum); methodBody.addStatement(variableDeclarationStatement); ForStatement forStatement = javaGen.getForStatementForList("j", "list"); Block forBody = new Block(); forBody.addStatement(new ExpressionStatement( - new InfixExpression(new Symbol("+=", 2, Symbol.Type.INFIX), new Variable("sum"), new Variable("j")) + new InfixExpression(new Symbol("+=", 2, Symbol.Type.INFIX), + new Variable("sum"), + new Variable("j")) )); forStatement.setBody(forBody); methodBody.addStatement(forStatement); - EnhancedForStatement efStmt = javaGen.getForStatementForCollection(new VariableDeclaration(DataConstraintModel.typeString, "s"), "list"); + VariableDeclaration stringVarDec = javaGen.newVariableDeclaration(DataConstraintModel.typeString, "s"); + EnhancedForStatement enhancedForStatement = javaGen.getForStatementForCollection(stringVarDec, "list"); + Block efBody = new Block(); efBody.addStatement("System.out.println(s);"); - efStmt.setBody(efBody); - methodBody.addStatement(efStmt); + enhancedForStatement.setBody(efBody); + methodBody.addStatement(enhancedForStatement); Term moduloTerm = new Term(new Symbol("%", 2, Symbol.Type.INFIX)); moduloTerm.addChild(new models.algebra.Variable("sum")); @@ -63,108 +67,8 @@ methodBody.addStatement(javaGen.getReturnStatement("sum")); methodDeclaration.setBody(methodBody); - System.out.println("--- Generated Code"); + System.out.println("--- Generated Code ---"); System.out.println(methodDeclaration.toString()); -// -// MethodDeclaration methodDeclaration = new MethodDeclaration("Test", false); -// Block methodBody = new Block(); -// -// VariableDeclarationStatement variableDeclarationStatement = new VariableDeclarationStatement(); -// variableDeclarationStatement.setModifiers(List.of(new PlainStatement("private"))); -// -// variableDeclarationStatement.setFragments(List.of( -// new VariableDeclaration(new SimpleType("int"), "x"), -// new VariableDeclaration(new SimpleType("int"), "sum") -// )); -// methodBody.addStatement(variableDeclarationStatement); -// -// ForStatement forStatement = new ForStatement(); -// -// forStatement.setInitializers(Arrays.asList(new PlainStatement("int j = 0"))); -// -// InfixExpression condition = new InfixExpression( -// new Symbol("<", 2, Symbol.Type.INFIX), -// new Variable("j"), -// new Constant("5") -// ); -// forStatement.setExpression(condition); -// -// PostfixExpression increment = new PostfixExpression( -// new Variable("j"), -// PostfixExpression.Operator.INCREMENT -// ); -// forStatement.setUpdaters(Arrays.asList(new ExpressionStatement(increment))); -// -// Block forBody = new Block(); -// InfixExpression forAddition = new InfixExpression( -// new Symbol("+=", 2, Symbol.Type.INFIX), -// new Variable("sum"), -// new Variable("j") -// ); -// forBody.addStatement(new ExpressionStatement(forAddition)); -// forStatement.setBody(forBody); -// methodBody.addStatement(forStatement); -// -// EnhancedForStatement enhancedForStatement = new EnhancedForStatement(); -// enhancedForStatement.setParameter(new SimpleType("String"), "s"); -// enhancedForStatement.setExpression(new Variable("list")); -// -// Block enhancedForBody = new Block(); -// enhancedForBody.addStatement("System.out.println(s);"); -// enhancedForStatement.setBody(enhancedForBody); -// methodBody.addStatement(enhancedForStatement); -// -// WhileStatement whileStatement = new WhileStatement(); -// InfixExpression whileCondition = new InfixExpression( -// new Symbol("<", 2, Symbol.Type.INFIX), -// new Variable("sum"), -// new Constant("100") -// ); -// whileStatement.setExpression(whileCondition); -// -// Block whileBody = new Block(); -// IfStatement ifStatement = new IfStatement(); -// -// InfixExpression moduloExpression = new InfixExpression( -// new Symbol("%", 2, Symbol.Type.INFIX), -// new Variable("sum"), -// new Constant("2") -// ); -// InfixExpression ifCondition = new InfixExpression( -// new Symbol("==", 2, Symbol.Type.INFIX), -// moduloExpression, -// new Constant("0") -// ); -// ifStatement.setExpression(ifCondition); -// -// Block thenBlock = new Block(); -// thenBlock.addStatement(new ExpressionStatement(new InfixExpression( -// new Symbol("+=", 2, Symbol.Type.INFIX), -// new Variable("sum"), -// new Constant("10") -// ))); -// -// Block elseBlock = new Block(); -// elseBlock.addStatement(new ExpressionStatement(new InfixExpression( -// new Symbol("+=", 2, Symbol.Type.INFIX), -// new Variable("sum"), -// new Constant("5") -// ))); -// -// ifStatement.setThenStatement(thenBlock); -// ifStatement.setElseStatement(elseBlock); -// whileBody.addStatement(ifStatement); -// whileStatement.setBody(whileBody); -// methodBody.addStatement(whileStatement); -// -// ReturnStatement returnStatement = new ReturnStatement(); -// returnStatement.setExpression(new Variable("sum")); -// methodBody.addStatement(returnStatement); -// -// methodDeclaration.setBody(methodBody); -// -// System.out.println("--- Generated Code ---"); -// System.out.println(methodDeclaration.toString()); } } \ No newline at end of file