- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第七章 语义分析和中间代码产生 1、 编译程序的任务是把源语言程序翻译成目标程序,有些编译程序在编译过程中,不产生中间语言,而是直接从源语言程序翻译成目标语言程序: 源程序 编译程序 目标代码 以上编译过程省略了中间语言,它不利于编译所产生的目标代码的优化.为了产生高质量的代码,可以将源语言程序首先翻译成一种特殊形式的中间语言代码形式,并对其进行优化,然后再将它翻译成最终的目标代码。优点:P166 源程序 语法分析 中间代码 优化 优化后中间代码 目标代码 代码生成 2、关于语法制导翻译法 中间语言有多种形式,常见的有逆波兰表示、四元式、三元式和树表示等,对中间语言要有两方面的要求: 与具体目标机无关; 要有利于代码生成。 为了描述的方便,我们约定如下几个符号:(1) LJ : 转向某个标号处;(2) TJ : 按真转移;(3) FJ : 按假转移;(4) RJ : 无条件转移。 不同的参考书不一样! 一、表达式的逆波兰表示: 7.1 逆波兰表示法(后缀表示) 逆波兰表示法对表达式而言也就是把运算量 (操作数) 写在前面,把运算符放在后面的一种表示法。 例如有如下表达式:a+ba+b*c(a+b)*c 逆波兰表示 ab+abc*+ab+c* 可以看出后缀表示具备以下优点: (1)无括号,形式简单清楚; (2)运算符的顺序与表达式的运算次序相同; 在具体处理过程中,可以从左到右检查表达式的各符号,遇到运算分量则保存,若遇到运算符,则取其前面的两个分量(双目运算)或一个分量(单目运算)进行处理。 后缀表示法与前缀表示法及中缀表示法相比较,其共同的特点是: (1)运算符的个数不变 ; (2)运算量的次序和个数不变。 在计算机处理过程中可以用一个栈 (硬件或软件栈) 来计算它的值。一般的计算过程是:自左向右扫描后缀式,每逢遇到运算量就令其入栈; 遇到K目运算符,则将它作用于栈顶的K个项,并用运算结果代替这K个项。 实际计算时,每遇到一个K目运算符,与它有关的K个运算量已在栈顶,运行结果在原来的K个项从栈中移出后置于栈顶。 例如:ab+c* 的计值过程如下: 1. a入栈; a 2. b入栈; b 3. 将栈顶两项相加, 移走栈顶的两个项, 把和数E1置于栈顶 E1 E1=a+b 4. c入栈. c 5. 将栈顶两项相乘, 移走栈顶的两个项, 把积E2置于栈顶; E2 E2=E1*c 二、其它语法成分的逆波兰表示: 1.赋值语句: 左部:=表达式 把‘:=’看成一个运算符号——赋值运算,它为一特殊的双目运算,则对应的逆波兰表示为: 左部 表达式的逆波兰表示 := 例:x:=100 逆波兰表示为: x100 := x:=a*b+c/d 逆波兰表示为: xab*cd/+:= 在进行具体处理时,可以采用与表达式相似的方法,不同之处是进行运算时,栈中保存的是左部变量的地址,而不是它的直,最后的处理不是得到一个结果,而是进行赋值(将表达式的值送到指定的内存单元),所以,赋值工作完成后,应将栈顶两项(变量地址和表达式的值)退栈。 2.转向语句: goto 标号 它对应的逆波兰表示为: 标号 LJ Label Jump 含义为转向某标号处,LJ可看成单目运算符,标号是LJ的运算分量 例:goto 100; 100 LJ goto Loop; Loop LJ 3.条件语句: 在条件语句的逆波兰表示中,它是通过转向逆波兰式中的第几个符号去执行来实现,要转去的符号,用它的“序号”来表示: 序号 RJ 布尔表达式逆波兰式 序号 TJ 布尔表达式逆波兰式 序号 FJ 无条件转向转向逆波兰式中的第序号个符号去执行,RJ为单目运算符号; 布尔表达式值为真转序号处执行; 布尔表达式值为假转序号处执行; 对于条件语句:if 布尔表达式 then 语句1else 语句2 可用以下的逆波兰式表示: 布尔表达式的逆波兰式 序号1 FJ 语句1的逆波兰式 序号2 RJ序号1:语句2的逆波兰式序号2:…… 可以不分行书写而将它们写在一行中。 序号1是指“语句2的逆波兰表示”中第一个单词的序号 序号1是指条件语句的后继语句的逆波兰表示中第一个单词的序号 例:有条件语句: if ab then x:=a+b else x:=a-b 其逆波兰表示为: (1) ab (4) FJ (6) xab+:= (1
您可能关注的文档
- 防胡中学李玉《学生自主学习能力的培养策略探究》立项申报书.doc
- 矫正和预防措施程序,.doc
- 浅谈幼儿一日生活常规培养.doc
- 浅谈中国行政区域重新划分2.doc
- 建筑安装行业的涉税风险控制策略和税务稽查应对策略.doc
- 移动互联网发展状况和我国的战略路径70分.doc
- 猪多杀性巴氏杆菌的分离鉴定及生物学特性探究.doc
- 月球车和地球系统通信协议.doc
- 杨汶佼集散控制系统全功能工程测试台的设计和应用.doc
- 建设工程项目成本管理探究(模板).doc
- 2012-2021北京重点校高一(下)期中语文汇编:词类活用.pdf
- 电力市场与经济运行优化:电力市场优化算法_(28).电力市场中的市场力分析.docx
- 医院培训课件:《俯卧位通气的护理》.pptx
- 电力市场与经济运行优化:电力系统能效优化方法_(1).电力市场基础理论.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(9).电力系统运行与能效优化.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(15).电力市场与环境影响分析.docx
- 电力市场与经济运行优化:电力系统优化调度_(1).电力市场基础与原理.docx
- 电力市场与经济运行优化:电力系统优化调度_(14).电力市场改革政策与影响.docx
- 电力市场与经济运行优化:电力系统运行优化_(4).电力系统运行基础.docx
- 2025年航运行业分析.docx
最近下载
- 2025.10自考-《马克思主义基本原理概论》真题及答案 .pdf VIP
- 33、现浇箱涵施工方案.docx VIP
- 2025年全国10月自考马克思主义基本原理概论真题及答案解析.doc VIP
- 5.高项项目范围管理案例分析:范围定义案例.pptx VIP
- 城市雕塑创作设计收费标准·2020版.docx VIP
- 某一级公路边坡稳定性分析评价及治理方案研究.pdf VIP
- 2019部编版小学《道德与法治》五年级上册《美丽文字 民族瑰宝》课件3..ppt VIP
- 新22S2 给水工程建筑图集.docx VIP
- 《海军概况》网课章节测试题答案.docx VIP
- 中国移动铁通公司招聘考试试卷及答案.docx VIP
文档评论(0)