示例#1
0
 public override string ToPrologString()
 {
     try
     {
         if (Arguments.Any())
         {
             if (Functor.TheString != "or")
             {
                 return(Functor + "(" + Arguments.Select(n => n.ToPrologString()).Aggregate((workingSentence, next) => workingSentence + ", " + next) + ")");
             }
             else
             {
                 return("(" + Arguments.Select(n => n.ToPrologString()).Aggregate((workingSentence, next) => workingSentence + "; " + next) + ")");
             }
         }
         else
         {
             return(Functor.ToString());  // prolog doesn't like predicates with zero arity with parentheses
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
示例#2
0
        public override string ToString()
        {
            if (Functor is Primitive)
            {
                return(((Primitive)(Functor)).ToString(Parameters));
            }
            if (Arity == 0)
            {
                return(Functor.ToString());
            }
            StringBuilder sb = new StringBuilder(Parameters.Length * 20);

            sb.Append(Functor.ToString());
            sb.Append("(");

            for (int np = 0; np <= Parameters.Length - 1; np++)
            {
                if (Parameters[np] == null)
                {
                    sb.Append("nil");
                }
                else
                {
                    sb.Append(Parameters[np].ToString());
                }
                if (np < Parameters.Length - 1)
                {
                    sb.Append(",");
                }
            }
            sb.Append(")");
            return(sb.ToString());
        }