Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除函数的python方法';内容_Python_Regex_Python 3.x_Mocking - Fatal编程技术网

删除函数的python方法';内容

删除函数的python方法';内容,python,regex,python-3.x,mocking,Python,Regex,Python 3.x,Mocking,我想解析一个目录树,找到每个*.cpp,然后取出函数,留下模拟 解析树没有问题。剜除内脏更困难 我目前正在将源文件读入一个字符串,并逐字符循环。如果我看到一个封闭的圆括号),下一个非空白字符是一个大括号{,那么我有一个函数start 然后,我可以停止写入输出,一边计算开始和结束大括号,直到到达函数末尾匹配的结束大括号} 代码很可怕,有缺陷,而且不断变化,因此几乎不值得发布 是否有一个优雅的解决方案,可能涉及regex,它将删除文件中所有函数的主体,而保持其余函数不变 如果它可以检测函数的类型并生

我想解析一个目录树,找到每个
*.cpp
,然后取出函数,留下模拟

解析树没有问题。剜除内脏更困难

我目前正在将源文件读入一个字符串,并逐字符循环。如果我看到一个封闭的圆括号
,下一个非空白字符是一个大括号
{
,那么我有一个函数start

然后,我可以停止写入输出,一边计算开始和结束大括号,直到到达函数末尾匹配的结束大括号
}

代码很可怕,有缺陷,而且不断变化,因此几乎不值得发布

是否有一个优雅的解决方案,可能涉及regex,它将删除文件中所有函数的主体,而保持其余函数不变


如果它可以检测函数的类型并生成返回语句,那么它会带来额外的好处,但如果需要的话,我可以自己解决这个问题。

您可以使用解析器,clang api提供了解析器,并且您有python绑定:

本文可以让您了解如何使用它:


还有一些包装器可以让你的工作更轻松,比如这个:

“取出功能”,多好的程序啊!正则表达式在嵌套的块(如
{}
()
)中起作用。相关问题:C++不是一种规则语言,而是一种上下文无关语言。你需要一个合适的解析器,正则表达式会让你的麻烦更大。如果你使用处理递归的新regex模块,这是可能的(而且设计良好的模式速度很快)。但是你不能用re模块。你是否搜索过C++解析器模块已经存在,或者你尝试过Listar模块吗?然而,改进您已经编写的代码可能是解决问题的方法。@Lucho:避免这种情况很容易,因为避免了字符串中包含的内容。你所需要的只是在之前匹配它们。