Example #1
0
        public static object ReadVectorHandler2(LispReader stream, string ch, int arg)
        {
            if (stream.ReadChar() != '(')
            {
                throw stream.MakeScannerException("Invalid #() expression");
            }
            var list = stream.ReadDelimitedList(")");
            var obj  = new Vector();

            obj.AddRange(list);
            if (arg == -1)
            {
                // default no action
            }
            else if (arg < obj.Count)
            {
                throw new LispException("Vector {0} contains more than {1} items", ToPrintString(obj), arg);
            }
            else if (arg > obj.Count)
            {
                var filler = obj.Count == 0 ? (object)null : obj[obj.Count - 1];
                while (obj.Count < arg)
                {
                    obj.Add(filler);
                }
            }
            return(obj);
        }
Example #2
0
        public static object ReadPrototypeHandler(LispReader stream, char ch)
        {
            var list = stream.ReadDelimitedList("}");
            var obj  = new Prototype(AsArray(list));

            return(obj);
        }
Example #3
0
        public static object ReadVectorHandler(LispReader stream, char ch)
        {
            var list = stream.ReadDelimitedList("]");
            var obj  = new Vector();

            obj.AddRange(list);
            return(obj);
        }
Example #4
0
        public static object ReadStructHandler(LispReader stream, string ch, int arg)
        {
            if (stream.ReadChar() != '(')
            {
                throw stream.MakeScannerException("Invalid #s() expression");
            }
            var list = stream.ReadDelimitedList(")");
            var obj  = new Prototype(AsArray(list));

            return(obj);
        }
Example #5
0
        public static object ReadComplexNumberHandler(LispReader stream, string ch, int arg)
        {
            if (stream.ReadChar() != '(')
            {
                throw stream.MakeScannerException("Invalid #c expression");
            }
            var    nums  = stream.ReadDelimitedList(")");
            int    count = Length(nums);
            double real  = count >= 1 ? AsDouble(nums.Car) : 0;
            double imag  = count >= 2 ? AsDouble(nums.Cdr.Car) : 0;

            return(new Complex(real, imag));
        }
Example #6
0
 public static object ReadListHandler(LispReader stream, char ch)
 {
     return(stream.ReadDelimitedList(")"));
 }
 public static object ReadVectorHandler2(LispReader stream, string ch, int arg)
 {
     if (stream.ReadChar() != '(')
     {
         throw stream.MakeScannerException("Invalid #() expression");
     }
     var list = stream.ReadDelimitedList(")");
     var obj = new Vector();
     obj.AddRange(list);
     if (arg == -1)
     {
         // default no action
     }
     else if (arg < obj.Count)
     {
         throw new LispException("Vector {0} contains more than {1} items", ToPrintString(obj), arg);
     }
     else if (arg > obj.Count)
     {
         var filler = obj.Count == 0 ? (object)null : obj[obj.Count - 1];
         while (obj.Count < arg)
         {
             obj.Add(filler);
         }
     }
     return obj;
 }
 public static object ReadVectorHandler(LispReader stream, char ch)
 {
     var list = stream.ReadDelimitedList("]");
     var obj = new Vector();
     obj.AddRange(list);
     return obj;
 }
 public static object ReadStructHandler(LispReader stream, string ch, int arg)
 {
     if (stream.ReadChar() != '(')
     {
         throw stream.MakeScannerException("Invalid #s() expression");
     }
     var list = stream.ReadDelimitedList(")");
     var obj = new Prototype(AsArray(list));
     return obj;
 }
Example #10
0
 public static object ReadPrototypeHandler(LispReader stream, char ch)
 {
     var list = stream.ReadDelimitedList("}");
     var obj = new Prototype(AsArray(list));
     return obj;
 }
Example #11
0
 public static object ReadListHandler(LispReader stream, char ch)
 {
     return stream.ReadDelimitedList(")");
 }
Example #12
0
 public static object ReadComplexNumberHandler(LispReader stream, string ch, int arg)
 {
     if (stream.ReadChar() != '(')
     {
         throw stream.MakeScannerException("Invalid #c expression");
     }
     var nums = stream.ReadDelimitedList(")");
     int count = Length(nums);
     double real = count >= 1 ? AsDouble(nums.Car) : 0;
     double imag = count >= 2 ? AsDouble(nums.Cdr.Car) : 0;
     return new Complex(real, imag);
 }