diff --git a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java index ecb3d7b..6bbfc83 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java +++ b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java @@ -49,7 +49,26 @@ return "new ArrayList<" + compType + ">()"; } }); - public static final Symbol cond = new Symbol("if", 3, Symbol.Type.PREFIX, "($x,$y,$z)->($x ? $y : $z)", Symbol.Type.LAMBDA); + public static final Symbol cond = new Symbol("if", 3, Symbol.Type.PREFIX, new Symbol.IImplGenerator() { + final int count[] = {0}; + @Override + public String generate(Type type, String[] children, String[] sideEffects) { + // TODO Auto-generated method stub + String temp = "temp_l" + count[0]; + String impl = ""; + + impl += "if(" + children[0] + ") {\n"; + impl +="\t" + temp + " = " + children[1] + ";\n"; + impl += "} else {\n"; + impl += "\t" + temp + " = " + children[2] + ";\n"; + impl += "}\n"; + + sideEffects[0] += impl; + + count[0]++; + return temp; + } + }); public static final Symbol eq = new Symbol("eq", 2, Symbol.Type.PREFIX, "==", Symbol.Type.INFIX); public static final Symbol neq = new Symbol("neq", 2, Symbol.Type.PREFIX, "!=", Symbol.Type.INFIX); public static final Symbol gt = new Symbol("gt", 2, Symbol.Type.PREFIX, ">", Symbol.Type.INFIX);