图书信息
图书目录

编译原理实验教程(配光盘)




本书是“编译原理”相关课程的实验教材,以“源语言-抽象语法树-低级中间表示-汇编代码的内部表示-x86/MIPS汇编”为主线搭建编译原理课程的实验体系,设计安排了各种循序渐进、规模适度“综观全局、实现局部”、强调工程质量规范的课程设计。第2章通过实现单函数的无类型结构化语言SimpleMiniJOOL的简单解释器引导读者开始编译实验的实践;第3章到第8章围绕多函数的强类型结构化语言SkipOOMiniJOOL展开有关词法分析、语法分析、语义分析、低级中间代码生成、汇编代码生成、寄存器分配等多种编译原理骨干实验;第9章围绕强类型的面向对象语言MiniJOOL展开有关面向对象编译的高级实验。本书的课程实验涉及多种编程环境和工具,其工程开发接近实际。本书配套光盘中提供了实验支持库和课程设计开发包。本书可作为高等院校计算机科学及相关专业的编译原理实验教材,既可用来开展与理论课程教学同步的配套实验,又可用来安排独立的综合性实践课程。

本书还可作为软件工程硕士研究生工程实践案例教材,以及供计算机软件工程技术人员参考使用。



作者:
张昱 陈意云

定价:
35.00 元

出版时间:
2009-05-11

ISBN:
978-7-04-026150-9

物料号:
26150-00

读者对象:
高等教育

一级分类:
计算机/教育技术类

二级分类:
计算机类专业核心课程

三级分类:
编译原理

重点项目:
暂无

版面字数:
560千字

开本:
16开

装帧形式:
平装

页数:
347

