用于从C ++代码中提取函数的正则表达式

时间:2015-03-03 13:48:49

标签: c++ regex function visual-studio-2012

我有示例C ++代码(http://pastebin.com/6q7zs7tc),我必须从中提取函数名称以及函数所需的参数数量。到目前为止,我已经写了这个正则表达式,但它并不适合我。

(?![a-z])[^\:,>,\.]([a-z,A-Z]+[_]*[a-z,A-Z]*)+[(]

1 个答案:

答案 0 :(得分:3)

您无法使用正则表达式可靠地解析C ++。

实际上,您无法使用弱解析技术对其进行解析(请参阅Why can't C++ be parsed with a LR(1) parser?)。如果您希望从源文件中可靠地提取此信息,则需要经过时间考验的C ++解析器;见https://stackoverflow.com/a/28825789/120163

如果你不关心你的提取过程是否片状,那么你可以使用正则表达式,也许还有一些额外的hackery。启发式提取的关键问题是匹配各种括号,例如,[...],< ...> (这对班次运营商来说非常有用)和{......}。支架匹配要求您保留一堆看到的括号。在存在宏和预处理器条件的情况下,括号匹配可能会失败。