2015-12-23 161 views
1

我有一個c文件,裏面有很多函數。我想分離出每個函數,並將它們全部放在一個List(讓我們說,list_code)中,並且還可以得到不同List中的每個函數的名稱(可以說,fun_code)。 E.g解析c中的c/C++/c#文件#

比方說,一個C文件下面的代碼:

void main() 
{ 
//some code here 
} 

int count (int abc) 
{ 
///some code here 
} 

int adder(int def) 
{ 
///some code here 
} 

我想下面的兩個列表list_codefun_codelist_code的元件將有三個元件的列表,包含,

  1. 無效的主要() { //一些代碼在這裏 }
  2. 詮釋計數(INT ABC) { ///這裏一些代碼 }
  3. INT加法器(INT DEF) { ///這裏的一些代碼 }

fun_code的元件將有三個元件的列表,包含,

  1. 無效的主要()
  2. 詮釋計數(INT ABC)
  3. INT加法器(INT DEF)

我已經編寫了一個代碼,用於跟蹤大括號(「{」和「}」)並分離出完整的函數。但如果評論包含大括號,則會失敗。 此外,我無法以這種方式獲得函數名稱。

請讓我知道我該如何做到這一點。任何圖書館或內置函數都會有很大的幫助,因爲它會照顧到所有小的細節,如評論,新行和類似的情景。

+0

這不是C#,但鏘可能會幫助有了這個。 –

回答

8

libclang可能是解析C++最簡單易用和最成熟的選項。

有幾個可用的C#包裝 - 這裏有一個快速谷歌搜索的一些結果:

+0

這看起來像完美的解決方案。但我是C#的初學者。你能指導我如何在這裏使用代碼! https://github.com/SimonRichards/clang-sharp –

+0

不,您需要在將它用於您的項目之前學習該語言。我建議閱讀[C#Step By Step](http://www.amazon.com/Microsoft-Visual-2013-Step-Developer/dp/073568183X),然後獲取最新的C#標準。 –

+0

@MuhammadNouman:如果您滿意,您是否介意接受此答案,以便將問題標記爲「已解決」?謝謝。 –