C++ 通用C++;比较2个字符串映射的规则引擎

C++ 通用C++;比较2个字符串映射的规则引擎,c++,rule-engine,C++,Rule Engine,我想检查是否有任何组件可以为我提供一个基本的规则引擎。引擎应该能够接受一个规则字符串,该字符串将是基本逻辑规则,它将返回TRUE或FALSE。它应该采用字符串映射作为输入,并采用字符串映射进行比较 例1: I want to check if the Object is of type "Apple" The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple"" If Input is MAP1 ==> {

我想检查是否有任何组件可以为我提供一个基本的规则引擎。引擎应该能够接受一个规则字符串,该字符串将是基本逻辑规则,它将返回TRUE或FALSE。它应该采用字符串映射作为输入,并采用字符串映射进行比较

例1:

I want to check if the Object is of type "Apple"
The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple""
If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple) }
        MAP2 ==> NULL 
Output should be TRUE

If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Orange) }
        MAP2 ==> NULL 
Output should be FALSE
例2:

I want to check if the Object is of type "Apple" and group with size
The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple""
If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple), (SIZE->BIG) }
        MAP2 ==> {(SIZE==BIG)}
Output should be TRUE

If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple), (SIZE->SMALL) }
        MAP2 ==> {(SIZE==BIG)}
Output should be FALSE
其思想是根据逻辑规则比较两个映射并返回TRUE或FALSE。它还应该支持算术逻辑,如规则中的权重>50,因此对输入映射进行相同的检查。系统的输出可以是TRUE、FALSE、输入映射未完全填充、规则错误等


有人知道一些开源软件是否已经提供了这种功能吗?

也许答案是否定的。您的情况太具体了,所以您可能应该编写自己的组件。根据我的经验,您可以编写语法分析器boost.spirti,这可能是一个很好的合作伙伴。

那么map2包含了已经以map形式存在的附加条件吗?或者它的目的到底是什么?这听起来像是一个非常具体的问题描述。我怀疑是否有一个现有的软件会符合这个确切的规格是的。Map2包含要比较的其他变量。其思想是将两个映射与逻辑规则进行比较。我可以编写自己的解析器,但我不能完全确定是否能够处理它的所有算术和逻辑组件。只是看看是否有一些通用的东西。