《高等学校工科电子类教材 编译技术 第2版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:钱焕廷编著
  • 出 版 社:南京:东南大学出版社
  • 出版年份:2002
  • ISBN:7810232061
  • 页数:295 页
图书介绍:本书根据各类高校计算机相关专业的教学特点,结合作者多年来的教学实践及各类反馈信息……

1概论 1

1.1 程序设计语言 1

1.2 编译程序 3

1.3 源程序执行的途径 4

1.3.1 编译途径 4

1.3.2 解释途径 5

1.4 编译程序的结构 6

1.4.1 编译程序的组成 6

1.4.2 编译程序的逻辑结构 11

1.5 编译程序的开发 12

1.5.1 编译程序的开发过程 12

1.5.2 编译程序的开发技术 13

习题 15

2文法和形式语言 16

2.1 符号和符号串 16

2.1.1 字母表和符号串 17

2.1.2 符号串的运算 18

2.2 文法和语言 20

2.2.1 文法和推导 21

2.2.2 文法和语言 25

2.2.3 递归规则和递归文法 26

2.2.4 短语、简单短语与句柄 28

2.3 语法树和二义性 29

2.3.1 语法树和推导 29

2.3.2 文法的二义性 33

2.4 文法的实用限制 37

2.4.1 文法的实用限制 37

2.4.2 文法的变换 40

2.5 扩充的BNF表示法 45

2.6 文法和语言分类 47

2.6.1 Chomsky对文法的定义 47

2.6.2 文法和语言分类 47

2.6.3 四类文法的关系 51

2.7 正则表达式和正则集 52

习题 54

3 自动机 57

3.1 转换图 57

3.2 确定有限自动机(DFA) 58

3.2.1 有限自动机 58

3.2.2 确定有限自动机 59

3.3 不确定有限自动机(NFA) 61

3.3.1 不确定有限自动机 61

3.3.2 NFA与DFA的变换 64

3.4 ε-自动机 66

3.5 自动机的简化 68

3.5.1 等价状态和无关状态 68

3.5.2 自动机的简化 68

3.6 语法图与自动机 71

3.6.1 语法图 71

3.6.2 语法图与自动机 72

3.7 下推自动机 75

3.7.1 下推自动机 75

3.7.2 下推自动机与上下文无关文法 76

习题 79

4 符号表 80

4.1 符号表及其应用 80

4.1.1 符号表 80

4.1.2 符号表的查填 81

4.1.3 符号表的作用 81

4.2 符号表的内容 82

4.2.1 单词的基本属性 82

4.2.2 符号表的内容 83

4.3 存储分配与符号表的组织 84

4.3.1 存储分配概述 84

4.3.2 各种类型的数据在计算机中的存储 86

4.3.3 符号表的组织 93

4.4 标识符的处理 93

4.4.1 标识符的出现和处理 93

4.4.2 标识符的作用域 94

4.5 符号表的结构和存取 94

4.5.1 无序符号表和有序符号表 94

4.5.2 栈符号表 95

习题 99

5 词法分析 100

5.1 引言 100

5.2 取单词 102

5.3 读标识符 105

5.4 取无正负号数 105

5.5 词法分析器的自动生成 108

5.5.1 词法分析程序的自动生成问题 108

5.5.2 Lex源程序 108

5.5.3 lex编译程序 110

5.5.4 词法分析程序 110

习题 111

6语法和语义分析 114

6.1 常用的终结符号集 114

6.1.1 首符号集 114

6.1.2 向前看集 115

6.1.3 可选集 115

6.2 句子的分析 116

6.2.1 自顶向下分析 116

6.2.2 自底向上分析 119

6.3 虚拟机 120

6.3.1 虚拟机 120

6.3.2 虚拟机的汇编指令 121

6.4 递归子程序方法 123

6.4.1 递归子程序及其调用 123

6.4.2 递归子程序分析方法 125

6.5 LL(k)分析方法 128

6.5.1 LL(1)分析方法 129

6.5.2 LL(1)文法 130

6.5.3 LL(1)分析表 131

6.6 运算符优先数法 135

6.6.1 简单表达式的逆波兰表示 135

6.6.2 逆波兰表达式的生成 136

6.6.3 逆波兰表达式的处理 140

6.6.4 运算符优先数法 141

6.6.5 运算符的优先关系 144

6.6.6 优先矩阵 146

6.6.7 合适优先函数 150

6.7 状态矩阵法 152

6.7.1 状态的构造 153

6.7.2 状态矩阵法 156

习题 159

7递归子程序方法 161

7.1 PL/0程序设计语言 161

7.1.1 PL/0概述 161

7.1.2 PL/0语法图 161

7.1.3 PL/0各语法成分之间的关系 163

7.2 PL/0处理机 164

7.2.1 PL/0处理机简介 164

7.2.2 数据的存储与访问 165

7.2.3 PL/0机的指令系统 168

7.3 代码生成形式 169

7.4 PL/0编译程序的子程序 172

7.4.1 有关表格和几个辅助子程序 172

7.4.2 读单词 174

7.4.3 说明部分的处理 175

