public override string VisitTermWithExplicitType(TermWithExplicitType t) { var rTerm = Visit(t.Term); var rType = typePrettyPrinter.Visit(t.Type); return(H.Parenthesis(rTerm + "::" + rType)); }
public override string VisitTermQuantifier(TermQuantifier t) { var qIsa = GetStringFromQuantifier(t.Quantifier); var sb = new StringBuilder(); sb.Append("("); sb.Append(qIsa); sb.Append(" "); IEnumerable <string> boundVarsTranslated; if (t.BoundVarTypes != null) { boundVarsTranslated = t.BoundVars.Zip(t.BoundVarTypes, (id, ty) => H.Parenthesis(GetStringFromIdentifier(id) + "::" + typePrettyPrinter.Visit(ty)) ); } else { boundVarsTranslated = t.BoundVars.Select(GetStringFromIdentifier); } sb.Append(boundVarsTranslated.SpaceAggregate()); sb.Append("."); sb.Append(" "); sb.Append(t.Term.Dispatch(this)); sb.Append(")"); return(sb.ToString()); }
public override string VisitTermApp(TermApp t) { var rFun = Visit(t.Fun); var rArgs = VisitList(t.Arg); return(H.Parenthesis(rFun + " " + rArgs.SpaceAggregate())); }
public override string VisitTermUnary(TermUnary t) { var isaSymbol = GetStringFromUnary(t.Op); var argString = t.Arg.Dispatch(this); return(H.Parenthesis(isaSymbol + " " + argString)); }
public override string VisitTermBinary(TermBinary t) { //TODO: for critical operations, use a stack var isaSymbol = GetStringFromBinary(t.Op); var leftString = t.ArgLeft.Dispatch(this); var rightString = t.ArgRight.Dispatch(this); return(H.Parenthesis(leftString + " " + isaSymbol + " " + rightString)); }
public override string VisitNatConst(NatConst t) { if (t.UseConstructorRepr) { var sb = new StringBuilder(""); for (var i = t.Val; i > 0; i--) { sb.Append("Suc("); } sb.Append(0); for (var i = 1; i <= t.Val; i++) { sb.Append(")"); } return(H.Parenthesis(sb.ToString())); } return(t.Val.ToString()); }
public override string VisitTermTuple(TermTuple t) { var res = VisitList(t.Terms); return(H.Parenthesis(H.CommaAggregate(res))); }