2

我的任务是编写一个工具,为给定的 Prolog 程序和查询可视化 SLD 树。因此,由于我不想自己实现整个 Prolog 解析器和解释器,所以我正在寻找为我生成该树的库或程序,因此我只需要执行可视化部分。最好的情况是 C++ 库,但任何通用语言都可以(或将树输出为 xml 文档或类似文件的程序)到目前为止我找不到任何东西,所以我把希望寄托在你们身上。

最好的问候 Uzaku

4

1 回答 1

4

您可以在 Prolog 中编写一个 Prolog 元解释器,它将树的表示生成到文件中,然后将其用作工具的输入。最简单的元解释器是这个,它只处理连词(逗号运算符)

prolog(true) :- !.
prolog((X,Y)) :- !, prolog(X), prolog(Y).
prolog(H) :- clause(H,Body), prolog(Body).

您应该为其他语言结构添加更多子句,例如析取(分号),并在需要时支持剪切。为了生成树,您还需要在谓词中包含一个或多个参数。而且你应该注意无限的树,限制树的深度是个好主意。最后,clause/2在某些 Prolog 系统中使用 需要某种预先声明您想要访问其子句的谓词。

更新:不需要nonvar/1第 3 个子句。

于 2015-04-26T18:24:41.640 回答