编译原理 教学课件 ppt 作者 康慕宁 林奕 讲稿_4
112页1、第4章 语法制导的代码生成,一个编译器的目的是把源程序翻译成目标程序(也称为目标代码)。目标代码必须和源程序有相同的语义,也就是说,即使二者的表示方法不同,但对于给定的输入,必须计算出相同的结果。 仅关心源程序的词法和语法的正确性,这些是编译程序的前端的工作,即识别语法上正确的源程序。 本章我们把注意力转到编译程序的后端,即如何生成目标代码。 语义处理含有两个主要功能,一个是检查每个语法结构的表态语义,验证一个语法上合法的程序是否真正有意义,另一个是在表态语义正确的前提下,进行代码的翻译,即生成程序的另一种表示形式的中间语言代码或直接生成目标代码。 传统的方法是采用所谓“语法制导”方式完成这个翻译工作的。 分析器严格按照被分析的源程序的语法和语义,构造合适的中间(或目标多或少)代码序列。其中,对语法的依赖多于对语义的依赖。,4.1 常见的中间语言简介,逆波兰表示 波兰逻辑学家J.Lukasiewicz于1929年提出了一种表示表达式的方法。 按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。 特点:表达式中各个运算是按运算符出现的顺序进行的,故无需使用括号来指示运算顺序,因而又
2、称为无括号式。下面我们对照地给出一些表达式的两种表示。,(1)在两种表示中,运算对象出现的顺序相同。 (2)在后缀表示中,运算符按实际计算顺序从左到右排列,且每一运算符总是跟在其运算对象之后。,由于后缀表示中的各个运算是按顺序执行的,因此,它的计值很容易实现。 仅需从左到右依次扫视表达式中的各个符号,每遇一运算对象,就把它压入栈顶暂存起来; 每遇一个二元(或一元)运算符时,就取出栈顶的两个(或一个)运算对象进行相应的运算,并用运算结果去替换栈顶的这两(或一)个运算对象。 继续扫视余留的符号,直到扫视完整个表达式为止。 当上述过程结束时,整个表达式的值将留于栈顶。,逆波兰表示不仅能用于表示表达式,还可用于表示其他的语法结构。 此时的运算符不再限于算术运算符、关系运算符和逻辑运算符。 每个运算符的操作对象也可以不止两个。 例如,赋值语句x=a+b*c可按后缀式写为x abc*+=。,为了用后缀式表示一些控制语句,我们假定将后缀式的各符号存放在一个一维数组Pn中。 此外,还需引入一些转移操作符。 p J无条件把控制转至Pp(即从Pp开始继续执行,下同)。 e p JZ e是某表达式e的后缀表
3、示,当e的值为0时,转向Pp。 e1 e2 p JLe1和e2分别是表达式e1和e2的后缀表示,当e1e2时,转向Pp。 类似地,我们还可以定义JN(非零转)、JP(正号转)、JM(负号转)等。,条件语句 IF e THEN S1 ELSE S2 可写成 e p1 JZ S1 p2 JR S2 其中,e,S1和S2分别是e,S1,S2的后缀表示。另外,p1表示S2在数组P中的起始位置;p2表示位于S2之后那个符号的位置。,p1,p2,4.1.2 四元式,四元式是一种更接近目标代码的中间代码形式。由于这种形式的中间代码便于优化处理,因此,在目前许多编译程序中得到了广泛的应用。 四元式实际上是一种“三地址语句”的等价表示。它的一般形式为: (op, arg1, arg2, result) 其中,op为一个二元(也可是一元或零元)运算符;arg1、arg2分别为它的两个运算(或操作)对象,它们可以是变量、常数或系统定义的临时变量名;运算的结果将放入result中。四元式还可写为类似于Pascal语言赋值语句的形式: result:=arg1 op arg2,需要指出的是,每个四元式只能有一个
4、运算符,所以,一个复杂的表达式需由多个四元式构成的序列来表示。例如,表达式A+B*C可写为序列 T1:=B*C T2:=A+T1 其中,T1,T2是编译系统所产生的临时变量名。 当op为一元、零元运算符(如无条件转移)时,arg2甚至arg1应缺省,即result:=op arg1或 op result ;对应的一般形式为: (op,arg1, ,result) 或 (op, , ,result) 在实际产生的四元式中,op往往用一整型数表示(操作符的代码),它可能附带有不止一种属性。例如,加运算可以分为定点加法和浮点加法两种,我们可用不同的整数值区分这两种加法。 四元式中运算对象arg1、arg2和结果域result,它们可以是指向符号表中某项的指示字,也可以是某个临时变量的序号. 因此,在实际的翻译过程中,还需要进行相应的查填符号表工作。 在本章中,我们只作原理性讨论。,4.1.3 其他表示法,除前面所述的逆波兰式、四元式外,常见的中间语言还有三元式表示和树形表示,以及接近Pascal形式的P代码,接近C格式的C代码等。 在本章以下的各节中,我们将分别对一些常见语法结构的语法制导翻
《编译原理 教学课件 ppt 作者 康慕宁 林奕 讲稿_4》由会员E****分享,可在线阅读,更多相关《编译原理 教学课件 ppt 作者 康慕宁 林奕 讲稿_4》请在金锄头文库上搜索。
逍遥游复习 知识点整理
近现代法德关系史 高三展示课3稿
当代大学生人生信仰及追求的调查研究
长相思 纳兰性德-ppt课件
课件:危机意识 一
英语ppt演讲关于阿甘正传
发达国家基础教育改革的动向与趋势 修改版
中国民间美术 课件.ppt
生物质发电技术与系统 课程ppt 第1章 生物质发电技术现状及发展趋势 2学时 -----2016
现代信号处理思考题 含答案
执业药师继续教育 抑郁症的药物治疗 100分
小学生的成长档案模板不用修改 万能型
增订六版 现代汉语 上册 第二章文字 思考与练习答案
国家财政ppt课件
加拿大英语介绍
六年级统计图的选择课件
中学生成长档案ppt
中国现代文学史期末复习整理
lohi和hihilo训练对女子赛艇运动员运动能力影响的比较研究
风雨贾平凹阅读答案
2024-04-11 25页
2024-04-11 37页
2024-04-11 28页
2024-04-11 31页
2024-04-11 36页
2024-04-11 29页
2024-04-11 22页
2024-04-11 27页
2024-04-11 34页
2024-04-11 32页