
《编译原理实验教程》是“编译原理”相关课程的实验教材,以“源语言-抽象语法树-低级中间表示-汇编代码的内部表示-x86/MIPS汇编”为主线搭建编译原理课程的实验体系,设计安排了各种循序渐进、规模适度、“综观全局、实现局部”、强调工程质量规范的课程设计。第2章通过实现单函数的无类型结构化语言SimpleMiniJOOL的简单解释器引导读者开始编译实验的实践;第3章到第8章围绕多函数的强类型结构化语言SkiOOMiniJOOL展开有关词法分析、语法分析、语义分析、低级中间代码生成、汇编代码生成、寄存器分配等多种编译原理骨干实验;第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 EclipseAST
2.4.1 AST节点类
2.4.2 AST类
2.4.3 ASTVisitor类
2.4.4 SimpleMiniJOOL语言涉及的AST节点类
2.4.5 EclipseAST使用示例
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 课程设计l开发和测试指南
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 示例l: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章 语义分析
第6章 中间表示的转换
第7章 汇编语言及汇编代码的内部
第8章 汇编代码生成
第9章 面向对象语言的编译
第10章 综合性课程设计 序言
本书是“编译原理”相关课程的实验教材,既可作为与“编译原理”理论课程教学同步展开的配套实验课程教材,也可作为一门独立的综合性实践课程的教材。
“编译原理”课程介绍编译器构造的一般原理、基本设计方法和主要的实现技术。在实际的教学和学习中,大家普遍认为它是一门有用、抽象而难学的课程。其主要原因之一是课程实践环节较为薄弱:缺乏系统的编译原理实验教材,导致不能组织和指导学生进行有广度和深度的课程实践。
在深入调研国外典型编译原理实验内容并对其进行实践的基础之上,结合实际的教学和实践经验,作者设计出一套以“源语言一抽象语法树一低级中间表示一汇编代码的内部表示一x86/MIPs汇编”为主线搭建的、基于组件的编译原理实验体系,其中包括各种循序渐进、规模适度、“综观全局、实现局部”、强调工程质量规范的课程设计,并提供配套的实验支持库和课程设计开发包。全书的课程设计分为以下4个层次,供不同深度的编译原理教学选择合适的实验内容。 文摘
插图:
第1章 概述
编译原理和技术是构造程序设计语言编译器的重要理论和技术基础。随着计算机技术和社会应用需求的发展,编译原理和技术也越来越多地应用在诸如编辑系统、数据处理、软件安全、程序理解和逆向工程等多个领域,并影响着高级语言的实现(如垃圾收集技术、代码移植与移动等)、计算机体系结构的优化(指令集并行、线程级并行等)、新计算机体系结构(如精简指令集计算机、复杂指令集计算机、数据流机、向量机、超长指令字、单指令多数据阵列处理器、带共享内存的多处理器和带分布内存的多处理器)的设计、程序翻译(如二进制翻译、数据库查询解释器)以及提高软件开发效率的工具(如类型检查、边界检查、内存管理)等。因此,“编译原理”这门课程对计算机及相关专业的本科生来说也显得越来越重要。
在“编译原理”课程的教学方面,单纯的理论教学是不够的,需要通过实验加强学生对编译原理和技术知识的理解、领会与掌握。
作为编译原理和技术的实验教材,既可以作为与“编译原理”理论课程教学同步展开的配套实验课程教材,也可以作为一门独立的综合性实践课程的教材。在本章各节中,将依次介绍本书的研制背景与目标、所设计的课程实验的构成、实验环境与工具、配套实验软件包的组成,最后结合作者的实践经验给出一些课程实验开展的建议。
1.1 本书的研制背景与目标
自20世纪80年代中期至2006年,中国科学技术大学计算机专业本科生的编译原理实验一直以阅读和扩展PL/O语言的编译器为基础。PL/O语言过于简单且不支持带参数的函数等,限制了以这种语言为基础的编译原理课程实践的深度和意义。这种实验设置已经不能适应教学的需要和对不断发展的现代编译技术的学习理解。| ISBN | |
|---|---|
| 出版社 | 高等教育出版社 |
| 作者 | 张昱 |
| 尺寸 | 16 |