图书介绍

编译原理实验教程pdf电子书版本下载

编译原理实验教程
  • 张昱,陈意云主编 著
  • 出版社: 北京:高等教育出版社
  • ISBN:9787040261509
  • 出版时间:2009
  • 标注页数:348页
  • 文件大小:25MB
  • 文件页数:359页
  • 主题词:编译程序-程序设计-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快] 温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页 直链下载[便捷但速度慢]   [在线试读本书]   [在线获取解压码]

下载说明

编译原理实验教程PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 概述 1

1.1 本书的研制背景与目标 1

1.2 本书课程实验的构成 2

1.2.1 要实现的源语言 2

1.2.2 目标机的选择 3

1.2.3 中间表示 4

1.2.4 汇编代码的内部表示 5

1.2.5 编译器组件及本书的课程实验概览 6

1.3 开发环境与工具 8

1.3.1 开发环境与工具简介 8

1.3.2 环境变量设置 10

1.3.3 Eclipse的安装和使用 12

1.3.4 XML与Ant简介 21

1.4 实验软件包 25

1.5 课程实验开展建议 27

1.5.1 测试环境 27

1.5.2 课程设计提交要求 28

1.5.3 过程管理与控制 29

第2章 一个简单的程序解释器 30

2.1 SimpleMiniJOOL语言 30

2.2 课程设计1:一个简单的程序解释器 32

2.3 实验运行平台 33

2.3.1 实验平台接口 34

2.3.2 实验运行平台的工作机制 37

2.3.3 实验运行平台的使用 39

2.4 Eclipse AST 46

2.4.1 AST节点类 47

2.4.2 AST类 48

2.4.3 ASTVisitor类 48

2.4.4 SimpleMiniJOOL语言涉及的AST节点类 50

2.4.5 Eclipse AST使用示例 56

2.5 AST的图形化显示包——ASTView 57

2.5.1 ASTView包中的类 57

2.5.2 AST节点的输出属性及其定制 59

2.5.3 在ASTViewer中显示节点对应的低级中间表示 60

2.6 设计模式 60

2.6.1 工厂方法模式 61

2.6.2 访问者模式 61

2.7 课程设计1开发和测试指南 63

2.7.1 主要开发任务 63

2.7.2 实现InterpVisitor类的一些指导 64

2.7.3 在Eclipse下开发 65

2.7.4 在控制台下编译和运行 67

2.7.5 测试要求 70

第3章 词法分析 71

3.1 本章课程设计概述 71

3.2 MiniJOOL语言的词法 73

3.3 课程设计2-1:用JFlex为MiniJOOL语言生成一个词法分析器 74

3.3.1 示例 74

3.3.2 MiniJOOL语言的词法分析器构造 81

3.4 课程设计2-2:手工编写一个简单的词法分析器 82

3.4.1 Block语言的词法 82

3.4.2 示例 82

3.4.3 课程设计任务 85

3.4.4 编译和运行指南 86

3.5 课程设计2-3:编写一个NFA生成器 88

3.5.1 MLex词法规范描述语言 89

3.5.2 课程设计指导 90

3.5.3 课程设计任务 95

3.6 课程设计2-4:编写一个词法分析器的生成器 96

3.6.1 LexerCodeGenerator的输入和输出示例 96

3.6.2 课程设计指导 98

3.7 JFlex词法规范 99

3.7.1 用户代码 99

3.7.2 选项和声明 99

3.7.3 词法规则 102

3.7.4 如何匹配输入流 106

第4章 语法分析 107

4.1 SkipOOMiniJOOL语言的语法 107

4.1.1 类型、常量和变量 107

4.1.2 语句 113

4.1.3 表达式 114

4.1.4 SkipOOMiniJOOL程序的总体结构 116

4.1.5 一个SkipOOMiniJOOL程序示例 117

4.2 本章课程设计概述 119

4.3 课程设计3-1:手工编写一个语法分析器 121

