ch06--语义分析

ch06--语义分析

ID:37695256

大小:799.10 KB

页数:95页

时间:2019-05-29

ch06--语义分析_第1页
ch06--语义分析_第2页
ch06--语义分析_第3页
ch06--语义分析_第4页
ch06--语义分析_第5页
资源描述:

《ch06--语义分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、更困难解决办法:WenshengLiBUPT–设计专门的语义动作补充上下文无关文法的分析程序–利用语法制导翻译技术实现语义分析3上下文有关信息的记录与使用符号表–记录编译过程中识别出的上下文有关的信息,如:–变量的类型–相对地址信息的引用–根据词法分析程序识别出的标识符的属性值(标识符在符号表中的入口),查找符号表中对应该标识符的记录,从而可以取得该标识符有关的信息。–如果编译的程序块处于该变量的作用域内,则这个变量将WenshengLiBUPT一直保留在符号表中4语义检查动态检查:目标程序运行时进行的检查静态检查:读入源程序、但不执行源程序的情况下进行的检查–类

3、型检查•对访问数据的操作和被访问数据的类型进行检查,检查操作的合法性和数据类型的相容性。–控制流检查•检查控制语句是否使控制转移到一个合法的位置。–唯一性检查WenshengLiBUPT•一个标识符在同一程序块中必须而且只能被说明一次•CASE语句中用于匹配选择表达式的常量必须各不相同•枚举类型定义中的各元素不允许重复–关联名字的检查5类型检查由类型检查程序完成检验结构的类型是否和它的上下文所期望的一致,如:–表达式中各运算对象的类型–算术运算符mod的运算对象的类型–用户定义函数的各参数类型、返回值类型WenshengLiBUPT6语义分析程序的作用和地位语义分析程

4、序的作用–符号表的建立和管理–类型检查语义分析程序的地位语法语义中间代码记号流中间代码分析程序语法树分析程序语法树生成程序生成目标代码时会用到语义分析的结果WenshengLiBUPT–重载运算符:一个运算符在不同的上下文中表示不同的运算–类型强制:编译程序把运算对象变换为上下文所期望的类型76.2符号表符号表在翻译过程中起两方面的重要作用:–检查语义(即上下文有关)的正确性–辅助正确地生成代码通过在符号表中插入和检索变量的属性来实现的符号表是一张动态表–在编译期间符号表的入口不断地增加–在某些情况下又在不断地删除编译程序需要频繁地与符号表进行交互,符号表的We

5、nshengLiBUPT效率直接影响编译程序的效率。8符号表一、符号表的建立和访问时机二、符号表内容三、符号表操作四、符号表组织WenshengLiBUPT9一、符号表的建立和访问时机1.多遍编译程序分析树assignMOVy,R0记号串i1:=ADDx,R0i1:=i2+i1MOVR0,xi+i21源程序x:=y+x词法分析语法分析语义分析和代码生成优化目标代码第一遍第二遍第三遍其他遍WenshengLiBUPT符号表变量在符号表中的位置作为词法分析程序产生的记号的属性102.合并遍的编译程序MOVy,R0ADDx,R0MOVR,x0源程序x:=y+x词法分析

6、语法分析语义分析和代码生成优化目标代码第一遍其他遍符号表两方面的优点:WenshengLiBUPT–对语法分析程序来讲降低了文法的复杂性–允许用更系统的方法对上下文有关的错误进行检测和校正。11二、符号表内容符号表中记录的是和标识符相关的属性出现在符号表中的属性种类,在一定程度上取决于程序设计语言的性质。符号表的典型形式:变量名目标地址类型维数声明行引用行指针1count02129,14,1572x_total410312,1403form832436,37,386WenshengLiBUPT4b_loop4810510,11,1315able_n5210511,2

7、3,2546mlist5660617,2127flag6410728,29312变量名变量名必须常驻内存存取速度较高,问题:存储空间利用率较低–标识符长度是可变的解决办法:–标识符长度有限制:设置一个长度固定的域,它的长度为该语言允许的标识符最大长度。–标识符长度没有限制:设置一个长度固定的域,域内存放一个串描述符,包含位置指针和长度两个子域,指针WenshengLiBUPT域指示该标识符在总的串区内的开始位置,长度域记录该标识符中的字符数。存取速度较慢,节省存储空间。13使用串描述符表示变量变量名其他属性位

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。