0

GLEE グラフ ライブラリと C# 言語を使用して、ソース コードから制御フロー グラフ (CFG) を描画しようとしています。問題は、私がGLEEを初めて使用することです。GLEE をすぐに使い始めるのに役立つチュートリアルまたはサンプル プログラム/プロジェクトが必要です。CFG を描画する必要があるソースの構造は次のとおりです。

begin myProcedure
  statement 1;
  statement 2;
  if(condition) then
    statement 3;
  else
    statement 4;
  end if
end myProcedure

何か案は?

4

4 に答える 4

1

制御フローグラフを答えに固定しない限り(宿題?)、グラフ化はこの問題の難しい部分ではありません。あなたの言語のソースコードから制御フローグラフを抽出することはです。

あなたの例は明らかにC#(BEGIN?)ではないので、言語パーサーを見つける必要があります。名前とタイプの解決(名前付きブロックのラベルまたは出口へのGOTOを処理するため)を実行し、グラフデータ構造としてフローグラフを構築するための何かが必要になります。GCC(間接GOTOを使用するCのような言語)のようなものを処理している場合は、間接GOTOの可能なターゲットを判別するためにポインター分析が必要になります。C#またはJavaを処理する場合は、クラスファイルからコントロールを抽出できる可能性があり(ほとんど同じ問題があります)、それをソースコードにマップする必要があります。

制御フローグラフ抽出機能を構築するための利用可能な機械(解析、名前解決、制御フローグラフ構築ライブラリ)が多数ある場合は、このようなタスクを実行するのが最も簡単です。DMS Software Reengineering Toolkitは、これらすべての基盤と、多くの言語のパーサーを提供します。C、Java、およびCOBOLの場合、DMSは、上記のすべての問題、さらにはデータフローグラフも処理する制御フローグラフの直接抽出も提供します。サンプル制御とデータフローグラフを参照してください。

于 2009-11-08T10:16:12.913 に答える
0

GLEEが2年近く利用されていないことを考えると(例が付属している有料製品であるMSAGLに置き換えられました)、C#も初めてのようです。例と第二に、サポートを得るために。現時点では、 MSAGL を99ドル (295 ドルから値下げ) で入手できるようです。時間を節約するために投資する価値があるかもしれません。

于 2009-11-08T09:44:15.223 に答える
0

http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/default.aspx

ダウンロードにはcsharpサンプルアプリが付属しています

于 2009-12-28T18:18:29.520 に答える