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