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

A generic C++ rule engine comparing 2 String Maps

本文关键字:C++ 引擎 规则 映射 字符串 一个 2个 比较      更新时间:2023-10-16

我想检查是否有任何组件可以为我提供一个基本的规则引擎。引擎应该能够接收一个规则字符串,该字符串将是返回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、INPUT MAP Not fully populated、Error in Rule等。

有人知道某些开源是否已经提供了这种类型的功能吗?

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