第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章 综合性课程设计