编译原理

出版时间:2004-8-1  出版社:高等教育出版社  作者:何炎祥  页数:297  
Tag标签:无  

内容概要

  《编译原理》主要介绍设计和构造编译程序的基本原理和方法。内容包括形式语言理论和自动机理论、常用的词法分析方法、各种经典的语法分析方法、语法制导翻译方法、存储器的组织与管理方法、符号表的组织与造查表方法、代码优化和代码生成方法、并行编译程序及编译自动化技术等。
  《编译原理》注重理论与实践、原理与方法的互通,基本概念阐述清晰,讲授深入浅出,循序渐进,系统性强。各章之后还附有难度不一的习题供复习、思考和探索之用。《编译原理》既可作为高等院校计算机专业的教材,也可供相关专业师生和科技工作者及软件研发人学习和参考。

书籍目录

第1章 引论
1.1 翻译程序
1.1.1 程序设计语言
1.1.2 翻译程序
1.2 为什么需要编译程序
1.3 编译程序的工作过程
1.3.1 分析
1.3.2 综合
1.4 编译程序的结构
1.5 编译程序的组织方式
1.6 编译程序的其他有关技术
1.6.1 编译程序的自展技术
1.6.2 编译程序的移植技术
1.6.3 编译程序自动化
1.6.4 程序的可再入性
1.7 翻译程序编写系统
1.8 并行编译程序
1.9 小结
习题
第2章 形式语言概论
2.1 语言成分
2.2 产生式文法和语言
2.2.1 产生式文法
2.2.2 上下文无关文法
2.2.3 上下文无关文法定义的语言
2.3 文法的分类
2.3.1 文法分类
2.3.2 文法分类的意义
2.3.3 文法举例
2.4 语言和语法
2.4.1 句型、句子和语言
2.4.2 语法树
2.4.3 语法树的生成过程
2.5 文法和语言的一些特性
2.5.1 无用非终结符号
2.5.2 不可达文法符号
2.5.3 可空非终结符
2.5.4 最左、最右推导和规范推导
2.5.5 二义性
2.6 分析方法简介
2.6.1 自上而下分析方法
2.6.2 确定的自上而下分析方法
2.6.3 自下而上分析方法
2.6.4 文法在内存中的表示
2.7 小结
习题二
第3章 有穷自动机
3.1 概述
3.2 有穷自动机的形式定义
3.2.1 状态转换表
3.2.2 状态转换图
3.2.3 构形和移动
3.2.4 自动机的等价性
3.2.5 非确定有穷自动机
3.3 ndfsa到dfsa的转换
3.3.1 空移环路的寻找和消除
3.3.2 消除空移
3.3.3 利用状态转换表消除空移
3.3.4 确定化——子集法
3.3.5 确定化——造表法
3.3.6 消除不可达状态
3.3.7 确定的有穷自动机的化简
3.3.8 从化简后的dfsa到程序表示
3.3.9 小结
3.4 正规文法和有穷自动机
3.4.1 从正规文法到fsa
3.4.2 从fsa到正规文法
3.5 正规表达式与fsa
3.5.1 正规表达式的定义
3.5.2 正规表达式的cfg
3.5.3 正规表达式与fsa的对应性
3.5.4 正规表达式到ndfsa的转换
3.5.5 ndfsa m到正规表达式的转换
3.5.6 从正规文法到正规表达式
3.6 dfsa在计算机中的表示
3.6.1 矩阵表示法
3.6.2 表结构
3.6.3 程序表示法
3.7 小结
习题三
第4章 词法分析
4.1 词法分析概述
4.2 单词符号
4.3 扫描程序的设计
4.4 标识符的处理
4.4.1 类型的机内表示
4.4.2 标识符的语义表示
4.4.3 符号表(标识符表)
4.4.4 标识符表处理的基本思想
4.5 设计词法分析程序的直接方法
4.6 与设计扫描程序相关的几个问题
4.7 小结
习题四
第5章 自上而下语法分析
5.1 非确定的下推自动机
5.1.1 pda的形式定义
5.1.2 pda的构形和移动
5.1.3 上下文无关语言与pda
5.2 消除左递归方法
5.2.1 文法的左递归性
5.2.2 用扩展的bnf表示法消除左递归
5.2.3 直接改写法
5.2.4 消除所有左递归的算法
5.3 LL(k)文法
5.3.1 LL(1)文法的判断条件
5.3.2 集合first、follow和select的构造
5.4 确定的LL(1)分析器的构造
5.4.1 构造分析表m的算法
5.4.2 LL(1)分析器的总控算法
5.5 LL(k)文法的几个结论
5.6 递归下降分析程序及其设计
5.6.1 框图设计
5.6.2 程序设计
5.7 带回溯的自上而下分析法
5.7.1 文法在内存中的存放形式
5.7.2 其他信息的存放
5.7.3 带回溯的自上而下分析算法
5.8 小结
习题五
第6章 自下而上分析和优先分析方法
6.1 短浯和句柄
6.2 移进-归约方法
6.3 非确定的自下而上分析器
6.4 有关文法的一些关系
6.4.1 关系
6.4.2 布尔矩阵和关系
6.4.3 warshall算法
6.4.4 关系first和last
6.5 简单优先分析方法
6.5.1 优先关系
6.5.2 简单优先关系的形式化构造方法
6.5.3 简单优先文法及其分析算法
6.5.4 简单优先分析方法的局限性
6.6 算符优先分析方法
6.6.1 算符优先文法
6.6.2 opg优先关系的构造
6.6.3 素短语及句型的分析
6.6.4 算符优先分析算法
6.7 优先函数及其构造
6.7.1 bell方法
6.7.2 floyd方法
6.7.3 两种方法的比较
6.8 两种优先分析方法的比较
6.9 小结
习题六
第7章 自下而上的lr(k)分析方法
7.1 lr(k)文法和lr(k)分析器
7.2 lr(0)分析表的构造
7.2.1 规范句型的活前缀
7.2.2 lr(0)项目
7.2.3 文法g的拓广文法
7.2.4 closure(1)函数
7.2.5 goto(1,x)函数
7.2.6 lr(0)项目集规范族
7.2.7 有效项目
7.2.8 举例
7.2.9 lr(0)文法
7.2.10 构造lr(0)分析表的算法
7.2.11 构造lr(0)分析表步骤小结
7.3 slr分析表的构造
7.4 规范lr(1)分析表的构造
7.5 lalr分析表的构造
7.6 无二义性规则的使用
7.7 小结
7.7.1 lr分析程序
7.7.2 lr分析表的自动构造
7.7.3 文法间的关系
7.7.4 lr文法举例
7.7.5 有关lr文法的几个结论
习题七
第8章 语法制导翻译法
8.1 一般原理和树变换
8.1.1 一般原理
8.1.2 树变换
8.2 简单sdts和自上而下翻译器
8.3 简单后缀sdts和自下而上翻译器
8.3.1 后缀翻译
8.3.2 if-then-else控制语句
8.3.3 函数调用
8.4 抽象语法树的构造
8.4.1 自下而上构造ast
8.4.2 ast的拓广
8.5 属性文法
8.5.1 l属性文法
8.5.2 s属性文法
8.6 中间代码形式
8.6.1 逆波兰表示法
8.6.2 逆波兰表示法的推广
8.6.3 四元式
8.6.4 三元式
8.7 属性翻译文法的应用
8.7.1 综合属性与自下而上定值
8.7.2 继承属性和自上而下定值
8.7.3 布尔表达式到四元式的翻译
8.7.4 条件语句的翻译
8.7.5 迭代语句的翻译
8.8 小结
习题八
第9章 运行时的存储组织与管理
9.1 数据区和属性字
9.2 基本数据类型的存储分配
9.3 数组的存储分配
9.3.1 单块存储方式
9.3.2 信息向量与数组分配程序
9.3.3 多块存储方式
9.4 记录结构的存储分配
9.5 参数传递方式及其实现
9.5.1 换名
9.5.2 传值
9.5.3 传地址
9.5.4 传结果
9.5.5 数组名用做实参
9.5.6 过程名用做实参
9.6 栈式存储分配方法
9.6.1 概述
9.6.2 现行display和现行数据区
9.6.3 标识符的作用域
9.6.4 分程序的人口和出口工作
9.6.5 过程调用时的存储管理
9.7 堆式存储分配方法
9.8 临时工作单元的存储分配
9.9 小结
习题九
第10章 符号表的组织和查找
10.1 符号表的一般组织形式
10.2 符号表中的数据
10.3 符号表的构造与查找
10.3.1 线性查找
10.3.2 折半法
10.3.3 杂凑技术
10.4 分程序结构的符号表
10.5 小结
习题十
第11章 优化
11.1 基本块及其求法
11.2 优化举例
11.3 利用变量的定义点进行优化
11.3.1 变量的定义点
11.3.2 循环中不变式的外提
11.3.3 运算强度削弱
11.3.4 公共表达式的消除
11.3.5 常量合并
11.4 循环优化
11.5 借助dag进行优化
11.6 并行分支的优化
11.7 窥孔优化
11.8 小结
习题十一
第12章 代码生成
12.1 假想的计算机模型
12.2 从四元式生成代码
12.3 从三元式生成代码
12.4 从树形表示生成代码
12.5 从逆波兰表示生成代码
12.6 寄存器的分配
12.7 小结
习题十二
参考文献

