Quelle von Parsern für Programmiersprachen?

Ich entstaube ein altes Projekt von mir, das eine Reihe einfacher Metriken für große Softwareprojekte berechnet. Eine der Metriken ist die Länge von Dateien / Klassen / Methoden. Derzeit "errät" mein Code, wo Klassen- / Methodengrenzen auf einem sehr groben Algorithmus basieren (durchlaufen Sie die Datei, behalten Sie eine "aktuelle Tiefe" bei und passen Sie sie an, wenn Sie auf nicht zitierte Klammern stoßen; wenn Sie zu der Ebene zurückkehren, mit der eine Klasse oder Methode begonnen hat (Betrachten Sie es als beendet). Es gibt jedoch viele Probleme mit diesem Verfahren, und eine "einfache" Methode zum Erkennen, wann sich Ihre Tiefe geändert hat, ist nicht immer wirksam.

Damit dies genaue Ergebnisse liefert, muss ich die kanonische Methode (in jeder Sprache) zum Erkennen von Funktionsdefinitionen, Klassendefinitionen und Tiefenänderungen verwenden. Dies bedeutet, einen einfachen Parser zu schreiben, um Analysebäume zu generieren, die mindestens diese Elemente für jede Sprache enthalten, auf die mein Projekt angewendet werden soll.

Offensichtlich wurden Parser für all diese Sprachen geschrieben, daher sollte ich diese Mühe wohl nicht wiederholen müssen (auch wenn das Schreiben von Parsern Spaß macht). Gibt es ein Open-Source-Projekt, das gebrauchsfertige Parser-Bibliotheken für eine Reihe von Quellsprachen sammelt? Oder sollte ich nur ANTLR verwenden, um meine eigenen von Grund auf neu zu erstellen? (Hinweis: Ich würde das Projekt gerne in eine andere Sprache portieren, um eine große vorhandene Ressource zu nutzen. Wenn Sie also eine kennen, spielt es keine Rolle, in welcher Sprache es geschrieben ist.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage