4

我被要求寫一個程序來構造輸入程序代碼的數據流圖,給定抽象語法樹。我在線搜索數據流圖的定義,發現在代碼段的數據流分析中發生了很多事情。我想知道爲了給定的代碼構建數據流圖,我需要畫什麼。很感謝任何形式的幫助!數據流圖構造

回答

6

給定一個AST,以產生數據流圖,必須:

  • 建立符號表,以便所使用的每個標識符被映射到它的顯式或隱式地定義的類型,也可以讓你區分一個範圍內的標識符來自另一個範圍內的相同標識符

  • 構造一個control flow graph,顯示執行程序代碼的順序和條件分支。 (用於在功能之間構建調用圖的獎勵點)

  • 確定數據如何沿着控制流程圖流動,通常使用某種data flow analysis framework,構建對變量生存期的引用,並將所有這些捕獲爲圖形。

可以使用某種外部圖形繪製包的最終圖形。

所有這些步驟都非常複雜,可能會比您想象的要多得多。我覺得你這裏沒有太多背景。通過學習標準的編譯器文本(Aho/Sethi/Ullman「編譯器」),您可以獲得這樣的背景是非常經典和非常好的。但是在開始之前,你需要這樣做,否則你不會真正理解這些步驟,並且它們會連接在一起。