我是LLVM的新手。我的基本需求是解析Fortran代码。通过查看LLVM网站,LLVM似乎可以用作解析代码的库。那么我可以用它来解析Fortran代码,并提取有关代码的信息(AST?)?
答案 0 :(得分:12)
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)。
- 调试信息很差。
答案 1 :(得分:2)
不,LLVM不是用于解析Fortran的库。 LLVM是用于实现编译器后端的库。您需要自己编写Fortran前端。
答案 2 :(得分:0)
添加到Eli Bendersky评论中,您可以在gfortran中使用-fdump-parse-tree选项,以便在开始代码生成之前输出内部分析树"。