import re

def parse_function_def(func_def): # 正则表达式匹配函数定义 pattern = r'(\w+)\s+(\w+)\s*(([^)]*))' match = re.match(pattern, func_def)

# 提取函数名
func_name = match.group(1)

# 提取参数
params_str = match.group(3)
params_pattern = r'(\w+)\s+(\w+)'
params = re.findall(params_pattern, params_str)

# 提取参数类型和参数名
param_types = []
param_names = []
for param in params:
    param_types.append(param[0])
    param_names.append(param[1])

return func_name, param_types, param_names

测试代码

func_def1 = "CUresult cuModuleGetFunction ( CUfunction* hfunc, CUmodule hmod, const char* name );" func_def2 = "CUresult cuOccupancyMaxActiveBlocksPerMultiprocessor ( int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize );" func_def3 = "CUresult cuGetErrorString ( CUresult error, const char** pStr );" func_def4 = "CUresult cuLaunchKernel ( CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams, void** extra );" func_def5 = "CUresult cuCtxGetCurrent ( CUcontext* pctx );" func_def6 = "CUresult cuModuleUnload ( CUmodule hmod );" func_def7 = "CUresult cuDevicePrimaryCtxGetState ( CUdevice dev, unsigned int* flags, int* active );"

print(parse_function_def(func_def1)) print(parse_function_def(func_def2)) print(parse_function_def(func_def3)) print(parse_function_def(func_def4)) print(parse_function_def(func_def5)) print(parse_function_def(func_def6)) print(parse_function_def(func_def7)

编写一段python代码提取函数定义中的函数名参数类型参数名测试用例如下:CUresult cuModuleGetFunction CUfunction hfunc CUmodule hmod const char name ;CUresult cuOccupancyMaxActiveBlocksPerMultiprocessor int numBlocks CUfunction func i

原文地址: http://www.cveoy.top/t/topic/fh5X 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录