如何从c ++源中提取所有typedef和结构和联合

时间:2010-04-28 15:21:03

标签: c++ struct extract typedef unions

我继承了一个包含数百个文件的Visual Studio项目。

我想从每个 .h / .cpp文件中提取所有typedef,结构和联合,并将结果放在一个文件中。

每个typdef / struct / union应该在结果文件中的一行上。这将使排序更容易。

typdef int myType;
struct myFirstStruct {char a; int b; ...};
union Part_Number_Serial_Number_Part_2_Response_Message_Type {struct {Message_Response_Head_Type Head; Part_Num_Serial_Num_Part_2_Report_Array Part_2_Report; Message_Tail_Type Tail;}数据; BYTE byData [140];} myUnion ;
struct {bool c; int d; ...} mySecondStruct ;

我的问题是,我不知道要使用正则表达式查找什么(typedef / structs / unions的语法)。 我无法相信之前没有人这样做过(我用Google搜索并且没有找到任何内容)。

有谁知道这些的正则表达式? (注意一些是使用// others / * * /注释掉的)

或完成此任务的工具。

修改
我正在考虑自动生成源代码和/或对话框来修改使用底层typedef / struct / union的消息。我打算使用输出生成一个可以用于此原因的XML文件。

这些的源代码是用C / C ++编写的,几乎用在我的所有项目中。这些项目通常不是C / C ++。通过使用XML版本,我只需要在一个地方更新/添加typedef / struct / union,并且所有项目都能够自动生成源和/或对话框。

3 个答案:

答案 0 :(得分:3)

除了某种文档工作之外,我无法想象这个目的。如果这就是你要找的东西,我会建议doxygen。

要回答你的问题,我严重怀疑任何数量的正则表达式都足够了。你需要做的是实际解析代码。我听说有一个库用于构建编译器和C ++工具,它们可以提供解析方面,但我很遗憾地说我忘记了这个名字。我知道它在那里,所以我开始寻找它。

答案 1 :(得分:2)

您将 NOT 能够使用正则表达式完成此操作。实际执行此操作的唯一方法是获取C ++语法的词法分析器和解析器,并自己编写代码,以便在遇到您感兴趣的结构之一时将有趣的位转储到文件或数据库中。不幸的是,C ++解析相当困难。

答案 2 :(得分:1)

解析c ++很难。而不是自杀试图解析它有几个选择。

每个都将解析c ++代码并获取您之后的信息。如果你想以你所要求的格式将它转储到一个文件,那么解析它们的数据文件比解析原始c ++要好得多。

我建议您跳过所有这些,然后使用doxygen。它不会是你喜欢的格式,但你最好习惯doxygen的布局。