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?
Antwort
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.
Danke! Also könnte ich DragonEgg als Bibliothek verwenden? Wie lassen Sie einen Fortran-Code analysieren und nach Symbolinformationen fragen. –
@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. –
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.
Oder verwenden Sie die Arbeit von jemand anderem, der ein Fortran-Frontend geschrieben hat, wie http://dragonegg.llvm.org –
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.
- 1. Verwenden von NSJSONSerialization zum Analysieren von JSON
- 2. Verwenden von Xpath mit PHP zum Analysieren von HTML
- 3. Verwenden von libclang zum Analysieren von C++ in Python
- 4. Verwenden von Haskells Parsec zum Analysieren von Binärdateien?
- 5. LLVM kann nicht von IR
- 6. Verwenden von OpenMP mit llvm-clang
- 7. Verwenden von Haskell's Parsec zum Analysieren eines ByteStrings
- 8. Verwenden von C# Dictionary zum Analysieren der Protokolldatei
- 9. Verwenden von LLVM-Bibliotheken in C++ Projekt
- 10. Verwenden Sie externe Css zum Analysieren von XML
- 11. Verwenden von Python2.6 zum Analysieren der Bash-Ausgabe
- 12. Verwenden von GHC mit LLVM 3.2
- 13. Verwenden von Joda Date & Time API zum Analysieren mehrerer Formate
- 14. Verwenden von LINQ zum Analysieren der Zahlen aus einer Zeichenfolge
- 15. Fragen zum Kompilieren zu LLVM
- 16. Verwenden von Gson zum Analysieren von JSON mit Objekten, aber zum Ausschließen von Arrays
- 17. Wie kann ich auf einen C-Zeiger von Fortran zugreifen?
- 18. Wie kann LLVM C++ - Standardcontainer ohne Ausnahmen verwenden?
- 19. Kann ich Bedingungen aus 'if'-Anweisungen von LLVM IR extrahieren?
- 20. Wie kann ich PHP verwenden, um eine Datumszeichenfolge zu analysieren?
- 21. Wie kann ich Code von Fortran77 in Visual Fortran konvertieren?
- 22. Bindung von Qt an LLVM
- 23. Kann ich Numba unter OS X verwenden?
- 24. regex zum Analysieren von SQL-Anweisungen
- 25. Wird Fortran 'Matmul' MKL verwenden, wenn ich die Bibliothek einschließe?
- 26. Objektorientiertes Entwurfsmuster zum Analysieren von JSON-Dateien
- 27. Comsol von Fortran anrufen
- 28. Wie kann ich einen String-Datentyp in LLVM implementieren?
- 29. Tool zum Analysieren von .Net App-Speicherauszügen
- 30. cURL und domDocument zum Analysieren von HTML
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. –
@ SK-logic Ich habe angefangen, einen Fortran-Parser mit Treetop für meinen Zweck geschrieben. –