10

C++我正在寻找支持数学和业务规则表达式和评估的可移植轻量级库的建议。我了解C++STL.

基本要求如下:

要评估的表达式将由数字和字符串以及表示数字或字符串的变量组成。

一些表达式预计每秒会被评估多次(1000-2000 次),因此需要对表达式进行高性能评估。

最初是我公司的项目,我们将所有业务规则编码为派生自基本表达式类的类。问题是随着表达式数量的增加,这种方法不能很好地扩展。

我搜索了一下,但我能找到的大多数“库”都是调车场算法的非常简单的例子,大多数表达式解析器在同一步骤中执行解析和评估,这使得它们不适合连续重新评估,并且大多数只支持数字。

我在找什么:

  1. 用 C++(C++03 或 C++11)编写的库
  2. 稳定/值得生产
  3. 快速评估
  4. 便携(win32/linux)
  5. 关于构建高性能业务规则引擎的任何建议。

示例业务规则:

'rule_result = (remaining_items < min_items) and (item == "沙滩球")'

4

2 回答 2

13

请参阅此答案中概述的C++ 数学表达式库

但是,如果您真的想要速度,请考虑将表达式直接编译为 C/C++,然后动态加载它们(共享对象/DLL)。

于 2013-10-07T20:10:24.943 回答
1

您是否考虑过使用Bison + Flex生成自己的解析器?它使用基于 FSM 的 LALR 解析器实现,该实现速度快且易于编写,并支持在解析表达式时对表达式求值,以及为重复求值生成 AST。

于 2013-10-07T20:07:19.770 回答