C++ parsen



  • Nabend,

    ich habe nun eine Lösung für das Problem gefunden.

    http://wiki.eclipse.org/CDT/designs/Overview_of_Parsing

    Eclipse macht es wohl so, dass sie tatsächlich ein Mapping zwischen Code und AST-Nodes haben.

    Daraufhin folgt nun leider das nächste kleine Problem. C und C++ wird bei der Übersetzung in Translation Phases aufgeteilt. Hier finden schon vor dem parsen usw. Aktionen statt. Bspw. wird mit #include eingebundener Code mit rein gezogen, Makros aufgelöst usw. ... Das heisst, dass der zu parsende Code nicht gleich dem ist, den der Benutzer in seinem Editor sieht. Demzufolge müsste ich den zu parsenden Code irgendwo zwischenspeichern. Leider fällt mir hierzu keine ordentliche Lösung ein. Einerseits könnte ich den Code in eine temporäre Datei schreiben, wodurch aber die Performance sehr leidet. Andererseits könnte ich den Code direkt in den Arbeitsspeicher laden, was bei großen Dateien (vorallem wenn verschieden Header-Dateien eingebunden werden) zu übertrieben großen Overhead führt.

    Falls jemand hierfür eine Lösung hat ... ich hab immer ein offenes Ohr :).

    PS: Ich merk schon, der Thread hier ist mittlerweile schon fast mein eigener Blog :D.

    Viele Grüße

    EDIT:
    Die Lösung von Eclipse findet man im Kapitel "Scanning and Preprocessing" im letzten Absatz.


Anmelden zum Antworten