语义分析在语法树的基础上,对程序作进一步的检查,来看程序是否是meaningful

符号检查

1.符号表

保存各种符号相关信息的数据结构

image-20240909165833568

本节内容涉及教材

image-20240909175211517

1.1作用域相关

嵌套作用域需要嵌套符号表,全局作用域还需放入类型符号以支持类型检查。

image-20240909170554630

符号表的实现的接口

image-20240909170955204

所要考虑的

image-20240909172231667

2.文法分析(语义)(以类型为例子)(语法制导的定义)

如何赋予语法树语义,并计算相应的节点的属性?通过赋予每个节点的类型相应属性的相应值来实现,实现过程主要有监听器的模式(遍历两次ast)或者直接写(嵌入到产生式之中,但是只需要遍历一次)

image-20240909191503457

处理依赖关系,分别有上对下,水平,和下对上。做法:将action嵌入cfg

image-20240909195422145

image-20240909195708884

综合属性。

image-20240909195930229

继承属性。

image-20240909200212195

继承与综合属性的综合。主要涉及到数组类型。

image-20240909204004991

2.1文法分析(语法制导的翻译方案)(为语法制导的定义的一种实现)

2小节已给出例子

image-20240909214050071