【发布时间】:2020-03-26 15:25:54
【问题描述】:
听说大部分编译器使用AST,然后翻译成IR(中间表示)。
但我认为编译器可以直接生成IR,比如C4 project。
如果我使用 AST,当我完成语法分析和语义分析时,我必须从头扫描 AST 以生成 IR。这是一个额外的步骤,所以我认为它很慢。
使用 AST 有什么好处?更好的可读性还是更好的可移植性?
你能给我一些建议吗?感谢您的宝贵时间。
【问题讨论】:
-
至少它是编译过程各个阶段的解耦,允许多个团队一起工作并降低复杂性。它还可以帮助在多个平台上使用编译器,使用各种后端阶段的多个版本。
标签: c compiler-construction compiler-optimization abstract-syntax-tree