4.3.1 SimpleBlock语言 121

4.3.2 如何引用课程设计2-2的词法分析器类 122

4.3.3 课程设计指导 123

4.3.4 课程设计任务 127

4.4 课程设计3-2:用CUP生成一个能分析合法程序的语法分析器 127

4.4.1 示例1:SimpleBlock语言的语法分析器 128

4.4.2 SkipOOMiniJOOL语言涉及的AST节点类 141

4.4.3 示例2:Block语言的语法分析器 145

4.4.4 课程设计任务 150

4.5 课程设计3-3:用JavaCC生成一个语法分析器 151

4.5.1 示例:Block语言及其子语言的分析器 151

4.5.2 课程设计任务 162

4.6 课程设计3-4:用CUP生成一个有错误处理能力的语法分析器 162

4.6.1 错误类型与错误信息管理 163

4.6.2 错误恢复与处理机制 166

4.6.3 示例 168

4.6.4 课程设计任务 169

4.7 课程设计3-5:用JavaCC生成一个有错误处理能力的语法分析器 169

4.7.1 JavaCC的错误恢复机制 170

4.7.2 错误恢复与处理示例 171

4.7.3 课程设计任务 173

4.8 CUP与YACC 174

4.8.1 YACC简介 174

4.8.2 CUP与YACC的文法规范描述文件的结构 175

4.8.3 文法符号 175

4.8.4 一个简单的例子 177

4.8.5 错误恢复 178

第5章 语义分析 179

5.1 SkipOOMiniJOOL语言的静态语义 179

5.1.1 非形式描述部分 179

5.1.2 形式描述部分:类型系统 184

5.2 本章课程设计概述 194

5.3 课程设计4-1至课程设计4-3特征概述 195

5.4 课程设计4-1:为源程序对应的AST构造符号表 197

5.4.1 Block语言的语义特征 197

5.4.2 示例:为Block程序对应的AST构造符号表 198

5.4.3 课程设计指导和任务 202

5.5 课程设计4-2:利用AST及其符号表信息开展语义检查 204

5.5.1 示例:利用Block程序对应的AST及其符号表信息开展语义检查 204

5.5.2 课程设计指导与任务 207

5.6 课程设计4-3:对源程序关联的AST进行语义检查 208

5.6.1 示例:对Block程序对应的AST进行语义检查 208

5.6.2 课程设计注意事项 210

5.7 课程设计4-4:在语法分析的同时构造符号表 210

5.7.1 课程设计4-4和课程设计4-5关联的文件 210

5.7.2 示例:带符号表构造的Block语言分析器 211

5.7.3 课程设计任务 214

5.8 课程设计4-5:在语法分析的同时开展语义检查 214

5.8.1 示例:带语义检查的Block语言分析器 214

5.8.2 课程设计要点 216

第6章 中间表示的转换 217

6.1 本章课程设计概述 217

6.2 低级中间表示LIR 218

6.2.1 LIR设计特点简介 220

6.2.2 LIR类型 225

6.2.3 LIR操作数 227

6.2.4 LIR语句 231

6.3 课程设计5-1:SkipOOMiniJOOL语言的AST到LIR的转换器 233

6.3.1 课程设计指导 233

6.3.2 课程设计任务 237

6.4 课程设计5-2和课程设计5-3 238

第7章 汇编语言及汇编代码的内部表示 239

7.1 汇编语言简介 239

7.2 MIPS汇编语言 240

7.2.1 五阶段流水以及流水可见性 240

7.2.2 数据表示与对齐 241

7.2.3 寄存器 242

7.2.4 地址空间 242

7.2.5 寻址方式 243

7.2.6 过程调用约定 243

7.2.7 伪指令 245

7.2.8 常用MIPS汇编指令 246

7.3 x86汇编语言 250

7.3.1 处理器执行周期和数据表示 250

7.3.2 寄存器 251

7.3.3 地址空间 253

7.3.4 寻址方式 254

