Чтобы сделать это надежно, вам нужно проанализировать код C или C ++, а затем извлечь определения функций из AST, который создает анализатор.
C довольно легко разобрать. Как упоминает pavpanchekha , синтаксический анализатор PLY поставляется с синтаксическим анализатором C и использовался для создания следующих соответствующих проектов:
Синтаксический анализ кода C ++ более сложен .. "Есть ли хорошая библиотека Python, которая может анализировать C ++" должен помочь:
C ++, как известно, трудно анализировать. Большинство людей, которые пытаются сделать это правильно, в конечном итоге разбирают компилятор. Фактически, именно поэтому (частично) началась LLVM: Apple нужен был способ, которым они могли бы анализировать C ++ для использования в XCode, который соответствовал бы способу, которым компилятор анализировал его.
Именно поэтому существуют проекты, такие как GCC_XML , которые можно объединить с библиотекой Python xml.
Наконец, если ваш код вообще не должен быть надежным, вы можете запустить код через переформататор кода, например отступ (для кода C), чтобы выровнять вещи, а затем использовать обычные выражения, соответствующие определению функции. Да, это плохая, хакерская, склонная к ошибкам идея, и вы, вероятно, найдете определения функций в многострочных комментариях и тому подобном, но это может сработать достаточно хорошо.