编译原理 教学课件 作者 康慕宁 林奕 讲稿_4.pptVIP

  • 4
  • 0
  • 约3.3万字
  • 约 112页
  • 2019-10-09 发布于未知
  • 举报

编译原理 教学课件 作者 康慕宁 林奕 讲稿_4.ppt

第4章 语法制导的代码生成 一个编译器的目的是把源程序翻译成目标程序(也称为目标代码)。目标代码必须和源程序有相同的语义,也就是说,即使二者的表示方法不同,但对于给定的输入,必须计算出相同的结果。 仅关心源程序的词法和语法的正确性,这些是编译程序的前端的工作,即识别语法上正确的源程序。 本章我们把注意力转到编译程序的后端,即如何生成目标代码。 语义处理含有两个主要功能,一个是检查每个语法结构的表态语义,验证一个语法上合法的程序是否真正有意义,另一个是在表态语义正确的前提下,进行代码的翻译,即生成程序的另一种表示形式的中间语言代码或直接生成目标代码。 传统的方法是采用所谓“语法制导”方式完成这个翻译工作的。 分析器严格按照被分析的源程序的语法和语义,构造合适的中间(或目标多或少)代码序列。其中,对语法的依赖多于对语义的依赖。 4.1 常见的中间语言简介 逆波兰表示 波兰逻辑学家J.Lukasiewicz于1929年提出了一种表示表达式的方法。 按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。 特点:表达式中各个运算是按运算符出现的顺序进行的,故无需使用括号来指示运算顺序,因而又称为无括号式。下面我们对照地给出一些表达式的两种表示。 由于后缀表示中的各个运算是按顺序执行的,因此,它的计值很容易实现。 仅需从左到右依次扫视表达式中的各个符号,每遇一运算对象,就把它压入栈顶暂

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档