我想解析一个目录树,找到每个*.cpp
,然后去除这些函数,给我留下嘲笑。
解析树是没问题的。掏膛更难。
我目前正在将源文件读入一个字符串并逐个字符地循环它。如果我看到一个封闭的圆括号)
而下一个非空白字符是一个左括号{
,那么我有一个函数开始。
然后我可以停止写输出,计算打开和关闭括号,直到我到达函数端的匹配结束括号}
。
代码很糟糕,而且不断变化,因此几乎不值得发布。
是否有一个优雅的解决方案,可能涉及正则表达式,它将删除文件中所有函数的主体,其余部分保持不变?
奖励,如果它可以检测功能的类型&生成一个return语句,但如果需要,我可以自己解决这个问题。
答案 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