章节摘录

  第1章引论  编译程序是高级语言的支撑基础,是计算机系统中重要的系统软件之一。编译原理是计算机科学技术中发展最为迅速的一个分支,现已基本形成了一套比较系统、完整的理论和方法。本章主要介绍为什么需要编译程序以及编译程序的功能、体系结构、工作过程、组织方式、编译程序与高级程序设计语言的关系,以及编译自动化和并行编译程序等方面的基本知识。  1。1翻译程序  1。1。1程序设计语言众所周知,自然语言是人类传递信息、交流思想和情感的工具,程序设计语言则是人与计算机联系的工具。人正是通过程序设计语言指挥计算机按照人的意志进行运算和操作、显示信息和输出运算结果的。  最早的计算机程序设计语言是机器语言(指令系统)。机器语言中的指令都是用二进制代码直接表示的,指令难记、难认,因而机器语言程序难写、难读、难修改。一个机器语言程序的编写时间往往是它运行时间的几十倍到几百倍。随着计算机科学技术的发展,出现了符号语言和汇编语言等程序设计语言,它们虽然比机器语言前进了一步,但仍属于计算机低级语言,用来编写程序还是很不方便。程序编写的效率低下阻碍了计算机科学技术的发展和推广应用,因此,程序设计语言自身的自动化势在必行。  1954年,FORTRANI语言的问世标志着计算机高级程序设计语言的诞生。随后,计算机高级程序设计语言如雨后春笋,层出不穷。至今,全世界已经出现的计算机高级程序设计语言大概有几千种,但典型的常用语言不过十几种。计算机高级程序设计语言仍在不断发展,目前流行的面向对象程序设计语言是对传统的面向过程程序设计语言的一种挑战。  计算机高级程序设计语言独立于机器,比较接近自然语言,因而容易学习和掌握,且程序编写效率高,编写出的程序易读、易理解、易修改、易移植。  ……

图书封面

图书标签Tags

评论、评分、阅读与下载


    编译原理 PDF格式下载


用户评论 (总计0条)

 
 

 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7