我正在解析.h
和.cpp
个文件,我需要使用Hungarian equivalents查找/替换所有非匈牙利语标注变量。 “啊,为什么?!”你问?我的雇主要求匈牙利语,'努夫说。
让我们暂时处理ints
。
鉴于其中任何一种情况......
int row; // no hungarian prefix
int nrow(9); // incorrect capitalization
int number; // hmm...
int nnumber = getValue(); // uh oh!
他们应该改为:
int nRow;
int nRow(9); // obviously ctor args and assignments shouldn't change
int nNumber;
int nNumber = getValue();
我正在为一次单线调用{+ 1}}进行理想拍摄。
对于额外的挑战,如果有人可以在使用s///
进行“类型检查”之后更改此变量的所有实例,那么这将为您赢得一些布朗尼点。
这是我到目前为止所拥有的:
int
但这与s/(int\s+)(?!n)(\w+)/$1n\u$2/g;
或int nrow
之类的内容不匹配。
提前致谢!
答案 0 :(得分:8)
没有
更明确地说,您正在尝试使用正则表达式编译程序。 This does not work that way
例如,您的单行已经忘记了函数参数,并且它无法解析任何用户定义的类型(struct,enum)。更不用说.cpp建议C ++建议类。
此外,方法/功能/内联注释会发生什么?
我的建议是找到一个语法编译器并将其传递给c ++语法,因此对于每个定义,您都会获得写入文件的值和类型。然后你可以使用它获得正则表达式的乐趣。每次使用每个变量时,您都可以尝试编写,以便以后自动替换它们。
然而,简单的正则表达式要复杂得多,但是那个简单的正则表达式会失败太多,以至于你最终会手动更改代码。
作为一个积极的方面,也许当你告诉你的老板这个角落花多少钱时,他可能会更好地思考它。