import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
import org.simantics.scl.compiler.elaboration.expressions.Assignment;
import org.simantics.scl.compiler.elaboration.expressions.Case;
+import org.simantics.scl.compiler.elaboration.expressions.EAmbiguous;
import org.simantics.scl.compiler.elaboration.expressions.EApply;
import org.simantics.scl.compiler.elaboration.expressions.EApplyType;
import org.simantics.scl.compiler.elaboration.expressions.EAsPattern;
import org.simantics.scl.compiler.elaboration.expressions.EBlock;
import org.simantics.scl.compiler.elaboration.expressions.ECHRRuleset;
import org.simantics.scl.compiler.elaboration.expressions.ECHRRulesetConstructor;
+import org.simantics.scl.compiler.elaboration.expressions.ECHRSelect;
import org.simantics.scl.compiler.elaboration.expressions.EConstant;
import org.simantics.scl.compiler.elaboration.expressions.ECoveringBranchPoint;
import org.simantics.scl.compiler.elaboration.expressions.EEnforce;
public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisitor {
+ public static final boolean SHOW_EFFECTS = false;
+
StringBuilder b = new StringBuilder();
int indentation;
@Override
public void visit(EApply expression) {
showPar(expression.getFunction());
+ if(SHOW_EFFECTS)
+ b.append(" {" + expression.effect + "}");
for(Expression parameter : expression.getParameters()) {
b.append(' ');
showPar(parameter);
showPar(pat);
b.append(' ');
}
+ if(SHOW_EFFECTS)
+ b.append("{" + expression.effect + "} ");
b.append("-> ");
++indentation;
case_.value.accept(this);
public void visit(ESelect expression) {
b.append("ESelect");
}
-
+
+ @Override
+ public void visit(ECHRSelect expression) {
+ b.append("ECHRSelect");
+ }
+
@Override
public void visit(ESimpleLambda expression) {
b.append('\\');
b.append(' ');
show(expression.getParameter());
}
+ if(SHOW_EFFECTS)
+ b.append(" {" + expression.effect + "}");
b.append(" -> ");
expression.getValue().accept(this);
}
}
b.append('"');
}
+
+ @Override
+ public void visit(EAmbiguous eAmbiguous) {
+ b.append("EAmbigious");
+ }
}