我有很多c代码,我想用新的样式替换旧的语法风格。例如。以下前缀“si”:
int siName;
应该变成“我”:
int iName;
但是reg-expression或其他查找/替换工具,不应该触及任何源代码注释。 任何解决方案?
答案 0 :(得分:2)
您可以尝试coccinelle。它有一点学习曲线,但它解析C代码并执行脚本中给出的转换。例如,要将函数从foo重命名为bar,脚本将如下所示(来自here):
@@
@@
-foo()
+bar()
它也可以根据正则表达式重命名变量,但我还没有找到方法。
答案 1 :(得分:1)
在vi中使用
:%s/\<Oldword\>/Newword/gc
这会询问您是否要替换您可能乐于忽视的整个单词的特定事件,如果它是评论的一部分。
答案 2 :(得分:0)
关于Coccinelle的建议,您可以使用以下表示法使用正则表达式进行匹配:
identifier foo =~ "xxx";
也就是说,foo将匹配包含xxx的任何标识符。支持PCRE正则表达式。
您还可以使用python创建新标识符:
@a@
identifier x;
@@
foo(x)
@script:python b@
x << a.x;
xx;
@@
coccinelle.xx = "%s%s" % (x,x)
@@
identifier a.x;
identifier b.xx;
@@
foo(
- x
+ xx
)
对于该计划:
int main () {
foo(one);
}
这给出了
int main () {
foo(oneone);
}
答案 3 :(得分:-1)
为什么不搜索替换“int si” - &gt; “int i”?如果您遵循某种命名约定(希望不是匈牙利语符号),那么冲突应该是最小的。