我是LLVM的新手。我的基本需求是解析Fortran代码。通过查看LLVM网站,LLVM似乎可以用作解析代码的库。那么我可以用它来分析Fortran代码,并提取关于代码(AST?)的信息吗?我可以使用LLVM分析Fortran吗?
回答
LLVM是一个编译器后端。它唯一知道如何解析的是LLVM IR--一种设计为从编程语言前端发出的中间语言。 LLVM的官方前端是Clang,它可以处理C,C++和ObjC。如果您对其他语言感兴趣,还有DragonEgg,这是一个gcc的LLVM插件。它使用gcc的前端和LLVM作为后端,因此它可以解析gcc知道如何解析的任何内容。我知道正在做的工作是让它从Ada和Fortran生成正确的代码。下面是从页的摘录:
现状
- 效果最好用gcc-4.6。
- Fortran工作得很好。 Ada,C和C++也很好。 Ada在gcc-4.7上效果不佳。
- 它可以编译合理数量的Obj-C,Obj-C++和Go。
- 它可以编译简单的Java程序,但它们不能正确执行(这是java前端不支持GCC的 LTO的结果)。
- 调试信息很差。
谢谢!那么我可以使用DragonEgg作为图书馆吗?就像让它解析Fortran代码一样,并要求它提供符号信息。 – 2013-04-20 12:35:53
@LiDong:如果你只需要解析Fortran并获取符号信息,也许你甚至不需要DragonEgg或LLVM。也许你只需要gcc来转储它的前端数据。我会四处寻找有关使用gcc做这件事的文档。 – 2013-04-20 13:10:14
不,LLVM不是解析Fortran的库。 LLVM是一个用于实现编译器后端的库。您需要自己编写Fortran前端。
或者使用写过Fortran前端的其他人的工作,例如http://dragonegg.llvm.org – 2013-04-20 10:17:03
添加到礼Bendersky评论,你可以在“开始代码生成前的输出内部解析树”使用-fdump - 解析树选项gfortran的。
- 1. 我可以使用指针在Fortran中创建子数组吗?
- 2. 我可以使用Unity的默认分析吗?
- 3. 我可以使用New Relic进行谷歌风格分析吗?
- 4. 我可以在vkontakte上使用谷歌分析吗?
- 5. 我可以使用Google Analytics(分析)跟踪IFRAME小部件吗?
- 6. 我可以使用Corona SDK进行实时音频分析吗?
- 7. 我可以使用查询获取Firebase分析数据吗?
- 8. Adobe分析 - 我可以在dom上调用_satellite.pageBottom()吗?
- 9. 我可以将Solr用于1000万行的分析数据吗
- 10. 我可以用纯软件做协议(i2c)分析吗
- 11. 我可以让我的谷歌分析结果公开吗?
- 12. 我可以在谷歌分析中滤除我的流量吗?
- 13. 我可以使用PayPal吗?
- 14. 我可以使用php解析我的最新Facebook状态吗?
- 15. 可以在Xcode 4.3中使用LLVM 4.0吗?
- 16. 我可以使用Splunk分析Rails应用程序中的事件吗?
- 17. 我可以在iOS应用中使用两个Google Analytics(分析)ID吗?
- 18. LLVM中的别名分析
- 19. clang的uint24_t如何工作?我可以在clang/LLVM之外使用它吗?
- 20. 我可以使用预编译的llvm/clang构建一个Checker吗?
- 21. AutoCAD - 可以分析.dwg文件吗?
- 22. Fortran中可以使用匿名数组吗?
- 23. 我可以使用我的应用程序分发JDK吗?
- 24. 可以使用多个分析软件包成为问题吗?
- 25. 我可以使用什么来分析我的50+网站?
- 26. 我可以用Ruby评分PMML吗?
- 27. 我可以在谷歌分析中使用主机名作为维度吗?
- 28. 我可以在定义的解决方案中使用roslyn分析仪吗?
- 29. 我可以使用抓取机器人来分析MS Excel文件吗?
- 30. 我可以在后台使用Android Wear分析传感器数据吗?
LLVM与*解析无关。您可以重用f2c中的解析器或其中一种antlr Fortran语法。或者只需编写自己的解析器,Fortran非常简单。 – 2013-04-27 15:41:07
@ SK逻辑我已经开始使用Treetop编写一个Fortran解析器来达到我的目的。 – 2013-04-29 01:32:40