Sono un novizio di LLVM. Il mio bisogno fondamentale è di analizzare i codici Fortran. Guardando il sito Web di LLVM, sembra che LLVM possa essere usato come libreria per i codici di analisi. Quindi potrei usarlo per analizzare i codici Fortran ed estrarre informazioni sui codici (AST?)?Posso usare LLVM per analizzare Fortran?
risposta
LLVM è un backend del compilatore. L'unica cosa che sa analizzare è LLVM IR - un linguaggio intermedio progettato per essere emesso dai frontend in linguaggio di programmazione. Il frontend ufficiale di LLVM è Clang, che può gestire C, C++ e ObjC. Se sei interessato ad altre lingue, c'è anche DragonEgg, che è un plugin LLVM per gcc. Usa il front-end di gcc e LLVM come back-end, quindi può analizzare tutto ciò che gcc sa come analizzare. So che si sta lavorando per far sì che generi codice corretto da Ada e Fortran. Ecco un estratto dalla sua pagina:
Stato corrente
- funziona meglio con gcc-4.6.
- Fortran funziona molto bene. Anche Ada, C e C++ funzionano bene. Ada funziona male con gcc-4.7.
- Può compilare una quantità ragionevole di Obj-C, Obj-C++ e Go.
- Può compilare semplici programmi Java, ma non vengono eseguiti correttamente (questa è una conseguenza del front-end java che non supporta LTO di GCC ).
- Le informazioni di debug sono scadenti.
Grazie! Quindi potrei usare DragonEgg come libreria? Come lasciare analizzare un codice Fortran e chiedergli informazioni sui simboli. –
@LiDong: se hai solo bisogno di analizzare Fortran e ottenere informazioni sui simboli, forse non hai nemmeno bisogno di DragonEgg o LLVM. Forse hai solo bisogno di gcc per scaricare i dati front-end. Vorrei cercare la documentazione su come farlo con gcc. –
No, LLVM non è una libreria per l'analisi di Fortran. LLVM è una libreria per implementare il back-end di un compilatore. Avresti bisogno di scrivere il frontend Fortran da solo.
Oppure usa il lavoro di qualcun altro che ha scritto un front-end Fortran, come http://dragonegg.llvm.org –
Aggiungendo a Eli Bendersky commento, è possibile utilizzare l'opzione -fdump-parse-albero in gfortran per "uscita l'albero di analisi interno prima di iniziare la generazione di codice".
LLVM non ha * * nulla a che fare con l'analisi. Puoi riutilizzare un parser da f2c o una di quelle grammatiche Fortran di antlr. O semplicemente scrivi il tuo parser, Fortran è piuttosto banale. –
@ SK-logic Ho iniziato a scrivere un parser Fortran usando Treetop per il mio scopo. –