编译器构造阅读笔记(5)

100 阅读1分钟

编译器构造阅读笔记(5)

图片.png

推导树,就是一个归纳的结果,在这里,我们可以看到。

在最下面的树中,符合标识符规则的字符串被归纳为了 ID,在这个基础上,因为 ID 可以被归纳为 <primary>,所以自然而然的就成为了 <primary>

同时,因为我们事先做了 运算符号 的归纳,所以 * 被自动归纳为 <mult op> 而 + 被归纳为 <add op>

之后继续看,因为 <factor> 可以由 <primary> 组成的简单表达式归纳而来(准确来说,它只归纳了乘法),所以,单独的 ID 和 最下面的 ID * ID 在归纳为 <primary> 之后,又被归纳为 <factor>

在完成这些事情之后,expression 表达式开始发挥功效,它是一个复合的归纳,把由简单表达式组成的 factor 进行归纳,最终得到了推导树。


图片.png


何时调用给定的语义例程由编译器作者决定,可以通过在文法中添加动作符号来指定如何进行语义处理。

动作符号可以放置于产生式右部的任意位置,每个动作符号都对应一个语义例程。

语义历程记录着每个操作数相关的数据(相当于一个局部的函数调用)