gpt4 book ai didi

c++ - 在python中使用正则表达式来确定C++函数及其参数

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:07 24 4
gpt4 key购买 nike

所以我在这个 python 脚本中做错了,但它变得令人费解,我看不到我做错了什么。

我想要一个脚本遍历一个文件,找到所有的函数定义,然后拉出函数的名称、返回类型和参数,并输出一个“doxygen”风格的注释,像这样:

/******************************************************************************/
/*!
\brief
Main function for the file

\return
The exit code for the program
*/
/******************************************************************************/

但是我在尝试解析参数时用正则表达式做错了......这是到目前为止的脚本:

import re
import sys

f = open(sys.argv[1])

functions = []

for line in f:
match = re.search(r'([\w]+)\s+([\S]+)\(([\w+\s+\w+])+\)',line)
if line.find("\\fn") < 0:
if match:
returntype = match.group(1)
funcname = match.group(2)
print '/********************************************************************'
print " \\fn " + match.group()
print ''
print ' \\brief'
print ' Function description for ' + funcname
print ''
if len(match.groups()) > 2:
params = []
count = len(match.groups()) - 2
while count > 0:
matchingstring = match.group(count + 2)
if matchingstring.find("void") < 0:
params.append(matchingstring)
count -= 1
for parameter in params:
print " \\param " + parameter
print ' Description of ' + parameter
print ''
print ' \\return'
print ' ' + returntype
print '********************************************************************/'
print ''

如有任何帮助,我们将不胜感激。谢谢

最佳答案

C++ 的语法太复杂了,简单的人无法处理常用表达。您至少需要一个最小的解析器。我发现对于我不关心的受限情况一般使用 C++,但只有我自己的风格,我经常可以逃脱使用基于 flex 的分词器和简单的状态机。这在许多合法的 C++ 情况下都会失败——对于初学者来说,当然,如果有人使用预处理器修改语法;还因为<可以有不同的含义,取决于它前面的内容是否命名模板。但它经常足以胜任特定工作。

关于c++ - 在python中使用正则表达式来确定C++函数及其参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5577425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com