图书目录

前言Ⅰ

第1章编译程序概论1

11什么是编译程序1

12编译过程概述2

13编译程序的结构6

14编译阶段的组合7

15编译技术和软件工具7

第2章PL/0编译程序的实现9

21PL/0语言描述9

211PL/0语言的语法描述图9

212PL/0语言文法的EBNF

表示11

22PL/0编译程序的结构12

23PL/0编译程序的词法分析14

24PL/0编译程序的语法分析16

25PL/0编译程序的目标代码结构

和代码生成19

26PL/0编译程序的语法错误

处理21

27PL/0编译程序的目标代码解释

执行时的存储分配24

28练习26

第3章文法和语言29

31文法的直观概念29

32符号和符号串30

33文法和语言的形式定义31

34文法的类型35

35上下文无关文法及其语法树37

36句型的分析39

361自上而下的分析方法40

362自下而上的分析方法40

363句型分析的有关问题41

37有关文法实用中的一些说明43

371有关文法的实用限制43

372上下文无关文法中的

ε规则43

38练习44

第4章词法分析47

41词法分析程序的设计47

411词法分析程序与语法

分析程序的接口方式47

412词法分析程序的输出47

413将词法分析工作分离

的考虑48

42单词的描述工具49

421正规文法49

422正规式49

423正规文法到正规式51

43有穷自动机52

431确定的有穷

自动机(DFA)52

432不确定的有穷

自动机(NFA)54

433NFA→DFA的转换54

434确定有穷自动机的化简57

44正规式和有穷自动机的等

价性59

45正规文法和有穷自动机间

的转换62

46词法分析程序的自动构造

工具63

461LEX语言64

47练习66

第5章自顶向下语法分析方法69

51确定的自顶向下分析思想69

52LL(1)文法的判别73

53某些非LL(1)文法到LL(1)

文法的等价变换78

54不确定的自顶向下分析思想85

55确定的自顶向下分析方法87

551递归子程序法87

552预测分析方法87

56练习90

第6章自底向上优先分析法94

61自底向上优先分析法概述95

62简单优先分析法96

621优先关系96

622简单优先文法的定义97

623简单优先分析法98

63算符优先分析法98

631直观算符优先分析法99

632算符优先文法的定义100

633算符优先关系表的构造102

634算符优先分析算法109

635优先函数111

636算符优先分析法的

局限性115

64练习116

第7章LR分析法117

71LR分析概述117

72LR(0)分析118

721可归前缀和子前缀119

722识别活前缀的有限

自动机121

723活前缀及其可归前缀的

一般计算方法122

724LR(0)项目集规范族

的构造125

73SLR(1)分析132

74LR(1)分析139

741LR(1) 项目集族的

构造140

742LR(1)分析表的构造141

75LALR(1)分析143

76二义性文法在LR分析中

的应用149

77练习151

第8章语法制导翻译和中间代码生成155

81属性文法155

82语法制导翻译概论157

83中间代码的形式159

831逆波兰记号159

832三元式和树形表示160

833四元式161

84简单赋值语句的翻译162

85布尔表达式的翻译163

851布尔表达式的翻译方法164

852控制语句中布尔表达式

的翻译165

86控制结构的翻译169

861条件转移169

862开关语句171

863for循环语句173

864出口语句175

865goto语句176

866过程调用的四元式产生177

87说明语句的翻译178

871简单说明句的翻译179

872过程中的说明179

88数组和结构的翻译180

881数组说明和数组元

素的引用180

882结构(记录)说明和引

用的翻译186

89练习188

第9章符号表190

91符号表的作用和地位190

92符号的主要属性及作用191

93符号表的组织196

931符号表的总体组织196

932符号表项的排列199

933关键字域的组织201

934其它域的组织202

935下推链域的组织209

94符号表的管理210

941符号表的初始化210

942符号的登录211

943符号的查找212

944符号表中分程序结构

层次的管理213

95练习216

第10章目标程序运行时的存储组织217

101数据空间的三种不同使用方法和

管理方法217

1011静态存储分配218

1012动态存储分配219

1013栈式动态存储分配219

1014堆式动态存储分配219

102栈式存储分配的实现220

1021简单的栈式存储分配的

实现220

1022嵌套过程语言的栈式

实现222

1023分程序结构的存储

管理226

103参数传递230

1031传值231

1032传地址232

1033过程参数232

104过程调用、过程进入和过程

返回233

105练习234

第11章代码优化236

111优化技术简介236

1111优化技术简介236

112局部优化239

1121基本块的划分239

1122基本块的变换239

1123基本块的DAG表示240

1124DAG的应用243

1125DAG构造算法讨论245

113控制流分析和循环优化247

1131程序流图与循环247

1132循环248

1133循环的查找248

1134可归约流图253

1135循环优化253

114数据流的分析与全局优化257

1141一些主要的概念258

1142数据流方程的一般

形式258

1143到达一定值数据流

方程259

1144可用表达式及其数据

流方程263

1145活跃变量数据流方程265

1146复写传播266

115练习267

第12章代码生成270

121代码生成概述270

122一个计算机模型270

123一个简单的代码生成器271

1231寄存器分配的原则271

1232待用信息链表法271

1233代码生成算法273

124代码生成研究现状275

1241中间语言的选择275

1242代码生成的自动化

研究277

125练习278

第13章编译程序实现的途径279

131编译程序的书写语言与T

型图279

132编译程序的自展技术279

133交叉编译与编译程序的移植281

134编译程序的构造工具282

1341基于LALR(1)的语法

分析程序的生成器

YACC282

1342基于LL(2)文法的编

译器的构造工具

(SD&EBNF-LL(2))283

1343词法分析程序的

生成器LEX286

135练习287

附录APL/0编译程序文本288

附录B词法分析程序生成器LEX的使

用方法306

B1LEX概述306

B2LEX源程序的格式307

B3LEX用的正规式307

B4LEX源程序中的动作310

B5识别规则的二义性312

B6LEX源程序中的辅助定义

部分312

B7怎样在UNIX系统中使

用LEX314

B8LEX源程序例子314

B9再谈上下文相关性的处理315

B10LEX源程序格式总结317

附录C语法分析程序自动产生器YACC

的使用方法319

C1YACC概述319

C2YACC源程序的一般格式320

C3YACC源程序说明部分的写法320

C31头文件表320

C32宏定义321

C33数据类型定义321

C34全局变量定义321

C35语法开始符定义322

C36语义值类型定义322

C37终结符定义323

C38运算符优先级及结合

性定义323

C4YACC源程序中语法规则部分

的写法325

C41语法规则的书写格式325

C42语义动作326

C43YACC解决二义性和冲突

的方法327

C44语法分析中的错误

处理328

C5程序段部分329

C51主程序329

C52错误信息报告程序329

C53词法分析程序329

C54其它程序段331

C6YACC源程序例子说明331

C61YACC的源程序例1332

C62YACC的源程序例2334

附录D编译原理实验要求339

附录E编译原理辅助教学软件功能介绍

和使用说明340

E1功能介绍340

E11THPL0CAI的功能340

E12TH\|CCAIS的功能340

E2使用说明341

E21THPL0CAI使用说明341

E22TH\|CCAIS使用说明342

E23其它补充说明350

参考文献351