Regex для добавления венгерской нотации

Я разбираю .h а также .cpp файлы и мне нужно найти / заменить все не венгерские нотационные переменные их венгерскими эквивалентами. "Ага, почему?!" ты спрашиваешь? Мой работодатель требует венгерской записи ", - сказал Нуфф.

Давайте просто иметь дело с 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 хоть.

Заранее спасибо!

1 ответ

Нет.

Более конкретно, вы пытаетесь скомпилировать программу с использованием регулярных выражений. Это не работает таким образом.

Например, ваша однострочная уже забывает о параметрах функции и не может анализировать определенный пользователем тип (struct, enum). Не говоря уже о том, что.cpp предлагает C++ предлагать классы.

Кроме того, что происходит с методом / функцией / встроенными комментариями?

Мой совет - найти где-нибудь компилятор грамматики и передать ему грамматику C++, поэтому для каждого определения вы получите значение и тип, записанные в файл. Тогда вы можете повеселиться с ним. Вы также можете попробовать писать каждый раз, когда каждая переменная используется, чтобы впоследствии автоматически заменить их.

Все же гораздо сложнее, чем простое регулярное выражение, но это простое регулярное выражение потерпит неудачу настолько, что в конце вы будете изменять код вручную.

Как положительный момент, возможно, когда вы скажете своему боссу, сколько стоит этот шанс, может, он подумает об этом лучше.

Другие вопросы по тегам