




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1S.PO.P语义分析与中间代码语义分析与中间代码生成目标程序生成目标程序代码优化代码优化语法分析程序语法分析程序词法分析程序词法分析程序错错误误处处理理符符号号表表管管理理符号表与错误处理符号表与错误处理26.1 符号表管理符号表管理符号表的作用:符号表的作用: (1) (1) 收集符号的各种信息收集符号的各种信息 (2) (2) 语义检查的依据语义检查的依据 (3) (3) 目标代码生成阶段地址分配的依据目标代码生成阶段地址分配的依据 36.1 符号表管理符号表管理名字栏名字栏(NAME)(NAME)信息栏信息栏(INFORMATION(INFORMATION)第第1 1项(入口项(入口1
2、 1)第第2 2项(入口项(入口2 2) 第第n n项(入口项(入口n n) 信息栏包含许多子栏和标志位,用来记录相应名字和不同属性,信息栏包含许多子栏和标志位,用来记录相应名字和不同属性,由于查填符号表一般是通过匹配名字来实现的,因此,名字栏由于查填符号表一般是通过匹配名字来实现的,因此,名字栏也称主栏。主栏的内容称为关键字(也称主栏。主栏的内容称为关键字(key wordkey word)。)。符号表的内容:符号表的内容:名字栏信息栏名字栏信息栏 4符号表的组织符号表的组织 6.1 符号表管理符号表管理符号表的总体组织:符号表的总体组织:(1 1)多张)多张(2 2)一张)一张 (3 3)
3、前两种的折中)前两种的折中符号表项的组织:符号表项的组织:(1 1)线性组织)线性组织(2 2)排序组织)排序组织 (3 3)散列组织)散列组织: :效率高,为多数编译程序采用效率高,为多数编译程序采用56.1 符号表管理符号表管理(1 1)向表中填入一个新标识符;)向表中填入一个新标识符;(2 2)对于给定一个标识符:)对于给定一个标识符: 查找是否在表中;查找是否在表中; 访问它在表中的相关信息;访问它在表中的相关信息; 在表中填写或更新它的某些信息。在表中填写或更新它的某些信息。(3 3)更新或删除一个或一组无用的项。)更新或删除一个或一组无用的项。符号表的操作符号表的操作 6建立和访问
4、符号表的时机建立和访问符号表的时机 6.1 符号表管理符号表管理1 1、多遍编译器、多遍编译器词法分析语法分析符号表语义分析和代码生成优化源程序x:=y+x记号串i1:=i2+i1 分析树 assigni1 := i2 + i1MOV y, R0ADD x, R0MOV R0, x目标代码 第一遍第二遍第三遍其他遍符号表由词法分析器创建,词法分析器所产符号表由词法分析器创建,词法分析器所产生的记号的属性就是变量在符号表中的位置。生的记号的属性就是变量在符号表中的位置。7建立和访问符号表的时机建立和访问符号表的时机 6.1 符号表管理符号表管理2 2、单遍编译器、单遍编译器词法分析语法分析符号表
5、语义分析和代码生成优化源程序x:=y+xMOV y, R0ADD x, R0MOV R0, x目标代码 第一遍其他遍8多遍的优点:多遍的优点:对语法分析器来讲降低了文法的复杂性对语法分析器来讲降低了文法的复杂性允许用更系统的方法对上下文有关的错允许用更系统的方法对上下文有关的错误进行检测和校正。误进行检测和校正。建立和访问符号表的时机建立和访问符号表的时机 6.1 符号表管理符号表管理9l 词法错误:在词法分析阶段就可以发现的错误;词法错误:在词法分析阶段就可以发现的错误;l 语法错误:程序的书写不符合语法规则;语法错误:程序的书写不符合语法规则;l 语义错误:语义错误: 静态语义错误:编译程
6、序可以发现;静态语义错误:编译程序可以发现; 动态语义错误:源程序虽然能够被编译和执行,但是动态语义错误:源程序虽然能够被编译和执行,但是 结果不对。一般是逻辑上的错误。结果不对。一般是逻辑上的错误。l 违反环境限制的错误:违反环境限制的错误: 由于实现方面的问题,有些编译器不接受语言的全集。由于实现方面的问题,有些编译器不接受语言的全集。同时语言本身也有限制。同时语言本身也有限制。错误种类错误种类6.5 错误处理错误处理标识符的长度限制标识符的长度限制函数说明嵌套的深度,函数说明嵌套的深度,数组的最大层数数组的最大层数10词法错误:不合法单词词法错误:不合法单词 例:mianmian( )(
7、 ) int int 3sum 3sum; ; 语法错误:语法错误:源程序在语法上不符合文法源程序在语法上不符合文法例:例:Ax, y=B+Ax, y=B+* *C C6.5 错误处理错误处理11语义规则语义规则标识符先说明后引用标识符先说明后引用标识符引用要符合作用域规定标识符引用要符合作用域规定过程调用时实参与形参类型一致过程调用时实参与形参类型一致参与运算的操作数类型一致参与运算的操作数类型一致下标变量的下标不能越界下标变量的下标不能越界语义错误主要包括:语义错误主要包括:程序不符合语义规则程序不符合语义规则或或 超越具体计算机系统的限制超越具体计算机系统的限制6.5 错误处理错误处理1
8、2超越系统限制:超越系统限制:( (计算机系统和编译系统计算机系统和编译系统) )1. 1. 数据溢出错误,常数太大,计算结果溢出。数据溢出错误,常数太大,计算结果溢出。2. 2. 符号表、静态存储分配数据区溢出。符号表、静态存储分配数据区溢出。3. 3. 动态存储分配数据区溢出。动态存储分配数据区溢出。6.5 错误处理错误处理136.5 错误处理错误处理错误复原错误复原l 当编译程序碰到源程序中错误的时候,应该当编译程序碰到源程序中错误的时候,应该设法从错误中复原,并继续扫描程序以给出设法从错误中复原,并继续扫描程序以给出更多的提示信息。更多的信息使得程序员能更多的提示信息。更多的信息使得程
9、序员能够更加方便地修改程序。够更加方便地修改程序。l 可能复原是错误的。所以一般来讲,编译程可能复原是错误的。所以一般来讲,编译程序给出的第一个错误是可靠的,而其他的错序给出的第一个错误是可靠的,而其他的错误信息可能是不准确的。误信息可能是不准确的。14l 常用的方法是:对于某个语法成分,如果该常用的方法是:对于某个语法成分,如果该语法成分有一个非常确定的符号作为结束符语法成分有一个非常确定的符号作为结束符号。那么当扫描这个语法成分时发现错误,号。那么当扫描这个语法成分时发现错误,程序试图继续扫描到该结束符号。并把这个程序试图继续扫描到该结束符号。并把这个符号之前的东西规约成为相应的语法成分。
10、符号之前的东西规约成为相应的语法成分。6.5 错误处理错误处理错误复原错误复原156.5 错误处理错误处理错误定位错误定位l 在扫描程序检查到错误的时候,需要告诉用在扫描程序检查到错误的时候,需要告诉用户,其错误发生在源程序的什么位置。户,其错误发生在源程序的什么位置。l 简单的方法是:在进行词法分析的时候,记简单的方法是:在进行词法分析的时候,记录下每个词法单位(符号)的行和列。扫描录下每个词法单位(符号)的行和列。扫描程序碰到非预期的符号时,可以在提示信息程序碰到非预期的符号时,可以在提示信息中给出该符号的位置。中给出该符号的位置。16错误处理方法有两种:错误处理方法有两种: 错误校正法:错误校正法: 根据文法进行错误改正根据文法进行错误改正 错误局部化法:错误局部化法: 把错误的影响限制在一个局部的范围,把错误的影响限制在一个局部的范围, 避免错误扩散和影响程序其他部分的分析避免错误扩散和影响程序其他部分的分析6.5 错误处理错误处理17错误局部化法错误局部化法词法分析:词法分析:发现不合法字符,显示错误,并跳发现不合法字符,显示错误,并跳 过该过该标识符(单词)标识符(单词)继续往下分析。继续往下分析。语法语义分析:语法语义分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版生物医药厂房租赁合同模板及要点分析
- 二零二五版医疗废物处理设备采购与运营合同
- 2025年绿色环保搬迁项目合同协议书
- 2025版保密协议书金融交易版
- 二零二五版XX污水厂污水处理厂污水处理厂运营管理技术服务协议
- 二零二五年度北京市住房和城乡建设委员会指定存量住宅买卖合同范本
- 2025版绿色节能办公楼物业管理服务合同模板
- 2025版UPS电源采购与节能改造与维护合同
- 二零二五年新能源电动汽车充电桩租赁合同
- 二零二五年劳务派遣货币赔偿及责任承担合同
- DB4401-T 112.1-2021 城市道路占道施工交通组织和安全措施设置+第1部分:交通安全设施设置-(高清现行)
- 质量整改通知单(样板)
- 杭州市高级中学2022年高一新生素质测试(分班考)模拟试卷
- 《碳纤维片材加固混凝土结构技术规程》(2022年版)
- 短视频:策划+拍摄+制作+运营课件(完整版)
- 预制场(梁场)建设方案
- 专业课程融入思政工作的教学设计理念与方法(课堂PPT)
- 架桥机架梁施工技术交底
- 第十章社会生活领域的道德
- 公司空白财务报表格模板
- 长沙不动产登记申请书
评论
0/150
提交评论