Regex zum Parsen von C / C ++ - Funktionsdeklarationen
Ich muss C- und C ++ - Funktionen analysieren und in die Hauptkomponenten aufteilen (Rückgabetyp, Funktionsname / Klasse und Methode, Parameter usw.).
Ich arbeite entweder aus Kopfzeilen oder einer Liste, in der die Signaturen die Form haben:
public: void __thiscall myClass :: method (int, Klasse myOtherClass *)
Ich habe den folgenden regulären Ausdruck, der für die meisten Funktionen funktioniert:
(?<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>((.*(<.*>)?)(,)?)*)\)
Es gibt einige Funktionen, die nicht gerne analysiert werden, die jedoch dem Muster entsprechen. Ich mache mir keine Sorgen um passende Funktionen, die momentan keiner Klasse angehören (kann das später erledigen). Der Ausdruck wird in einem C # -Programm verwendet, daher wird das<label>
s dienen zum einfachen Abrufen der Gruppen.
Ich frage mich, ob es einen regulären Ausdruck gibt, der alle Funktionen analysiert, oder wie man meinen verbessert, um die ungeraden Ausnahmen zu behandeln.