- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译第一章,c编译器,apk反编译,编译原理,c语言编译器,java反编译工具,反编译,反编译工具,编译器,gcc编译器
中国科大 编译原理 软件学院 郭伟 guow9966@163.com 课 程 简 介( 课程地位) 课程简介( 课程间的拓扑图) 开课目的 预备知识:两门以上的高级 程序设计语言 课 程 简 介 学习的意义 对编程语言的设计和实现有深刻的理解,对和编程语言有关的理论有所了解,对宏观上把握编程语言来说,起一个奠基的作用. 从软件工程看,编译器是一个很好的实例,所介绍的概念和技术能应用到一般的软件设计之中. 大多数程序员同时是简单语言的设计者,有助于提高对这些语言的设计水平. 它的理论基础扎实,其形式化系统不仅应用于编译技术,还大量应用于人工智能,多媒体技术及数据库等领域. 课程简介 [教材和参考书] 肖军模,程序设计语言编译方法,大连理工大学出版社 陈火旺等,程序设计语言编译原理,国防工业出版社,2000 陈意云、张昱,编译原理和技术,高等教育出版社, 2003 吕映芝等,编译原理,清华大学出版社 课 程 简 介 课程要求: 课时:48学时 分为两部分:(分别计分) 理论基础(48学时):课堂教学 实践部分(0学时):上机实践 目的: 掌握编译的理论基础和形式化系统,了解编译的全过程及其具体实现方法。能运用所学技术解决实际问题,能独立编写一个小型编译系统。 课 程 简 介 要求: 提前预习,认真听课,理解基本概念,基本原理与基本算法 在看书时或理解例题及习题时,一定要划出相应的细节变化过程,通过画图来加深理解 作业要求独立、按时完成 辅导地点:软件楼 421 E-mail:guow9966@163.com 答疑时间: 学期总评 = 考试成绩占80%,平时占20% 内容简介 ?第一章 概论 ?第二章 编译基础知识 ?第三章 词法分析器 ?第四章 自上而下语法分析 ?第五章 自下而上语法分析 ?第六章 LR分析法 ?第七章 语法制导翻译技术 ?第八章 运行时的存贮分配 ?第九章 目标代码优化 第一章 概 论 (介绍名词术语、了解编译系统的结构和编译过程) 1.1 程序设计语言的发展 程序设计语言的转换 翻译 —是指能把某种语言的源程序,在不改变语义的条件下,转换成另一种语言程序—目标语言程序 编译 —专指由高级语言转换为低级语言 解释 —接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句 程序设计语言的转换 翻译 —是指能把某种语言的源程序,在不改变语义的条件下,转换成另一种语言程序—目标语言程序 编译 —专指由高级语言转换为低级语言 解释 —接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句 1.3 编译过程概述 一段英文翻译成中文 需经下列步骤: 识别出句子中的单词 分析句子的语法结构 根据句子的含义进行 初步分析 对译文进行修饰 写出最后的译文 举例说明 Void jisuan( ) {int y,c,d; float x,a,b; x=a+b*50; y=c+)d*(x+b; } 1.词法分析 词法分析依照词法规则,识别出正确的单词,转换成统一规格备用 转换 —对基本字,运算符,界符的转换 —标识符的转换 —常数的转换 —转换完成后的格式(类号,内码) 描述词法规则的有效工具是正规式和有限自动机 1.词法分析 完成的任务: 第一章 概 论 赋值语句的语法规则: A::=V=E E::=T|E+T T::=F|T*F F::=V|(E)|C V::=标识符 C::=常数 语法分析的方法: ——推导(derive)和归约(reduce) 推导——最左推导,最右推导 最右推导 最左归约 (x=a+b*50) 归约—最右归约,最左归约 A V=E x=E x=E+T x=T+T x=V+T x=a+T x=a+T*F x=a+F*F x=a+V*F x=a+b*F x=a+b*C x=a+b*50 最左推导 最右归约 C语言语句 y=c+)d*(x+b 分析过程: A V=E V=E+T V=E+F V=E+V V=E+b V=T+b V=T*F+b V=T*V+b V=T*x+b 无法得到该句 故,该C语言语句是错误的 具体地说,语法分析是在记号流的基础上建立一个层次结构——建立语法树 语法分析过程也可以用一棵倒着的树来表示 这棵树叫语法树,比如上述程序段中的单词序列:i
文档评论(0)