编译原理---第1章

上传人:今*** 文档编号:107892517 上传时间:2019-10-21 格式:PPT 页数:69 大小:2.20MB
返回 下载 相关 举报
编译原理---第1章_第1页
第1页 / 共69页
编译原理---第1章_第2页
第2页 / 共69页
编译原理---第1章_第3页
第3页 / 共69页
编译原理---第1章_第4页
第4页 / 共69页
编译原理---第1章_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《编译原理---第1章》由会员分享,可在线阅读,更多相关《编译原理---第1章(69页珍藏版)》请在金锄头文库上搜索。

1、学时与参考教材,学时:44+12学时 教材 蒋宗礼,姜守旭,编译原理,高等教育出版社,国家“十一五”规划教材,2010年2月 参考书 陈火旺等,程序设计语言编译原理(第3版),国防工业出版社,2003.8.印刷 Alfred Aho ect., 编译原理,赵建华等译,机械工业出版社,2009.1. Alfred Aho ect.,编译原理,李建中等译,机械工业出版社,2003.8.(原版-邮电出版社) Kenneth C. Louden,编译原理及实践,冯博琴等译,机械工业出版社,2001.2.印刷,1,参考教材(续): 金成植,编译程序构造原理和实现技术,高等教育出版社,2000.7. 高仲

2、仪等,编译技术,西北工业大学出版社,1985.9 何炎祥等,编译原理,华中理工大学出版社,2000.10. P.M.刘易斯,编译程序设计理论,科学出版社,1984.5. ,2,学时与参考教材,课程网站,3,教学目的,是一门非常好的课程,18个方面助你成长,课程网站,路径:进入北工大主页,进入“教育在线”,再进入“精品课程”,继续进入“编译原理”,4,全程录像讲稿(最新)、有关资料,主要内容,编译系统及其设计概述(总体结构、设计方法;3) 语言与文法(文法、推导、归约、分类、分析树;5) 词法分析(词法分析、正规式与正规文法、DFA状态转移图;6) 语法分析(自顶向下:LL(1)、递归子程序;自

3、底向上:算符优先、LR;13) 语义分析(属性文法、各种语句的语法制导翻译;10) 运行环境(存储分配、过程调用、符号表管理;3) 代码优化与代码生成(基本块与流图、局部优化、驯化优化、代码生成;2) 总结(2),5,实验安排(另行通知),11周12周(5月11日5月20日) 星期二12节、星期四56节 13周14周(5月20日6月1日) 星期二12节可以验收 基本要求:实现词法分析、语法分析 选作:语义分析、LR分析表自动生成、系统 16周(6月15日) 星期二12节总结,6,成绩评定,考试必备条件 必须按照要求完成指定的习题 必须通过实验系统的验收 成绩 平时20% 期末80%,7,教学目

4、的计算学科是一个宽泛的学科,8,用户,多层虚拟系统 ,开发利用,工程实现,计算机理,呈现抽象、理论、设计三种学科形态,性能越来越好 使用越来越方便,教学目的计算学科的定义,关键:由计算机自动完成/实现自动计算 对信息描述和变换算法的系统研究,主要包括它们的理论、分析、效率、实现和应用 计算学科的根本问题是什么能且如何被有效地自动计算 讨论问题求解的“能行性”,9,教学目的计算学科各有分工,10,科学,工程,技术,:发现规律,:构建系统,:实现服务,计算学科,涉及,教学目的学科基本特征,11,形式化、抽象、逻辑,符号、符号变换,特点,表现形式,教学目的计算学科本科生专业能力构成,编译原理的授课涉

