第七章语法制导翻译和中间代码生成 第一节 概述 第一节 概述 二、翻译方法 1、语法制导翻译 ----在语法分析的基础上进行边分析边翻译。 ●注:1)语法制导翻译时会根据文法产生式右部符号串的含义进行翻译,翻译的结果是生成相应中间代码。 ●2)语法制导翻译的依据是语义子程序。 ●3)具体做法:为每个产生式配置一个语义子程序,当语法分析进行归约或推导时,调用语义子程序,完成一部分翻译任务。 ●4)语法分析完成,翻译工作也告结束。 第一节 概述 二、翻译方法 ●1、语法制导翻译 ---语法制导翻译适用于多种语法分析 ---语法制导翻译种类 ●1、自上而下语法制导翻译:对每个文法符号配以语义动作。 ●2、自下而上语法制导翻译:我们主要讨论LR语法制导翻译 第一节 概述 三、语义子程序 1、作用 ●用来描述一个产生式所对应的翻译工作。 ---如:改进某些变量的值;查填各种符号表;发现并报告源程序错误;产生中间代码等。 ●注;这些翻译工作很大程度上决定了要产生什么形式的中间代码 第一节 概述 三、语义子程序 2、写法 ●语义子程序写在该产生式后面的花括号内。 X a{语义子程序} ●注:在一个产生式中同一个文法符号可能出现多次,但它们代表的是不同的语义值,要区分可以加上角标。 如: E E(1)+E(2) 3、语义值 ●为了描述语义动作,需要为每个文法符号赋予不同的语义值:类型,地址,代码值等。 第一节 概述 三、语义子程序 4、语义栈 ●各个符号的语义值放在语义栈中 ---当产生式进行归约时,需对产生式右部符号的语义值进行综合, 其结果作为左部符号的语义值保存到语义栈中。 ●下推栈包含3部分: ---状态栈、符号栈和语义栈 ---注:语义栈与状态栈和符号栈是同步变化的。 第一节 概述 三、语义子程序 注:1)若把语义子程序改成产生某种中间代码的动作,就能在语法分析制导下,随着分析的进展逐步生成中间代码。 2)若把语义子程序改成产生某种机器的汇编语言指令,就能随着分析的进展逐步生成某机器的汇编语言代码。 第一节 概述 例如: 产生式 语义子程序 (0)S’ E {PRINT E ●VAL} (1)E E(1) +E(2) {E●VAL=E(1)●VAL+E(2)●VAL} (2)E E(1) * E(2) {E●VAL=E(1)●VAL*E(2)●VAL} (3)E (E(1)) {E●VAL=E(1)●VAL} (4)E i {E●VAL=LEXVAL} 注:LEXVAL指的是词法分析送来的机内二进制整数。 下推栈 第一节 概述 注:由于语义值是放在语义栈中的,它也可以用栈顶指针TOP指出,语义子程序改写为: 产生式 语义子程序 (0)S’ E {PRINT VAL[TOP]} (1)E E(1) +E(2) {VAL[TOP]=VAL[TOP]+VAL[TOP+2]} (2)E E(1) * E(2) {VAL[TOP]=VAL[TOP]*VAL[TOP+2]} (3)E (E(1)) {VAL[TOP]=[TOP+1]} (4)E i {VAL[TOP]=LEXVAL} 注:LEXVAL指的是词法分析送来的机内二进制整数。 第一节 概述 例如:分析输入串(7+9)*5#,并给出它的计算过程。分析表如下: 第一节 概述 四、常见的中间代码形式 1.四元式形式 (Operator,Operand1, Operand2, Result) 注:1)Operand1, Operand2, Result可能是用户自定义的变量,也可能是编译时引进的变量,这里Operator是双目运算符,若只有一个运算量,则是单目运算符。 2)四元式中变量采用符号表入口的地址,而不用变良的地址,因为语义分析不仅需要变量的地址,还需要从符号表查到的变量的属性,类型和地址等。 第一节 概述 四、常见的中间代码形式 2.三元式 (Operator,Operand1, Operand2) 注:1)这里三元式本身作为存放结果的单元。 2)为了在其它三元式中利用当前三元式的结果,需要对三元式进行遍号。三元式的编号就作为相应三元式的结果值。 第一节 概述 四、常见的中间代码形式 3、后缀表示式(逆波兰表示式) Operand1 Operand2 Operator 4、树型表示法 第二节 简单算术表达式和赋值语句的翻译 一、赋值语句的翻译
您可能关注的文档
- 保险公司业竞赛方案.ppt
- 保险公司专业化售辅导讲义.ppt
- 保险行业付合作方案.ppt
- 保险行业研及公司产品分析.ppt
- 保险新春礼包-国寿总公司.ppt
- 保险需求购买者行为分析.ppt
- 保增长、促发实现开发区土地高效利用.ppt
- 保障电力安全业的组织措施.ppt
- 报刊专业大客户发与维护技巧.ppt
- 北半球新源-生质柴油的提炼及附加价值.ppt
- 2025年版汽车趋势报告 The 2025 EPA Automotive Trends Report.docx
- 2026年边缘计算开源平台EdgeX Foundry入门与二次开发.docx
- 2026年超声内镜放大内镜早癌诊断AI辅助识别系统临床评价.docx
- 2026年报废汽车回收与再制造逆向物流体系.docx
- 2026年产品碳足迹核算方法学:从摇篮到大门与从摇篮到坟墓.docx
- 2026年城乡要素平等交换双向流动政策创新试点申报材料.docx
- 2026年超导半导体接口电路架构与电平转换驱动器设计.docx
- 2026年财政贴息不再以再贷款支持为前提后的风险防范与合规要点.docx
- 2026年不动产信托登记试点政策对遗嘱信托支持.docx
- 2026年城乡有机废弃物协同处理技术方案.docx
原创力文档

文档评论(0)