我可以使用LLVM解析Fortran吗?

时间:2013-04-20 09:41:28

标签: parsing fortran llvm abstract-syntax-tree

我是LLVM的新手。我的基本需求是解析Fortran代码。通过查看LLVM网站,LLVM似乎可以用作解析代码的库。那么我可以用它来解析Fortran代码,并提取有关代码的信息(AST?)?

3 个答案:

答案 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选项,以便在开始代码生成之前输出内部分析树"。