7.3.5 过程调用 255

7.3.6 AT&T汇编语法与Intel汇编语法的区别 258

7.3.7 伪指令 259

7.3.8 常用x86汇编指令 260

7.4 汇编代码的内部表示 264

7.4.1 AIR库的组成及设计特点 265

7.4.2 使用AIR库编程的步骤 266

7.4.3 配置文件格式及示例 267

7.4.4 符号编码类的代码生成 269

7.4.5 汇编代码的表示、创建与输出 270

第8章 汇编代码生成 275

8.1 本章课程设计概述 275

8.2 汇编代码生成器设计中的问题 276

8.3 汇编代码生成器的开发步骤 278

8.4 edu.ustc.cs.compile.lir.opt包及其使用 280

8.4.1 edu.ustc.cs.compile.opt.base包:抽象层 280

8.4.2 edu.ustc.cs.compile.opt.lir包:LIR实现层 288

8.5 寄存器分配 290

8.5.1 线性扫描寄存器分配算法 291

8.5.2 实验软件包中的寄存器分配器 291

8.6 汇编代码生成的代码框架 293

8.6.1 基于LIR流图结构的汇编代码生成 293

8.6.2 AST到汇编代码的生成 295

8.7 MIPS汇编代码的生成与执行 295

8.7.1 MIPS汇编语言与SkipOOMiniJOOL语言中部分结构的对应关系 295

8.7.2 利用SPIM解释执行MIPS汇编代码 298

8.8 x86汇编代码的生成与执行 299

8.8.1 LIR语句的转换 299

8.8.2 x86汇编代码的生成 300

第9章 面向对象语言的编译 302

9.1 MiniJOOL语言特征 303

9.1.1 一个MiniJOOL程序示例 303

9.1.2 MiniJOOL程序的总体结构 304

9.1.3 类类型及其使用 308

9.2 本章课程设计概述 310

9.3 课程设计8-1:构造MiniJOOL语言的词法语法分析器 312

9.4 课程设计8-2:构造MiniJOOL语言的语义检查器 313

9.5 面向MiniJOOL语言的LIR 314

9.5.1 对面向对象特征及其处理的设计考虑 314

9.5.2 LIR中的类对象存储布局和类的类型信息表示 316

9.5.3 LIR中虚方法表结构以及运行时类型判断 320

9.6 课程设计8-3:构造MiniJOOL-Ⅰ语言的AST到LIR的转换器 321

9.6.1 课程设计指导 321

9.6.2 课程设计任务 323

9.7 课程设计8-4:构造MiniJOOL-Ⅱ语言的AST到LIR的转换器 323

9.8 课程设计8-5:构造MiniJOOL-Ⅲ语言的AST到LIR的转换器 324

9.9 课程设计8-6:构造MiniJOOL语言的AST到LIR的转换器 325

9.10 课程设计8-7:构造MiniJOOL语言的汇编代码生成器 326

9.10.1 课程设计指导 326

9.10.2 课程设计任务 327

第10章 综合性课程设计 328

10.1 课程设计内容 328

10.1.1 可选的编译器组件 328

10.1.2 各编译器组件的组合方式 331

10.2 课程设计实施方法 332

10.3 答辩与考评要求 333

附录 335

附录1 MiniJOOL语言的词法记号类型及标识 335

附录2 运算符的优先级与结合性 336

附录3 MLex词法规范语言的EBNF表示 336

附录4 SimpleMiniJOOL语言语法的EBNF表示 337

附录5 SkipOOMiniJOOL语言语法的EBNF表示 338

附录6 MiniJOOL语言语法的EBNF表示 339

附录7 与本书有关的Eclipse AST节点类及其含义 341

附录8 MIPS-SPIM汇编语言的EBNF定义 343

附录9 采用AT&T语法的x86汇编语言的EBNF定义 344

附录10 实验软件包提供的可用编译器组件 345

参考文献 346

精品推荐