2012-04-01 9 views
2

私はドメイン固有の言語を持っており、その言語の静的解析を行い、グラフを作成したいと考えています。誰かがこれを実行する際に行動計画を推薦できるかどうかを評価してください。ドメイン固有言語の静的解析の実行

ドメイン言語

{ 
    run_and_branch(ULSDCompHash) 
    then 
    { 
     run(DownComponent_Reset); 
     run(DownComponent_Reset2); 

    } 
    else 
    { 
     run(ULSD_EndOfTest); 
    } 
    run(ULSD_EndOfTest2); 


}, closed,"EMCSETUP","" 

  • 実行があれば、条件パスを気にしたり
  • run_and_branchを失敗しない言語の詳細については、ifのようなものです - 渡す場合や、他の失敗した種類のもの
  • ()内の値は名前ノードの

予想される出力は、(ファイル名を指定して実行グラフ上のDFS場合)

ULSDCompHash -> DownComponent_Reset -> DownComponent_Reset2 -> ULSD_EndOfTest2 
ULSDCompHash -> ULSD_EndOfTest -> ULSD_EndOfTest2 
+0

正確にどのようなグラフを作成したいですか?制御フローグラフ?プレーンテキスト表現の成果物であるのか、実際には2つのコードパスで発生するものに対して別々のノードが存在するのでしょうか? – delnan

+1

すべての可能なパスを得るためにDFSのトラバーサルを行うことができるように、私が感じるコントロールフローグラフが適切です。グラフはプレーンテキスト表現を模倣する必要があります。したがって、私の例では、DownComponent_Resetに1つのアウトエッジを持ち、もう1つのアウトエッジにULSD_EndofTestという単一のノードULSDCompHashがあります。 – tabiul

+0

もっと多くのグーグル・グーグルを行った後、最初のステップはソース・コードのASTツリーを作成し、制御フローグラフ。 ASTをCFGに変換する方法についてのステップバイステップの説明のような良いソースは見つかりません – tabiul

答えて

1

ほとんどのコンパイラの本は、制御フローグラフを生成する方法のかなり詳細な説明が含まれています。

私はJavaプログラムのためにSO answer as to how to crawl an AST to produce a CFGを提供しましたが、答えはかなり一般的です。

+0

ありがとうございます。確認してみるよ – tabiul

関連する問題