kum*_*ran 5 c++ rule-engine clips
我正在开发一个相当复杂的规则引擎。因此,我决定借助任何 GNU 规则引擎并将其与我的应用程序集成。我发现CLIPS是一个很好的规则引擎。
现在,我的应用程序是用 C++ 编写的,我想要一个示例方式(Hello world 类型的程序),从中我可以学习如何将 .clp 规则引擎集成到我的 C++ 应用程序中。
问题
更新1:
您正在开发什么样的应用程序?
简而言之,我正在开发一个基于过滤器匹配的计数器。用户可以递增(NetworkID = XYZ,增量计数 = 7),(NetworkID = MNO,增量计数 = 934)...等。现在您收到 NetworkID = X * 的查询,然后我需要提供来自 XAA 的所有计数。 ..XZZ。它是在跨不同节点(分布式环境)的多进程、多线程中更新的。
为什么里面有专家系统规则,什么样的规则?
现在,我的平台/应用程序使用 C++(用户在其中进行递增/递减/查询)。现在我想使用规则引擎来帮助我完成这些工作。用 C/C++ 代码编写逻辑似乎会消耗更多所需的资源。
PS:与递增/递减/查询相关的关键代码均在优化的c代码中。一些包装器采用 C++ 代码。因此,我正在检查规则引擎来为我执行此操作,可以从我的平台/应用程序(在 C/C++ 代码中)调用它。
将 CLIPS 与 C++ 集成的最简单方法是使用编译器选项(如果可用)将 C 代码编译为 C++ 代码。来自高级编程指南 ( http://clipsrules.sourceforge.net/documentation/v624/apg.htm ) 的第 1.2 节“C++ 兼容性”:
\n\n\n\n\n现在可以使用 ANSI C 或\n C++ 编译器来编译 CLIPS 源代码。至少,非 ANSI C 编译器必须支持完整的 ANSI\n 风格函数原型和 void 数据类型才能编译\n CLIPS。如果您想从 C++ 程序进行 CLIPS API 调用,通常通过将 CLIPS 源文件编译为 C++ 文件来进行集成会更容易。这样就无需在 C++ 程序中为 CLIPS API 进行 extern "C"\n 声明。某些编程环境允许您根据文件扩展名指定是否应将文件编译为 C 或 C++ 代码。其他环境允许您显式指定要使用的编译器,而不管扩展名如何(例如,在 gcc 中,选项 \xe2\x80\x9c-x c++\xe2\x80\x9d 将\n 将 .c 文件编译为 C++ 文件)。在某些环境中,使用相同的编译器来编译 C 和 C++ 程序,并且编译器使用文件扩展名来确定文件是否应编译为 C 或 C++ 程序。在这种情况下,将 CLIPS 源文件的 .c\n 扩展名更改为 .cpp 通常允许将源\n 编译为 C++ 程序。
\n
或者,您可以尝试使用 Clipsmm ( http://sourceforge.net/projects/clipsmm/ ) 之类的东西,它是 CLIPS 库的 C++ 接口。
\n 归档时间: |
|
查看次数: |
4588 次 |
最近记录: |