2015-02-24 23 views
0

我想分析一个目录树,找到每个*.cpp然后剔骨功能,让我嘲笑。Python化的方式来删除功能的内容

解析树是没有问题的。剔骨比较困难。

我目前正在将源文件读入一个字符串并逐个字符地遍历它。如果我看到一个封闭的圆括号),并且下一个非空白字符是开头大括号{那么我有一个函数启动。

然后我可以停止写输出,在开始和结束大括号的时候计数,直到我到达匹配的末端大括号}在函数末尾。

该代码是可怕的,越野车和不断变化,所以很难值得张贴。

是否有一个优雅的解决方案,可能涉及到正则表达式,这将删除所有功能的身体在一个文件中,留下其余不变?

如果它能够检测功能的类型&

奖金产生return语句,但我可以明白这一点我自己如果需要的话。

+1

“剔除功能”,什么程序! – 2015-02-24 11:06:37

+1

正则表达式像'{}'和'()'一样嵌套块。相关问题:http://stackoverflow.com/questions/1444961/is-there-a-good-python-library-that-c​​an-parse-c – 2015-02-24 11:07:59

+2

C++不是一种常规语言,而是一种上下文无关的语言。你需要一个适当的解析器,正则表达式会让你的麻烦变大。 – Lachezar 2015-02-24 11:09:23

回答