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);
            }
        }
示例#2
0
        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()));
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }