我想分析一个目录树,找到每个*.cpp
然后剔骨功能,让我嘲笑。Python化的方式来删除功能的内容
解析树是没有问题的。剔骨比较困难。
我目前正在将源文件读入一个字符串并逐个字符地遍历它。如果我看到一个封闭的圆括号)
,并且下一个非空白字符是开头大括号{
那么我有一个函数启动。
然后我可以停止写输出,在开始和结束大括号的时候计数,直到我到达匹配的末端大括号}
在函数末尾。
该代码是可怕的,越野车和不断变化,所以很难值得张贴。
是否有一个优雅的解决方案,可能涉及到正则表达式,这将删除所有功能的身体在一个文件中,留下其余不变?
如果它能够检测功能的类型&奖金产生return语句,但我可以明白这一点我自己如果需要的话。
“剔除功能”,什么程序! – 2015-02-24 11:06:37
正则表达式像'{}'和'()'一样嵌套块。相关问题:http://stackoverflow.com/questions/1444961/is-there-a-good-python-library-that-can-parse-c – 2015-02-24 11:07:59
C++不是一种常规语言,而是一种上下文无关的语言。你需要一个适当的解析器,正则表达式会让你的麻烦变大。 – Lachezar 2015-02-24 11:09:23