我正在用clang進行程序間數據流分析。目前我使用libtooling解析源文件並調用AST訪問者。 問題是如何爲多個.c文件創建單個AST?AST與多個源文件的叮噹
我試過使用ASTImport類,但它不支持導入一些AST節點。而且,當我創建和操作CompilerIstance並在析構函數中崩潰時,我做錯了什麼。
一個非常類似的選項是ASTImportAction,但在這種情況下,我不清楚哪些命令行參數應該傳遞給ClangTool。
第三種選擇是爲每個.c文件創建ASTUnits,並在每個文件中查找定義,但不清楚如何找到用戶定義類型之間的對應關係,例如,記錄。在ASTImport中,它們使用IsStructurallyEquivalent()函數,但是它在匿名命名空間中聲明,因此我只能將所有代碼複製到我的程序中。並且它也支持不是所有的AST節點。
來自互聯網這個鏈接http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-August/023865.html似乎是最合適的,但對我來說,解決方案的技術細節不清楚。
歡迎任何建議。 非常感謝。
爲什麼要爲幾個文件生成「一個」AST?爲什麼你不能簡單地爲每個文件處理一個AST? – 2013-03-12 03:49:38
我希望有人有這樣的答案:\我現在正在嘗試做同樣的事情。 – 2016-07-13 05:47:02