1 / 95
文档名称:

ch06--语义分析.pdf

格式:pdf   大小:799KB   页数:95页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ch06--语义分析.pdf

上传人:陈潇睡不醒 2021/3/17 文件大小:799 KB

下载得到文件列表

ch06--语义分析.pdf

相关文档

文档介绍

文档介绍:第6章 语义分析
LI Wensheng, SCST, BUPT
知识点:符号表
类型体制
各语法成分的类型检查
语义分析
语义分析的任务和地位
符号表
符号表的建立
类型检查
一个简单类型检查程序的说明
类型检查有关的其他主题
小 结
Wensheng Li BUPT Li Wensheng
2
语义分析的任务和地位
 程序设计语言的结构由上下文无关文法来描述
 程序结构正确与否与该结构的上下文有关,如:
–变量的作用域问题
–同一作用域内同名变量的重复声明问题
–表达式、赋值语句中的操作数的类型一致性问题
 思考:
–设计上下文有关文法来描述语言中上下文有关的结构?
–理论上可行,构造有困难,构造相应的分析程序更困难

Wensheng Li BUPT Li Wensheng 解决办法:
–设计专门的语义动作补充上下文无关文法的分析程序
–利用语法制导翻译技术实现语义分析
3
上下文有关信息的记录与使用
 符号表
–记录编译过程中识别出的上下文有关的信息,如:
–变量的类型
–相对地址
 信息的引用
–根据词法分析程序识别出的标识符的属性值(标识符在符
号表中的入口),查找符号表中对应该标识符的记录,从
而可以取得该标识符有关的信息。
–如果编译的程序块处于该变量的作用域内,则这个变量将
Wensheng Li BUPT Li Wensheng 一直保留在符号表中
4
语义检查
 动态检查:目标程序运行时进行的检查
 静态检查:读入源程序、但不执行源程序的情况下
进行的检查
–类型检查
• 对访问数据的操作和被访问数据的类型进行检查,检查操作的合
法性和数据类型的相容性。
–控制流检查
• 检查控制语句是否使控制转移到一个合法的位置。
–唯一性检查
Wensheng Li BUPT Li Wensheng • 一个标识符在同一程序块中必须而且只能被说明一次
• CASE语句中用于匹配选择表达式的常量必须各不相同
• 枚举类型定义中的各元素不允许重复
–关联名字的检查
5
类型检查
 由类型检查程序完成
 检验结构的类型是否和它的上下文所期望的一致,
如:
–表达式中各运算对象的类型
–算术运算符 mod 的运算对象的类型
–用户定义函数的各参数类型、返回值类型
Wensheng Li BUPT Li Wensheng
6
语义分析程序的作用和地位
 语义分析程序的作用
–符号表的建立和管理
–类型检查
 语义分析程序的地位
语法 语义 中间代码
记号流 中间代码
分析程序 语法树 分析程序 语法树 生成程序