コード例 #1
0
        public override string VisitSumType(SumType t)
        {
            var rArgs = VisitList(t.Args);
            var aggr  = rArgs.Aggregate((s1, s2) => s1 + " + " + s2);

            return(IsaPrettyPrinterHelper.Parenthesis(aggr));
        }
コード例 #2
0
        public override string VisitArrowType(ArrowType t)
        {
            var rArg = Visit(t.ArgType);
            var rRes = Visit(t.ResType);

            return(IsaPrettyPrinterHelper.Parenthesis(rArg + " => " + rRes));
        }
コード例 #3
0
        public override string VisitDataType(DataType t)
        {
            var rArgs = VisitList(t.Args);

            if (t.Args.Count == 0)
            {
                return(IsaPrettyPrinterHelper.Parenthesis(t.Name));
            }
            return(IsaPrettyPrinterHelper.Parenthesis(rArgs.SpaceAggregate() + t.Name));
        }
コード例 #4
0
        private int HandleAbbrevOrDef(OuterDecl d, string topLevel, TypeIsa type, string equality,
                                      Tuple <IList <Term>, Term> equation)
        {
            _sb.Append(topLevel + " ").Append(d.Name);
            if (type != null)
            {
                _sb.Append(" :: ");
                AppendInner(_typeIsaPrinter.Visit(type));
            }

            _sb.AppendLine().Append(IsaPrettyPrinterHelper.Indent(1)).Append("where");
            _sb.AppendLine().Append(IsaPrettyPrinterHelper.Indent(2));

            var args = _termPrinter.VisitList(equation.Item1).SpaceAggregate();

            AppendInner(
                () => _sb.Append(d.Name).Append(" ").Append(args).Append(" " + equality + " ")
                .Append(_termPrinter.Visit(equation.Item2))
                );

            return(0);
        }
コード例 #5
0
        public override int VisitFunDecl(FunDecl d)
        {
            _sb.Append("fun ");
            _sb.Append(d.Name);
            if (d.Type != null)
            {
                _sb.Append(" :: ");
                AppendInner(_typeIsaPrinter.Visit(d.Type));
            }

            _sb.AppendLine().Append(IsaPrettyPrinterHelper.Indent(1)).Append("where");

            var first = true;

            foreach (var tuple in d.Equations)
            {
                _sb.AppendLine().Append(IsaPrettyPrinterHelper.Indent(2));

                if (first)
                {
                    first = !first;
                }
                else
                {
                    _sb.Append("|");
                }

                var args = _termPrinter.VisitList(tuple.Item1).SpaceAggregate();

                AppendInner(() =>
                            _sb.Append(d.Name).Append(" ").Append(args).Append(" = ").Append(_termPrinter.Visit(tuple.Item2))
                            );
            }

            return(0);
        }
コード例 #6
0
 public override string VisitVarType(VarType t)
 {
     return(IsaPrettyPrinterHelper.Parenthesis("\'" + t.Name));
 }