一个比较2个字符串映射的通用C++规则引擎
A generic C++ rule engine comparing 2 String Maps
我想检查是否有任何组件可以为我提供一个基本的规则引擎。引擎应该能够接收一个规则字符串,该字符串将是返回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也许是一个很好的合作伙伴。
相关文章:
- 当使用带有VS2019或VSCode的虚幻引擎4.24.2时,我如何修复这些错误的Intellisense错误
- Unity在虚幻引擎4中的"Vector3.Slerp"等效C++?
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 在虚幻引擎中删除NXOpen对象时崩溃
- 引擎节点:未定义的符号:_ZTV6Config
- Agora.io 虚幻引擎插件构建错误
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 无法在 Arch Linux 中启动虚幻引擎 4
- 在虚幻引擎中触发C++ dll的事件
- 在 C/C++ 中加载 OpenSSL 自定义引擎
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- 提高基于组件的游戏引擎的效率
- 在C++中嵌入 Mozilla 的 JavaScript 引擎
- 如何在虚幻引擎4中将char*转换为TCHAR?
- 如何将外部代码包含在虚幻引擎4 C++项目中
- 如何使用虚幻引擎"filter"多播?
- 我可以在没有Xcode的情况下在Mac上使用带有C++的虚幻引擎吗?
- 虚幻引擎C++生成演员错误
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么