Ejemplo n.º 1
0
        // cdr to string
        private string CdrToString(Lisp l)
        {
            if (l == null)
            {
                return(")");
            }

            if (l is ConsC)  // Don't chase circular references
            {
                return("@)");
            }

            if (l is Cons)
            {
                Cons lc = l as Cons;
                if (lc.Car == null)
                {
                    return(" nil" + CdrToString(lc.cdr));
                }
                else
                {
                    return(" " + lc.car.ToString() + CdrToString(lc.cdr));
                }
            }
            // atomic cdr
            return(" . " + l.ToString() + ")");
        }
Ejemplo n.º 2
0
        public static string ToEscapedString(Lisp l)
        {
            escaped = true;
            string s = l.ToString();

            escaped = false;
            return(s);
        }
Ejemplo n.º 3
0
        // Cons to string
        public override string ToString()
        {
            if (car == null)
            {
                return("(nil" + CdrToString(cdr));
            }

            return("(" + car.ToString() + CdrToString(cdr));
        }