5、及上述四种能力的培养,12,计算思维 算法设计 程序实现 系统开发,公共基础系列 基础理论系列 程序与算法系列 软件系统系列 (系统级的再认识与再提高) 硬件技术系列,学科基础能力,工程型 应用型,科学型,教学目的编译原理是一门非常好的课程,Alfred V.Aho:编写编译器的原理和技术具有十分普遍的意义,以至于在每个计算机科学家的研究生涯中,本书中的原理和技术都会反复用到 涉及的是一个比较适当的抽象层面上的数据变换(既抽象,又实际) 既有一些具体的表示和变换算法;又是针对一类问题的求解(自动计算的具体体现),13,教学目的编译原理是一门非常好的课程,一个相当规模的、逻辑结构清晰系统的设计(

6、含总体结构) “自顶向下”和“自底向上”的系统设计方法(思想、方法、实现) 结论:计算机专业最恰当、有效的知识载体之一 编译:掌握“编译原理”中的基本概念、基本理论、基本方法,在系统级上再认识程序和算法,提升计算机问题求解的水平,增强系统能力,体验实现自动计算的乐趣,14,教学要求,知识层面 掌握编译程序总体结构系统能力基础 掌握程序变换基本概念、问题描述和处理方法,学习有关的原理、实现方法和技术,掌握典型方法 (自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化 ) 增强理论结合实际能力,获得更多的“顶峰体验” 程序实现实现能

7、力基础,15,教学要求,能力层面 理论与实践的结合能力:理论指导系统实现 系统能力:在系统级上认识算法、系统的设计,从宏观到微观、从微观到宏观,提高把握系统的能力 较大规模程序的设计与实现 形式化描述能力:修养“问题、形式化描述、计算机化”问题求解典型过程,推进从“实例计算”到“类计算”和“模型计算”的跨越 程序语言:兼顾语言描述方法、设计、应用,16,学习方法,学习是一个过程 上课、读书、复习、做作业、讨论、做实验、自己编程序、上机调试排错是绝对必要的,不可缺的 上课 课堂是本科教育的主要渠道:不要放弃自己经过多年努力争取到的权利 美国心理学家阿贝尔.梅拉别思: 信息总效果=文字27%+音调

8、38%+面部表情35%,17,复习、做作业、讨论:勤于思考 博览、多思(学而不思则罔、思而不学则怠;书由厚到薄、由薄到厚)、常实践 思考由怀疑和答案组成。怀疑是智慧的大门,知道得越多,就越会发问,而问题就越多。 发问使人进步学问 “轮子”与人类的认识,18,学习方法,理论:使自己“站到巨人的肩膀上”,并拥有一个“智慧的脑” 增加问题求解和探索的主动性 实践:用智慧的脑,练就一双灵巧的手,开创一个新世界希望创新性实践 在理论指导下实践,强化理论与实践相结合能力的培养 读书:强化基础 在独立思考之前,必须先有基础知识。所谓“获得基础知识”并不是形式上读过某门课程,而是将学过的东西真正弄懂,19,学

9、习方法,学习方法,加强实践 “听过的会忘记, 看过的能记得, 做过的才理解”,20,教了什么,学到什么,会做什么,学习方法,辅导答疑 教师是最宝贵的资源 自己要思考,以追求最大收获:习题、问题 应对困难 不畏惧困难 从教训到经验亲身体验 要实践(作业、实验),加深理解,探讨开拓,21,学生的体会,向我们展示了一个原先未曾接触过的世界。我越来越坚信在编译这个领域里,包含了太多前人的智慧 课中不时的小问题,让我们去自由思考 问题不断被解决的同时,又有一个个新的问题提了出来,问题的出现恰恰是上一个方案的不足,这个逐渐递进,逐渐解决问题的过程好像踏着前人研究编译理论的路线,不断感觉大师们遇到的问题、解

