编译器设计 - 计算常数值

时间:2016-10-12 06:29:18

标签: bison compiler-construction

我正在尝试将一个小编译器设计为一种实践形式。我还没有读过中间代码优化或有关优化的任何内容。

到目前为止,我有一个描述语法的FLEX / BISON文件,我的表达式运行正常。在这样做时,我认为我应该有一个常量表达式,并为它们的常量等价物重复所有加法和乘法表达式,并在解析它时计算它们的值。

所以我想知道这是否是正确的做法?或者我应该让代码优化(当我读入它们时)处理这样的东西?

1 个答案:

答案 0 :(得分:3)

您可以在代码优化期间做得更好。例如,3 + a + 39可以优化到a + 42(无论如何都是无符号整数算术),但在解析过程中检测它并不容易。

更有趣的常量折叠是流量分析检测到变量具有已知常量值的结果。在解析过程中这很难做到。

所以总的来说,最好让解析器解析,并在语义分析期间和之后执行优化。