Example #1
0
        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());
        }
Example #2
0
        public override string VisitTermWithExplicitType(TermWithExplicitType t)
        {
            var rTerm = Visit(t.Term);
            var rType = typePrettyPrinter.Visit(t.Type);

            return(H.Parenthesis(rTerm + "::" + rType));
        }
Example #3
0
        public override string VisitTermApp(TermApp t)
        {
            var rFun  = Visit(t.Fun);
            var rArgs = VisitList(t.Arg);

            return(H.Parenthesis(rFun + " " + rArgs.SpaceAggregate()));
        }
Example #4
0
        public override string VisitTermUnary(TermUnary t)
        {
            var isaSymbol = GetStringFromUnary(t.Op);

            var argString = t.Arg.Dispatch(this);

            return(H.Parenthesis(isaSymbol + " " + argString));
        }
Example #5
0
        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));
        }
Example #6
0
        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());
        }
Example #7
0
        public override string VisitTermTuple(TermTuple t)
        {
            var res = VisitList(t.Terms);

            return(H.Parenthesis(H.CommaAggregate(res)));
        }
Example #8
0
        public override string VisitTermSet(TermSet t)
        {
            var rArgs = t.Elements.Select(Visit).ToList();

            return(H.CurlyBrackets(H.CommaAggregate(rArgs)));
        }
Example #9
0
        public override string VisitTermRecord(TermRecord t)
        {
            var res = t.Mapping.Select(tuple => tuple.Item1 + " = " + Visit(tuple.Item2));

            return("(|" + H.CommaAggregate(res.ToList()) + "|)");
        }
Example #10
0
        public override string VisitTermList(TermList t)
        {
            var rArgs = VisitList(t.List);

            return(H.Brackets(H.CommaAggregate(rArgs)));
        }