[编译原理 第一章.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编 译 原 理 (第2版) 张素琴、吕映芝等编著 清华大学出版社出版 课程目标 清楚地理解编译程序是如何工作的。 基本掌握程序设计语言的主要特性和实现途径。 学习使用编译构造工具如Lex、Yacc。 学习应用一些标准的分析算法和技术解决相关软件的问题。 课程要求 学生要求:   程序设计语言(基本概念、语法规则、主要机制及语义)及其编程能力   数据结构 课程学习要求:   编译程序的技术和方法需要从理论和实践两个环节学习和掌握,对理论学习部分要做一些笔头练习,也要掌握应用这些理论的工具的使用。课程提供的PL/0编译程序一定要理解透彻。   ① 首先花功夫将PL/0编译程序读懂,最好用一些例子运行它。   ② FA、LL(1)和LR部分多做一些练习题。   ③ 使用Lex(或Flex),Yacc(或Bison)做一些小型编译器,最好能实现PL/0编译。 第1章 引 论 1.1 什么是编译程序 来自计算机百科全书的定义 软件:计算机系统中的程序及其文档。 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。他和具体的应用领域无关,如编译系统和操作系统等。 语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。 体系结构  -万诺曼机体系结构  -并行体系结构  -嵌入系统 编译程序执行环境  -批处理  -交互环境 20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。 研制编译程序的编译程序,它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。 随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。 另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展。还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。 1.2 编译过程和编译程序的结构 1.3 编译程序和一些软件工具 编译:是按源程序的实际输入顺序,处理程 序语句,得到执行的目标程序。 解释:是按源语言的定义边解释边执行。解释执行是按照被解释的源程序逻辑流程进行工作的。 解释执行特点 : ① 不生成目标代码 ② 能支持交互环境  优点:交互方便。  缺点:解释执行方式速度慢、其空间开销也大,效率低。因对源程序的循环语句部分要反复解释执行。  共同点:都需进行词法、语法、语义分析。  可比喻为:   -编译是笔译(产生目标程序)   -解释是口译(不产生目标程序)   很多语言如BASIC,LISP和PROLOG等等最初都是解释执行的,后来也都有了编译系统。号称最具生命力的JAVA环境同时需要解释和编译系统的支持。 【本章小结】 1.从功能上说编译程序是一个翻译程序,将高级语言的程序翻译成低级语言的程序。 2.以源程序在编译过程中的不同表示形式初步理解编译各阶段的工作。 3.不会有很多人会从事设计和编写编译程序的工作的,但编译技术会应用在很多领域。 4.有关术语:源语言,源程序,目标语言,目标程序,语言转换系统,编译与解释执行。 本章作业:1、2、3、4 1.3.2 处理源程序的软件工具 1、语言结构化编辑器 具有语法制导功能,审查语法错误。 2、语言程序的调试工具 常编写一个解释器,以交互的方式翻译和执行每一行。 3、程序格式化工具 分析源程序并以使程序结构变得清晰可读的形式进行排版或打印。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 4、语言程序测试工具 静态分析器:不运行程序的情况下对源程序进行静态地分析,以发现程序中潜在的错误或异常。 动态测试器:首先对源程序进行分析,在分析的基础上将用于记录和显示程序执行轨迹的语句或函数插入到源程序适当的位置,并用测试用例记录和显示程序运行时的实际路径,将运行结果与期望的结果进行比较分析。 5、程序理解工具 对源程序进行分析,确定模块调用关系,记录程序数据的静态属性和结构属性,并画出控制流程图。 6、高级语言之间转换工具 Evaluation only. Created with Aspose.Slides for .N

文档评论(0)

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

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

1亿VIP精品文档

相关文档