2016-03-28 8 views
1

私はプロローグプログラムを持っていますが、複雑な再帰的なロジックがあります。プログラムの理解を深めるために、ルールの依存関係を視覚化したいと思います。プロローグプログラムをGraphVizファイルに変換して可視化できるユーティリティがありますか?プロローグルールの依存関係を可視化する

私のすべての述語は、1つのXSBプロローグファイルに含まれています。

+2

SWI-Prologでは、[callgraph](http://www.swi-prolog.org/pack/list?p=callgraph)を試すことができます – CapelliC

答えて

2

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システムとコードの構成方法によって異なります。おそらくあなたはあなたのポストをさらに詳細に更新することができますか?

+0

これは私が望むことをするように見えますが、 try、呼び出しグラフが不完全です。例えば、私は 'bar/4'を呼び出す述語' foo/4'を持っています。これらのノードの両方がグラフにありますが、その特定のエッジはありません。コールグラフのサイクルがサポートされていない可能性はありますか? –

+0

@EdMcManサイクルが問題だとは思わない。不足しているエッジで問題を再現できるコードの一部を共有することは可能ですか?また、私は個人的にメールで私に連絡することができます(アドレスはLogtalkのウェブサイトにあります)。 –

+0

@EdMcMan XSBは原子ベースのモジュールシステムを使用します。これは、他の結果の中でも、メタ述語の処理が異なることを意味します。欠落しているのは、 'bar/4'述語がme​​ta-calledの場合ですか? –

関連する問題