簡體   English   中英

使用GNU工具鏈從文件解析c ++函數頭

[英]Parsing c++ function headers from a file using GNU toolchain

我需要解析SWIG使用的.i文件中的函數頭,其中包含函數頭旁邊的各種垃圾。 (最終輸出將是函數聲明列表)
對我來說最好的選擇是使用GNU工具鏈(GCC,Binutils等)這樣做,但我可能會錯過一個簡單的方法來使用SWIG。 如果我請告訴我!
謝謝 :]

編輯:我也不知道如何使用GCC工具鏈,如果你有一個想法它會很棒。

我會嘗試從clanggccxml獲取抽象語法樹的XML轉儲。 從那里,您可以輕松提取您感興趣的函數聲明。

我們的DMS軟件再造工具包提供通用程序解析,分析和轉換功能。 它有各種語言的前端,包括C ++。

它已被用於分析和轉換非常復雜的C ++程序及其頭文件。

在“解析函數頭”之后,您不清楚將要執行的操作; 通常人們想要提取一些信息或制作另一件神器。 DMS及其C ++前端可以進行解析; 您可以配置DMS來執行自定義操作。

實際上,這通常不是下午的練習; DMS是一個復雜的野獸,因為它必須處理復雜的野獸,如C ++。 而且我希望你能為任何可以處理C ++的工具面對同樣的復雜性。 GCC工具鏈可以清楚地處理C ++,所以你可以用它來做(在相同的復雜程度)但GCC被設計成一個編譯器,恕我直言你會覺得它是一個讓它做想做的事情的斗爭。

您的“輸出函數聲明”目標尚不清楚。 你只想要功能名稱? 你想要一個功能簽名? 您想要函數所依賴的所有類型聲明嗎? 您想要函數所依賴的所有類型聲明,如果它們尚未存在於您打算使用的現有包含文件中?

從作為C頭文件的垃圾中提取函數的最佳方法是替換掉構成最臭的垃圾:宏。 你可以這樣做:

   cpp - The C Preprocessor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM