6

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

4

3 回答 3

13

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 的结果)。
  • 调试信息很差。
于 2013-04-20T12:31:27.273 回答
3

不,LLVM 不是用于解析 Fortran 的库。LLVM 是一个用于实现编译器后端的库。您需要自己编写 Fortran 前端。

于 2013-04-20T09:48:11.620 回答
0

添加到 Eli Bendersky 评论中,您可以在 gfortran 中使用 -fdump-parse-tree 选项“在开始代码生成之前输出内部解析树”。

于 2016-02-18T14:29:53.430 回答