7.4.4 表达式的处理 177

7.4.5 语句的处理 183

7.4.6 分程序的处理 190

习题 193

8 LR(k)分析方法 194

8.1 LR分析方法的逻辑结构及分析过程 194

8.1.1 活前缀与可归前缀 194

8.1.2 LR分析方法的逻辑结构 196

8.1.3 LR分析过程 198

8.2 LR(0)分析表的构造 201

8.2.1 基本概念 201

8.2.2 状态描述序列和状态转换图 203

8.2.3 LR(0)分析表的构造 206

8.2.4 应用举例 207

8.3 SLR(1)分析表的构造 207

8.3.1 问题提出 207

8.3.2 SLR(1)分析表的构造 210

8.3.3 SLR(1)分析表 211

8.3.4 应用举例 211

8.4 LR(1)分析表的构造 213

8.4.1 问题提出 213

8.4.2 LR(1)分析表构造的方法思想 214

8.4.3 状态描述序列 216

8.4.4 LR(1)分析表的构造规则 216

8.4.5 LR(1)文法 217

8.4.6 LR(1)分析表 217

8.5 LALR(1)分析表的构造 219

8.5.1 问题提出 219

8.5.2 LALR(1)分析表 223

习题 224

9 中间语言 227

9.1 逆波兰表示 227

9.1.1 赋值语句的逆波兰表示 227

9.1.2 转向语句的逆波兰表示 227

9.1.3 条件语句的逆波兰表示 227

9.1.4 循环语句的逆波兰表示 229

9.2 四元式 230

9.2.1 四元式 230

9.2.2 表达式和赋值语句的四元式 231

9.2.3 转向语句和条件语句的四元式 231

9.2.4 循环语句的四元式 233

9.3 三元式 233

9.3.1 三元式 233

9.3.2 表达式和赋值语句的三元式 234

9.3.3 转向语句和条件语句的三元式 234

9.3.4 循环语句的三元式 235

9.4 树表示 236

习题 237

10优化 239

10.1 引言 239

10.2 有关概念 239

10.2.1 变量的使用点和定义点 239

10.2.2 基本块 240

10.2.3 区域变量和区域常量 240

10.2.4 常表达式 241

10.3 优化处理概述 241

10.3.1 合并常量运算 241

10.3.2 消除基本块中的公共子表达式 241

10.3.3 外提循环中的不变表达式 242

10.3.4 消减运算强度 243

10.4 表达式的优化 244

10.4.1 合并表达式中的常量运算 244

10.4.2 消除公共子表达式 245

10.5 循环优化 246

10.5.1 外提不变表达式 247

10.5.2 循环中的下标变量的优化 249

习题 251

11语法制导翻译与代码生成 253

11.1 语法制导翻译 253

11.1.1 语法制导翻译 253

11.1.2 语法制导翻译思想 253

11.1.1 常用语法制导翻译 254

11.2 表达式的翻译 254

11.2.1 语法规则与代码形式 254

11.2.2 语法制导翻译技术 255

11.3 布尔表达式的翻译 256

11.3.1 语法规则与代码生成 256

11.3.2 语法制导翻译技术 257

11.4 语句的语法制导翻译 257

11.4.1 赋值语句的翻译 258

11.4.2 条件语句的翻译 259

11.4.3 循环语句的翻译 260

11.4.4 转向语句和带有标号语句的翻译 261

11.4.5 复合语句的翻译 261

11.5 过程调用语句的翻译 262

11.5.1 过程调用语句的语法规则和代码形式 262

11.5.2 过程调用的语法制导翻译技术 263

11.6 说明部分的翻译 264

11.6.1 说明部分的语法规则和代码形式 264

11.6.2 说明部分的语法制导翻译技术 265

11.7 属性文法技术 267

11.7.1 增量式文法 267

11.7.2 属性文法 268

11.8 目标代码的生成 271

11.8.1 目标代码形式 271

11.8.2 目标代码生成 271

11.9 寄存器的分配 272

习题 273

12存储组织与分配 274

12.1 静态存储分配 274

12.1.1 静态存储分配 274

12.1.2 静态存储分配方法 274

12.1.3 静态存储分配满足的条件 275

12.2 栈式存储分配 276

12.2.1 栈式存储分配 276

12.2.2 分程序结构的栈式存储分配 277

12.2.3 以过程为单位的栈式存储分配 278

12.2.4 分程序的入口和出口 280

12.3 堆式存储分析 281

12.4 参数传递 281

习题 284

13程序的查错与处理 285

13.1 引言 285

13.2 词法分析阶段的查错处理 286

13.2.1 词法错误 286

13.2.2 词法错误的处理 286

13.3 语法分析阶段的查错处理 287

13.3.1 语法错误 287

13.3.2 语法错误的处理 287

13.4 语义分析阶段的错误处理 288

13.4.1 语义错误 288

13.4.2 语义错误的处理 288

13.5 错误处理程序 289

习题 290

附录 291

附录Ⅰ PL/0语言的文法规则 291

附录Ⅱ PASCAL语言的文法规则 292

参考文献 295