private static void ExecuteFile(string path, Context context) { string raw = File.ReadAllText(path); List <Atom> nodes = BombardoLangClass.Parse(raw); foreach (var node in nodes) { Evaluator.Evaluate(node, context); } }
public static Atom FromString(Atom args, Context context) { Atom str = (Atom)args.value; if (!str.IsString()) { throw new ArgumentException("Argument must be string!"); } List <Atom> atoms = BombardoLangClass.Parse((string)str.value); return(Atom.List(atoms.ToArray())); }
public static Atom Parse(Atom args, Context context) { Atom text = args?.atom; if (text.type != AtomType.String) { throw new ArgumentException("Argument must be string!"); } try { var atoms = BombardoLangClass.Parse((string)text?.value); return(Atom.List(atoms.ToArray())); } catch { } return(null); }
private static Atom LoadEval(Atom args, Context context) { if (args == null) { Console.WriteLine("load-eval requires string parameter!!!"); return(Atom.FALSE); } Atom atom = args.atom; if (atom.type != AtomType.String) { Console.WriteLine("load-eval requires string parameter!!!"); return(Atom.FALSE); } string name = atom.value as string; if (string.IsNullOrEmpty(name)) { Console.WriteLine("load-eval requires string parameter!!!"); return(Atom.FALSE); } string path = FSUtils.FindFile(name); string raw = File.ReadAllText(path); var nodes = BombardoLangClass.Parse(raw); foreach (var node in nodes) { try { Evaluator.Evaluate(node, BombardoLangClass.Global); } catch (Exception exc) { Console.WriteLine(exc.ToString()); } } return(null); }
private static Atom Load(Atom args, Context context) { Atom path = (Atom)args?.value; if (path == null || !path.IsString()) { throw new ArgumentException("Path must be string!"); } string file = (string)path.value; if (File.Exists(file)) { string raw = File.ReadAllText(file); List <Atom> nodes = BombardoLangClass.Parse(raw); return(Atom.List(nodes.ToArray())); } return(null); }