X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2Fprinting%2FExpressionToStringVisitor.java;h=122548fac399e6868d97c00fabebcbb5ad333847;hb=6320ecb3f75e3a29ed620ca5425ca22ef88a5496;hp=ac347385ae68b5d860ad927cb52a4f67ff9a0282;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/printing/ExpressionToStringVisitor.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/printing/ExpressionToStringVisitor.java index ac347385a..122548fac 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/printing/ExpressionToStringVisitor.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/printing/ExpressionToStringVisitor.java @@ -8,11 +8,16 @@ import org.simantics.scl.compiler.elaboration.chr.CHRRule; 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.EBinary; import org.simantics.scl.compiler.elaboration.expressions.EBind; +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; @@ -31,13 +36,18 @@ import org.simantics.scl.compiler.elaboration.expressions.EListLiteral; import org.simantics.scl.compiler.elaboration.expressions.ELiteral; import org.simantics.scl.compiler.elaboration.expressions.EMatch; import org.simantics.scl.compiler.elaboration.expressions.EPlaceholder; +import org.simantics.scl.compiler.elaboration.expressions.EPreLet; +import org.simantics.scl.compiler.elaboration.expressions.ERange; import org.simantics.scl.compiler.elaboration.expressions.ERealLiteral; +import org.simantics.scl.compiler.elaboration.expressions.ERecord; import org.simantics.scl.compiler.elaboration.expressions.ERuleset; import org.simantics.scl.compiler.elaboration.expressions.ESelect; import org.simantics.scl.compiler.elaboration.expressions.ESimpleLambda; import org.simantics.scl.compiler.elaboration.expressions.ESimpleLet; +import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral; import org.simantics.scl.compiler.elaboration.expressions.ETransformation; import org.simantics.scl.compiler.elaboration.expressions.ETypeAnnotation; +import org.simantics.scl.compiler.elaboration.expressions.EVar; import org.simantics.scl.compiler.elaboration.expressions.EVariable; import org.simantics.scl.compiler.elaboration.expressions.EViewPattern; import org.simantics.scl.compiler.elaboration.expressions.EWhen; @@ -63,6 +73,8 @@ import org.simantics.scl.compiler.elaboration.rules.TransformationRule; public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisitor { + public static final boolean SHOW_EFFECTS = false; + StringBuilder b = new StringBuilder(); int indentation; @@ -114,6 +126,8 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito @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); @@ -217,6 +231,8 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito showPar(pat); b.append(' '); } + if(SHOW_EFFECTS) + b.append("{" + expression.effect + "} "); b.append("-> "); ++indentation; case_.value.accept(this); @@ -321,7 +337,12 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito 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('\\'); @@ -331,6 +352,8 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito b.append(' '); show(expression.getParameter()); } + if(SHOW_EFFECTS) + b.append(" {" + expression.effect + "}"); b.append(" -> "); expression.getValue().accept(this); } @@ -384,6 +407,11 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito expression.getValue().accept(this); } + @Override + public void visit(EVar expression) { + b.append(expression.name); + } + @Override public void visit(EVariable expression) { show(expression.getVariable()); @@ -508,13 +536,18 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito } @Override - public void visit(EEquations eEquations) { + public void visit(EEquations expression) { b.append("eq"); } @Override - public void visit(ECHRRuleset echrRuleset) { - b.append("CHRRuleset"); + public void visit(ECHRRuleset expression) { + b.append("ECHRRuleset"); + } + + @Override + public void visit(ECHRRulesetConstructor expression) { + b.append("ECHRRulesetConstructor"); } public void visit(CHRRule rule) { @@ -545,4 +578,52 @@ public class ExpressionToStringVisitor implements ExpressionVisitor, QueryVisito showPar(parameter); } } + + @Override + public void visit(EBinary expression) { + b.append(""); + } + + @Override + public void visit(EBlock expression) { + b.append(""); + } + + @Override + public void visit(EPreLet expression) { + b.append(""); + } + + @Override + public void visit(ERange expression) { + b.append('['); + expression.from.accept(this); + b.append(".."); + expression.to.accept(this); + b.append(']'); + } + + @Override + public void visit(ERecord expression) { + b.append(""); + } + + @Override + public void visit(EStringLiteral expression) { + b.append('"'); + for(int i=0;i