Exemple #1
0
        /// <summary>
        /// 检查操作符和参数是否合法,是可执行的
        /// 如果合法,则返回含有执行结果类型的Token
        /// 如果不合法,则返回null
        /// </summary>
        /// <param name="opPositin">操作符位置</param>
        /// <param name="args">注意args中的参数由于是从栈中按LIFO顺序弹出的,所以必须从尾部倒着取数</param>
        /// <returns></returns>
        public Constant Verify(int opPositin, BaseMetadata[] args)
        {
            IOperatorExecution opExec = OP_EXEC_MAP[this];

            if (opExec == null)
            {
                throw new Exception("系统内部错误:找不到操作符对应的执行定义");
            }
            return(opExec.Verify(opPositin, args));
        }
Exemple #2
0
        /// <summary>
        /// 执行操作,并返回结果Token
        /// </summary>
        /// <param name="args">注意args中的参数由于是从栈中按LIFO顺序弹出的,所以必须从尾部倒着取数</param>
        /// <returns>常量型的执行结果</returns>
        public Constant Execute(Constant[] args)
        {
            IOperatorExecution opExec = OP_EXEC_MAP[this];

            if (opExec == null)
            {
                throw new Exception("系统内部错误:找不到操作符对应的执行定义");
            }
            return(opExec.Execute(args));
        }