package org.simantics.scl.compiler.elaboration.expressions;
+import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;
+import org.simantics.scl.compiler.elaboration.chr.CHRRule;
import org.simantics.scl.compiler.elaboration.equation.EqBasic;
import org.simantics.scl.compiler.elaboration.equation.EqGuard;
import org.simantics.scl.compiler.elaboration.equation.Equation;
return expression;
}
+ @Override
+ public Expression transform(EViewPattern expression) {
+ expression.expression = expression.expression.accept(this);
+ expression.pattern = expression.pattern.accept(this);
+ return expression;
+ }
+
@Override
public Expression transform(EBlock expression) {
for(Statement statement : expression.statements)
statement.body = statement.body.accept(this);
}
+ @Override
+ public Expression transform(ECHRRuleset expression) {
+ expression.in = expression.in.accept(this);
+ for(CHRRule rule : expression.ruleset.rules) {
+ for(CHRLiteral lit : rule.head.literals)
+ for(int i=0;i<lit.parameters.length;++i)
+ lit.parameters[i] = lit.parameters[i].accept(this);
+ for(CHRLiteral lit : rule.body.literals)
+ for(int i=0;i<lit.parameters.length;++i)
+ lit.parameters[i] = lit.parameters[i].accept(this);
+ }
+ return expression;
+ }
+
@Override
public Expression transform(EConstant expression) {
return expression;
public Expression transform(EIf expression) {
expression.condition = expression.condition.accept(this);
expression.then_ = expression.then_.accept(this);
- expression.else_ = expression.else_.accept(this);
+ if(expression.else_ != null)
+ expression.else_ = expression.else_.accept(this);
return expression;
}