/// <summary>
        /// 执行当前的预编译表达式
        /// </summary>
        /// <returns></returns>
        public object Execute()
        {
            ExpressionExecutor ee = new ExpressionExecutor();

            //执行RPN
            try
            {
                //添加变来到脚本变量容器
                VariableContainer.SetVariableDict(new Dictionary <string, Variable>(variableDict));
                Constant constant = ee.Execute(expTokens);
                return(constant.GetObjectValue());
            }
            catch (Exception e)
            {
                throw new Exception("表达式:\"" + orgExpression + "\" 执行异常", e);
            }
            finally
            {
                //释放脚本变量容器
                VariableContainer.RemoveVariableDict();
            }
        }
        /// <summary>
        /// 根据流程上下文,执行公式语言
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="variables"></param>
        /// <returns></returns>
        public static object Evaluate(string expression, ICollection <Variable> variables)
        {
            if (expression == null)
            {
                return(null);
            }

            ExpressionExecutor ee = new ExpressionExecutor();

            try
            {
                //获取上下文的变量,设置到脚本执行器中
                if (variables != null && variables.Count > 0)
                {
                    foreach (Variable var in variables)
                    {
                        //添加变来到脚本变量容器
                        VariableContainer.AddVariable(var);
                    }
                }
                //解析表达式词元
                List <ExpressionToken> expTokens = ee.Analyze(expression);
                //转化RPN,并验证
                expTokens = ee.Compile(expTokens);
                //执行RPN
                Constant constant = ee.Execute(expTokens);
                return(constant.GetObjectValue());
            }
            catch (IllegalExpressionException e)
            {
                throw new Exception("表达式:\"" + expression + "\" 执行异常", e);
            }
            finally
            {
                //释放脚本变量容器
                VariableContainer.RemoveVariableDict();
            }
        }
        /// <summary>
        /// 验证表达式
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="variables"></param>
        /// <returns></returns>
        public static string Compile(string expression, ICollection <Variable> variables)
        {
            if (expression == null)
            {
                throw new ArgumentException("表达式为空");
            }

            ExpressionExecutor ee = new ExpressionExecutor();

            try
            {
                //获取上下文的变量,设置到脚本执行器中
                if (variables != null && variables.Count > 0)
                {
                    foreach (Variable var in variables)
                    {
                        //添加变量到脚本变量容器
                        VariableContainer.AddVariable(var);
                    }
                }
                //解析表达式词元
                List <ExpressionToken> expTokens = ee.Analyze(expression);
                //转化RPN,并验证
                expTokens = ee.Compile(expTokens);
                //以字符串形式输出RPN
                return(ee.TokensToString(expTokens));
            }
            catch (IllegalExpressionException e)
            {
                throw new Exception("表达式:\"" + expression + "\" 编译期检查异常", e);
            }
            finally
            {
                //释放脚本变量容器
                VariableContainer.RemoveVariableDict();
            }
        }