\r
import java.util.Map.Entry;\r
\r
+import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;\r
+import org.simantics.scl.compiler.elaboration.chr.CHRQuery;\r
+import org.simantics.scl.compiler.elaboration.chr.CHRRule;\r
+import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;\r
import org.simantics.scl.compiler.elaboration.expressions.Assignment;\r
import org.simantics.scl.compiler.elaboration.expressions.Case;\r
import org.simantics.scl.compiler.elaboration.expressions.EApply;\r
import org.simantics.scl.compiler.elaboration.expressions.EApplyType;\r
import org.simantics.scl.compiler.elaboration.expressions.EAsPattern;\r
import org.simantics.scl.compiler.elaboration.expressions.EBind;\r
+import org.simantics.scl.compiler.elaboration.expressions.ECHRRuleset;\r
import org.simantics.scl.compiler.elaboration.expressions.EConstant;\r
import org.simantics.scl.compiler.elaboration.expressions.ECoveringBranchPoint;\r
import org.simantics.scl.compiler.elaboration.expressions.EEnforce;\r
import org.simantics.scl.compiler.elaboration.expressions.ETransformation;\r
import org.simantics.scl.compiler.elaboration.expressions.ETypeAnnotation;\r
import org.simantics.scl.compiler.elaboration.expressions.EVariable;\r
+import org.simantics.scl.compiler.elaboration.expressions.EViewPattern;\r
import org.simantics.scl.compiler.elaboration.expressions.EWhen;\r
import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
import org.simantics.scl.compiler.elaboration.expressions.ExpressionVisitor;\r
@Override\r
public void visit(EIf expression) {\r
b.append("if ");\r
- expression.getCondition().accept(this);\r
+ expression.condition.accept(this);\r
++indentation;\r
newLine();\r
b.append("then ");\r
- expression.getThen().accept(this);\r
- newLine();\r
- b.append("else ");\r
- expression.getElse().accept(this);\r
+ expression.then_.accept(this);\r
+ if(expression.else_ != null) {\r
+ newLine();\r
+ b.append("else ");\r
+ expression.else_.accept(this);\r
+ }\r
--indentation;\r
}\r
\r
}\r
--indentation;\r
}\r
+ \r
+ @Override\r
+ public void visit(EViewPattern expression) {\r
+ b.append('(');\r
+ expression.expression.accept(this);\r
+ b.append(" -> ");\r
+ expression.pattern.accept(this);\r
+ b.append(')');\r
+ }\r
\r
@Override\r
public void visit(ELambdaType expression) {\r
public void visit(EEquations eEquations) {\r
b.append("eq");\r
}\r
+\r
+ @Override\r
+ public void visit(ECHRRuleset echrRuleset) {\r
+ b.append("CHRRuleset");\r
+ }\r
+\r
+ public void visit(CHRRule rule) {\r
+ visit(rule.head);\r
+ b.append(" => ");\r
+ visit(rule.body);\r
+ }\r
+\r
+ public void visit(CHRQuery query) {\r
+ boolean first = true;\r
+ for(CHRLiteral literal : query.literals) {\r
+ if(first)\r
+ first = false;\r
+ else\r
+ b.append(", ");\r
+ visit(literal);\r
+ }\r
+ }\r
+\r
+ public void visit(CHRLiteral literal) {\r
+ if(literal.passive && literal.relation instanceof CHRConstraint)\r
+ b.append("@passive ");\r
+ if(literal.killAfterMatch)\r
+ b.append('-');\r
+ b.append(literal.relation);\r
+ for(Expression parameter : literal.parameters) {\r
+ b.append(' ');\r
+ showPar(parameter);\r
+ }\r
+ }\r
}\r