新書推薦:
《
地理计算与R语言 [英] 罗宾·洛夫莱斯 [德]雅纳·蒙乔 [波兰] 雅库布·诺沃萨德
》
售價:HK$
121.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:HK$
87.4
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:HK$
72.8
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:HK$
155.7
《
UE5虚幻引擎必修课(视频教学版)
》
售價:HK$
110.9
《
真需求
》
售價:HK$
110.9
《
阿勒泰的春天
》
售價:HK$
50.4
《
如见你
》
售價:HK$
51.3
|
編輯推薦: |
本书可作为高等工科院校计算机专业的本科或专科教材,也可作为硕士研究生学习及计算机软件技术人员的参考书。
全书共分为九章,第1章绪论,介绍了编译程序有关概念,编译过程、编译程序的组织和结构等要点。第2章作为后续各章的理论基础,主要介绍了描述语言的两大工具文法和有限自动机。第3章以正规式作为单词识别工具,从手工和自动两个角度讨论了词法分析器的设计及实现。第4章对上下文无关文法的两类语法分析方法,即自上而下和自下而上的几种经典方法展开了讨论。如递归子程序法、LL1分析法、算法优先分析和LR分析进行了详细的讲解。第5章介绍了语义分析,涉及到语法制导翻译与中间代码生成。重点讲解了属性文法、翻译模式、中间代码表现形式和流行的高级程序设计语言中典型语句的翻译。第6章介绍了编译程序运行时环境的有关概念和存储组织与分配技术。第7章介绍了整个编译过程都要涉及到的数据结构-符号表。第8章介绍了代码优化,展开讨论了优化的基本概念,优化涉及到的数据流分析技术和控制流分析技术。第9章简单介绍了代码生成的有关知识点。并在附录中给出了基于前端的编译程序算法的程序文本。
|
內容簡介: |
本书介绍编译理论的基础及实现方法,强调语言的形式化定义、编译技术和各种概念及实现过程的具体方法。全书共9章,内容包括编译引论、形式语言和有限自动机理论、词法分析、语法分析、语法制导翻译与中间代码生成、运行时的存储组织与分配、符号表、代码优化、目标代码生成。介绍过程以算法为核心,力求简单明了地反映编译的基础知识,为计算机软件工作者开发大型软件打下良好的基础。
本书可作为高等工科院校计算机专业的本科或专科教材,也可作为硕士研究生及计算机软件技术人员的参考书。
|
目錄:
|
第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.1.3词法分析方式
3.2单词的描述工具
3.2.1正规文法和正规式
3.2.2正规式与有限自动机的等价性
3.2.3正规文法和有限自动机的等价性
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词法分析器自动构造
习题
第4章语法分析
4.1自顶向下的语法分析方法
4.1.1包含回溯的自顶向下语法分析
4.1.2回溯产生的原因与解决方法
4.1.3递归下降分析法
4.1.4 LL(1)分析法与LL(1)分析器
4.2自底向上的语法分析方法
4.2.1移进归约分析
4.2.2规范归约与句柄
4.2.3算符优先分析法
4.2.4LR分析法
4.2.5语法分析程序自动生成器YACC
习题
第5章语法制导翻译与中间代码生成
5.1两种翻译方法简介
5.2属性文法
5.2.1综合属性
5.2.2继承属性
5.3依赖图
5.4语法制导翻译
5.4.1S属性文法与自底向上翻译
5.4.2L属性文法与自顶向下翻译
5.4.3翻译模式
5.5中间代码的形式
5.5.1逆波兰表示法
5.5.2三元式表示法
5.5.3四元式表示法
5.5.4图表示法
5.6中间代码生成
5.6.1说明语句的翻译
5.6.2赋值语句的翻译
5.6.3赋值语句中的布尔表达式的翻译
5.6.4控制流语句中的布尔表达式的翻译
5.6.5控制流语句的翻译
5.6.6数组元素的翻译
5.6.7函数调用的翻译
习题
第6章运行时的存储组织与分配
6.1概述
6.1.1关于存储组织
6.1.2函数(或过程)的活动记录
6.1.3存储分配策略
6.2静态存储分配
6.3基于栈的运行时动态存储分配
6.3.1简单栈式存储分配的实现
6.3.2嵌套过程语言的栈式存储分配的实现
6.4基于堆的动态存储分配的实现
6.5参数传递
6.5.1传值
6.5.2传地址
习题
第7章符号表
7.1符号表的作用
7.2符号表的内容
7.3符号表的组织
7.3.1符号表的数据结构
7.3.2关键字域的组织
7.3.3其他域的组织
7.4符号表举例
7.4.1无序表
7.4.2有序表
7.4.3散列符号表
7.4.4栈式符号表
习题
第8章代码优化
8.1概述
8.2局部优化
8.2.1基本块的划分
8.2.2基本块的优化
8.2.3基本块的有向图表示
8.3循环优化
8.3.1控制流图
8.3.2基本属性
8.3.3支配结点和后必经结点
8.3.4循环的查找
8.3.5循环优化
8.4全局优化
8.4.1相关概念及数据流方程
8.4.2可到达定义
8.4.3结构化程序的数据流分析
8.4.4数据流方程的迭代解
8.4.5活跃变量分析
习题
第9章目标代码生成
9.1目标代码的形式
9.2目标代码生成的主要问题
9.2.1目标程序
9.2.2指令选择
9.2.3寄存器分配
9.2.4计算次序选择
9.3目标机器
9.3.1目标机器的指令系统
9.3.2指令开销
9.4一个简单的代码生成器
9.4.1寄存器描述和地址描述
9.4.2代码生成算法
9.4.3寄存器选择函数
9.4.4为变址和指针语句产生代码
9.4.5条件语句
9.5寄存器分配的原则
习题
附录A基于前端的编译程序算法
A.1词法分析器的实现
A.2递归下降语法分析器的实现
A.3算法优先语法分析器的实现
A.4LR语法分析器的实现
参考文献
|
|