예제 #1
0
파일: Core.cs 프로젝트: pcerman/mal
        protected override Value Apply_OneArg(Value arg)
        {
            if (arg is Str str)
            {
                FileInfo fi = new FileInfo(str.Value);

                if (!fi.Exists)
                {
                    throw Error("file '{0}' not exists", str.Value);
                }

                using (Stream stream = fi.OpenRead())
                {
                    Reader reader = new Reader(stream);
                    for (; ;)
                    {
                        var form = reader.Read_form();
                        if (form == null)
                        {
                            break;
                        }
                        eval(form, env);
                    }
                }

                return(Reader.Nil);
            }

            throw Expected("string");
        }
예제 #2
0
        internal static Value Read_str(string str)
        {
            Reader rd = new Reader(str);

            Value val = rd.Read_form();

            Value nonexpected;

            try
            {
                nonexpected = rd.Read_form();
            }
            catch (MalException)
            {
                nonexpected = False;
            }

            if (nonexpected != null)
            {
                throw new MalException("reader - unexpected characters after expression");
            }

            return(val);
        }