Regex para analizar declaraciones de funciones C / C ++

Necesito analizar y dividir las funciones C y C ++ en los componentes principales (tipo de retorno, nombre / clase de función y método, parámetros, etc.).

Estoy trabajando desde los encabezados o una lista donde las firmas toman la forma:

public: void __thiscall myClass :: method (int, clase myOtherClass *)

Tengo la siguiente expresión regular, que funciona para la mayoría de las funciones:

(?<expo>public\:|protected\:|private\:) (?<ret>(const )*(void|int|unsigned int|long|unsigned long|float|double|(class .*)|(enum .*))) (?<decl>__thiscall|__cdecl|__stdcall|__fastcall|__clrcall) (?<ns>.*)\:\:(?<class>(.*)((<.*>)*))\:\:(?<method>(.*)((<.*>)*))\((?<params>((.*(<.*>)?)(,)?)*)\)

Hay algunas funciones que no le gusta analizar, pero parecen coincidir con el patrón. No estoy preocupado por las funciones de coincidencia que no son miembros de una clase en este momento (puede manejar eso más adelante). La expresión se usa en un programa de C #, por lo que<label>s son para recuperar fácilmente los grupos.

Me pregunto si hay una expresión regular estándar para analizar todas las funciones, o cómo mejorar la mía para manejar las extrañas excepciones.

Respuestas a la pregunta(3)

Su respuesta a la pregunta