当前位置:首页 > 工业技术
编译原理及编译程序构造
编译原理及编译程序构造

编译原理及编译程序构造PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:张莉,杨海燕,史晓华,金茂忠,高仲仪编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302263142
  • 页数:439 页
图书介绍:本书定位为本科生的第一门编译课程的教材,因此对于新出现的并行编译、较难的一些优化技术,本书没有涉及。
《编译原理及编译程序构造》目录

第1章 绪论 1

1.1什么是程序设计语言 1

1.1.1程序设计语言的定义方法 2

1.1.2程序设计语言的处理系统 2

1.1.3编译程序和解释程序 3

1.1.4 T形图 4

1.2与编译程序相关的处理系统 5

1.2.1各种翻译程序 5

1.2.2预处理器 6

1.2.3宏处理器 6

1.3编译程序和程序设计环境 7

1.4编译程序的构造 8

1.5编译技术在软件工程中的应用 13

练习1 15

第2章 文法和语言的概念和表示 16

2.1文法的非形式讨论 16

2.1.1语法树 16

2.1.2规则 17

2.1.3由规则推导句子 17

练习2.1 19

2.2符号、符号串及其集合的运算 20

2.2.1字母表和符号串 20

2.2.2符号串及其集合的运算 20

练习2.2 22

2.3文法和语言的形式定义 22

2.3.1文法的形式定义 22

2.3.2推导的形式定义 24

2.3.3语言的形式定义 24

2.3.4递归规则与递归文法 26

2.3.5短语、简单短语和句柄 27

练习2.3 28

2.4语法树和二义性 29

2.4.1推导与语法树 29

2.4.2文法的二义性 33

练习2.4 36

2.5符号串的分析 37

2.5.1自顶向下分析 38

2.5.2自底向上分析 38

2.6有关文法的实用限制 40

练习2.5 41

2.7扩充的BNF表示和语法图 41

2.7.1扩充的BNF表示 41

2.7.2语法图 43

2.8文法和语言分类 43

第3章 词法分析 46

3.1词法分析程序的功能及实现方案 46

3.2单词的种类及词法分析程序的输出形式 47

3.3正则文法及其状态图 48

3.3.1状态图 49

3.3.2状态图的使用 49

3.4词法分析程序的设计与实现 50

3.4.1文法及其状态图 50

3.4.2词法分析程序的构造 51

3.4.3词法分析程序的实现 53

练习3.1 56

3.5正则文法与正则表达式 56

3.5.1正则表达式 57

3.5.2正则文法转换为正则表达式 59

3.5.3正则表达式转换为正则文法 59

3.6有穷自动机(FA) 60

3.6.1确定的有穷自动机(DFA) 60

3.6.2不确定的有穷自动机(NFA) 61

3.6.3 NFA的确定化 63

3.6.4确定有穷自动机的化简(最小化) 65

3.6.5正则表达式与有穷自动机的等价性 67

3.6.6正则文法与有穷自动机的等价性 70

3.7词法分析程序的自动生成器 71

3.7.1 LEX源程序(LEX的输入文件) 72

3.7.2 LEX的实现 73

练习3.2 76

第4章 语法分析 78

4.1自顶向下分析方法 78

4.1.1带回溯的自顶向下分析方法 78

4.1.2存在的问题及解决办法 80

练习4.1 85

4.2递归下降分析法(递归子程序法) 85

练习4.2 90

4.3 LL(1)分析方法 91

4.3.1 LL(1)分析器的逻辑结构及工作过程 91

4.3.2 LL(1)分析表的构造方法 94

练习4.3 97

4.4自底向上分析方法 99

4.5算法优先分析法 101

4.5.1方法概述 101

4.5.2直观算符优先分析法 102

4.5.3算符优先分析法的进一步讨论 105

练习4.4 110

4.6 LR语法分析方法 110

4.6.1概念和术语 111

练习4.5 112

4.6.2 LR分析算法 113

练习4.6 117

4.6.3 LR文法 117

4.6.4构造SLR语法分析表 118

练习4.7 122

练习4.8 124

4.6.5构造规范LR语法分析表 125

练习4.9 130

4.6.6构造LALR语法分析表 130

练习4.10 134

4.7二义文法的应用 135

4.8 LR语法分析中的错误恢复 136

练习4.11 137

第5章 符号表管理技术 138

5.1概述 138

5.1.1什么是符号表 138

5.1.2何时建立和访问符号表 138

5.1.3符号表的重要性和作用 140

5.1.4在符号表上的操作 140

5.2符号表的组织和内容 141

5.2.1符号表的结构与内容 141

5.2.2符号表的组织方式 143

5.3非分程序结构语言的符号表组织 144

5.3.1标识符的作用域及基本处理方法 145

5.3.2符号表的组织方式 145

5.4分程序结构语言的符号表组织 150

5.4.1标识符的作用域及基本处理方法 150

5.4.2定位和重定位操作 151

5.4.3符号表的组织方式 152

练习5 155

第6章 运行时的存储组织及管理 157

6.1静态存储分配 157

