2017-06-22 5 views
0

私はJgraphtライブラリの助けを借りている2つのプログラムがガンマ同型かどうかを調べようとしています。さて、プログラムのプログラム依存グラフを生成し、それをグラフオブジェクトとして捕捉する必要があります。 frama-cを使ってpdgを生成することができます。私はframa-c -pdg -pdg-dot graph -pdg-print program.cを使ってプログラムのpdgを生成し、出力はドット形式です。私はグラフを得るためにドットフォーマットを解析する必要があります。代わりに、ドットファイルの代わりにグラフオブジェクトのようなグラフデータ構造を取得することができます。Frama-cはドットファイルの代わりにグラフオブジェクトを生成する

答えて

2

技術的に言えば、Frama-CのDb.Pdgモジュールでエクスポートされた関数で必要な情報を抽出できるはずです。特に、 Db.Pdg.iter_nodesはあなたが上PDGによって生成されたすべてのノード(のためのすべてのの機能を)ITERすることができ、および機能のDb.Pdg.direct_*dpds家族は、それらのすべてまたはいずれかを、あなたに与えられたノードの直接の子のリストを取得します特定の種類のものだけです。詳細については、Frama-Cのソース内のdb.mliファイルを参照してください。

しかし、私はあなたになぜそれをしたいのかと尋ねる必要があります。私の検索エンジンが私にとっては、JGraphTはJavaライブラリであり、最後に私がチェックしたところではOCaml/Javaバインディングは実装するのが難しくありませんでした。さらに、DOTImporterJGraphTクラスは、pdgの出力を多かれ少なかれ直接使用できるようにする必要があります。

関連する問題