0

我正在解析.h.cpp文件,我需要用它们的匈牙利等价物查找/替换所有非匈牙利标记的变量。“啊,为什么?!” 你问?我的雇主需要匈牙利符号,'nuff 说。

让我们暂时处理一下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();

理想情况下,我只想打一个单线电话。s///

为了增加挑战,如果有人可以在使用 进行“类型检查”之后更改此变量的所有实例int,那将为您赢得一些布朗尼积分。

这是我到目前为止所拥有的:

s/(int\s+)(?!n)(\w+)/$1n\u$2/g;

int nrow这与类似的东西不匹配int number

提前致谢!

4

1 回答 1

8

不。

更明确地说,您正在尝试使用正则表达式编译程序。这行不通

例如,您的一行代码已经忘记了函数参数,它无法解析任何用户定义的类型(结构、枚举)。更不用说 .cpp 建议 C++ 建议类。

另外,方法/函数/内联注释会发生什么?

我的建议是在某个地方找到一个语法编译器并将其传递给 c++ 语法,因此对于每个定义,您都会将值和类型写入文件。然后你可以享受正则表达式的乐趣。您也可以尝试在每次使用每个变量时编写,以便以后自动替换它们。

然而,它比一个简单的正则表达式复杂得多,但那个简单的正则表达式会失败很多,以至于最后你将手动更改代码。

作为一个积极的提示,也许当你告诉你的老板钱币确实要花多少钱时,他可能会考虑得更好。

于 2011-08-02T21:25:18.160 回答