Esempio n. 1
0
        public static object run_e(String path, Node <Object> baseScope, char lineSpilt, Encoding encoding)
        {
            if (onLoad)
            {
                throw new Exception("禁止在加载期间加载");
            }
            else
            {
                Node <Object> x = Node <Object> .kvs_find1st(core, path) as Node <Object>;

                if (x != null)
                {
                    return(x.First());
                }
                else
                {
                    onLoad = true;
                    String        sb    = Util.readTxt(path, lineSpilt, encoding);
                    Node <Object> scope = Node <Object> .kvs_extend("load", new Load(baseScope, path, lineSpilt, encoding), baseScope);

                    scope = Node <Object> .kvs_extend("pathOf", new PathOf(path), scope);

                    Node <Token> tokens = Token.run(sb, lineSpilt);
                    Exp          exp    = Exp.Parse(tokens);
                    UserFunction f      = new UserFunction(exp, scope);
                    Object       b      = f.exec(null);
                    core = Node <Object> .kvs_extend(path, Node <Object> .extend(b, null), core);

                    onLoad = false;
                    return(b);
                }
            }
        }
Esempio n. 2
0
        public override object exec(Node <object> args)
        {
            String str = args.First() as String;

            args = args.Rest();
            Node <Object> scope = defaultScope;

            if (args != null)
            {
                scope = args.First() as Node <Object>;
            }
            Node <Token> tokens = Token.run(str, lineSplit);
            Exp          exp    = Exp.Parse(tokens);
            UserFunction f      = new UserFunction(exp, scope);

            return(f.exec(null));
        }