我正在研究Java编写的Prolog系统,Prova。 https://prova.ws/
但是它的实现,Prolog编译器还是Prolog解释器还不清楚?我阅读了手册,但没有找到答案。
答案 0 :(得分:0)
有传言说Prova是以Mandarax为基础的。最新的 版本似乎与SWI-Prolog 7的方向相同, 即它支持dicts和点符号。另见:
http://prova.ws/confluence/display/REWRITEDEV/Prova+maps+for+defining+slotted+terms
最初的Mandarax似乎是一名翻译,而且 在Prova的用户手册中,我们找到了一个自我的句子 声明它是Prolog解释器,但没有提示编译。
但似乎有更新版本的Mandarax(1.1.0) 某种编译器,但也许Prova已经扩展了 在编译器到达之前,它仍然是一个插件。
因此虽然它自称为Prolog解释器,但它最多 可能不是ISO Prolog系统,因为例如缺少op / 3。 我猜它使用了一个带有一些硬连线运算符的标记器和一个 解析器与一些硬连线运算符表达式。 (*)
然而,它可能会提供一些好处,但从中可以看出 文档和二进制文件大小,它们可能不是很多。哪一个 可以通过直接嵌入Java的能力来补偿 点符号调用:http://prova.ws/confluence/display/REWRITEDEV/Calling+Java+from+Prova+rulebases
再见
(*) Prova语法甚至到目前为止,它需要最终用户 写入fail()而不是失败。语法变体也是 发现在新的SWI-Prolog 7中,虽然没有同样的激烈 对最终用户的影响,他/她将不再被允许使用 原子作为目标。