第1章编译概述111程序设计语言1
12翻译程序2
13编译程序的组成3
131词法分析4
132语法分析4
133语义分析及中间代码生成5
134代码优化5
135目标代码生成6
136符号表管理6
137错误处理7
14编译程序的结构7
141单遍编译程序7
142多遍编译程序7
143编译程序分遍的优缺点8
144“端”的概念8
15编译程序的前后处理器9
151预处理器9
152汇编程序9
153连接加载程序10
16TEST语言与编译器10
161TEST语言10
162TEST编译器11
163TEST机11
习题11
第2章文法和语言12
21字母表和符号串12
211字母表12
212符号串13
213符号串及其集合的运算13
22文法14
221文法形式定义14
222文法的EBNF表示16
23推导17
231直接推导定义17
232推导定义17
233规范推导18
24句型和句子18
25语言19
26递归规则与递归文法20
261递归规则20
262递归文法20
27短语、简单短语和句柄21
28语法树21
29子树与短语22
210由树构造推导过程23
211文法的二义性23
212有关文法的实用限制25
213文法和语言分类26
习题27
目录 编译原理及实现 第3章词法分析28
31词法分析的功能28
32程序语言的单词符号种类及词法分析输出29
33正则文法及状态图30
331状态图30
332状态图的用法31
34词法分析程序的设计与实现32
341TEST语言的词法规则及状态图32
342TEST语言词法分析程序的构造34
343TEST语言的词法分析程序实现35
35正则表达式37
351正则表达式定义37
352正则文法到正则表达式的转换38
36有穷自动机39
361确定的有穷自动机39
362不确定的有穷自动机42
363NFA到DFA的转化43
364正则表达式与有穷自动机的等价性46
365确定的有穷自动机的化简48
366根据DFA构造词法分析程序51
37词法分析程序的自动生成器LEX52
371用LEX语言表达正则表达式52
372LEX源程序结构54
373使用LEX生成TEST语言的词法分析程序57
习题60
第4章语法分析——自顶向下分析61
41自顶向下分析方法61
42FIRST集合和FOLLOW集合62
421FIRST集合定义及构造方法62
422FOLLOW集合定义及构造方法63
43递归下降分析64
431递归下降分析的基本方法64
432递归下降分析中存在的问题及解决方法64
433TEST语言的递归下降分析实现69
44LL(1)分析方法70
441LL(1)分析的基本方法71
442LL(1)分析表的构造方法74
443LL(1)分析的主要问题及解决方法75
习题76
第5章语法分析——自底向上分析78
51规范推导、规范句型和规范归约78
52自底向上分析方法的一般过程79
53LR分析方法80
531LR分析器逻辑结构80
532LR分析表构成80
533LR分析过程82
54LR(0)分析器83
541活前缀和可归前缀83
542LR(0)项目84
543构造识别活前缀的有穷自动机86
544LR(0)分析表的构造90
545LR(0)分析器的工作过程92
546LR(0)文法93
55SLR(1)分析器94
551SLR解决方法的基本思想96
552SLR(1)分析表的构造97
56LR(1)分析器100
561LR(1)项目102
562LR(1)项目集规范族构造算法103
563LR(1)分析表的构造107
57LALR(1)分析器108
58语法分析程序的自动生成工具——YACC112
581YACC源程序结构113
582YACC源程序说明部分的组成113
583YACC源程序的语法规则部分的组成114
584YACC源程序的程序部分组成115
585二义性文法的处理117
586YACC示例运行117
习题118
第6章语法制导翻译技术120
61翻译文法120
62语法制导翻译122
63自顶向下语法制导翻译123
631递归下降翻译123
632LL(1)翻译器126
64属性翻译文法128
641综合属性128
642继承属性130
643属性翻译文法定义131
644属性翻译文法举例——算术表达式的翻译132
65属性文法的自顶向下翻译133
651L属性翻译文法134
652L属性翻译文法的翻译实现——递归下降翻译135
653L属性翻译文法的翻译实现——LL(1)法139
66自底向上语法制导翻译142
661波兰翻译142
662S属性文法144
663S属性波兰翻译文法的翻译实现145
习题147
第7章符号表管理技术149
71何时建立和访问符号表149
72符号表的组织和内容150
73符号表上的操作152
74非块程序结构语言的符号表结构153
75块程序结构语言的符号表组织155
751块程序结构语言的概念155
752栈式符号表156
习题157
第8章程序运行时的存储组织及管理158
81程序运行时的存储组织158
82静态存储分配159
83栈式动态存储分配160
831活动记录161
832运行时的地址计算163
833递归过程的处理163
84堆式动态存储分配 164
841堆分配方式164
842堆式存储管理技术165
习题168
第9章语义分析和代码生成169
91语义分析的概念169
92中间代码170
921波兰后缀表示170
922N元表示171
923栈式抽象机及其汇编指令172
93声明的处理174
931符号常量174
932简单变量175
933数组177
934过程声明180
94表达式语句180
95if 语句185
96while语句186
97for循环语句188
98write语句190
99read语句190
910过程调用和返回191
9101参数的基本传递形式191
9102过程调用192
9103过程定义的处理193
9104返回语句和过程终止语句194
911语义分析及代码生成实现194
912错误处理194
习题195
第10章代码优化196
101局部优化196
1011基本块的划分197
1012基本块的优化技术198
1013基本块的DAG表示199
1014基本块优化的实现203
102循环内的优化205
1021循环结构的定义205
1022循环的查找206
1023循环优化的实现207
习题213
附录ATEST语言文法规则214
A1TEST语言词法规则214
A2TEST的语法规则214
A3TEST的语义和代码生成规则216
附录B词法分析程序218
附录C语法分析程序221
附录D语义及代码生成程序231
附录ETEST抽象机模拟器完整程序246
参考文献251