Regexp поймать все функции тела - PullRequest
0 голосов
/ 06 июля 2019

Я знаю, что было много вопросов по этому вопросу, но я не мог найти ответ. И я также знаю, что регулярные выражения - не самое лучшее решение для этого. Проблема в скорости. Поиск с помощью регулярных строковых методов, таких как find (), подсчитывает вхождения, способные соответствовать скорости регулярных выражений?

У меня такая проблема:

void foo() const noexcept
{
    bar();
}

Итак, у меня есть файл со многими функциями, подобными этой. Возвращаемый тип, имя функции и многое другое после него, затем фигурные скобки. Те другие вещи, как const могут быть на новой линии. Я хочу проверить каждую функцию в файле, если у нее есть определенный вызов метода, скажем, bar(). Проблема в том, что она не обязательно должна быть в первой строке функции (перед ней может быть много чего).

Вещи, которые мне нужны: имя функции и факт, что этот вызов метода существует в функции. Первая идея состояла в том, чтобы найти функцию, получить ее имя, а затем взять ее тело, и я бы пошел с другим регулярным выражением. Я нашел много вопросов по этому поводу, но они всегда отвечали на простые случаи, такие как: никаких фигурных скобок в функции, никаких вещей после имени функции ().

Я знаю, что регулярные выражения не являются лучшим решением для вложенных структур, но есть ли способ сделать это? Или я должен использовать простую итерацию строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...