练习6.1 159

6.2动态存储分配 159

6.2.1活动记录 160

6.2.2参数区 161

6.2.3 display区 161

6.2.4运行时的地址计算 163

6.2.5递归过程的处理 164

练习6.2 166

第7章 源程序的中间形式 168

7.1波兰表示 168

7.2 N元表示 169

7.3抽象语法树 171

7.4抽象机代码 172

7.4.1可移植性和抽象机 172

7.4.2 Pascal的P-code抽象机 173

7.4.3 P-code指令 174

练习7 175

第8章 错误处理 176

8.1概述 176

8.2错误的分类 177

8.3错误的诊察与报告 177

8.4错误处理技术 179

8.4.1错误改正 179

8.4.2错误局部化处理 179

8.4.3目标程序运行时的错误检测与处理 182

8.4.4遏止重复的错误信息 182

第9章 语法制导翻译技术 183

9.1翻译文法(TG: Translation Grammar) 184

9.2语法制导翻译 186

9.3属性翻译文法(ATG: Attribute TG) 187

9.3.1综合属性 187

9.3.2继承属性 189

9.3.3属性翻译文法概述 190

9.3.4属性翻译文法举例——算术表达式的翻译 191

练习9.1 193

9.4自顶向下语法制导翻译 195

9.4.1翻译文法的自顶向下翻译 195

练习9.2 200

9.4.2属性翻译文法的自顶向下翻译 201

练习9.3 212

9.5自底向上语法制导翻译 213

9.5.1波兰翻译 214

9.5.2 S-属性文法 214

练习9.4 216

第10章 语义分析和代码生成 218

10.1语义分析的概念 218

10.2栈式抽象机及其汇编指令 220

10.3声明的处理 221

10.3.1常量类型 222

10.3.2简单变量 223

10.3.3数组变量 224

10.3.4记录变量 226

10.3.5过程声明 226

10.4表达式 227

10.5赋值语句 233

10.6控制语句 234

10.6.1 if语句 234

10.6.2分情形语句 236

10.6.3 repeat-while语句 238

10.6.4 for循环语句 239

10.7过程调用和返回 240

10.7.1参数的基本传递形式 241

10.7.2过程调用 242

10.7.3返回语句和过程终止 245

10.8输入和输出语句 246

10.8.1输入语句 246

10.8.2输出语句 248

10.9编译程序的辅助功能 249

练习10 250

第11章 代码优化 251

11.1基本块和流图 252

11.2基本块内优化 254

11.2.1基本块的DAG图表示 254

11.2.2消除局部公共子表达式 255

11.2.3数组、指针及函数调用 255

11.2.4从DAG图重新导出中间代码 256

11.2.5窥孔优化 258

11.2.6常数合并和传播 259

11.3全局优化 260

11.3.1数据流分析 260

11.3.2活跃变量分析 264

11.3.3定义-使用链、网和冲突图 266

11.3.4消除全局公共子表达式 269

11.3.5复制传播 270

11.3.6死代码删除 270

11.4循环优化 271

11.4.1循环交换 271

11.4.2循环展开 272

11.4.3代码外提和循环强度削弱 272

练习11 273

第12章 目标代码生成 275

12.1微处理器体系结构简介 276

12.1.1指令集架构 276

12.1.2存储层次架构 279

12.1.3流水线 281

12.2地址空间 283

12.2.1程序地址空间的实例分析 284

12.2.2程序运行栈的设计 286

12.3寄存器的分配和指派 288

12.3.1全局寄存器分配 289

12.3.2临时寄存器分配 291

12.4指令选择 292

练习12 294

第13章 编译程序生成方法和工具 296

13.1编译程序的书写语言 296

13.2自展 297

13.3移植 298

13.4编译程序的生成工具 299

13.4.1语法分析器的生成器Yacc 299

13.4.2用Yacc处理二义文法 302

13.4.3用Lex建立Yacc的词法分析器 304

13.4.4 Yacc的错误恢复 305

练习13 306

第14章PL/O简单编译系统 307

14.1 PL/O语言 307

14.2 PL/O编译系统结构 311

14.3 PL/O的词法分析 312

14.4 PL/O的语法分析 313

14.5出错处理 315

14.6目标代码的生成和解释执行 316

14.7 PL/O程序编译和运行举例 318

第15章Pascal-S编译系统 328

15.1 Pascal-S语言 328

15.2 Pascal-S编译程序的结构 333

15.3 Pascal-S编译程序 336

15.3.1表格 337

15.3.2编译初启 342

15.3.3实用程序 343

15.3.4词法分析及处理 343

15.3.5语法分析处理 344

15.3.6出错处理 349

15.4 Pascal-S解释执行程序 351

15.4.1 P-code指令系统 351

15.4.2运行栈 353

15.4.3运行时的display 354

15.4.4运行出错处理和现场剖析打印 355

15.5编译及运行的例子 356

附录A PL/O编译系统源代码 366

附录B Pascal-S编译系统源代码 382

参考文献 439

相关图书
作者其它书籍
返回顶部