【发布时间】:2011-04-04 14:33:16
【问题描述】:
编译器在什么时候构建语法树?它是如何在构建可执行文件时形成树并翻译树的?
【问题讨论】:
标签: compiler-theory
编译器在什么时候构建语法树?它是如何在构建可执行文件时形成树并翻译树的?
【问题讨论】:
标签: compiler-theory
构建语法树的编译器在解析步骤中这样做。它通常是通过为每个匹配输入流的语法规则生成一个树节点来实现的。
代码生成需要对树进行大量分析以了解类型、操作、优化机会等。这通常很难直接在树上完成,因此使用其他中间表示(三元组、静态单一分配、.. .)。通常,即使是中间阶段也不适合机器代码生成,因此可能会构造某种机器指令的表示(RTL),...
关键是树并不是编译器用来生成代码的唯一表示。
阅读介绍性编译器教科书(Aho 和 Ullman,“编译器”)以获取更多详细信息非常值得。
【讨论】: