私はプロローグプログラムを持っていますが、複雑な再帰的なロジックがあります。プログラムの理解を深めるために、ルールの依存関係を視覚化したいと思います。プロローグプログラムをGraphVizファイルに変換して可視化できるユーティリティがありますか?プロローグルールの依存関係を可視化する
私のすべての述語は、1つのXSBプロローグファイルに含まれています。
私はプロローグプログラムを持っていますが、複雑な再帰的なロジックがあります。プログラムの理解を深めるために、ルールの依存関係を視覚化したいと思います。プロローグプログラムをGraphVizファイルに変換して可視化できるユーティリティがありますか?プロローグルールの依存関係を可視化する
私のすべての述語は、1つのXSBプロローグファイルに含まれています。
Logtalk(12個のPrologシステムをサポート)は、クロスリファレンスダイアグラムを含むいくつかの種類の図を生成できるツールdiagrams
を提供します。また、Prologシステムに応じて、Prologコードの図を作成するために、いくつかの制限があります。たとえば:
http://logtalk.org/diagrams/swi_prolog_library_entity_diagram.svg
(ツールの古いバージョンを使用して生成された)相互参照図の例は次のとおりです。
http://logtalk.org/diagrams/pengines_module_xref_diagram.pdf
このツールは、実行可能な選択肢(それのデフォルトかもしれ出力はGraphViz .dot
ファイルです)。使用しているPrologシステムとコードの構成方法によって異なります。おそらくあなたはあなたのポストをさらに詳細に更新することができますか?
これは私が望むことをするように見えますが、 try、呼び出しグラフが不完全です。例えば、私は 'bar/4'を呼び出す述語' foo/4'を持っています。これらのノードの両方がグラフにありますが、その特定のエッジはありません。コールグラフのサイクルがサポートされていない可能性はありますか? –
@EdMcManサイクルが問題だとは思わない。不足しているエッジで問題を再現できるコードの一部を共有することは可能ですか?また、私は個人的にメールで私に連絡することができます(アドレスはLogtalkのウェブサイトにあります)。 –
@EdMcMan XSBは原子ベースのモジュールシステムを使用します。これは、他の結果の中でも、メタ述語の処理が異なることを意味します。欠落しているのは、 'bar/4'述語がmeta-calledの場合ですか? –
SWI-Prologでは、[callgraph](http://www.swi-prolog.org/pack/list?p=callgraph)を試すことができます – CapelliC