新書推薦:
《
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
》
售價:HK$
66.1
《
新时代硬道理 广东寻路高质量发展
》
售價:HK$
77.3
《
6S精益管理实战(精装版)
》
售價:HK$
100.6
《
异域回声——晚近海外汉学之文史互动研究
》
售價:HK$
109.8
《
世界文明中的作物迁徙:聚焦亚洲、中东和南美洲被忽视的本土农业文明
》
售價:HK$
99.7
《
无端欢喜
》
售價:HK$
76.2
《
股票大作手操盘术
》
售價:HK$
53.8
《
何以中国·何谓唐代:东欧亚帝国的兴亡与转型
》
售價:HK$
87.4
|
編輯推薦: |
主要介绍编译理论的基础及实现方法。
强调语言的形式化定义、编译技术等的具体实现过程和方法。
以算法为核心,讲解力求简单明了。
|
內容簡介: |
本书介绍编译理论的基础及实现方法,强调语言的形式化定义、编译技术和各种概念及实现过程的具体方法。全书共10章,内容包括引论、形式语言和有限自动机理论、词法分析、自顶向下的语法分析、自底向上的语法分析、语法制导翻译与中间代码生成、运行时的存储组织与分配、符号表、代码优化及目标代码生成。介绍过程以算法为核心,力求简洁明了地反映编译的基础知识,为计算机软件工作者开发大型软件打下良好的基础。 本书可作为高等院校计算机专业的本科或专科教材,也可作为硕士研究生及计算机软件技术人员的参考书。
|
關於作者: |
姜淑娟教授多年来一直从事程序设计语言、编译方法、软件工程、软件测试等教学和科研工作,取得了一定的成果。近年来,在国内外学术刊物和学术会议上发表论文100多篇,其中有多篇被SCI检索,主编或参编多部教材,完成国家自然科学基金面上项目、江苏省自然科学基金面上项目、教育部科学技术研究重点项目、江苏省“333”工程项目各一项,目前主持国家自然科学基金面上项目一项。
|
目錄:
|
第1章引论
1.1什么是编译程序
1.1.1编译程序与高级程序设计语言的关系
1.1.2高级语言源程序的执行过程
1.1.3与编译器有关的程序
1.2编译过程与编译程序的组织结构
1.2.1编译过程概述
1.2.2编译程序的组织结构
1.2.3编译阶段的组合
1.3编译程序的构造与实现
1.3.1如何构造一个编译程序
1.3.2编译程序的开发
1.3.3编译程序的自动构造工具
习题
第2章形式语言和有限自动机理论
2.1文法和语言
2.1.1字母表和符号串
2.1.2文法和语言的形式化定义
2.1.3语法分析树与文法二义性
2.1.4文法和语言的分类
2.2有限自动机
2.2.1确定的有限自动机(DFA)
2.2.2非确定的有限自动机(NFA)
2.2.3NFA转换为等价的DFA
2.2.4确定的有限自动机的化简
习题
第3章词法分析
3.1词法分析基本思想
3.1.1词法分析任务
3.1.2词法分析方式
3.2单词的描述工具
3.2.1正规集和正规式
3.2.2正规式与有限自动机的等价性
3.3单词的识别
3.3.1单词分类
3.3.2单词的内部表示
3.3.3单词的形式化描述
3.4词法分析程序的设计及实现
3.4.1词法分析程序的预处理
3.4.2由词法规则画出状态转换图
3.4.3单词对应状态转换图的实现
3.4.4词法分析中的错误处理
3.5词法分析程序的自动实现
3.5.1Lex介绍
3.5.2Lex语法基础
3.5.3词法分析器自动构造
3.5.4Lex应用
习题
第4章自顶向下的语法分析
4.1自顶向下的语法分析方法
4.1.1包含回溯的自顶向下语法分析
4.1.2回溯产生的原因与解决方法
4.2递归下降分析法
4.3LL(1)分析法与LL(1)分析器
习题
第5章自底向上的语法分析
5.1自底向上的语法分析方法
5.1.1“移进归约”分析
5.1.2规范归约与句柄
5.2LR分析法
5.2.1LR(0)
5.2.2SLR(1)
5.2.3LR(1)
5.2.4LALR(1)
5.3语法分析程序自动生成器YACC
习题
第6章语法制导翻译与中间代码生成
6.1两种翻译方法简介
6.2属性文法
6.2.1综合属性
6.2.2继承属性
6.3依赖图
6.4语法制导翻译
6.4.1S属性文法与自底向上翻译
6.4.2L属性文法与自顶向下翻译
6.4.3翻译模式
6.5中间代码的形式
6.5.1逆波兰表示法
6.5.2三元式表示法
6.5.3四元式表示法
6.5.4图表示法
6.6中间代码生成
6.6.1说明语句的翻译
6.6.2赋值语句的翻译
6.6.3赋值语句中的布尔表达式的翻译
6.6.4控制流语句中的布尔表达式的翻译
6.6.5控制流语句的翻译
6.6.6数组元素的翻译
6.6.7函数调用的翻译
习题
第7章运行时的存储组织与分配
7.1概述
7.1.1关于存储组织
7.1.2函数(或过程)的活动记录
7.1.3存储分配策略
7.2静态存储分配
7.3基于栈的运行时动态存储分配
7.3.1简单栈式存储分配的实现
7.3.2嵌套过程语言的栈式存储分配的实现
7.4基于堆的动态存储分配的实现
7.5参数传递
7.5.1传值
7.5.2传地址
习题
第8章符号表
8.1符号表的作用
8.2符号表的内容
8.3符号表的组织
8.3.1符号表的数据结构
8.3.2关键字域的组织
8.3.3其他域的组织
8.4符号表举例
8.4.1无序表
8.4.2有序表
8.4.3散列符号表
8.4.4栈式符号表
习题
第9章代码优化
9.1概述
9.2局部优化
9.2.1基本块的划分
9.2.2基本块的优化
9.2.3基本块的有向图表示
9.3循环优化
9.3.1控制流图
9.3.2基本属性
9.3.3支配结点和后必经结点
9.3.4循环的查找
9.3.5循环优化
9.4全局优化
9.4.1相关概念及数据流方程
9.4.2可到达定义
9.4.3结构化程序的数据流分析
9.4.4数据流方程的迭代解
9.4.5活跃变量分析
习题
第10章目标代码生成
10.1目标代码的形式
10.2目标代码生成的主要问题
10.2.1目标程序
10.2.2指令选择
10.2.3寄存器分配
10.2.4计算次序选择
10.3目标机器
10.3.1目标机器的指令系统
10.3.2指令代价
10.4一个简单的代码生成器
10.4.1寄存器描述和地址描述
10.4.2代码生成算法
10.4.3寄存器选择函数
10.4.4为变址和指针语句产生代码
10.4.5条件语句
10.5寄存器分配的原则
习题
附录A一个类C语言的编译器前后端实现代码参考
A.1基本文法说明
A.2语义分析对应的文法设计
A.3总体架构
A.4数据结构设计
A.5前端功能模块具体实现
A.5.1词法分析关键代码实现
A.5.2语法分析关键代码实现
A.5.3语义分析关键代码实现
A.5.4中间代码生成
A.6目标代码(汇编代码)生成
A.7测试
参考文献
|
內容試閱:
|
编译技术是计算机专业必修的一门重要的专业基础课程,也是计算机系统软件中非常重要的一个分支,任何计算机语言的实现都离不开编译技术,而且编译技术在语言处理、软件工程、软件自动化、计算机体系结构设计及优化等诸多领域有着广泛的应用。因而,作为计算机专业的学生,学习和掌握编译程序的基本构造原理和实现技术,可以为今后进一步学习、研究和工作奠定坚实的专业理论基础。
本书以“概念清晰、实用性强、通俗易懂”为指导思想,对第1版教材进行了修订,具体改动如下:
(1) 对第1版中的概念与内容进行了重新组合和删减。例如: 第3章为词法分析器的手工构造方法增加了更为详细的实现步骤,对每一种单词的伪代码都进行了描述; 第4章语法分析内容较多,占据较大篇幅,本次改版将第4章拆分为两章(第4章和第5章),其中第4章专门描述自顶向下的语法分析,第5章专门描述自底向上的语法分析,并且删除了算符优先分析法这种目前不太常用的语法分析方法。
(2) 对第1版中的大部分例题进行了调整,选用了与高级语言密切相关的题目,方便读者理解高级语言和编译器之间的联系。同时,为每章增添了大量的习题,包括客观题和主观题,力争做到习题丰富,通俗易懂,便于自学。
(3) 以“实用”为导向,对附录部分进行了重新编写,将编译器前端的词法分析、递归下降语法分析、LR语法分析、语义分析与中间代码生成这四个分散实验通过统一文法(C语言子集)整合为一个编译器前端与后端的设计及实现。
本书共分为10章。第1章介绍编译程序的有关概念,编译过程、编译程序的组织结构等要点。第2章作为后续各章的理论基础,主要介绍描述语言的两大工具——文法和有限自动机。第3章以正规式作为单词识别工具,从手工和自动两个角度讨论词法分析器的设计及实现。第4章对上下文无关文法的自顶向下的
语法分析方法,以及递归下降分析法和
LL(1)分析法进行详细讲解。第5章介绍自底向上的语法分析方法,以及LR分析法。
第6章介绍语义分析,涉及语法制导翻译与中间代码生成,重点讲解属性文法、翻译模式、中间代码表现形式和流行的高级程序设计语言中典型语句的翻译。第7章介绍编译程序运行时环境的有关概念和存储组织与分配技术。第8章介绍整个编译过程都要涉及的数据结构——符号表。第9章介绍代码优化,讨论优化的基本概念、优化涉及的数据流分析技术和控制流分析技术。第10章简要介绍目标代码生成的有关知识点。附录A给出一个能将C语言子集转化为汇编目标代码的编译系统原型。
本书的编写分工: 刘兵编写第1章和第7章,
张辰编写第2章、第3章和附录A,谢红侠编写第4~6章,姜淑娟编写第8~10章。本书参考了国内外的一些专著、论文和资料,借鉴了一些专家学者的研究成果,对这些前辈和同行的引导和帮助表示衷心的感谢。
限于作者水平,本书难免存在疏误,请读者批评指正。
作者
2021年4月
|
|