可视化prolog规则依赖关系

可视化prolog规则依赖关系,prolog,visualization,graphviz,Prolog,Visualization,Graphviz,我有一个prolog程序,它有一些相当复杂的递归逻辑。我想可视化规则的依赖性,以便更好地理解程序。是否有一些实用程序可以将prolog程序转换为GraphViz文件,以便可视化 我的所有谓词都包含在一个XSB prolog文件中。Logtalk(支持12个prolog系统)提供了一个图表工具,可以生成多种图表,包括交叉引用图表。根据Prolog系统的不同,它还可以使用一些限制来创建Prolog代码的图表。例如: 交叉引用图(使用旧版本的工具生成)的示例如下: 在您的情况下,此工具可能是一个可

我有一个prolog程序,它有一些相当复杂的递归逻辑。我想可视化规则的依赖性,以便更好地理解程序。是否有一些实用程序可以将prolog程序转换为GraphViz文件,以便可视化

我的所有谓词都包含在一个XSB prolog文件中。

Logtalk(支持12个prolog系统)提供了一个
图表
工具,可以生成多种图表,包括交叉引用图表。根据Prolog系统的不同,它还可以使用一些限制来创建Prolog代码的图表。例如:

交叉引用图(使用旧版本的工具生成)的示例如下:


在您的情况下,此工具可能是一个可行的选项(它的默认输出是GraphViz
.dot
文件),具体取决于您使用的Prolog系统以及如何组织代码。也许你可以用更多的细节更新你的帖子?

在SWI Prolog中,你可以试试看,看起来这应该可以满足我的要求,但我试了一下,调用图不完整。例如,我有一个谓词
foo/4
,它调用
bar/4
。这两个节点都在图中,但缺少特定的边。调用图中的周期是否可能不受支持?@EdMcMan我认为周期不是问题所在。您是否可以共享部分代码,这些代码仍然允许您使用缺失的边缘重现问题?或者,可以通过邮件私下联系我(地址可以在Logtalk网站上找到)。@EdMcMan XSB使用基于atom的模块系统,这意味着,除其他后果外,元谓词的处理方式也不同。是否缺少的边是用于元调用
bar/4
谓词的情况?我将尝试简化为一个最小的示例
foo/4
没有元调用
bar/4
,但程序中的其他地方有元调用。本周在Logtalk git版本中修复了一个最有可能解释缺失边缘的错误。