2013-04-20 7 views
6

Ich bin ein Neuling für LLVM. Meine grundlegende Notwendigkeit besteht darin, die Fortran-Codes zu analysieren. Wenn man sich die LLVM-Webseite ansieht, scheint es, dass LLVM als eine Bibliothek zum Parsen von Codes verwendet werden kann. Also könnte ich damit Fortran-Codes analysieren und Informationen über die Codes (AST?) Extrahieren?Kann ich LLVM zum Analysieren von Fortran verwenden?

+1

LLVM hat * nichts * mit Parsing zu tun. Sie können einen Parser aus F2C oder einer dieser Antlr-Fortran-Grammatiken wiederverwenden. Oder schreiben Sie einfach Ihren eigenen Parser, Fortran ist ziemlich trivial. –

+0

@ SK-logic Ich habe angefangen, einen Fortran-Parser mit Treetop für meinen Zweck geschrieben. –

Antwort

10

LLVM ist ein Compiler-Backend. Das einzige, was es zu parsen versteht, ist LLVM IR - eine Zwischensprache, die entworfen wurde, um von Programmiersprachen-Frontends ausgesendet zu werden. Das offizielle Frontend für LLVM ist Clang, das mit C, C++ und ObjC umgehen kann. Wenn Sie an anderen Sprachen interessiert sind, gibt es auch DragonEgg, ein LLVM-Plugin für gcc. Es verwendet das Front-End von gcc und LLVM als Backend, damit es alles parsen kann, was gcc versteht zu parsen. Ich weiß, dass daran gearbeitet wird, den korrekten Code von Ada und Fortran zu generieren. Hier ist ein Auszug aus seiner Seite:

Aktuelle Stand

  • funktioniert am besten mit gcc-4.6.
  • Fortran funktioniert sehr gut. Ada, C und C++ funktionieren auch gut. Ada funktioniert schlecht mit gcc-4.7.
  • Es kann eine angemessene Menge von Obj-C, Obj-C++ und Go kompilieren.
  • Es kann einfache Java-Programme kompilieren, aber sie werden nicht richtig ausgeführt (dies ist eine Konsequenz des Java-Frontends, das GCC LTO nicht unterstützt).
  • Debug-Info ist schlecht.
+0

Danke! Also könnte ich DragonEgg als Bibliothek verwenden? Wie lassen Sie einen Fortran-Code analysieren und nach Symbolinformationen fragen. –

+2

@LiDong: Wenn Sie Fortran nur parsen müssen und Symbolinformationen erhalten, brauchen Sie vielleicht nicht einmal DragonEgg oder LLVM. Vielleicht brauchen Sie nur gcc, um seine Front-End-Daten zu speichern. Ich würde nach einer Dokumentation suchen, um das mit gcc zu machen. –

2

Nein, LLVM ist keine Bibliothek zum Parsen von Fortran. LLVM ist eine Bibliothek zur Implementierung des Backends eines Compilers. Sie müssten das Fortran Frontend selbst schreiben.

+1

Oder verwenden Sie die Arbeit von jemand anderem, der ein Fortran-Frontend geschrieben hat, wie http://dragonegg.llvm.org –

0

zu Eli Bendersky Kommentar hinzufügen, können Sie -fdump-Parse-Baum-Option in gfortran für "Ausgang des internen Parse-Baum vor der Codegenerierung starten" verwenden.

Verwandte Themen