gpt4 book ai didi

c++ - Linux g++ 在 C++ 中嵌入 Prolog 逻辑引擎

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:08 26 4
gpt4 key购买 nike

我在一个 C++ 程序中有一些逻辑,它不仅异常复杂,而且需要多个解决方案,而 Prolog 是理想的解决方案。它有点像防火墙配置脚本,检查操作的输入,但有时需要多个操作。

我想要的是这样的:

class PrologEngine
{
LoadLogic(const char* filename) throw PrologException; // Load a file of prolog rules, predicates facts etc in textual format. Must be callable multiple times to load AND COMPILE (for speed) prolog rule files.

std::vector<std::string> Evaluate(const char* predicate_in_string_form = "execute(input, Result)") throw PrologException; Returns a vector of matching predicates in text form.

};

它不需要回调到 C++ 的能力。

AMI Prolog 似乎可以使用,但在 Linux 上不可用。我正在尝试使用 SWI-Prolog,但只能找到 2 个示例和令人难以置信的拜占庭 API(我的意见)

任何人都可以指出一个接近我正在寻找的例子吗?

最佳答案

A C++ interface to SWI-Prolog ,那是高水平。

我是 fighting with it ,这里是桥接到 OpenGL 的示例:

PREDICATE(glEvalCoord1d, 1) {
double u = A1;
glEvalCoord1d( u );
return TRUE;
}

这段干净的代码使用隐式类型转换和一些宏隐藏了许多“bizantinism”。该接口(interface)非常坚固且双向:要从 C++ 调用 Prolog,有 PlCall(“运行”查询,类似于您在答案中公开的 Evaluate)或更结构化的 PlQuery,用于多个结果...

如果您不需要链接到 openGl,或者可以等待我希望从 SWI-Prolog 邮件列表中得到的答案,您应该评估它。

关于c++ - Linux g++ 在 C++ 中嵌入 Prolog 逻辑引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com