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"); }
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); }