diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/IExpressionVisitor.java b/AlgebraicDataflowArchitectureModel/src/code/ast/IExpressionVisitor.java index bf2b64b..c8faa50 100644 --- a/AlgebraicDataflowArchitectureModel/src/code/ast/IExpressionVisitor.java +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/IExpressionVisitor.java @@ -8,15 +8,15 @@ import models.dataConstraintModel.JsonTerm; public interface IExpressionVisitor { - void visit(Term term); + String visit(Term term, String[] sideEffects); - void visit(Field field); + String visit(Field field, String[] sideEffects); - void visit(Constant constant); + String visit(Constant constant, String[] sideEffects); - void visit(Variable variable); + String visit(Variable variable, String[] sideEffects); - void visit(JsonTerm jsonTerm); + String visit(JsonTerm jsonTerm, String[] sideEffects); - void visit(JsonAccessor jsonAccessor); + String visit(JsonAccessor jsonAccessor, String[] sideEffects); } diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JavaImplementationVisitor.java b/AlgebraicDataflowArchitectureModel/src/generators/JavaImplementationVisitor.java index e55f7e6..1b5ccb2 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JavaImplementationVisitor.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JavaImplementationVisitor.java @@ -15,10 +15,8 @@ public class JavaImplementationVisitor implements IExpressionVisitor { private static int jsonCount = 0; - private final String[] sideEffects = {}; - @Override - public void visit(Term term) { + public String visit(Term term, String[] sideEffects) { int[] implParamOrder = term.getSymbol().getImplParamOrder(); if (term.getSymbol().isImplLambda()) { String[] components = term.getSymbol().getImplName().split("->"); @@ -155,27 +153,27 @@ } @Override - public void visit(Field field) { - return new code.ast.FieldAccess(new code.ast.ThisExpression(), visit((Constant) field, sideEffects).toString()); + public String visit(Field field, String[] sideEffects) { + return new code.ast.FieldAccess(new code.ast.ThisExpression(), visit((Constant) field, sideEffects)).toString(); } @Override - public void visit(Constant constant) { + public String visit(Constant constant, String[] sideEffects) { if (constant.getSymbol().isImplGenerative()) { String exp = constant.getSymbol().generate(constant.getType(), new Type[]{}, new String[]{}, new String[]{}, sideEffects); return exp; } - return new code.ast.Constant(constant.getSymbol().getImplName()); + return new code.ast.Constant(constant.getSymbol().getImplName()).toString(); } @Override - public void visit(Variable variable) { - return new code.ast.Variable(variable.getName()); + public String visit(Variable variable, String[] sideEffects) { + return new code.ast.Variable(variable.getName()).toString(); } @Override - public void visit(JsonTerm jsonTerm) { + public String visit(JsonTerm jsonTerm, String[] sideEffects) { String temp = "temp_json" + jsonCount; jsonCount++; @@ -198,7 +196,7 @@ } @Override - public void visit(JsonAccessor jsonAccessor) { + public String visit(JsonAccessor jsonAccessor, String[] sideEffects) { if (jsonAccessor.getSymbol().equals(DataConstraintModel.dotParam)) { return jsonAccessor.getChildren().get(0).accept(this, sideEffects) + "." + jsonAccessor.getSymbol().toImplementation() + "(" + jsonAccessor.getChildren().get(1).accept(this, sideEffects) + ")"; } diff --git a/AlgebraicDataflowArchitectureModel/src/models/algebra/Constant.java b/AlgebraicDataflowArchitectureModel/src/models/algebra/Constant.java index 8d68aec..cd1c8da 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/algebra/Constant.java +++ b/AlgebraicDataflowArchitectureModel/src/models/algebra/Constant.java @@ -45,11 +45,11 @@ } public String toImplementation(String[] sideEffects) { - return accept(new JavaImplementationVisitor(), sideEffects).toString(); + return accept(new JavaImplementationVisitor(), sideEffects); } @Override - public void accept(IExpressionVisitor visitor) { - visitor.visit(this); + public String accept(IExpressionVisitor visitor, String[] sideEffects) { + return visitor.visit(this, sideEffects); } } diff --git a/AlgebraicDataflowArchitectureModel/src/models/algebra/Expression.java b/AlgebraicDataflowArchitectureModel/src/models/algebra/Expression.java index b4115fe..43dba7f 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/algebra/Expression.java +++ b/AlgebraicDataflowArchitectureModel/src/models/algebra/Expression.java @@ -34,7 +34,7 @@ return getSubTerms(Variable.class); } - public abstract void accept(IExpressionVisitor visitor); + public abstract String accept(IExpressionVisitor visitor, String[] sideEffects); /** * Get the implementation of this expression. diff --git a/AlgebraicDataflowArchitectureModel/src/models/algebra/Field.java b/AlgebraicDataflowArchitectureModel/src/models/algebra/Field.java index f988f2e..4b1858d 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/algebra/Field.java +++ b/AlgebraicDataflowArchitectureModel/src/models/algebra/Field.java @@ -47,7 +47,7 @@ } @Override - public void accept(IExpressionVisitor visitor) { - visitor.visit(this); + public String accept(IExpressionVisitor visitor, String[] sideEffects) { + return visitor.visit(this, sideEffects); } } diff --git a/AlgebraicDataflowArchitectureModel/src/models/algebra/Term.java b/AlgebraicDataflowArchitectureModel/src/models/algebra/Term.java index e1dda9f..cc91fd9 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/algebra/Term.java +++ b/AlgebraicDataflowArchitectureModel/src/models/algebra/Term.java @@ -313,11 +313,11 @@ } public String toImplementation(String[] sideEffects) { - return accept(new JavaImplementationVisitor(), sideEffects).toString(); + return accept(new JavaImplementationVisitor(), sideEffects); } @Override - public void accept(IExpressionVisitor visitor) { - visitor.visit(this); + public String accept(IExpressionVisitor visitor, String[] sideEffects) { + return visitor.visit(this, sideEffects); } } diff --git a/AlgebraicDataflowArchitectureModel/src/models/algebra/Variable.java b/AlgebraicDataflowArchitectureModel/src/models/algebra/Variable.java index 13cf8ab..a1c1dcc 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/algebra/Variable.java +++ b/AlgebraicDataflowArchitectureModel/src/models/algebra/Variable.java @@ -89,7 +89,7 @@ } @Override - public void accept(IExpressionVisitor visitor) { - visitor.visit(this); + public String accept(IExpressionVisitor visitor, String[] sideEffects) { + return visitor.visit(this, sideEffects); } } diff --git a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonAccessor.java b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonAccessor.java index 904693f..17668ff 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonAccessor.java +++ b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonAccessor.java @@ -206,12 +206,12 @@ } public String toImplementation(String[] sideEffects) { - return accept(new JavaImplementationVisitor(), sideEffects).toString(); + return accept(new JavaImplementationVisitor(), sideEffects); } @Override - public void accept(IExpressionVisitor visitor) { - visitor.visit(this); + public String accept(IExpressionVisitor visitor, String[] sideEffects) { + return visitor.visit(this, sideEffects); } @Override diff --git a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonTerm.java b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonTerm.java index 02f3189..4606711 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonTerm.java +++ b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonTerm.java @@ -96,7 +96,7 @@ } @Override - public void accept(IExpressionVisitor visitor) { - visitor.visit(this); + public String accept(IExpressionVisitor visitor, String[] sideEffects) { + return visitor.visit(this, sideEffects); } }