- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理 第18讲(第八章)
第八章 语义分析 8.3 中间代码生成 8.3.3 简单说明语句的翻译 简单说明语句的属性文法 过程中的说明语句的属性文法 8.3.4 布尔表达式的翻译 布尔表达式的翻译举例 8.3.5.2 控制语句结构的属性文法 “拉链”与“回填”技术 “拉链”的例子 “回填”的例子 布尔表达式翻译需要的语义元素: 符号表 name type def add … L label not r (p) goto 0 … (q) goto p … (r) goto q 定义标号语句的产生式 S→label S label→i: 那么,当用label→i:进行归约时,应做如下的语义动作: 1.若i所指的标识符(假定为L)不在符号表中,则把它填入,置“类型”为“标号”,“定义否”为“已”,“地址”为nextstat。 2.若L已在符号表中但“类型”不为“标号”或“定义否”为“已”,则报告出错。 3.若L已在符号表中,则把标志“未”改为“已”,然后,把地址栏中的链首(设为q)取出,同时把nextstat填在其中,最后,执行backpatch(q,nextstat)。 翻译goto语句时,还有两点必须注意 第一:相同名字的标号可以在不同名字作用域中定义。如: (1) begin (2) L:begin (3) goto L;//延迟使用 (4) …… (5) L:… (6) end (7) end 第二,转移标号是非法的 (1)for i∶=1 to 10 do (2) begin gotoL; (3) for j∶=1 to 20 do (4) begin goto L; … … (n) L: end {forj} end {for i} 处理到第(n)行后,第(4)行的goto目标得以解决。而第(2)行的goto L是非法的,但只有当循环关闭时才能确定。 8.3.6 过程调用的翻译(四元式产生) 过程调用的实质是把程序控制转移到子程序(过程段)。在转子之前必须用某种办法把实在参数的信息传给被调用的子程序,并且应该告诉子程序在它工作完毕后返回到什么地方。 传递实在参数 , 过程调用 CALL S(A+B, Z) 将被翻译成: 计算A+B置于T中的代码/ T∶=A+B/ par T/第一个实参地址/ par Z/第二个实参地址/ call S/转子指令/ 如何产生反映这种模式的四元式 过程调用语句的文法: (1)S→calli(〈arglist〉) (2)arglist→arglist1,E (3)arglist→E 在处理实在参数串的过程中记住每个实参的地址 (1)S→calli (〈arglist〉) {For 队列 argulist.QUEUE 的每一项p Do Gen(par _,_,p); Gen(call,_,_,entry(i))} (2)arglist→arglist1,E {把E.PLACE 排在arglist1 .QUEUE 的末端; arglist.QUEUE:= arglist1 .QUEUE } (3)arglist→E {建立一个arglist.QUEUE ,它只包含一项E.PLACE} ?记录实在参数个数 8.3.7 数组的翻译 数组说明和数组元素的引用 将产生两组计算数组元素地址的四元式 一组计算VARPART,将它放在某个临时单元T中; 一组计算CONSPART,放在另一个临时单元T1中。 同时用表示数组元素的地址。 对应“数组元素引用”(引用其值)和“对数组元素赋值”有两个相应的四元式:“变址取数”和“变址存数”。 “变址取数”的四元式是: (=[ ], T1[ T ] ,-,X)/相当于X∶= T1[ T ] / “变址存数”的四元式是: ([ ]=, X1,-, T1[ T ] )/相当于T1[ T ] :=x/ 习题 …… ( 10 ) goto L ( 10 ) goto 0 …… …… 链尾 ( 10 ) ( 20 ) goto L
您可能关注的文档
- 2012届高三历史第一轮复习专题六_西方人文精神起源与发展_(人民版).ppt
- 第五讲 程序设计与M文件.ppt
- 第五章Servle.ppt
- 第五节 管理计算机文件092 14号 牛文瑞.ppt
- 2012届高三数学复习(广东文)第13章第4节__线性回归分析和独立性检验.ppt
- 第八讲 算术运算类指令.doc
- 第八课:细谈Photoshop的色彩模式.doc
- 2012届高三语文二轮复习:第一章 第三节仿用、选用和变换句式.ppt
- 2012届高三生物一轮复习:认识基因与基因表达.doc
- 2012届高三第一轮复习(文理数) 第四章《数列》专题2.ppt
- 《GB/T 32879-2025电动汽车更换用电池箱连接器》.pdf
- 中国国家标准 GB/T 21649.2-2025粒度分析 图像分析法 第2部分: 动态图像分析法.pdf
- 中国国家标准 GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定.pdf
- 《GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定》.pdf
- GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定.pdf
- 《GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法》.pdf
- GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法.pdf
- 中国国家标准 GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法.pdf
- GB/T 45910-2025信息技术 生物特征识别模板保护方案的性能测试.pdf
- 《GB/T 45910-2025信息技术 生物特征识别模板保护方案的性能测试》.pdf
最近下载
- 《成人住院患者静脉血栓栓塞症的预防护理2023版团体标准》解读.pptx
- 开题报告医学PPT模板.pptx VIP
- 2011中考英语作文指导及范文.doc VIP
- 高考英语总复习-第二部分-语法填空专项突破-专题二-无提示词填空-第六讲-并列句和状语从句-市赛课公.pptx VIP
- 工会招聘考试试题及答案.doc VIP
- 河北省中考英语复习指导课件.pptx VIP
- 供应商评级管理办法.docx VIP
- 2025年人教版高一下学期期末考试数学试题与答案解析(共五套) .pdf VIP
- 2025年河北沧州渤海新区黄骅市事业单位公开招聘工作人员130名笔试备考试题及答案解析.docx VIP
- 党纪党规知识测试题及答案_党规知识测试题及答案.doc VIP
文档评论(0)