搜索树一种更有效的符号表组织技术是在每个记录中添加两个链接字段 LEFT 和 RIGHT。我们使用这些字段将记录链接到二叉搜索树中。这棵树具有这样的特性:所有通过跟随链接 LEFT (i),然后跟随任何链接序列从 NAME (i) 可访问的名称 NAME (j) 在字母顺序中都位于 NAME (i) 之前(象征性地,NAME (j) < NAME (i))。类似地,所有从 RIGHT (i) 开始访问的名称 NAME (k) 都具有 NAME (i) < NAME (k) 的属性。因此,如果我们正在搜索 NAME 并…… 阅读更多
表示作用域信息是一个概念,其中每个变量名的作用域都保存在符号表中,以便我们可以在不同的块和不同的位置使用相同的名称。表示作用域信息包括:变量在特定块中的生命周期。在符号表中表示名称以及它出现的块的指示符。假设我们在块 A 中有一个变量名 'a',在块 B 中也有相同的变量。假设我们将 'a' 存储在符号表中而没有块信息。在这种情况下,它只会保留遇到的第一个 'a'…… 阅读更多
控制语句是更改语句执行流程的语句。考虑语法 S → if E then S1 | if E then S1 else S2 | while E do S1 在此语法中,E 是布尔表达式,根据其值执行 S1 或 S2。以下表示显示了 if-then、if-then-else 和 while do 指令的执行顺序。 𝐒 → 𝐢𝐟 𝐄 𝐭𝐡𝐞𝐧 𝐒𝟏 E.CODE 和 S.CODE 是生成三地址代码的一系列语句。E.TRUE 是 E 为真时控制流跳转到的标签。E.FALSE 是…… 阅读更多