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