编译原理(21世纪大学本科计算机专业系列教材)
分類: 图书,计算机/网络,程序设计,其他,
作者: 康慕宁,任国霞,唐晶磊编著
出 版 社: 清华大学出版社
出版时间: 2009-7-1字数:版次: 1页数: 207印刷时间:开本: 16开印次:纸张:I S B N : 9787302197058包装: 平装编辑推荐
本书特色:
本书系统地阐述了编译系统的结构、工作流程以及编译原理程序各组成部分的设计原理和实现技术。主要内容包括程序设计语言基本知识、词法分析、语法分析、语义分析与属性文法、语法制导的代码生成、运行时存储空间组织与管理、代码生成与优化等。通过本课程学习,使学生掌握编译理论和方法的基本知识,具有设计实现、分析和维护编译程序方面的能力,提高学生科学思维能力和综合运用专业知识解决实际问题的操作能力。
●以深入浅出的讲解方式将复杂的自动理论引入到编译程序的关键技术中,使学生在理论知识的指导下,容易理解编译程序的理论基础及技术原理。
●在介绍LL(k)、LR(k)语法分析方法时,采用了通用方式(足值不必固定),并给出了以k=1时的具体算法和应用实例。
●配备了大量的习题,其中大多数习题在其他同类教材中很少出现。这些习题与内容紧密相关、难度适宜,有益于学生更好地掌握所学的知识内容。
内容简介
本书系统地阐述了编译系统的结构、工作流程、设计原理和实现技术。主要内容包括程序设计语言基本知识、词法分析、语法分析、语义分析与属性文法、语法制导的代码生成、运行时存储空间组织、代码生成与优化等。通过本书的学习,使学生掌握编译理论和方法的基本知识,具有设计实现、分析和维护编译程序方面的初步能力,提高学生科学思维能力和综合运用专业知识的能力与解决实际问题的能力。书中每章开始有本章内容简介,每章后面都有与内容紧密相关、难度适宜的习题,可以使学生更好地掌握本章所学的知识内容。
本书适合作为高等学校计算机及相关专业的教材,也可以作为考研学生的一本参考书。
作者简介
康慕宁,1982年西北大学计算机系本科毕业,获理学学士学位;1984年西北工业大学计算机系研究生毕业,获工学硕士学位。现为西北工业大学计算机学院软件与理论系教授,中国计算机学会高级会员。多年在教学一线主讲计算机专业本科及研究生编译原理、形式语言与自动机、组合数学等课程。参加多项科研项目,发表论文数十篇。编写的“十五”国家级规划教材《编译原理》获得2002年国家级优秀教材二等奖。主讲的编译原理课程被评为陕西省精品课程。
目录
第1章编译程序理论概述
1.1导言
1.2语言及其翻译
1.3语法的功能
1.4程序设计语言的发展
1.5编译程序的结构
1.5.1词法分析
1.5.2字符串表
1.5.3语法分析
1.5.4语义分析
1.5.5符号表
1.5.6代码优化程序
1.5.7代码生成程序
1.6特殊约定
缩写词与关键字
习题
第2章语法及其分类
2.1概述
2.2 文法
2.2.1字母表与字符串
2.2.2非终结符与产生式
2.2.3文法的例子
2.3文法及语言的Chomskey分类
2.4规范推导
2.5文法的二义性
习题
第3章扫描器与正规语言
3.1词法分析程序简介
3.2正规表达式
3.2.1正规表达式代数
3.2.2正规表达式的性质
3.3有限状态自动机
3.4非确定的有限状态自动机
3.5将正规文法转换为自动机
3.6NDFA的确定化及化简
3.7从有限状态自动机转换到正规文法
3.8有限自动机在计算机中的实现
3.9扫描器实现中的特殊问题
3.9.1输入符号表
3.9.2扫描器自动机中的终止状态
3.9.3删除空白符号与注释
3.9.4输出单词
3.10字符串表的实现
3.11保留字
3.12使用扫描器自动生成工具
缩写词与关键字
习题
第4章语法分析与前后文无关文法
4.1 导论
4.2下推自动机
4.2.1停机条件的等价性
4.2.2 从前后文无关文法CFG构造PDA
……
第5章语义分析与属性文法
第6章语法制导的代码生成
第7章符号表
第8章运行时存储空间的组织与管理
第9章代码优化
第10章目标代码生成
参考文献
书摘插图
第1章编译程序理论概述
1.1 导言
编译程序设计是少数几个由抽象的理论改变人们编写程序方法的计算机科学领域之一。最早的编译程序采用传统的“对号入座”的程序设计技术,直到“语法制导”分析程序的出现才得到改变。一个好的编译程序的任何部分都或多或少地与语法相关,因为语法理论可以驱动编译程序的设计,并使编译程序的设计清晰、易实现。
1.2 语言及其翻译
计算机语言像自然语言一样,为了沟通信息而定义了用单词构造句子的方法。自然语言可以表达、传递人们心灵的感觉、客观的世界真相、人们对这些感觉和真相提出的问题以及要求他人听从的指令等等,但计算机语言则被限制用于描述要求接受该语言的机器听从的指令。自然语言限制了允许说的句子的形式,例如,人们可以说:“约翰吃香蕉”,但不能说:“约翰香蕉吃”。第一句语法正确,而第二句则不符合中文的语法。又如,英文句子John eats an apple是正确的句子,而eats Jqbn apple an却不符合英语语法。会英、德两种语言的人马上就知道德语句子John iBt einen Apfel与Johneats an apple说的是一回事,但对只熟悉其中一种语言的人来说,就不知道两句话同义了。因为,单词iBt在英语中无任何意义,同样eats也不是德语中的正确单词。
当一个不懂德语的英国人想与不懂英语的德国人相互交流时,就需要有一个翻译。在自然语言中,翻译是将他所接收的一种语言的信息表述为另一种语言的人。他将所读的英语句子John eats an apple写成德语句子John iBt einen Apfel。对于错误的句子eats John apple an,他将无法翻译。
……