05 语法制导翻译 | 《编译原理》笔记

本系列是编译原理 (哈工大陈鄞、郭勇)视频课的课堂笔记,主要是课堂 PPT 和部分讲授内容的文字版,仅供参考。

语法制导翻译概述

在语法分析的同时进行语义翻译,语法制导翻译即将两者放在一起实现的技术。语法制导翻译使用 CFG 来引导对语言的翻译,是一种面向文法的翻译技术。

比如一个变量,其属性就包括该变量是什么类型的,它的值是多少,存放在什么地方。类似地,表达式的属性也包括值、类型、地址等等。

L 的 inh 属性是由 T 的 type 决定的,L1 的 inh 属性是由 L 的 inh 属性定义的。

语法制导定义 SDD

在这个例子中,a 对应的 L 的 tyep 是由其父节点决定的,图中蓝色箭头表示了属性的传递路线。

SDD 的求值顺序

可以通过拓扑排序可以得到可行的求值顺序。

S-属性定义与 L-属性定义

上述例子的继承属性全都符合要求:要么来自父节点,要么来自左侧的兄弟节点。

上述例子的继承属性有一条不满足要求:来自其右侧的兄弟节点。

语法制导翻译方案 SDT


在非递归的预测分析过程中进行翻译

本节课程演示了一个例子的完整分析过程,这里就不整理了,参考原课程视频即可。

非终结符的继承属性和综合属性的计算时机是不同的:继承属性是在其即将出现的时刻进行计算,综合属性是在其子节点分析完毕后进行计算。

一个 SDT 确定下来以后,其中各个符号对应的执行代码就确定下来了。

在递归的预测分析过程中进行翻译

本节课程演示了一个例子的完整分析过程,这里就不整理了,参考原课程视频即可。

递归的预测分析过程中,每一个非终结符都对应一个过程,在语义翻译中,因为我们要计算非终结符的继承属性和综合属性,我们需要将非终结符对应的过程扩展成一个函数,函数的参数就是非终结符的各个继承属性值,返回值就是综合属性值。

05 语法制导翻译 | 《编译原理》笔记

/posts/d904f10f.html

作者

学习提升网

发布于

2023-10-06

更新于

2023-12-16

许可协议

评论