- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                6_语法制导翻译和中间代码生成4.0
                    如 IF A∨B THEN WHILE C DO X:=Y+Z     ELSE      S1,S2    END 识别出IF,则认定有E,对E编一递归过程,要做到: 把A∨B消化掉,产生相应的四元式 算出语义值,送到E.TC和E.FC中 回填E.TC,即真转出口 识别出THEN,认定是一个语句S,此S是一递归过程。 把WHILE语句消化掉,产生相应的四元式。 把S的不能确定内容作为S.CHAIN  识别ELSE,认定还必须是一个S,完成S的翻译。 S(2)的翻译 E.FC返填 三流合一,作为返回  S(2)  自上而下表现值,确定了一个大前提,可以在产生式中间调用语义程序  在规约过程中,编出四元式  所有子程序,要递归  子程序的返回值是语义值  关于如何把语义程序套进递归下降器中,参看书上的两个例子。      早期的编译程序中,语法分析和语义翻译往往混杂在一起。把语法分析和语义翻译分开不仅可使语法分析形式化和自动化,而且可使整个编译程序的结构更合乎逻辑和更加系统化。语法制导翻译技术就是为这个目标而生的。该方法在六十年代初出现之后很快就得到了推广应用。        最早使用语法制导翻译法来设计编译程序的是埃仁。语法制导翻译法由于埃伊柯尔、奇塔姆和菲尔德曼等人的工作而迅速传播开来。在理论方面,早期有刘易斯等人。         1 程序设计语言—编译原理                            国防科学技术大学   陈火旺   P132-P177 2 编译原理及实践                            Keeneth C.Louden   冯博琴等译                              第八章 代码生成             3 现代编译程序设计                            冯博琴等译                              第四章 处理中间代码            产生代码过程 case 产生标号TEST,NEXT和一个临时单元T E 产生 T:= E的四元式 OF 产生GOTO TEST四元式,设置一个空队列QUEUE Ci 产生一个标号Li,连同NXQ填入符号表,(Ci,Pi)进入队列QUEUE Si 产生{ Si 四元式}     { GOTO NEXT} otherwise 产生标号Ln,连同NXQ填入符号表 END 产生n个条件转移语句的四元式  TEST:  (case, C1, P1, _)         (case, C2, P2, _)            …         (case, Cn-1, Pn-1, _ )         (case, T, Pn, _ )         (label, NEXT, _, _)  NEXT: 注意 1  末尾的多向转移目标指令组,视不同情况生成,可优    化处理。 如果Si又是一个case语句。怎么办?   应该建立嵌套队列,要解决队列嵌套,栈嵌套的底标记问题。 3  在产生完指令之后,队列可以不要,但符号表仍然存在,这样可以灵活地优化。   本小节讨论数组元素的表达式和赋值句的翻译。由于数组元素较简单变量有一定的特殊性,分几个方面来介绍。 本节内容 地址计算公式 四元式中数组元素表达形式(数组元素引用和中间代码) 赋值语句中数组元素的翻译 简化假定  数组元素按行存放,每维下限都为1,每个元素只占一个机器字,目标机器存储器是以字编址的。 对数组元素A[i1,i2,…in]地址D的计算公式如下:  D = CONSPART + VARPART  CONSPART = a – C    C = d2d3…dn + d3d4…dn + … + dn +1  VARPART = i1d2d3…dn+i2d3d4…dn+…+in-1dn+in a addr(A[1,1,…1]),数组首址 注意  CONSPART只依赖于数组各位的界限d和数组的首址a,与数组元素各维的下标i1,i2,…,in无关。因此,对确定数组而言,计算数组元素的地址时,无需独立计算CONSPART。 VARPART是一个可变部分,它的值随着各维下标i1,i2,  …,in的不同而不同。  计算数组元素的地址主要计算VARPART。 这儿只讨论确定数组(编译时可静态确定体积的数组,也称静态数组)的翻译。 简单变量可以在符号表中查到它的地址,而数组元素却不行,在符号表中只有它们的总代表——数组名的入口。 名字 特性 地址   A 数组 i1 u1 d1 In un dn n C type a A[1,1,…,1] A[1,1,…,2 … 因此,每个下标变量在语句中出现,如 X:=A[…
                您可能关注的文档
最近下载
- 摩擦学基础知识-磨损.ppt VIP
- 景观规划设计(第3版)课件:滨水景观文化设计.pptx VIP
- 甘肃省兰州市城关区树人学校2022-2023学年八年级上学期期中物理试卷(含答案).docx VIP
- 2018-2019学年甘肃省兰州市树人中学八年级(上)期中物理试卷.docx VIP
- 2020-2021学年甘肃省兰州市城关区树人中学八年级(上)期中物理试卷(含解析).doc VIP
- 十五五规划(2026-2030年)是国家未来五年发展的战略性蓝图。以下关于十五.docx VIP
- 电工基础试卷a卷及答案.doc VIP
- 甘肃省兰州市第三十五中学2022-2023学年八年级上学期期中物理试卷(含答案).docx VIP
- 北京市通州区2024-2025学年七年级上学期期末生物学试题(含答案).pdf VIP
- 北京市通州区2024-2025学年七年级上学期期末考试英语试卷.docx VIP
 原创力文档
原创力文档 
                         
                                    

文档评论(0)