C++ Sourcefile parsen und rekursive Aufrufe finden?



  • Hallo

    Ich möchte gern einen c++ file so parsen, dass man herausfinden kann ob rekursive Funktionen vorhanden sind. Wenn ja, dann will ich jeweils vor und nach einem rekursiven Aufruf zusätzliche Sachen in das Sourcefile eintragen.

    Ich hab schon irgendwas mit regulären Ausdrücken versucht und bin aber nicht weitergekommen.

    Kann mir da irgend jemand weiterhelfen? Wenn es geht dann möchte ich keine Programme außer PHP, Java, C++,C oder Perl verwenden.
    Eine grobe Idee für einen Algorithmus würde schon reichen!

    mfg
    Ra



  • Tjo, also ich wuerds so versuchen:
    Wenn BezeichnermitRunderklammer, und kein ';', sondern '{' dann:
    Wenn NochmalderBezeichner -> Hit

    Hmm, aber die geoeffneten Klammern muesstest du noch mitzaehlen, damit du weisst,
    wann die Funktion verlassen wird.
    Auf #defines musst du auch aufpassen, vielleicht mal den PreProzessor ueber die Datei vorher laufen lassen.



  • Das geht aber nur bei direkt rekursiven Aufrufen (eine Funktion ruft sich selbst auf).
    Wenn du auch indirekte Rekursion (F1() ruft F2() auf, F2() ruft F1() auf) erkennen willst, könntest du vielleicht die Funktionsaufrufe in einen Graphen eintragen und in diesem dann nach Zyklen suchen.


Anmelden zum Antworten