import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;
import org.simantics.scl.compiler.elaboration.chr.CHRRule;
+import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
import org.simantics.scl.compiler.elaboration.equation.EqBasic;
import org.simantics.scl.compiler.elaboration.equation.EqGuard;
import org.simantics.scl.compiler.elaboration.equation.Equation;
import org.simantics.scl.compiler.elaboration.expressions.accessor.ExpressionAccessor;
import org.simantics.scl.compiler.elaboration.expressions.block.BindStatement;
import org.simantics.scl.compiler.elaboration.expressions.block.GuardStatement;
+import org.simantics.scl.compiler.elaboration.expressions.block.IncludeStatement;
import org.simantics.scl.compiler.elaboration.expressions.block.LetStatement;
import org.simantics.scl.compiler.elaboration.expressions.block.RuleStatement;
import org.simantics.scl.compiler.elaboration.expressions.block.Statement;
}
@Override
- public Expression transform(ECHRRuleset expression) {
- expression.in = expression.in.accept(this);
- for(CHRRule rule : expression.ruleset.rules) {
+ public void visit(IncludeStatement statement) {
+ statement.value = statement.value.accept(this);
+ }
+
+ public void transform(CHRRuleset ruleset) {
+ for(CHRRule rule : 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(int i=0;i<lit.parameters.length;++i)
lit.parameters[i] = lit.parameters[i].accept(this);
}
+ }
+
+ @Override
+ public Expression transform(ECHRRuleset expression) {
+ expression.in = expression.in.accept(this);
+ transform(expression.ruleset);
+ return expression;
+ }
+
+ @Override
+ public Expression transform(ECHRRulesetConstructor expression) {
+ transform(expression.ruleset);
return expression;
}