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