コード例 #1
0
        /// <summary>
        /// 计算表达式,直接获得结果
        /// </summary>
        /// <param name="expression">表达式</param>
        /// <param name="calculateUserFunction">自定义函数</param>
        /// <param name="callerContext">自定义函数上下文</param>
        /// <param name="optimize">是否进行bool运算优化,缺省为true</param>
        /// <returns>运算值</returns>
        /// <remarks>
        /// 对包含自定义函数和自定义上下文的表达式进行运算
        /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="Calculate" lang="cs" title="计算表达式" />
        /// </remarks>
        public static object Calculate(string expression, CalculateUserFunction calculateUserFunction, object callerContext, bool optimize)
        {
            object      result = null;
            ParseResult pr     = Parse(expression);

            if (pr != null)
            {
                result = GetTreeValue(pr.Tree, calculateUserFunction, callerContext, optimize);
            }

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// 获取树结点值
        /// </summary>
        /// <param name="tree">二叉树节点</param>
        /// <param name="calcUDF">用户自定义函数的委托</param>
        /// <param name="callerContext">调用者上下文</param>
        /// <param name="optimize">最优化选项</param>
        /// <returns>树结点值</returns>
        public object GetValue(ExpTreeNode tree, CalculateUserFunction calcUDF, object callerContext, bool optimize)
        {
            object result = null;

            if (tree != null)
            {
                CalculateContext calcContext = new CalculateContext();

                calcContext.Optimize              = optimize;
                calcContext.CallerContxt          = callerContext;
                calcContext.CalculateUserFunction = calcUDF;

                result = VExp(tree, calcContext);
            }

            return(result);
        }
コード例 #3
0
        /// <summary>
        /// 获取树结点值
        /// </summary>
        /// <param name="tree">二叉树节点</param>
        /// <param name="calcUDF">用户自定义函数的委托</param>
        /// <param name="callerContext">调用者上下文</param>
        /// <param name="optimize">最优化选项</param>
        /// <returns>树结点值</returns>
        public object GetValue(ExpTreeNode tree, CalculateUserFunction calcUDF, object callerContext, bool optimize)
        {
            object result = null;

            if (tree != null)
            {
                CalculateContext calcContext = new CalculateContext();

                calcContext.Optimize = optimize;
                calcContext.CallerContxt = callerContext;
                calcContext.CalculateUserFunction = calcUDF;

                result = VExp(tree, calcContext);
            }

            return result;
        }
コード例 #4
0
        public bool Evaluate(CalculateUserFunction cuf)
        {
            bool result = true;

            if (string.IsNullOrEmpty(this._Expression) == false)
            {
                try
                {
                    result = (bool)ExpressionParser.Calculate(this._Expression,
                                                              cuf,
                                                              this);
                }
                catch (System.Exception ex)
                {
                    ExceptionHelper.FalseThrow(false,
                                               Translator.Translate(WfHelper.CultureCategory, "表达式解析错误:({0})\n{1}", this._Expression, ex.Message));
                }
            }

            return(result);
        }
コード例 #5
0
		public bool Evaluate(CalculateUserFunction cuf)
		{
			bool result = true;

			if (string.IsNullOrEmpty(this._Expression) == false)
			{
				try
				{
					result = (bool)ExpressionParser.Calculate(this._Expression,
						cuf,
						this);
				}
				catch (System.Exception ex)
				{
					ExceptionHelper.FalseThrow(false,
						Translator.Translate(WfHelper.CultureCategory, "表达式解析错误:({0})\n{1}", this._Expression, ex.Message));
				}
			}

			return result;
		}
コード例 #6
0
 /// <summary>
 /// 计算表达式,直接获得结果
 /// </summary>
 /// <param name="expression">表达式</param>
 /// <param name="calculateUserFunction">自定义函数</param>
 /// <param name="callerContext">自定义函数上下文</param>
 /// <returns>运算值</returns>
 /// <remarks>
 /// 对包含自定义函数的表达式进行运算
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="Calculate" lang="cs" title="计算表达式" />
 /// </remarks>
 public static object Calculate(string expression, CalculateUserFunction calculateUserFunction, object callerContext)
 {
     return Calculate(expression, calculateUserFunction, callerContext, true);
 }
コード例 #7
0
 /// <summary>
 /// 根据语法解析完的Tree,计算出结果
 /// </summary>
 /// <param name="tree"></param>
 /// <param name="calculateUserFunction">用户自定义函数的实现</param>
 /// <param name="callerContext"></param>
 /// <param name="optimize">是否进行bool运算优化,缺省为true</param>
 /// <returns></returns>
 /// <remarks>
 /// 对含自定义函数的表达式进行解析后生成的二叉树,调用该函数进行运算得出结果值
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="parse" lang="cs" title="对解析生成的二叉树进行计算" />
 /// </remarks>
 public static object GetTreeValue(ExpTreeNode tree, CalculateUserFunction calculateUserFunction, object callerContext, bool optimize)
 {
     return ExpTreeExecutor.Instance.GetValue(tree, calculateUserFunction, callerContext, optimize);
 }
コード例 #8
0
 /// <summary>
 /// 根据语法解析完的Tree,计算出结果
 /// </summary>
 /// <param name="tree">解析生成的二叉树</param>
 /// <param name="calculateUserFunction">用户自定义函数的实现</param>
 /// <param name="callerContext">自定义函数上下文</param>
 /// <returns>运算结果</returns>
 /// <remarks>
 ///  对含自定义函数的表达式进行解析后生成的二叉树,调用该函数进行运算得出结果值
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="parse" lang="cs" title="对解析生成的二叉树进行计算" />
 /// </remarks>
 public static object GetTreeValue(ExpTreeNode tree, CalculateUserFunction calculateUserFunction, object callerContext)
 {
     return GetTreeValue(tree, calculateUserFunction, callerContext, true);
 }
コード例 #9
0
        /// <summary>
        /// 计算表达式,直接获得结果
        /// </summary>
        /// <param name="expression">表达式</param>
        /// <param name="calculateUserFunction">自定义函数</param>
        /// <param name="callerContext">自定义函数上下文</param>
        /// <param name="optimize">是否进行bool运算优化,缺省为true</param>
        /// <returns>运算值</returns>
        /// <remarks>
        /// 对包含自定义函数和自定义上下文的表达式进行运算
        /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="Calculate" lang="cs" title="计算表达式" />
        /// </remarks>
        public static object Calculate(string expression, CalculateUserFunction calculateUserFunction, object callerContext, bool optimize)
        {
            object result = null;
            ParseResult pr = Parse(expression);

            if (pr != null)
                result = GetTreeValue(pr.Tree, calculateUserFunction, callerContext, optimize);

            return result;
        }
コード例 #10
0
 /// <summary>
 /// 计算表达式,直接获得结果
 /// </summary>
 /// <param name="expression">表达式</param>
 /// <param name="calculateUserFunction">自定义函数</param>
 /// <param name="callerContext">自定义函数上下文</param>
 /// <returns>运算值</returns>
 /// <remarks>
 /// 对包含自定义函数的表达式进行运算
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="Calculate" lang="cs" title="计算表达式" />
 /// </remarks>
 public static object Calculate(string expression, CalculateUserFunction calculateUserFunction, object callerContext)
 {
     return(Calculate(expression, calculateUserFunction, callerContext, true));
 }
コード例 #11
0
 /// <summary>
 /// 根据语法解析完的Tree,计算出结果
 /// </summary>
 /// <param name="tree"></param>
 /// <param name="calculateUserFunction">用户自定义函数的实现</param>
 /// <param name="callerContext"></param>
 /// <param name="optimize">是否进行bool运算优化,缺省为true</param>
 /// <returns></returns>
 /// <remarks>
 /// 对含自定义函数的表达式进行解析后生成的二叉树,调用该函数进行运算得出结果值
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="parse" lang="cs" title="对解析生成的二叉树进行计算" />
 /// </remarks>
 public static object GetTreeValue(ExpTreeNode tree, CalculateUserFunction calculateUserFunction, object callerContext, bool optimize)
 {
     return(ExpTreeExecutor.Instance.GetValue(tree, calculateUserFunction, callerContext, optimize));
 }
コード例 #12
0
 /// <summary>
 /// 根据语法解析完的Tree,计算出结果
 /// </summary>
 /// <param name="tree">解析生成的二叉树</param>
 /// <param name="calculateUserFunction">用户自定义函数的实现</param>
 /// <param name="callerContext">自定义函数上下文</param>
 /// <returns>运算结果</returns>
 /// <remarks>
 ///  对含自定义函数的表达式进行解析后生成的二叉树,调用该函数进行运算得出结果值
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\Expression\ExpressionParserTest.cs" region="parse" lang="cs" title="对解析生成的二叉树进行计算" />
 /// </remarks>
 public static object GetTreeValue(ExpTreeNode tree, CalculateUserFunction calculateUserFunction, object callerContext)
 {
     return(GetTreeValue(tree, calculateUserFunction, callerContext, true));
 }