编译原理课程设计之第一章 概论.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:79 大小:1.6MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理课程设计之第一章 概论.ppt

编译原理课程设计之第一章概论.ppt

预览

免费试读已结束,剩余 69 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编译原理及实践本课程讲述程序设计语言转换成可执行代码时使用的技术、数据结构和算法。参考书:编译原理及实践机械工业出版社冯博琴冯岚等译;有相应的英文版。内容简介:介绍了经典的编译理论和技术,提供了较完整的适用于教学实践的Tiny语言的编译器源码,是一本理论和实践内容相结合的书。(…)有中文版电子书;有相应的英文版。编译原理西北工业大学出版社蒋立源康慕宁主编(…)西北工业大学网络精品课程---编译原理网址:http://jpkc.nwpu.edu.cn/jp2005/20/kcwz/index.htm编译原理机械工业出版社李建中姜守旭译¥55.00现代编译原理C语言描述人民邮电出版社赵克佳黄春沈志宇译涉及面向对象语言编译器的高级主体:垃圾回收多态类型继承优化技术等授课方式:课程内容第一章概论第二章词法分析第三章上下文无关文法及分析第四章自上而下的语法分析第五章自下而上的语法分析第六章语义分析第七章运行时环境第八章代码生成第一章概论1.1编译原理的重要性在计算机科学的课程中,编译原理占有非常重要的位置:学习该课程有助于理解程序设计语言,迅速掌握新的语言工具。如果软件“工程师”掌握一定的编译原理知识,他就懂得程序是如何运作的,写出更高效的程序;同时可以迅速掌握新的语言工具。该课程包含的许多软件技术对于从事软件设计很有价值。建立词法分析器的串匹配技术已用于文本编辑器、信息检索系统,模式识别器,软件的建模和测试领域。上下文无关文法和语法制导定义等概念已用于许多诸如书的排版、绘图系统这样的小语言。计算机应用程序中经常遇到的一个任务就是命令解释程序和界面程序的开发(例如:手机微浏览器的开发),这比编译器要小,但使用的却是相同的技术。代码优化器已用于程序验证器和从非结构化程序产生结构化程序的程序验证器之中。该课程蕴含着计算机学科中解决问题的思路、抽象问题和解决问题的方法。编写编译器的过程,实际上就是对程序进行全局抽象的过程。可以使我们对编程有一个全面和高层次的理解。计算机理论的三个传统的核心领域:自动机、可计算性和复杂性。第一章概论1.2编译器(compiler)的发展第一代编程语言是二进制机器码,即0、1的二进制序列;机器可以直接执行和处理用机器语言编写的程序。汇编语言程序汇编语言以符号的形式给出指令及存储地址,大大简化了编程过程,直到现在,在一些实时性要求较高及希望使用计算机特定硬件结构特性的场合仍用汇编语言在编程;汇编语言也有许多缺点:编写、阅读和理解都比较困难;而且严格依赖于特定的机器,为一台计算机编写的代码在应用于另一台计算机时必须完全重写。我们把严格依赖于特定机器的机器语言、汇编语言称为低级语言。第三代编程语言的出现:发展编程技术的下一个步骤,高级语言:类似于数学定义或自然语言的简洁形式来编写程序,与机器无关,例如:x=2;翻译程序按照传统的观念,把相应的计算机源语言(高级语言)翻译成该计算机的目标语言(汇编语言或机器语言)的计算机程序称为编译器。简单地说,编译器是一个程序,它读入用某种(源语言)编写的程序并将其翻译成一个与之等价的以另一种语言(目标语言)编写的程序。作为编译过程的一个重要组成部分,编译器能够向用户报告被编译的源程序中出现的错误。1954年至1957年期间IBM的JohnBackus带领的一个研究小组开发了FORTRAN语言及其编译器。于此同时,NoamChomsky开始了他的自然语言结构的研究。他提出了一种用来描述语言的数学系统,并以此定义了四类性质不同的语言,称为语言(文法)的Chomsky分类。编译器的自动构造:编译器设计最近的发展21世纪的智能编译器第一章概论解释程序是如同编译器的一种语言翻译程序,与编译器不同之处在于:它以源程序为输入,在执行过程中不产生目标程序(代码),而是边解释边执行,即直接执行源程序中蕴含的操作(举例)。如:……b:=2;a:=b+2;writea;……边解释边执行的方式工作效率很低,但它比编译程序简单,且占用内存少,适合一些规模较小的语言,如BASIC,它经常用于执行命令语言。有时将编译和解释结合起来解决问题。解释程序虽然不产生目标程序,但它可能产生中间代码。尽管编译程序和解释程序在功能上有明显的区别,但从结构上看,好的解释程序和编译程序并没有过大的差别,它们都有词法分析、语法分析、语义分析和中间代码生成等工作。1.3与编译器相关的程序(续)源程序1.3与编译器相关的程序(续)第一章概论1.4编译器逻辑阶段的划分编译器的编译过程包括了许多步骤或称为阶段,它们执行不同的逻辑操作。下图是编译器中的阶段和与以下阶段或其中一部分交互的3个辅助部件:编译器逻辑结构的组成词法分析程序(词法分析器scanner)