2016-03-07 27 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