Pythonic方法删除函数的内容

时间:2015-02-24 11:03:37

标签: python regex python-3.x mocking

我想解析一个目录树,找到每个*.cpp,然后去除这些函数,给我留下嘲笑。

解析树是没问题的。掏膛更难。

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

然后我可以停止写输出,计算打开和关闭括号,直到我到达函数端的匹配结束括号}

代码很糟糕,而且不断变化,因此几乎不值得发布。

是否有一个优雅的解决方案,可能涉及正则表达式,它将删除文件中所有函数的主体,其余部分保持不变?

奖励,如果它可以检测功能的类型&生成一个return语句,但如果需要,我可以自己解决这个问题。

1 个答案:

答案 0 :(得分:2)

你可以使用解析器,clang api提供它,你有python绑定:https://github.com/llvm-mirror/clang/tree/master/bindings/python

本文可以为您提供有关如何使用它的一些见解:http://szelei.me/code-generator/

还有一些包装,所以可以让你的工作更容易,比如这个:https://github.com/sztomi/cmonster