编译器设计中图形和线性中间表示的优缺点?
Pros and cons of graphical and linear intermediate representation in compiler design?
编译器设计中有两种中间表示(IR),简单介绍一下here:图形(如抽象语法树)和线性(如LLVM IR)。两者的优缺点是什么?
我注意到 Clang 实现了两者,但似乎在 LLVM 后端中只使用了线性表示 (LLVM IR)。
这是编译器开发人员的一个非常主观的决定。在我的语言中,我实现了一个 AST 图,然后遍历该图以生成 LLVM-IR。我本可以轻松地从语义检查转到 IR,但我做了一些 refactoring/optimization,在 IR 生成之前,AST 非常适合它。
编译器设计中有两种中间表示(IR),简单介绍一下here:图形(如抽象语法树)和线性(如LLVM IR)。两者的优缺点是什么?
我注意到 Clang 实现了两者,但似乎在 LLVM 后端中只使用了线性表示 (LLVM IR)。
这是编译器开发人员的一个非常主观的决定。在我的语言中,我实现了一个 AST 图,然后遍历该图以生成 LLVM-IR。我本可以轻松地从语义检查转到 IR,但我做了一些 refactoring/optimization,在 IR 生成之前,AST 非常适合它。