2015-12-23 120 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:如果您满意,您是否介意接受此答案,以便将问题标记为“已解决”?谢谢。 –