- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 任课教师:穗志方 szf@pku.edu.cn 信息科学技术学院计算语言所 什么是编译原理? 为什么要学习编译原理? 编译器的设计 一般的软件设计:文本编辑器、自动排版、模式识别、程序自动验证、程序自动调试 为计算机分析和理解自然语言提供参考 编译原理 上课时间:周二上午1-2节 (单周) 周五上午1-2节 上课地点:一教309 上机地点:中文系机房 学习方式:课堂讲解+课后作业+上机实践 考试成绩:试卷成绩+作业成绩+上机成绩 参考教材 编译原理,清华大学出版社 张素琴、吕映芝 等编著,2005年 编译程序设计原理 北京大学出版社,杜淑敏等编著,1986年 陈火旺 刘春林等 程序设计语言编译原理 国防工业出版社,2000年 教学要求 掌握编译系统的一般构造原理 掌握编译系统的基本实现技术 熟悉一些自动构造工具 授课内容 第一章 编译程序概述 第二章 PL/0编译程序的实现 第三章 文法和语言 第四章 词法分析 第五章 自顶向下语法分析方法 第六章 自底向上优先分析方法 第七章 LR分析方法 第八章 语法制导翻译和中间代码生成 第九章 符号表 第一○章 代码优化 第一一章 代码生成 编译程序概述 什么是编译程序 编译过程和编译程序的结构 编译技术和软件工具的介绍 程序设计语言:用来编写计算机程序的语言。 程序设计语言 机器语言:直接用计算机能够识别的二进制代码指令来编写程序的语言。由二进制的指令代码组成。 1 + 3 表示为 00000001是最底层的计算机语言,不需要翻译就可以直接被计算机硬件识别。对应不同的计算机硬件有不同的机器语言。 特点:执行速度快,但编写程序的难度大,修改、调试不方便,直观性差,不易移植。 程序设计语言 汇编语言:又称为符号语言。与机器语言一一对应,采用能帮助记忆的英文缩写符号(指令助记符)来代替机器语言指令中的操作码,用地址符号来代替地址码。用指令助记符及地址符号书写的指令称为汇编指令,用汇编指令编写的程序称为汇编语言源程序。 将X、Y中的内容相加 表示为 ADD X Y 机器不能直接识别汇编语言程序,必须把它翻译为机器语言程序才能执行。 特点:比机器语言直观,容易理解和记忆,比高级语言的执行效率高,但通用性和移植性较差。 程序设计语言 高级语言:与具体的计算机硬件无关,是面向问题的程序设计语言,其表达方式接近于自然语言和数学语言,易于人们接受和掌握。 采用类似于数学公式的书写方式:x = 1 + 3 特点:独立于具体的计算机硬件,程序的编制和调试方便,通用性和可移植性好。在计算机执行之前,需要通过编译程序翻译成目标语言程序,或需要通过解释程序边解释,边执行。时间与空间效率比较低。 目前比较流行的高级语言有:Visual C, Visual Basic, Java,FoxPro,Pascal,Lisp, Cobol等。 什么是编译程序 编译程序的功能:把高级语言程序翻译成等价的低级语言程序。 源程序——》编译程序——》目标程序 编译程序是现代计算机系统的基本组成部分。 从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序。 编译和解释程序: 编译程序概述 什么是编译程序 编译过程和编译程序的结构 编译技术和软件工具的介绍 编译过程概述 编译器内部包括了许多步骤或称为阶段,它们执行不同的逻辑操作。将这些阶段设想为编译器中一个个单独的片断是很有用的,尽管在应用中它们是经常组合在一起的,但它们确实是作为单独的代码操作来编写的。 编译过程概述 编译工作的基本过程是: 词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等6个阶段。 每个阶段都有表格管理和出错处理部分。 编译过程概述 机器翻译:让计算机翻译人类语言,例如:将汉语翻译为英文。 编译:让计算机翻译程序设计语言(人工语言),例如:将C语言编译为机器语言。 编译逻辑过程 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 词法分析(自动分词+词性标注) 像翻译英文句子一样,先要分析单词,弄清各单词的意义和句中的作用,才能对句子进行翻译。 主要任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 单词包括:保留字、标识符、运算符、分界符等。 例: position := initial + rate * 60; 词法分析(自动分词+词性标注) position := initial + rate * 60
原创力文档


文档评论(0)