《编译原理与技术》PPT课件.ppt
《《编译原理与技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编译原理与技术》PPT课件.ppt(27页珍藏版)》请在三一办公上搜索。
1、1,编译原理与技术,西安电子科技大学 软件工程研究所刘坚,2,教学内容与要求,内容 本课程的内容是建立在本科基础上的,尽量避免重复本科已有的内容。为了整个课程的一致性,而且由于学习方法的螺旋式特性,一些已学过的内容也会有所涉及,但会在原有基础上提高一步。重点放在本科课程中没有涉及的领域。主要介绍如下内容,并在兼顾理论与实现两个方面上进行讨论。,编译程序编写工具-lex和yacc:学会使用lex和yacc进行程序设计;词/语法分析器核心算法:有限自动机的有效构造算法和LALR(1)分析器的构造算法;语法制导翻译:属性、L属性的自下而上计算;,3,教学内容与要求(续1),类型检查:类型理论的发展、
2、类型与类型检查、多态处理、封装与继承的实现技术等,类型系统的形式化方法简介;动态语义:指称语义入门,原理及其应用;代码优化:局部与循环优化,全局数据流分析技术。,要求,做适当作业,期末统一收缴一次,并进行一次作业讲解(在课程总复习中进行)。作业要求独立做(不计分);也可以不做,但不要抄;若合作做,则几个人合交一份。做上机作业,实现一个Pascal子集编译程序的全过程:两个学生一组,可以采用任何类似的Lex/Yacc工具。上机作业计分(15左右),重点考核上机报告和完成的软件。期终考试:闭卷考试。严格要求(按真实成绩给分)适当读参考文献。选一个课代表。,4,参考文献,A.V.Aho,J.D.Ul
3、lman,“The Theory of Parsing,Translation,and Compiling,Volume I:Parsing,”Prentice-Hall Inc.1972A.V.Aho,J.D.Ullman,“The Theory of Parsing,Translation,and Compiling,Volume:Compiling,”Prentice-Hall Inc.1973人民邮电出版社,Aho等,“编译原理 技术与工具”(影印版)(主要参考书,可作教材,上机作业题目)高等教育出版社,Andrew W.Appel,“现代编译程序实现Java语言”(影印版)机械工业出
4、版社,Steven S.Muchnick,“高级编译器设计与实现”(影印版),编译的相关理论与技术,5,参考文献(续),程序设计语言原理与设计,R.W.SebestaConcepts of Programming Languages,机械工业出版社(影印版)Terrence W.Pratt,Marvin V.Zelkowitz Programming Languages-Design and Implementation,third edition,Prentice-Hall International,Inc.1996 David A.Watt“Programming Language Sy
5、ntax and Semantics,”Prentice Hall Inc.1991,编译器构造Axel T.Schreiner,H.George Friedman,Jr.Introduction to Compiler Construction with UNIX,Prentice Hall,Englewood Cliffs,NJ07632,1985杨作梅译,(Jobn R.Levine,Tony Mason&Doug Brown著),lex与yacc,机械工业出版社,2003 how to use lex&yacc(互联网),6,第一章 概述1.1 要求与目的,紧密相关的三个领域程序设计语
6、言的应用程序设计(PLA)程序设计语言的翻译编译器的构造(PLT)程序设计语言的设计语法、语义(PLD),CCC 2002中的基本要求 程序设计基础(PF):程序设计基本结构、算法与问题求解、基本数据结构、递归、事件驱动程序设计。(PLA)程序设计语言(PL):程序设计语言概论、虚拟机、语言翻译简介、声明和类型、抽象机制、面向对象程序设计(以上是核心);函数程序设计、语言翻译系统、类型系统、程序设计语言的语义、程序设计语言的设计(以上是选修)。(PLA、PLT、PLD),7,1.2 程序设计语言简述,深刻理解程序设计语言的应用、翻译、设计等方面的基本原理与方法;学会用编译器编写工具(LEX/Y
7、ACC)进行语言处理软件的设计;初步认识动态语义的形式化描述方法。,1.2 程序设计语言简述,编译器处理的对象是程序设计语言,因此在对程序设计语言了解的基础上和它们与编译器的关系上,有必要在以下几个方面再进行一些简单讨论。,目的,8,1.2.1 程序设计语言的发展,从年代看50s:Fortran、LISP、COBOL、Algol 60/68.70s:C、Pascal、Prolog、Smalltalk、Modula 2.80s:C+、Ada83/Ada95、Java、Modula 3.从抽象级别看过程抽象数据类型类(封装继承)从工作方式看非结构化结构化顺序并行基于消息传递单平台跨平台 从程序设计
8、范型看过程式语言面向对象语言函数式语言非算法式语言(形式化)脚本式语言,9,1.2.2 影响程序设计语言发展的因素,应用需求的推动:软件越做越大,功能越来越强,要求语言的抽象程度越来越高语言实现的限制(编译器是否好编写):典型的例子如Algol68和Ada83语言与编译器之间的相互推动与制约:自由格式,保留字,多继承等。,1.2.3 程序设计语言“好”的标准(属性)清晰、简单、与一致性:可读性、可编译性、可维护性 对应用需求的自然实现:设计思想自然过渡到语言描述 支持抽象:x,y:integer x+y a,b:array of.a+b?,10,1.2.3 程序设计语言“好”的标准(续),形式
9、化验证:在源程序中通过加入前置条件、后置条件,根据运算不变量进行数学推理,从而检验程序的逻辑正确性;或者直接采用动态语义的形式化描述进行程序验证(建立数学模型,通过数学计算得到结果,看是否符合预期结果)。静态阅读:风格好的程序通过阅读可以检查出部分逻辑错误,但不是全部的错误。实例测试:此方法是最常采用的、也是最成熟的方法。所需考虑的首要问题是如何生成实例才能达到程序的完全覆盖,以及如何进行测试。,可移植性:任何一段源程序,在A机上编译运行,与在B机上编译运行,得到同样的结果。使用代价小:程序运行代价、程序翻译代价(编译)、程序维护代价(整个程序的生命周期)。,便于程序验证,11,1.2.4 环
10、境对语言的影响(对编译器的要求),命令行(独立的):编辑、编译、运行等均是独立进行的;集成环境:编辑编译调试运行(要求编译器提供编译和调试信息,如编译阶段和运行阶段不同错误分别对源程序的对应等)。作为其他集成环境的一部分,如together-J、rose等。批处理环境(一般是CPU/存储器密集型):大型信息处理系统:日终处理、数据更新等。交互式环境(I/O密集型):游戏、实时事务处理(如查询、交易等)。嵌入式环境(实时响应关键型):控制系统(如生产线)军事武器(如飞机、火炮、舰船等)。广泛的民用领域,如手机、数码相机等。分布式环境:如分布式系统、网络系统与Internet等。,语言环境包括开发
11、环境(1,2)与运行环境(36)。,12,1.2.4 环境对语言的影响(续),运行环境的复杂性,多种环境的混合,如计算机集成制造系统:信息管理、生产控制、精密加工等;又如大型信息、金融系统:批处理、交互查询,以及网络与Internet等。,13,1.3 编译与解释,编译与解释是翻译语言的两种基本方法。解释器与编译器的主要区别在于程序运行时的控制权在解释器而不在目标程序。,1.3.1 各自的特点编译器:生成目标代码,运行速度快、空间占用少,效率高;动态特性和可移植性差(典型应用:批处理环境和嵌入式环境)。解释器:动态特性、可移植性好,但是效率低(典型应用:交互式环境、分布式环境)。,1.3.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理与技术 编译 原理 技术 PPT 课件
链接地址:https://www.31ppt.com/p-5569010.html