10、决问题的思路,22,学生的体会,开阔思路,建立严谨的思考方法,潜移默化地培养形式化描述能力和抽象思维能力, 建立和完善系统观和全局观 带给我的不只是理论知识,更重要的是自动计算的思路,感到了一种“自动计算”的快乐 这门课不仅让我对编译器有了一个比较理性的认识与了解,让我提高了自己的编程能力,还让我再次体会到了计算机学科的一些基本思想,再次感受到了人类的伟大在于抽象的公理系统以及算法的巧妙,23,第1章 引论,1.1 计算机语言的发展 1.2 翻译系统 1.3 编译系统的功能分析 1.4 编译程序总体结构 1.5 编译程序的生成 1.6 编译技术的应用,24,1.1 计算机语言的发展,机器语言(

11、Machine Language) 0、1代码 汇编语言(Assemble Language) 0、1代码与助记符:接近计算机硬件指令系统 高级语言(High Level Language) 语句定义数据、描述算法(程序) 如:C、FORTRAN、PASCAL、C+、JAVA、SQL(数据定义、数据操作) 命令语言(Command) 以功能封装为特征,25,高级语言的分类,命令式语言(Imperative Language) FORTRAN(段结构)、BASIC、Pascal(嵌套结构)、C、COBOL、ALGOL 函数(应用)式语言(Functional Language) LISP、ML

12、逻辑式(基于规则)语言(Logical Language) Prolog 面向对象语言(Object-Oriented Language) Smalltalk、 Ada(程序包)、 C+ 、Java,26,1.2 翻译系统,翻译程序(Translator) 将某一种语言描述的程序(源程序Source Program)翻译成等价的另一种语言描述的程序(目标程序Object Program)的程序,27,翻译程序,源程序,目标程序,(*.C / *.PAS/*.AS),(*.OBJ / *.EXE/*.*),1.2 翻译系统,解释程序(Interpreter) 口译与笔译(单句提交与整篇提交),2

13、8,源程序,输入数据,计算结果,解释程序,1.2 翻译系统,编译程序(Compiler) 高级语言程序汇编/机器语言程序,29,高级语言源程序,汇编/机器语言目标程序,编译程序,1.2 翻译系统,支撑环境、运行库等,30,编译系统(Compiling System) 编译系统=编译程序+运行系统,SourceProgram,Compiler,ObjectProgram,Input,RunSystem,Output,1.2 翻译系统,其它翻译系统 诊断编译程序(Diagnostic Compiler) 优化编译程序(Optimizing Compiler) 交叉编译程序(Cross Compil

14、er) 可变目标编译程序(Retargetable Compiler) 并行编译程序(Parallelizing Compiler) 汇编程序(Assembler)、交叉汇编程序(Cross Assembler)、反汇编程序(Disassembler),31,1.2 翻译系统汇总,ML MLP Assembler Disassembler AL ALP Compiler Data HL HLP Interpreter Result,32,M-Machine L-Languge P-Program A-Assemble H-High Level,1.3 编译系统的功能分析,分析 词法、语法、语义

15、 翻译 语句的翻译、代码生成 例如:标识符左值与右值的绑定(binding) 变量:存储单元; 名字:值 函数:目标代码序列; 名字;入口地址,33,1.4 编译程序总体结构请参阅P5图1.1,目标代码生成器,代码优化器,语义分析与中间代码生成器,语法分析器,34,1. 词法分析,例: res=fact *(term1+term2);,结果 IDN res = IDN fact * ( IDN term1 + IDN term2 ) ;,35,在机器的眼里,这只是一个字符串!,走向目标1:变成一个单词序列!,在机器的眼里,变成一个符号序列!,1、词法分析,词法分析器 (Lexical Anal

16、yzer)又叫做扫描器(Scanner),完成词法分析 功能:词法分析器从左到右扫描源程序(字符串),并将其转换成单词(记号Token)串;同时查词法错误,进行标识符登记符号表管理 输入:字符串 输出:(种别码,属性值)序对 属性值token的机内表示 数据结构?,36,2. 语法分析,res=fact*(term1+term2);,37,关键:让系统知道“组成规则”并按照规则分析!,走向目标2:得到越来越接近要表达内容的成分!,2、语法分析,语法分析器(Syntax Analyzer,又叫Parser ) 完成语法分析 功能:实现“组词成句”,构造分析树,指出语法错误,指导翻译 输入:Token序列 输出:语法成分 数据结构?,38,3. 语义分析,功能:分析由语法分析器给出的语法单位的语义 获取标识符的属性:类型、作用域等

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号