版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/10/11,1,Chapter5Semantic Analysis and Intermediate Code Generation,语义分析概述 语法制导翻译 (Syntax-Directed Translation) 类型确定与类型检查 (Type Checking) 中间代码生成 (Intermediate Code Generation),2020/10/11,2,5.3 类型确定与类型检查,类型确定:确定标识符所代表对象的数据类型,要确定类型,基本工作是处理说明部分,把相关的类型等属性填入符号表相应的条目中,2020/10/11,3,5.3 类型确定与类型检查,一般的说明语
2、句的处理:P474 (Fig.8.11),注意语义动作 enter,为名字建立表项,对第一条产生式及翻译模式进行改写(见P474),引入标记非终结符号(Marker Nonterminals),改写后的语法制导定义是 S-属性定义,适合于自底向上翻译,2020/10/11,4,5.3 类型确定与类型检查,例子:处理语句 id1 : real ; id2 : integer,1、自底向上建立分析树,2、在建立分析树的同时执行语义规则完成翻译,2020/10/11,5,5.3 类型确定与类型检查,* 对说明语句的语义处理不产生中间代码,P,D,M,D2,D1,;,T2,T1,:,id2,id1,:
3、,real,T3,integer,1,2,3,4,5,6,7,8,2020/10/11,6,5.3 类型确定与类型检查,过程说明的处理:P477 (Fig.8.13) 针对允许嵌套过程的语言,如 PASCAL,sort,exchange,quicksort,readarray,partition,简要说明: P475 Fig.8.12 程序参见 P416 (2)-(19)都是说明部分,2020/10/11,7,5.3 类型确定与类型检查,P477 (Fig.8.13),此翻译模式只是一种解决方案,语义过程 mktable,enter,addwidth,enterproc,栈 tblptr,of
4、fset,2020/10/11,8,5.3 类型确定与类型检查,例子:分析如下程序的说明部分 画出分析树,详细说明,id1 : T1 ; proc id2 ; id3 : T2 ; S,2020/10/11,9,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,1. t1 := mktable ( nil ) push ( t1 , tblptr ) push ( 0, offset ),id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,0,2020/10/11,10,P,D,M,D2,D1,;,;,T1,id
5、2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,2. enter ( top( tblptr), , T1.type, top(offset) ) top( offset ) := top(offset) + T1.width,id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,2020/10/11,11,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,3. t2 := mktable ( top ( tblptr ) ) push ( t2 , tblptr
6、) push ( 0, offset ),id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,t2,0,2020/10/11,12,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,4. enter ( top( tblptr), , T2.type, top(offset) ) top( offset ) := top(offset) + T2.width,id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,t2,4,2020/10/11,13,P,D
7、,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,5,5. t := top ( tblptr ) addwidth ( t, top ( offset ) ) pop ( tblptr ) pop ( offset ) enterproc ( top( tblptr), , t ),id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,2020/10/11,14,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,5,6
8、,7,6. 7. addwidth ( top ( tblptr ), top ( offset ) ) pop ( tblptr ) pop ( offset ),id1 : T1 ; proc id2 ; id3 : T2 ; S,2020/10/11,15,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,5,6,7,id1 : T1 ; proc id2 ; id3 : T2 ; S,2020/10/11,16,5.3 类型确定与类型检查,记录类型的处理:P477 (Fig.8.14),例子:分析句型 record
9、id1 : T ; id2 : T end,2020/10/11,17,5.3 类型确定与类型检查,T,D,record,D2,L,D1,;,T2,T1,:,id2,id1,:,end,1,2,3,4,5,2020/10/11,18,5.3 类型确定与类型检查,类型检查(Type Checking):按照所用语言的语义规则检查运算的合法性与运算分量类型的一致性或相容性,2020/10/11,19,5.3 类型确定与类型检查,表达式的类型检查(Type Checking of Expressions),1、E num E.type := integer ,2、E id E.type := loo
10、kup(id.entry) ,2020/10/11,20,5.3 类型确定与类型检查,3、E E1 op E2 E.type := if E1.type=integer and E2.type=integer then integer else type-error 一致性检查 * 假设 op 的运算分量必须是integer,结果也是integer,2020/10/11,21,5.3 类型确定与类型检查, E.type := if E1.type=integer and E2.type=integer then interger else if E1.type=integer and E2.t
11、ype=real then real else if E1.type=real and E2.type=integer then real else if E1.type=real and E2.type=real then real else type-error 相容性检查 必要的话可以使用强制转换函数 inttoreal * 假设 op 的运算分量可以是 integer 和 real,2020/10/11,22,5.3 类型确定与类型检查,4、E E1 E2 E.type := if E2.type=integer and E1.type=array(s,t) then t else t
12、ype-error ,5、E E1 E.type := if E1.type=pointer(t) then t else type-error ,2020/10/11,23,5.3 类型确定与类型检查,例:,E1,E,E4,E2,id1,num,+,*,E3,id2,1,2,3,4,5,2020/10/11,24,5.3 类型确定与类型检查,语句的类型检查(Type Checking of Statements),1、S id:=E S.type := if id.type=E.type then void else type-error ,2、S if E then S1 S.type := if E.type=boolean then S1.type else type-error ,2020/10/11,25,5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 群众安全教育
- Alice Walker文学创作解析
- 劳模工作室设计方案
- 活动策划与执行框架
- 教育故事宣讲实施路径
- 教育传播效果研究框架
- 26年肿瘤防控检测应用指引
- 2026年小学英语教师资格证面试答辩模拟试题及答案解析
- 安全教育晨会
- 拒绝早恋拥抱青春
- 2026年西医医师定期考核练习题库附答案详解(精练)
- 2026届山西省吕梁市高三下学期第三次模拟考试历史试题(含答案)
- 2026安徽宣城市国有资本投资运营控股集团有限公司社会招聘13人备考题库含答案详解
- 2026年全国防灾减灾日安全教育主题
- 2026年事业单位结构化面试真题及答案解析
- 肺结核病人健康指导宣传手册
- 叶酸车间的工艺流程及危险源控制
- 社会保险业务申报表(申报1表)
- GA 1205-2014灭火毯
- 《大学生劳动教育》第四章 创造性劳动
- 新教材人教版高中化学选择性必修1全册各章节知识点考点重点难点归纳总结汇总
评论
0/150
提交评论