我在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’,使用隐式类型转换和一些宏.该接口是非常因子评分和双向的:从C调用Prolog的有PlCall(“跑”的查询,类似评估你的答案暴露)或更有条理PlQuery,多结果…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。