最新
印次时间:
2019年01月
  • 目录
    • 第1章 概述
      • 1.1 本书的研制背景与目标
        • 1.2 本书课程实验的构成
          • 1.2.1 要实现的源语言
            • 1.2.2 目标机的选择
              • 1.2.3 中间表示
                • 1.2.4 汇编代码的内部表示
                  • 1.2.5 编译器组件及本书的课程实验概览
                  • 1.3 开发环境与工具
                    • 1.3.1 开发环境与工具简介
                      • 1.3.2 环境变量设置
                        • 1.3.3 Eclipse的安装和使用
                          • 1.3.4 XML与Ant简介
                          • 1.4 实验软件包
                            • 1.5 课程实验开展建议
                              • 1.5.1 测试环境
                                • 1.5.2 课程设计提交要求
                                  • 1.5.3 过程管理与控制
                                • 第2章 一个简单的程序解释器
                                  • 2.1 SimpleMiniJOOL语言
                                    • 2.2 课程设计1:一个简单的程序解释
                                      • 2.3 实验运行平台
                                        • 2.3.1 实验平台接口
                                          • 2.3.2 实验运行平台的工作机制
                                            • 2.3.3 实验运行平台的使用
                                            • 2.4 Eclipse AST
                                              • 2.4.1 AST节点类
                                                • 2.4.2 AST类
                                                  • 2.4.3 ASTVisitor类
                                                    • 2.4.4 SimpleMiniJOOL语言涉及的AST节点类
                                                      • 2.4.5 Eclipse AST使用示例
                                                      • 2.5 AST的图形化显示包——ASTView
                                                        • 2.5.1 ASTView包中的类
                                                          • 2.5.2 AST节点的输出属性及其定制
                                                            • 2.5.3 在ASTViewer中显示节点对应的低级中间表示
                                                            • 2.6 设计模式
                                                              • 2.6.1 工厂方法模式
                                                                • 2.6.2 访问者模式
                                                                • 2.7 课程设计1开发和测试指南
                                                                  • 2.7.1 主要开发任务
                                                                    • 2.7.2 实现InterpVisitor类的一些指导
                                                                      • 2.7.3 在Eclipse下开发
                                                                        • 2.7.4 在控制台下编译和运行
                                                                          • 2.7.5 测试要求
                                                                        • 第3章 词法分析
                                                                          • 3.1 本章课程设计概述
                                                                            • 3.2 MiniJOOL语言的词法
                                                                              • 3.3 课程设计2-1:用JFlex为MiniJOOL语言生成一个词法分析器
                                                                                • 3.3.1 示例
                                                                                  • 3.3.2 MiniJOOL语言的词法分析器构造
                                                                                  • 3.4 课程设计2-2:手工编写一个简单的词法分析器
                                                                                    • 3.4.1 Block语言的词法
                                                                                      • 3.4.2 示例
                                                                                        • 3.4.3 课程设计任务
                                                                                          • 3.4.4 编译和运行指南
                                                                                          • 3.5 课程设计2-3:编写一个NFA生成器
                                                                                            • 3.5.1 MLex词法规范描述语言
                                                                                              • 3.5.2 课程设计指导
                                                                                                • 3.5.3 课程设计任务
                                                                                                • 3.6 课程设计2-4:编写一个词法分析器的生成器
                                                                                                  • 3.6.1 LexerCodeGenerator的输入和输出示例
                                                                                                    • 3.6.2 课程设计指导
                                                                                                    • 3.7 JFlex词法规范
                                                                                                      • 3.7.1 用户代码
                                                                                                        • 3.7.2 选项和声明
                                                                                                          • 3.7.3 词法规则
                                                                                                            • 3.7.4 如何匹配输入流
                                                                                                          • 第4章 语法分析
                                                                                                            • 4.1 SkipOOMiniJOOL语言的语法
                                                                                                              • 4.1.1 类型、常量和变量
                                                                                                                • 4.1.2 语句
                                                                                                                  • 4.1.3 表达式
                                                                                                                    • 4.1.4 SkipOOMiniJOOL程序的 总体结构
                                                                                                                      • 4.1.5 一个SkipOOMiniJOOL程序 示例
                                                                                                                      • 4.2 本章课程设计概述
                                                                                                                        • 4.3 课程设计3-1:手工编写一个 语法分析器
                                                                                                                          • 4.3.1 SimpleBlock语言
                                                                                                                            • 4.3.2 如何引用课程设计2-2的 词法分析器类
                                                                                                                              • 4.3.3 课程设计指导
                                                                                                                                • 4.3.4 课程设计任务
                                                                                                                                • 4.4 课程设计3-2:用CUP生成 一个能分析合法程序的语法分析器
                                                                                                                                  • 4.4.1 示例1:SimpleBlock语言的 语法分析器
                                                                                                                                    • 4.4.2 SkipOOMiniJOOL语言涉及AST节点类
                                                                                                                                      • 4.4.3 示例2:Block语言的 语法分析器
                                                                                                                                        • 4.4.4 课程设计任务
                                                                                                                                        • 4.5 课程设计3-3:用JavaCC生成 一个语法分析器
                                                                                                                                          • 4.5.1 示例:Block语言及其 子语言的分析器
                                                                                                                                            • 4.5.2 课程设计任务
                                                                                                                                            • 4.6 课程设计3-4:用CUP生成一个 有错误处理能力的语法分析器
                                                                                                                                              • 4.6.1 错误类型与错误信息管理
                                                                                                                                                • 4.6.2 错误恢复与处理机制
                                                                                                                                                  • 4.6.3 示例
                                                                                                                                                    • 4.6.4 课程设计任务
                                                                                                                                                    • 4.7 课程设计3-5:用JavaCC生成一个 有错误处理能力的语法分析器
                                                                                                                                                      • 4.7.1 JavaCC的错误恢复机制
                                                                                                                                                        • 4.7.2 错误恢复与处理示例
                                                                                                                                                          • 4.7.3 课程设计任务
                                                                                                                                                          • 4.8 CUP与YACC
                                                                                                                                                            • 4.8.1 YACC简介
                                                                                                                                                              • 4.8.2 CUP与YACC的文法 规范描述文件的结构
                                                                                                                                                                • 4.8.3 文法符号
                                                                                                                                                                  • 4.8.4 一个简单的例子
                                                                                                                                                                    • 4.8.5 错误恢复
                                                                                                                                                                  • 第5章 语义分析
                                                                                                                                                                    • 5.1 SkipOOMiniJOOL语言的静
                                                                                                                                                                      • 5.1.1 非形式描述部分
                                                                                                                                                                        • 5.1.2 形式描述部分:类
                                                                                                                                                                        • 5.2 本章课程设计概述
                                                                                                                                                                          • 5.3 课程设计4-1至课程设计特征概述
                                                                                                                                                                            • 5.4 课程设计4-1:为源程序对AST构造符号表
                                                                                                                                                                              • 5.4.1 Block语言的语义特
                                                                                                                                                                                • 5.4.2 示例:为Block程AST构造符号表
                                                                                                                                                                                  • 5.4.3 课程设计指导和任
                                                                                                                                                                                  • 5.5 课程设计4-2:利用AST信息开展语义检查.
                                                                                                                                                                                    • 5.5.1 示例:利用BlockAST及其符号表信语义检查
                                                                                                                                                                                      • 5.5.2 课程设计指导与任
                                                                                                                                                                                      • 5.6 课程设计4-3:对源程序关AST进行语义检查
                                                                                                                                                                                        • 5.6.1 示例:对Block程AST进行语义检查
                                                                                                                                                                                          • 5.6.2 课程设计注意事项
                                                                                                                                                                                          • 5.7 课程设计4-4:在语法分析构造符号表
                                                                                                                                                                                            • 5.7.1 课程设计4-4和课关联的文件
                                                                                                                                                                                              • 5.7.2 示例:带符号表构语言分析器
                                                                                                                                                                                                • 5.7.3 课程设计任务
                                                                                                                                                                                                • 5.8 课程设计4-5:在语法分析开展语义检查
                                                                                                                                                                                                  • 5.8.1 示例:带语义检查语言分析器
                                                                                                                                                                                                    • 5.8.2 课程设计要点
                                                                                                                                                                                                  • 第6章 中间表示的转换
                                                                                                                                                                                                    • 6.1 本章课程设计概述
                                                                                                                                                                                                      • 6.2 低级中间表示LIR
                                                                                                                                                                                                        • 6.2.1 LIR设计特点简介
                                                                                                                                                                                                          • 6.2.2 LIR类型
                                                                                                                                                                                                            • 6.2.3 LIR操作数
                                                                                                                                                                                                              • 6.2.4 LIR语句
                                                                                                                                                                                                              • 6.3 课程设计5-1:SkipOOMiniJOOL 语言的AST到LIR的转换器
                                                                                                                                                                                                                • 6.3.1 课程设计指导
                                                                                                                                                                                                                  • 6.3.2 课程设计任务
                                                                                                                                                                                                                  • 6.4 课程设计5-2和课程设计5-3
                                                                                                                                                                                                                  • 第7章 汇编语言及汇编代码的内部 表示
                                                                                                                                                                                                                    • 7.1 汇编语言简介
                                                                                                                                                                                                                      • 7.2 MIPS汇编语言
                                                                                                                                                                                                                        • 7.2.1 五阶段流水以及流水可见性
                                                                                                                                                                                                                          • 7.2.2 数据表示与对齐
                                                                                                                                                                                                                            • 7.2.3 寄存器
                                                                                                                                                                                                                              • 7.2.4 地址空间
                                                                                                                                                                                                                                • 7.2.5 寻址方式
                                                                                                                                                                                                                                  • 7.2.6 过程调用约定
                                                                                                                                                                                                                                    • 7.2.7 伪指令
                                                                                                                                                                                                                                      • 7.2.8 常用MIPS汇编指令
                                                                                                                                                                                                                                      • 7.3 x86汇编语言
                                                                                                                                                                                                                                        • 7.3.1 处理器执行周期和数据表示
                                                                                                                                                                                                                                          • 7.3.2 寄存器
                                                                                                                                                                                                                                            • 7.3.3 地址空间
                                                                                                                                                                                                                                              • 7.3.4 寻址方式
                                                                                                                                                                                                                                                • 7.3.5 过程调用
                                                                                                                                                                                                                                                  • 7.3.6 AT&T汇编语法与Intel汇编 语法的区别
                                                                                                                                                                                                                                                    • 7.3.7 伪指令
                                                                                                                                                                                                                                                      • 7.3.8 常用x86汇编指令
                                                                                                                                                                                                                                                      • 7.4 汇编代码的内部表示
                                                                                                                                                                                                                                                        • 7.4.1 AIR库的组成及设计特点
                                                                                                                                                                                                                                                          • 7.4.2 使用AIR库编程的步骤
                                                                                                                                                                                                                                                            • 7.4.3 配置文件格式及示例
                                                                                                                                                                                                                                                              • 7.4.4 符号编码类的代码生成
                                                                                                                                                                                                                                                                • 7.4.5 汇编代码的表示、创建与 输出
                                                                                                                                                                                                                                                              • 第8章 汇编代码生成
                                                                                                                                                                                                                                                                • 8.1 本章课程设计概述
                                                                                                                                                                                                                                                                  • 8.2 汇编代码生成器设计中的问题
                                                                                                                                                                                                                                                                    • 8.3 汇编代码生成器的开发步骤
                                                                                                                                                                                                                                                                      • 8.4 edu.ustc.cs.compile.lir.opt包及其使用
                                                                                                                                                                                                                                                                        • 8.4.1 edu.ustc.cs.compile.opt.base 包:抽象层
                                                                                                                                                                                                                                                                          • 8.4.2 edu.ustc.cs.compile.opt.lir包:LIR实现层
                                                                                                                                                                                                                                                                          • 8.5 寄存器分配
                                                                                                                                                                                                                                                                            • 8.5.1 线性扫描寄存器分配算法
                                                                                                                                                                                                                                                                              • 8.5.2 实验软件包中的寄存器分配器
                                                                                                                                                                                                                                                                              • 8.6 汇编代码生成的代码框架
                                                                                                                                                                                                                                                                                • 8.6.1 基于LIR流图结构的汇编代码生成
                                                                                                                                                                                                                                                                                  • 8.6.2 AST到汇编代码的生成
                                                                                                                                                                                                                                                                                  • 8.7 MIPS汇编代码的生成与执行
                                                                                                                                                                                                                                                                                    • 8.7.1 MIPS汇编语言与 SkipOOMiniJOOL语言中部分 结构的对应关系
                                                                                                                                                                                                                                                                                      • 8.7.2 利用SPIM解释执行MIPS汇编代码
                                                                                                                                                                                                                                                                                      • 8.8 x86汇编代码的生成与执行
                                                                                                                                                                                                                                                                                        • 8.8.1 LIR语句的转换
                                                                                                                                                                                                                                                                                          • 8.8.2 x86汇编代码的生成
                                                                                                                                                                                                                                                                                        • 第9章 面向对象语言的编译
                                                                                                                                                                                                                                                                                          • 9.1 MiniJOOL语言特征
                                                                                                                                                                                                                                                                                            • 9.1.1 一个MiniJOOL程序示例
                                                                                                                                                                                                                                                                                              • 9.1.2 MiniJOOL程序的总体结构
                                                                                                                                                                                                                                                                                                • 9.1.3 类类型及其使用
                                                                                                                                                                                                                                                                                                • 9.2 本章课程设计概述
                                                                                                                                                                                                                                                                                                  • 9.3 课程设计8-1:构造MiniJOOL语言的词法语法分析器
                                                                                                                                                                                                                                                                                                    • 9.4 课程设计8-2:构造MiniJOOL语言的语义检查器
                                                                                                                                                                                                                                                                                                      • 9.5 面向MiniJOOL语言的LIR
                                                                                                                                                                                                                                                                                                        • 9.5.1 对面向对象特征及其处理的设计考虑
                                                                                                                                                                                                                                                                                                          • 9.5.2 LIR中的类对象存储布局和类的类型信息表示
                                                                                                                                                                                                                                                                                                            • 9.5.3 LIR中虚方法表结构以及 运行时类型判断
                                                                                                                                                                                                                                                                                                            • 9.6 课程设计8-3:构造MiniJOOL-Ⅰ语言的AST到LIR的转换器
                                                                                                                                                                                                                                                                                                              • 9.6.1 课程设计指导
                                                                                                                                                                                                                                                                                                                • 9.6.2 课程设计任务
                                                                                                                                                                                                                                                                                                                • 9.7 课程设计8-4:构造MiniJOOL-Ⅱ语言的AST到LIR的转换器
                                                                                                                                                                                                                                                                                                                  • 9.8 课程设计8-5:构造MiniJOOL-Ⅲ语言的AST到LIR的转换器
                                                                                                                                                                                                                                                                                                                    • 9.9 课程设计8-6:构造MiniJOOL语言的AST到LIR的转换器
                                                                                                                                                                                                                                                                                                                      • 9.10 课程设计8-7:构造MiniJOOL语言汇编代码生成器
                                                                                                                                                                                                                                                                                                                        • 9.10.1 课程设计指导
                                                                                                                                                                                                                                                                                                                          • 9.10.2 课程设计任务
                                                                                                                                                                                                                                                                                                                        • 第10章 综合性课程设计
                                                                                                                                                                                                                                                                                                                          • 10.1 课程设计内容
                                                                                                                                                                                                                                                                                                                            • 10.1.1 可选的编译器组件
                                                                                                                                                                                                                                                                                                                              • 10.1.2 各编译器组件的组合方式
                                                                                                                                                                                                                                                                                                                              • 10.2 课程设计实施方法
                                                                                                                                                                                                                                                                                                                                • 10.3 答辩与考评要求
                                                                                                                                                                                                                                                                                                                                • 附录
                                                                                                                                                                                                                                                                                                                                  • 附录1 MiniJOOL语言的词法记号类型及标识
                                                                                                                                                                                                                                                                                                                                    • 附录2 运算符的优先级与结合性
                                                                                                                                                                                                                                                                                                                                      • 附录3 MLex词法规范语言的EBNF表示
                                                                                                                                                                                                                                                                                                                                        • 附录4 SimpleMiniJOOL语言语法的EBNF表示
                                                                                                                                                                                                                                                                                                                                          • 附录5 SkipOOMiniJOOL语言语法的EBNF表示
                                                                                                                                                                                                                                                                                                                                            • 附录6 MiniJOOL语言语法的EBNF表示
                                                                                                                                                                                                                                                                                                                                              • 附录7 与本书有关的Eclipse AST节点类及其含义
                                                                                                                                                                                                                                                                                                                                                • 附录8 MIPS-SPIM汇编语言的EBNF定义
                                                                                                                                                                                                                                                                                                                                                  • 附录9 采用AT&T语法的x86汇编 语言的EBNF定义
                                                                                                                                                                                                                                                                                                                                                    • 附录10 实验软件包提供的可用编译器 组件
                                                                                                                                                                                                                                                                                                                                                    • 参考文献
                                                                                                                                                                                                                                                                                                                                                    1