我正在寻找用C++编写的便携式轻量级库的建议,这些库支持数学和业务规则表达式和评估。我知道C++没有在STL中提供这样的功能。
基本要求如下:
要计算的表达式将由数字和字符串以及表示数字或字符串的变量组成。
有些表达式需要每秒计算多次(1000到2000次),因此需要对表达式进行高性能的评估。
最初是我公司的项目,我们将所有业务规则编码为派生自基表达式类的类。问题是,随着表达式数量的增加,这种方法不能很好地扩展。
我在谷歌上搜索过,但我能找到的大多数“库”都是分流码算法的简单例子,大多数表达式解析器在同一步执行解析和评估,这使得它们不适合连续的重新评估,而且大多数只支持数字。
我要找的是:
商业规则示例:
'rule_result = (remaining_items < min_items)和( ==“沙滩球”)‘
发布于 2013-10-07 20:10:24
请参阅在C++数学表达式库中概述的这个答案。
但是,如果确实需要速度,可以考虑直接将表达式编译为C/C++,然后动态加载它们(共享对象/DLL)。
发布于 2013-10-07 20:07:19
您考虑过用野牛 + Flex生成自己的解析器吗?它使用了一个基于FSM的LALR解析器实现,它快速且易于编写,并且支持在解析表达式时对它们的评估,以及用于重复评估的AST生成。
https://stackoverflow.com/questions/19214937
复制相似问题