顶部
收藏

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


作者:
张昱 陈意云
定价:
35.00元
ISBN:
978-7-04-026150-9
版面字数:
560千字
开本:
16开
全书页数:
347页
装帧形式:
平装
重点项目:
暂无
出版时间:
2009-05-11
读者对象:
高等教育
一级分类:
计算机/教育技术类
二级分类:
计算机类专业核心课程
三级分类:
编译原理

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

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

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

相关图书