- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理-第7章语义分析与中间代码产生
第七章 语义分析和中间代码产生 引 言 紧接在词法分析和语法分析之后,编译程序要做的工作是进行静态语义检查和翻译。(图7.1) 静态语义检查 1、类型检查。 2、控制流检查。 3、一致性检查。 4、相关名字检查。 翻译(中间语言): (1)便于进行与机器无关的代码优化; (2)使编译程序改变目标机更容易; (3)使编译程序的结构在逻辑上更为简单明确,以中间语言为界面,编译前端和后端的接口更清晰。 主要掌握几种常见的中间语言表达形式: 逆波兰表示(后缀式); 三地址代码(四元式、三元式、间接三元式); 图表示法(DAG 和抽象语法树); 练 习 写出表达式:A+B*(C-D)-E/F↑G的三元式表示, 四元式表示形式。 在本节中赋值语句中的表达式的类型可以是整型、实型、数组和纪录。我们将讨论如何翻译赋值语句,并用三地址代码的形式来表示中间结果。 1.什么是布尔表达式? 布尔表达式是用布尔运算符号(and、 or、not )作用到布尔变量或关系表达式上而组成的。 关系表达式形式如E1 relop E2, 其中E1和E2是算术表达式, relop为关系运算符 ( ,=, =, , =, ≠)。 2. 布尔表达式的两个基本作用: 计算逻辑值; 控制流语句,如 if-then、if-then-else和 while-do等之中的条件表达式。 在这种翻译中,对于作为转移条件的布尔式,我们可以把它翻译成为一串跳转指令。 在翻译过程中,我们假定可以用符号标号来标识一条三地址语句,并且假定每次调用函数newlabel后都返回一个新的符号标号。 对于一个布尔表达式E,我们引用两个标号:E.true是E为‘真’时的控制流转项的标号; E.false是E为‘假’时控制流转向的标号。 表7。7是按此方式将布尔表达式翻译成三地址代码的语义规则,应该掌握。 我们假设实现三地址代码时采用四元式形式实现,并且假定: (jnz , a ,-- , p ) 表示 if a goto p (jrop, x , y, p ) 表示 if x rop y goto p (j , --, --- , p ) 表示 goto p 课本P190讲的四元式链表翻译模式应该掌握。 7.5 控制语句的翻译 我们考虑文法: S→ if E then S1 | if E then S1 else S2 | while E do S1 其中E 布尔表达式。 与上一节一样,我们先讨论对这些语句进行翻译的一般语义规则。然后讨论如何通过一遍扫描产生上述语句的代码,给出相应的翻译模式。 条件语句S的语义规则允许控制从S 的代码S.code之内转移到紧接S.code之后的那条三地址指令。但是,有时候此条紧接S.code之后的指令是一条无条件转移指令,它转移到标号为L的指令。 属性S.next可以避免上述连续转移的发生,而从S.code之内直接转移到标号为L的指令。 S.next:的值是一个标号,指出继S 的代码之后将被执行的第一条三地址指令。 新标号E.true——标识S1的代码的第一条指令,如图7.17(a)所示。 表7.8给出了一个属性文法。E的代码中有这样的转移指令: 若E为真则转移到E.true, 若E为假则转移到S.next. 并置E.false为S.next. 使用P195-196的翻译模式和回填技术通过一遍扫描翻译控制流语句的过程。(参看课本P194-196例7.6。) 使用P195-196的翻译模式和回填技术通过一遍扫描翻译控制流语句的过程。(参看课本P194-196例7.6。) [例7.3] 写出条件语句 IF a 0 THEN x:= x+1 ELSE x:=4*( x- 1) 四元式序列 解: 100 ( j , a , 0 , 102) 101 ( j , , , 105) 102 (+ , x , 1 , T1 ) 103 ( := , T1, , T2)
您可能关注的文档
最近下载
- 广西南宁市第四十七中学2023-2024学年九年级上学期物理学科开学质量调研题【含答案】.docx VIP
- 2025年高考数学全国新课标Ⅱ卷试卷评析及备考策略(课件).pptx VIP
- 义务教育版(2024)五年级信息科技 第14课 算法效率比一比 教案.docx VIP
- 义务教育版(2024)五年级信息科技 第17课 选择排序轻松做 教案.docx VIP
- 《电机调速技术》课程标准.pdf VIP
- 股票期权基础知识题库100道及答案(完整版).docx VIP
- 2025年内蒙古呼和浩特市中考英语试卷真题 (含答案).docx
- 东芝 东芝 RC-10ZWMC电饭煲(锅) 说明书.pdf
- DB37∕T 4516-2022 高速公路边坡光伏发电工程技术规范.pdf VIP
- 2025年高速公路收费员招聘考试试题及答案 .pdf VIP
文档评论(0)