2014-02-21 26 views
0

我能夠將C代碼轉換爲位代碼,然後使用LLVM轉換爲CallGraph。現在我需要爲各種度量目的執行解析。如何進行?Parser for Java中的CallGraph?

調用圖如下所示:

Call graph node <<null function>><<0x949dc90>> #uses=0 
    CS<0x0> calls function 'main' 
    CS<0x0> calls function 'printf' 

Call graph node for function: 'printf'<<0x949d220>> #uses=2 
    CS<0x0> calls external node 

Call graph node for function: 'main'<<0x94ac7f8>> #uses=1 
    CS<0x949e3a0> calls function 'printf' 
+0

你有任何解析經驗嗎?你試過什麼了? BTW只是好奇,什麼是位碼? –

+0

http://llvm.org/docs/BitCodeFormat.html – cykopath

+0

我只關心我在帖子中顯示的CallGraph輸出。 BitCode只是我需要生成的中間步驟來獲取該調用圖。我在Python,XML解析方面有一些經驗。沒有在Java中。 – cykopath

回答

0

如果你沒有在Java中任何以往的經驗,這可能是一個艱鉅的任務。

您首先需要建立調用圖的格式。然後使用單詞邊界,正則表達式或解析器生成器(如antlr)進行標記。

除此之外,問題對於StackOverflow上的完整答案來說太大了。嘗試研究這些選項,並在遇到問題時詢問您選擇的具體問題。

+0

我將從Antlr開始,看看我能做些什麼。謝謝 – cykopath

+0

你可以推薦Antlr的任何初學者教程。我只能找到複雜的教程。 – cykopath