天津大学编译原理讲义-Part1引论.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 编译原理 * 语法分析(续) 语法分析器 id1 := id2 + id3 * 60 id1 id3 id2 := + * 60 在本例中,算符优先级可以通过如下方法定义: 1.定义程序语言的语法规则体现算符的优先级 2.通过某些规则库,例如算符优先级表格等来定义算符的优先级 * 编译原理 * 语义分析(续) 语义分析器 id1 id3 id2 := + * 60 id1 id3 id2 := + * inttoreal 60 在本例中,几个标识符都是实数类型,而且源程序语言允许整数向实数类型的强制转换 * 编译原理 * 编译器的应用模型(逻辑结构) 出 错 处 理 语法分析程序 语义分析程序 目标代码生成程序 词法分析程序 中间代码生成程序 代码优化程序 表 格 管 理 编译的前端 (Front End) 分析部分 与源语言有关 编译的后端 (Back End) 综合部分 与目标语言有关 * 编译原理 * * 编译原理 * * 编译原理 * 遍(PASS) 遍:对源程序(包括源程序的中间表示形式)从头到尾扫描一次并作有关的加工处理,生成新的源程序中间形式或目标程序,通常称之为一遍。上一遍的结果是下一遍的输入,最后一遍生成目标程序。 遍与基本阶段的区别: 五个基本阶段是将源程序翻译成目标程序在逻辑上要完成的工作 遍是指完成上述五个基本阶段的工作要经过几次扫描处理 * 编译原理 * * 编译原理 * Thanks for your time! Questions Answers * * 其中,编译器的举例可以参考原第一章第7页,C++和Java的举例。 解释器的举例可以参考VB语言,以及HTML语言,asp 其区别可以举例asp和asp.net * We will study typical compilation: from programs written in high-level languages to low-level object code and machine code Most of the principles and techniques in this course apply to non-typical compilers and translators * 首先说明,我们要用一个简单的表达式position := initial+rate*60来说明编译器整个的工作过程。 * 说明程序的层次结构通常是通过递归来定义的。可以举例表达式的定义,以及其他语句的定义。具体例子见新《编译原理》P4的例子。 单独的词法分析程序不具有分析源语言的表达式或语句的能力,但是其分析的结果,源程序的记号是语法分析的素材。因此,我们一般的做法是在进行语法分析时,需要更多的记号来参与分析时,才调用词法分析提供素材。 * 编译原理 编译原理 编译原理引论 授课:胡静 * 编译原理 * 教材及参考书 教材: 《程序设计语言编译原理(第3版)》,国防工业出版社,陈火旺等编著 主要参考资料 编译原理(Compilers Principles, Techniques, and Tools)出版社:机械工业出版社 《编译原理》,清华大学出版社,吕映芝、张素琴、蒋维杜编著 * 编译原理 * 相关课程 课程基础 数据结构 计算机原理和汇编语言 高级程序设计语言 后续课程 编译技术 * 编译原理 * 第一章 概论 编译的起源:程序设计语言的发展 基本概念 编译过程和编译程序的构造 * 编译原理 * 程序设计语言的发展 * 编译原理 * 基本概念 低级语言(Low level Language) 字位码、机器语言、汇编语言 特点:与特定的机器有关,功效高,但使用复杂、繁琐、费时、易出错 高级语言 Fortran 、Pascal、C 语言等 特点:不依赖具体机器,移植性好、对用户要求低、易使用、易维护等。 * 编译原理 * 基本概念 * 编译原理 * 基本概念 * 编译原理 * 源程序的编译和运行 * 编译原理 * 源程序的解释运行 * 编译原理 * 源程序的编译-解释运行 * 编译原理 * 编译器和解释器 编译器和解释器的比较 相同点(执行相同的任务): 检查输入程序并确定这个程序是否一个有效程序 建立一个内部模型来刻画输入程序的结构和含义 决定在执行期间值的存放位置 不同点(执行的行为不同): 编译器以一个可执行程序的描述作为输入,以另一个等价的可执行程序的描述作为输出。 解释器以一个可执行程序的描述作为输入,以执行这一可执行程序描述的结果作为输出。 * 编译原理 * 举例 典型的编译器:gcc, javac 非典型的编译器: latex (document compiler) : Tran

文档评论(0)

peain + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档