图书目录

第1章编译概述111程序设计语言1

12翻译程序2

13编译程序的组成3

131词法分析4

132语法分析4

133语义分析及中间代码生成5

134代码优化5

135目标代码生成6

136符号表管理6

137错误处理7

14编译程序的结构7

141单遍编译程序7

142多遍编译程序7

143编译程序分遍的优缺点8

144“端”的概念8

15编译程序的前后处理器9

151预处理器9

152汇编程序9

153连接加载程序10

16TEST语言与编译器10

161TEST语言10

162TEST编译器11

163TEST机11

习题11

第2章文法和语言12

21字母表和符号串12

211字母表12

212符号串13

213符号串及其集合的运算13

22文法14

221文法形式定义14

222文法的EBNF表示16

23推导17

231直接推导定义17

232推导定义17

233规范推导18

24句型和句子18

25语言19

26递归规则与递归文法20

261递归规则20

262递归文法20

27短语、简单短语和句柄21

28语法树21

29子树与短语22

210由树构造推导过程23

211文法的二义性23

212有关文法的实用限制25

213文法和语言分类26

习题27

    目录      编译原理及实现  第3章词法分析28

31词法分析的功能28

32程序语言的单词符号种类及词法分析输出29

33正则文法及状态图30

331状态图30

332状态图的用法31

34词法分析程序的设计与实现32

341TEST语言的词法规则及状态图32

342TEST语言词法分析程序的构造34

343TEST语言的词法分析程序实现35

35正则表达式37

351正则表达式定义37

352正则文法到正则表达式的转换38

36有穷自动机39

361确定的有穷自动机39

362不确定的有穷自动机42

363NFA到DFA的转化43

364正则表达式与有穷自动机的等价性46

365确定的有穷自动机的化简48

366根据DFA构造词法分析程序51

37词法分析程序的自动生成器LEX52

371用LEX语言表达正则表达式52

372LEX源程序结构54

373使用LEX生成TEST语言的词法分析程序57

习题60

第4章语法分析——自顶向下分析61

41自顶向下分析方法61

42FIRST集合和FOLLOW集合62

421FIRST集合定义及构造方法62

422FOLLOW集合定义及构造方法63

43递归下降分析64

431递归下降分析的基本方法64

432递归下降分析中存在的问题及解决方法64

433TEST语言的递归下降分析实现69

44LL(1)分析方法70

441LL(1)分析的基本方法71

442LL(1)分析表的构造方法74

443LL(1)分析的主要问题及解决方法75

习题76

第5章语法分析——自底向上分析78

51规范推导、规范句型和规范归约78

52自底向上分析方法的一般过程79

53LR分析方法80

531LR分析器逻辑结构80

532LR分析表构成80

533LR分析过程82

54LR(0)分析器83

541活前缀和可归前缀83

542LR(0)项目84

543构造识别活前缀的有穷自动机86

544LR(0)分析表的构造90

545LR(0)分析器的工作过程92

546LR(0)文法93

55SLR(1)分析器94

551SLR解决方法的基本思想96

552SLR(1)分析表的构造97

56LR(1)分析器100

561LR(1)项目102

562LR(1)项目集规范族构造算法103

563LR(1)分析表的构造107

57LALR(1)分析器108

58语法分析程序的自动生成工具——YACC112

581YACC源程序结构113

582YACC源程序说明部分的组成113

583YACC源程序的语法规则部分的组成114

584YACC源程序的程序部分组成115

585二义性文法的处理117

586YACC示例运行117

习题118

第6章语法制导翻译技术120

61翻译文法120

62语法制导翻译122

63自顶向下语法制导翻译123

631递归下降翻译123

632LL(1)翻译器126

64属性翻译文法128

641综合属性128

642继承属性130

643属性翻译文法定义131

644属性翻译文法举例——算术表达式的翻译132

65属性文法的自顶向下翻译133

651L属性翻译文法134

652L属性翻译文法的翻译实现——递归下降翻译135

653L属性翻译文法的翻译实现——LL(1)法139

66自底向上语法制导翻译142

661波兰翻译142

662S属性文法144

663S属性波兰翻译文法的翻译实现145

习题147

第7章符号表管理技术149

71何时建立和访问符号表149

72符号表的组织和内容150

73符号表上的操作152

74非块程序结构语言的符号表结构153

75块程序结构语言的符号表组织155

751块程序结构语言的概念155

752栈式符号表156

习题157

第8章程序运行时的存储组织及管理158

81程序运行时的存储组织158

82静态存储分配159

83栈式动态存储分配160

831活动记录161

832运行时的地址计算163

833递归过程的处理163

84堆式动态存储分配 164

841堆分配方式164

842堆式存储管理技术165

习题168

第9章语义分析和代码生成169

91语义分析的概念169

92中间代码170

921波兰后缀表示170

922N元表示171

923栈式抽象机及其汇编指令172

93声明的处理174

931符号常量174

932简单变量175

933数组177

934过程声明180

94表达式语句180

95if 语句185

96while语句186

97for循环语句188

98write语句190

99read语句190

910过程调用和返回191

9101参数的基本传递形式191

9102过程调用192

9103过程定义的处理193

9104返回语句和过程终止语句194

911语义分析及代码生成实现194

912错误处理194

习题195

第10章代码优化196

101局部优化196

1011基本块的划分197

1012基本块的优化技术198

1013基本块的DAG表示199

1014基本块优化的实现203

102循环内的优化205

1021循环结构的定义205

1022循环的查找206

1023循环优化的实现207

习题213

附录ATEST语言文法规则214

A1TEST语言词法规则214

A2TEST的语法规则214

A3TEST的语义和代码生成规则216

附录B词法分析程序218

附录C语法分析程序221

附录D语义及代码生成程序231

附录ETEST抽象机模拟器完整程序246

参考文献251