2016-03-07 51 views
0

有多个C++文件。我需要从这些文件中提取for循环的主体。如何提取for循环体?

有没有一种简单的方法来做到这一点可能使用grep。考虑没有嵌套for循环。

+0

为什么你需要那个? –

回答

5

不解析整个文件,答案是否定的。

for-loops由context-free grammar组成,因此无法与正则表达式匹配。

更复杂的方法是使用grep来搜索for循环的开头(for后跟可选空白后跟一个lpar),然后手动查找闭卷。

不幸的是解析C++是Turing Complete,所以除非有一些可爱的标志传递给你的编译器,否则你会被弄糟。

+0

我认为你的意思是np完整或难以完成而不是完成。 – Otomo

+0

@Otomo不,我的意思是[Turing Complete](http://blog.reverberate.org/2013/08/parsing-c-is-literally-undecidable.html),也就是说,你的解析器必须是Turing Complete来解析资源。 – erip

+0

哦...我忘了模板。但是在P中搜索for循环,不是吗?子串搜索和括号匹配也是。解析!=在文本文件中搜索。 – Otomo