コード例 #1
0
        public void Run(IEnvironment env)
        {
            QueryFunction func = (parent, args) =>
            {
                FunctionUtils.CheckArgumentCountEqual(Name, ArgumentNames.Length, args.Length);

                var fenv = new FunctionEnvironment(parent);
                for (int i = 0; i < ArgumentNames.Length; ++i)
                {
                    fenv.CreateVariable(ArgumentNames[i], args[i]);
                }

                if (Statements != null)
                {
                    foreach (var stm in Statements)
                    {
                        stm.Run(fenv);
                    }
                }

                return FinalExpression.Evaluate(fenv);
            };

            env.RegisterFunction(Name, func);
        }