【精品】【考研计算机专业课】天津大学 编译原理讲义 ch1编译原理(可编辑.ppt
《【精品】【考研计算机专业课】天津大学 编译原理讲义 ch1编译原理(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】【考研计算机专业课】天津大学 编译原理讲义 ch1编译原理(可编辑.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【考研计算机专业课】天津大学 编译原理讲义 ch1编译原理引子n你用编程语言(例如你用编程语言(例如C C)写的程序是)写的程序是怎样被计算机运行的?怎样被计算机运行的?通常使用的编程语言n我们通常使用的编程语言(例如C)是高级语言(high-level language):n语义清晰,贴近自然语言(即人类使用的语言),易于理解,编程方便。n其程序无法被计算机理解和直接执行。计算机使用什么语言?n计算机使用机器语言(machine language):n机器语言程序本质上是一串0,1串,它可以被计算机理解并执行。n人类理解机器语言比较困难,因而直接使用机器语言编程是困难而效率低下的。编译器的作
2、用n我们用高级语言编写的程序只有被转换成机器语言程序后才能被计算机理解和执行。n这种转换是由编译器进行的。n在这一过程中,被转换程序称为源程序,其编程语言(通常是高级语言)称为源语言(source language),而转换后的程序称为目标程序,其语言称为目标语言(target language)。教材和参考书n教材:n编译原理,陈意云、张昱,第2版,高教出版社,2009。n英文参考书:nCompilers:Principles,Techniques,and Tools.A.V.Aho,M.S.Lam,R.Sethi,and J.D.Ullman,2nd edition,Addison-Wes
3、ley,2007.(Dragon book)nModern Compiler Implementation in C/Java/ML.Andrew W.Appel with Jens Palsberg.第2版影印版,高教出版社。(Tiger book)nAdvanced compiler design and implementation.Steven S.Muchnick.影印版,机械工业出版社,2003。(Whale book)教材和参考书(续)n中文参考书:n编译原理,蒋立源、康慕宁,第3版,西北工业大学出版社,2005。n上述英文参考书的中文翻译版本。n程序设计语言编译原理,陈火旺等,
4、第3版,国防工业出版社,2000。授课内容:n编译器概述n词法分析n上下文无关文法和语法分析n语法制导翻译n中间代码生成n符号表管理n运行时存储管理n查错纠错课程要求:n本课程共68学时,其中讲授51学时,实验17学时。n由于概念较多,因此要求大家:n认真听,理解并牢记各种概念n课后复习并加深理解,多看书和课件。n独立认真完成作业。n课程设计:自己动手第一章 绪论n什么是编译器?n为什么要学习编译原理?n编译过程可以如何划分?各阶段的作用?n编译器是如何组织的?n编译器是如何产生的?n如何构造一个编译器?什么是编译器?n翻译器(translator):n能够将一种语言编写的程序翻译成语义等价的
5、另外一种语言的程序的软件系统。n这里的语义通常指操作语义,即程序做什么事(见例0.1)。n编译器(compiler):n翻译器的一种,其特点是目标语言比源语言低级(低级语言:编程语言越接近机器语言,我们就说这种语言越低级。)什么是编译器?n直观上理解的编译器就是这样一种程序:编译器源程序目标程序编译器目标程序(机器语言程序)输入输出目标程序的运行关于解释器n解释器(Interpreter):不产生目标代码,而是解释执行源程序解释器输入输出源程序编译器和解释器的综合应用nJava语言将编译器和解释器综合使用:n先用编译器把源程序翻译成一种叫做字节码(bytecode)的中间语言程序n再用一个虚拟
6、机对字节码程序进行解释执行编译器源程序中间语言程序虚拟机输入输出源程序如何成为可执行程序?n除编译器外,源程序要想成为可执行程序还需要经过下列一些程序的处理:n预处理器(preprocessor):先于编译器执行,负责收集处于不同文件中的源程序,处理宏等等。n汇编器(assembler):如果编译器的目标程序不是机器语言程序而是汇编程序,则需要汇编器将汇编语言程序翻译成可重定位的机器语言程序。n链接器和装载器(linker&loader):链接器负责将处于不同模块的可重定位机器语言程序以及库文件等链接在一起。装载器负责把链接后的程序装入内存准备执行。源程序预处理器编译器汇编器链接/装载器经过修
7、改的源程序目标汇编程序可重定位的机器程序目标机器程序关于交叉编译源程序P目标程序P编译器C运行系统原始数据D运行结果S计算机A计算机B编译阶段运行阶段A,B是不同类型计算机为什么要学习编译原理?n你们中的大部分人在今后的职业生涯中都不会去进行编译器的设计工作,但是学习编译原理至少有下列一些好处:n能够确切地知道你所编写的程序是如何从高级语言程序变成可执行程序的,从而对编程有更深入的理解;n编译器设计中的一些原理和技术足以应用到你今后职业生涯中的很多领域。例如,我们将涉及到编程语言、体系结构、算法、语言理论、软件工程等知识。1.1 编译器的划分语法分析器语义分析器源程序中间代码生成器代码优化器代
8、码生成器目标程序出错管理器符号表管理器 词法分析器1.1.1 词法分析(lexical analysis)n词法分析(又称扫描scanning):字符流 记号流(token,即课本中所称的内部格式)n记号:二元组词法规则共用名称,表示类别词法单元的专属特征值1.1.1 词法分析(续)n词法分析的主要任务:n将正确的单词(lexeme)识别为记号n删除分隔单词的空格(或制表符、回车符等分隔符)。n删除注释。n词法检查,报告错误。n词法分析将在课本第三章详细介绍。1.1.1 词法分析(续)符 号 表 positioninitialrate.123词法分析器 position=initial+rat
9、e*60标识符的总称position在符号表中的条目只有一个实例,因而省略属性值本应为,简化1.1.2 语法分析(parsing)n语法分析(syntax analysis),简称分析(parsing)。记号流 树型抽象中间表示n语法分析能够展示各种语言“构造”(construct,如函数、语句、表达式等)的层次性。语法规则1.1.2 语法分析(续)n典型的中间表示是语法树符 号 表 positioninitialrate.1231.1.2 语法分析(续)n语法分析中使用的语法规则可以用上下文无关文法CFG(Context-Free Grammars,也称前后文无关文法)或Backus-Nau
10、r范式(BNF)来描述。n课本第二章介绍上下文无关文法,第四章介绍语法分析。1.1.2 语法分析(续)符 号 表 positioninitialrate.123语法分析器 语法树1.1.3 语义分析n语义分析:分析语法结构的含义和功能;检查程序语义正确性,为代码生成阶段收集信息。n语义分析的一个重要部分是类型检查。n类型是否合法:例,数组下标为整数(实数)n隐式类型转换(coercion)n目前较流行的是使用“语法制导翻译”的方法将语法分析和语义分析有机地组织起来。n课本第五章介绍语法制导翻译。1.1.3 语义分析(续)语义分析器符 号 表 positioninitialrate.1231.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 考研计算机专业课 【精品】【考研计算机专业课】天津大学 编译原理讲义 ch1编译原理可编辑 考研 计算机 专业课 天津大学 编译 原理 讲义 ch1 编辑
限制150内