顶部
收藏

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


作者:
张昱 陈意云
定价:
35.00 元
版面字数:
560千字
开本:
16开
装帧形式:
平装
版次:
1
最新版次
印刷时间:
2019年
ISBN:
978-7-04-026150-9
物料号:
26150-00
出版时间:
2009-05-11
读者对象:
高等教育
一级分类:
计算机/教育技术类
二级分类:
计算机类专业核心课程
三级分类:
编译原理

本书是“编译原理”相关课程的实验教材,以“源语言-抽象语法树-低级中间表示-汇编代码的内部表示-x86/MIPS汇编”为主线搭建编译原理课程的实验体系,设计安排了各种循序渐进、规模适度“综观全局、实现局部&rdquo

  • 目录
    • 第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 实验软件包提供的可用编译器 组件
                                                                                                                                                                                                                                                                                                                                                    • 参考文献

                                                                                                                                                                                                                                                                                                                                                    相关图书