第1章 词法分析与语法分析 1
1.1 实验内容 1
1.1.1 实验要求 1
1.1.2 输入格式 2
1.1.3 输出格式 2
1.1.4 测试环境 3
1.1.5 提交要求 3
1.1.6 样例(必做内容) 4
1.1.7 样例(选做要求) 7
1.2 实验指导 11
1.2.1 词法分析概述 12
1.2.2 GNU Flex介绍 13
1.2.3 Flex:编写源代码 14
1.2.4 Flex:书写正则表达式 17
1.2.5 Flex:高级特性 19
1.2.6 词法分析提示 21
1.2.7 语法分析概述 22
1.2.8 GNU Bison介绍 24
1.2.9 Bison:编写源代码 26
1.2.10 Bison:属性值的类型 28
1.2.11 Bison:语法单元的位置 30
1.2.12 Bison:二义性与冲突处理 31
1.2.13 Bison:源代码的调试 33
1.2.14 Bison:错误恢复 35
1.2.15 语法分析提示 36
第2章 语义分析 38
2.1 实验内容 38
2.1.1 实验要求 38
2.1.2 输入格式 40
2.1.3 输出格式 41
2.1.4 测试环境 41
2.1.5 提交要求 41
2.1.6 样例(必做内容) 42
2.1.7 样例(选做要求) 48
2.2 实验指导 51
2.2.1 属性文法 52
2.2.2 符号表 53
2.2.3 支持多层作用域的符号表 56
2.2.4 类型表示 58
2.2.5 语义分析提示 61
第3章 中间代码生成 63
3.1 实验内容 63
3.1.1 实验要求 63
3.1.2 输入格式 66
3.1.3 输出格式 66
3.1.4 测试环境 67
3.1.5 提交要求 67
3.1.6 样例(必做内容) 67
3.1.7 样例(选做要求) 70
3.2 实验指导 73
3.2.1 中间代码的分类 74
3.2.2 中间代码的表示(线形) 76
3.2.3 中间代码的表示(树形) 77
3.2.4 初探运行时环境 78
3.2.5 翻译模式(基本表达式) 81
3.2.6 翻译模式(语句) 83
3.2.7 翻译模式(函数调用) 84
3.2.8 翻译模式(数组与结构体) 85
3.2.9 中间代码生成提示 86
第4章 目标代码生成 88
4.1 实验内容 88
4.1.1 实验要求 88
4.1.2 输入格式 89
4.1.3 输出格式 90
4.1.4 测试环境 90
4.1.5 提交要求 90
4.1.6 样例 91
4.2 实验指导 95
4.2.1 QtSPIM简易教程 95
4.2.2 MIPS32汇编代码书写 97
4.2.3 指令选择 100
4.2.4 寄存器分配(朴素寄存器分配算法) 102
4.2.5 寄存器分配(局部寄存器分配算法) 103
4.2.6 寄存器分配(图染色算法) 104
4.2.7 寄存器分配(活跃变量分析) 106
4.2.8 寄存器分配(MIPS寄存器的使用) 107
4.2.9 栈管理 108
4.2.10 目标代码生成提示 113
附录A C--语言文法 115
附录B 虚拟机小程序使用说明 122
附录C 资源下载和安装介绍 125
参考文献 127