前言 1
第一篇 习题篇 1
第1章 编译原理概述 1
1.1重点与难点 1
1.1.1编译程序 1
1.1.2编译程序各阶段的任务 1
1.1.3编译程序的结构 2
1.2典型例题解析 2
1.3习题及答案 4
1.3.1习题 4
1.3.2习题答案 6
第2章 形式语言基本知识 8
2.1重点与难点 8
2.1.1文法的基本概念 8
2.1.2文法的二义性 8
2.2典型例题解析 8
2.3习题及答案 12
2.3.1习题 12
2.3.2习题答案 16
第3章 词法分析 21
3.1重点与难点 21
3.1.1词法分析器的功能及设计 21
3.1.2正规式与有穷自动机 21
3.1.3正规文法与有穷自动机的等价性 23
3.1.4正规式与有穷自动机的等价性 23
3.1.5符号表 24
3.2典型例题解析 25
3.3习题及答案 29
3.3.1习题 29
3.3.2习题答案 31
第4章 语法分析 37
4.1重点与难点 37
4.1.1语法分析器的功能 37
4.1.2自上而下分析法 37
4.1.3自下而上分析法 38
4.2典型例题解析 43
4.3习题及答案 51
4.3.1习题 51
4.3.2习题答案 56
第5章 语义分析和中间代码生成 70
5.1重点与难点 70
5.1.1语义分析的功能 70
5.1.2属性文法 70
5.1.3中间代码的形式 70
5.1.4语法制导的翻译方法 70
5.1.5典型语句的翻译 71
5.2典型例题解析 75
5.3习题及答案 77
5.3.1习题 77
5.3.2习题答案 79
第6章 代码优化和目标代码生成 85
6.1重点与难点 85
6.1.1运行时的存储分配 85
6.1.2局部优化 86
6.1.3循环优化 86
6.1.4目标代码生成 87
6.2典型例题解析 88
6.3习题及答案 91
6.3.1习题 91
6.3.2习题答案 95
第二篇 实验篇 98
第7章 实验预备知识 98
7.1实验介绍 98
7.2 Sample语言编译程序的实现方法 98
7.3 Sample语言的定义 99
7.4符合Sample语言定义的源程序示例 101
第8章 词法分析器及算法的设计与实现 102
8.1词法分析器的设计 102
8.1.1目的与要求 102
8.1.2词法分析器实现中的约定 102
8.1.3词法分析器的总体设计 102
8.1.4词法分析程序的详细设计 104
8.2.词法分析器的实现 105
8.2.1词法分析器总控程序的实现 105
8.2.2定义符号表,编写查找和插入函数 106
8.2.3单词识别函数的编写 110
8.2.4调试和运行结果 113
8.3词法分析核心算法的设计 114
8.3.1正规式转换为不确定的有穷自动机算法 114
8.3.2不确定的有穷自动机的确定化 116
8.3.3确定的有穷自动机的化简 118
8.4词法分析器的自动生成 120
8.4.1目的与要求 120
8.4.2 Lex概述 120
8.4.3 Lex源文件的格式 121
8.4.4 Lex源文件中正规式的约定 122
8.4.5 Lex源文件的翻译规则 123
8.4.6 Lex源程序设计举例 124
8.4.7 Lex使用中的一些注意事项 127
8.4.8使用Lex自动生成Sample语言的词法分析器 128
8.4.9实验内容 129
第9章 语法分析器及算法的设计与实现 130
9.1语法分析器的设计 130
9.1.1目的与要求 130
9.1.2语法分析器的结构 130
9.1.3语法分析的方法 131
9.2语法分析器的实现 132
9.2.1语法分析总控程序的编写 132
9.2.2编写识别算术表达式和布尔表达式的函数 134
9.2.3编写识别各种语句的函数 135
9.3语法分析核心算法的设计 137
9.3.1 LL(1)预测分析 137
9.3.2算符优先分析 144
9.3.3 LR分析方法 149
9.4语法分析器的自动生成 156
9.4.1目的与要求 156
9.4.2 YACC的相关概念 156
9.4.3实验内容 158
第10章 语义分析和中间代码的生成 159
10.1语义分析与中间代码生成概述 159
10.1.1目的与要求 159
10.1.2语义分析与中间代码生成方法概述 159
10.1.3语义分析与中间代码生成程序的设计方法 160
10.2语义分析与中间代码生成器的实现 161
10.2.1说明语句的翻译 161
10.2.2可执行语句翻译的预备知识 162
10.2.3简单赋值语句的翻译 163
10.2.4布尔表达式的翻译 165
10.2.5 if语句的翻译 168
10.2.6 repeat语句的翻译 169
10.2.7 for语句的翻译 169
10.2.8程序开始和结束语句的翻译 170
10.2.9运行结果 170
第11章 代码优化 172
11.1目的与要求 172
11.2代码优化器的作用 172
11.3代码优化器的设计与实现 172
11.3.1合并已知量 172
11.3.2删除公共子表达式和无用赋值 176
第12章 目标代码生成 178
12.1目的与要求 178
12.2目标代码生成器的作用 178
12.3目标代码生成器的设计 178
12.4目标代码生成的相关算法 180
12.5目标代码生成器的实现 182
12.5.1汇编程序的结构 182
12.5.2一个简单程序的源程序和汇编程序的对照 182
12.5.3常见的四元式的翻译方法 183
12.5.4实现的数据结构 184
12.5.5实现的程序结构 184
参考文献 185