2008-11-17 154 views
6

我正在尋找一個基於Windows的庫,可用於解析一堆C文件以列出全局變量和局部變量。全局和局部變量可以使用typedef聲明。輸出(即全局和局部變量的列表)然後可以用於後處理(例如用新名稱替換變量名稱)。解析C文件

是否有這樣的圖書館?

回答

11
+0

另請參閱:http://code.google.com/p/pycparser/ – 2008-11-17 17:56:59

0

如果是純C,lexyacc是你的朋友,但你需要採取考慮C預處理 - 源文件與未展開的宏通常是不符合C語法所以解析器,其中K & [R語法寫介意,很可能會失敗。

如果您決定解析預處理器的輸出,請準備好您的解析器將因特定編譯器的「擴展」而失敗,因爲很可能標準庫頭使用它們。至少在GCC的情況下。

我曾與GCC合作過,並最終決定用不同的方法實現我的目標。如果您只需要更改變量的名稱,正則表達式將會很好,並且不需要構建完整的解析器,恕我直言。如果您的目標僅僅是收集數據,那麼數據的最終來源就是調試信息。有許多方法可以從二進制文件中獲取調試信息 - 對於使用DWARF的ELF可執行文件,存在libdwarf,對於Windows-land(COFF?)應該也是如此。也許你可以使用一些現有的工具來獲得關於二進制文件的調試信息 - 再一次,我對Windows一無所知,你需要調查。

3

解析C是很多比看起來難,當你考慮到 考慮不同的方言,預處理指令, 解析時需要類型信息等 告訴你「只是使用lex和yacc」的人有 顯然沒有做過生產C語法分析器。

一個工具,可以做到這一點,是我們C front end

它解決了上述所有問題。

完成後,它具有完整的可導航符號表 ,其中包含所有標識符和相應的類型信息。 列出全局和局部變量對此很重要。

我是語義設計背後的架構師。