Jestem nowicjuszem w LLVM. Moją podstawową potrzebą jest zanalizowanie kodów Fortrana. Patrząc na stronę LLVM wydaje się, że LLVM może być wykorzystywana jako biblioteka do analizowania kodów. Czy mogę więc użyć go do analizy kodów Fortrana i wydobyć informacje o kodach (AST?)?Czy mogę użyć LLVM do analizowania Fortran?
Odpowiedz
LLVM jest zapleczem kompilatora. Jedyne, co potrafi analizować, to LLVM IR - język pośredni przeznaczony do emitowania z programowania frontendów językowych. Oficjalnym interfejsem LLVM jest Clang, który może obsługiwać C, C++ i ObjC. Jeśli interesują Cię inne języki, jest też DragonEgg, która jest wtyczką LLVM dla gcc. Wykorzystuje front-end gcc i LLVM jako backend, więc może parsować wszystko, co gcc wie, jak parsować. Wiem, że trwają prace nad wygenerowaniem poprawnego kodu od Ada i Fortran. Oto fragment z jego strony:
Obecny status
- najlepiej działa z gcc-4.6.
- Fortran działa bardzo dobrze. Ada, C i C++ również działają dobrze. Ada działa słabo z gcc-4.7.
- Może skompilować rozsądną ilość Obj-C, Obj-C++ i Go.
- Potrafi skompilować proste programy Java, ale nie działają one poprawnie (jest to konsekwencją interfejsu front-end java, który nie obsługuje GCC LTO).
- Informacje na temat debugowania są słabe.
Dzięki! Czy mogę używać DragonEgg jako biblioteki? Tak jak niech parsuje kod Fortrana i pytaj go o informacje o symbolu. –
@LiDong: Jeśli potrzebujesz tylko analizować Fortran i uzyskać informacje o symbolu, być może nie potrzebujesz nawet DragonEgg lub LLVM. Być może potrzebujesz tylko gcc, aby zrzucić swoje dane front-end. Rozglądałbym się za dokumentacją tego z gcc. –
Nie, LLVM nie jest biblioteką do analizowania Fortran. LLVM to biblioteka do implementacji zaplecza kompilatora. Trzeba by napisać sam Frontrad.
Lub skorzystaj z pracy kogoś, kto napisał frontran z Fortranu, na przykład http://dragonegg.llvm.org –
Dodawanie do Eli Bendersky komentarza, można użyć opcji -fdump-parse-drzewo w gfortran dla „wyjście na wewnętrzny drzewa parsującej przed rozpoczęciem generowania kodu”.
- 1. Czy mogę użyć layout_weight do ustawienia RelativeLayout?
- 2. Jak mogę przekazać flagi do przepustki LLVM?
- 3. Jak mogę usprawiedliwić wyjście liczbowe w Fortran?
- 4. Czy mogę użyć wielu "z"?
- 5. Zadzwoń do R & Fortran
- 6. oprogramowanie konwertera for fortran 77 do fortran 90
- 7. Czy mogę użyć AVCaptureSession do kodowania strumienia AAC do pamięci?
- 8. Czy istnieje biblioteka do analizowania adresów US?
- 9. Jak mogę zadeklarować zmienną globalną w LLVM?
- 10. Do czego mogę użyć POCO?
- 11. Wiązanie Qt do LLVM
- 12. Aby porównać UUID, czy mogę użyć == lub użyć UUID.equals (UUID)?
- 13. Czy mogę użyć @PostConstruct w metodzie interfejsu?
- 14. Czy mogę użyć obiektu w UriTemplate?
- 15. Czy mogę użyć Music Genome Project?
- 16. Czy mogę użyć adnotacji w treści metody?
- 17. Vim: Przeskakiwanie do if end in fortran
- 18. Czy mogę użyć materiału kątowego z cordova?
- 19. Fortran DEALLOCATE
- 20. Czy mogę użyć DataTemplateSelector w DataTemplate?
- 21. Czy mogę użyć resolveurl w javascript
- 22. Czy mogę użyć wyrażenia lambda do zgromadzenia sumy w zmiennej?
- 23. Czy mogę użyć VS 2012 do utworzenia dodatku Office 2007?
- 24. Czy mogę użyć Roslyn do kompilacji przepisywania kodu czasu?
- 25. Android, Czy mogę użyć putExtra do przekazywania wielu wartości
- 26. Czy mogę użyć sed do manipulowania zmienną w bash?
- 27. Czy mogę użyć mojego ssh-public-key do odszyfrowania pliku?
- 28. Czy mogę użyć adb do zmiany domyślnego programu uruchamiającego?
- 29. Czy mogę użyć do tego celu Agility Pack Html?
- 30. Czy mogę użyć ścieżki do zależności Maven jako własności?
LLVM ma * nic * do zrobienia z parsowaniem. Możesz ponownie użyć parsera z f2c lub jednego z tych starszych gramatyk Fortran. Lub po prostu napisz swój własny parser, Fortran jest dość trywialny. –
@ SK-logic Zacząłem pisać parser Fortran używając Treetop dla mojego celu. –