Я знаю, что было много вопросов по этому вопросу, но я не мог найти ответ. И я также знаю, что регулярные выражения - не самое лучшее решение для этого. Проблема в скорости. Поиск с помощью регулярных строковых методов, таких как find (), подсчитывает вхождения, способные соответствовать скорости регулярных выражений?
У меня такая проблема:
void foo() const noexcept
{
bar();
}
Итак, у меня есть файл со многими функциями, подобными этой. Возвращаемый тип, имя функции и многое другое после него, затем фигурные скобки. Те другие вещи, как const
могут быть на новой линии. Я хочу проверить каждую функцию в файле, если у нее есть определенный вызов метода, скажем, bar()
. Проблема в том, что она не обязательно должна быть в первой строке функции (перед ней может быть много чего).
Вещи, которые мне нужны: имя функции и факт, что этот вызов метода существует в функции. Первая идея состояла в том, чтобы найти функцию, получить ее имя, а затем взять ее тело, и я бы пошел с другим регулярным выражением. Я нашел много вопросов по этому поводу, но они всегда отвечали на простые случаи, такие как: никаких фигурных скобок в функции, никаких вещей после имени функции ().
Я знаю, что регулярные выражения не являются лучшим решением для вложенных структур, но есть ли способ сделать это? Или я должен использовать простую итерацию строки?