2009-11-28 25 views
1

編輯:正則表達式/ Unix的工具插入新行在C每個函數的定義開始前++文件

indent -bap foo.cpp 

工作

有沒有簡單的方法來插入新在C++文件中的每個函數定義的開始之前插入或插入文本?

int main() { 
    return 0; 
} 
void foo() { 
} 

成爲

int main() { 
    return 0; 
} 

void foo() { 
} 
+2

...很難得到正則表達式來解析HTML,現在你想它做C? – int3 2009-11-28 21:33:10

+0

我知道這很難。我正在尋找更多的工具來完成它。改變了這個問題,使其更加清晰。 – user855 2009-11-28 21:34:58

+0

你可以做「indent -bap foo.cpp」。這工作! – user855 2009-11-28 21:36:33

回答

0

在Perl:

while(my $line = <>) 
{ 
    $line =~ s/^\}[ \t]*$/}\n/; 
    print $line; 
} 

這也將在每個命名空間的末尾插入一些(但不是結構或類,因爲他們有一個分號在結束)。你可能會更聰明,以避免這種情況,但我懷疑這可能是矯枉過正。

這也明顯不會捕獲在類聲明中內聯定義的函數。我不確定這是否是一個對您來說很重要的案例。

+0

今天,我發現Unix中的縮進程序非常有用。看到我上面的答案。 – user855 2009-11-28 21:39:00

0

使用正則表達式解析C++源代碼在某些情況下可能會失敗(根據您的源代碼/編碼風格可能不會發生 ),因此某種解析總是更好的策略。

我會先查看cproto的源代碼,看它是否可以在找到函數時添加一個空行。

更新:cproto不處理C++,但genproto呢。

相關問題