编译原理及实现

编译原理及实现
作 者: 孙悦红
出版社: 清华大学出版社
丛编项: 大学本科计算机专业应用型规划教材
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 编译原理
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《编译原理及实现》作者简介

内容简介

本书以通俗易懂的语言介绍编译原理的理论和常用的方法与技术,并着重介绍各种编译方法的实现途径。全书共分10章,包括形式语言基础、词法分析、语法分析、语义分析及代码生成、符号表管理、运行时的存储分配,以及代码优化等。考虑目前学计算机专业的学生对C语言比较了解,本书中以C语言为雏形设计了一种TEST语言,并在介绍全书内容时,都用TEST语言进行分析与实现,使编译原理的抽象性通过TEST语言编译器的实现而具体化,从而使读者轻松掌握编译原理。 本书理论与实践并重,内容深入浅出,便于自学。每章后都提供了适量的习题。 本书可作为高等学校计算机专业的教材,也可供从事计算机应用和开发的人员使用。本书还配有教学辅助课件及书中所有程序示例,需要者可与作者(sun_yh@tom.com)联系。

图书目录

第1章 编译概述

1. 1 程序设计语言

1. 2 翻译程序

1. 3 编译程序的组成

1. 3. 1 词法分析

1. 3. 2 语法分析

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

1. 3. 4 代码优化

1. 3. 5 目标代码生成

1. 3. 6 符号表管理

1. 3. 7 错误处理

1. 4 编译程序的结构

1. 4. 1 单遍编译程序

1. 4. 2 多遍编译程序

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

1. 4. 4 端的概念

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

1. 5. 1 预处理器

1. 5. 2 汇编程序

1. 5. 3 连接加载程序

1. 6 TEST语言与编译器

1. 6. 1 TEST语言

1. 6. 2 TEST编译器

1. 6. 3 TEST机

习题

第2章 文法和语言

2. 1 字母表和符号串

2. 1. 1 字母表

2. 1. 2 符号串

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

2. 2 文法

2. 2. 1 文法形式定义

2. 2. 2 文法的EBNF表示

2. 3 推导

2. 3. 1 直接推导定义

2. 3. 2 推导定义

2. 3. 3 规范推导

2. 4 句型和句子

2. 5 语言

2. 6 递归规则与递归文法

2. 6. 1 递归规则

2. 6. 2 递归文法

2. 7 短语. 简单短语和句柄

2. 8 语法树

2. 9 子树与短语

2. 10 由树构造推导过程

2. 11 文法的二义性

2. 12 有关文法的实用限制

2. 13 文法和语言分类

习题

第3章 词法分析

3. 1 词法分析的功能

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

3. 3 正则文法及状态图

3. 3. 1 状态图

3. 3. 2 状态图的用法

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

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

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

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

3. 5 正则表达式

3. 5. 1 正则表达式定义

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

3. 6 有穷自动机

3. 6. 1 确定的有穷自动机

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

3. 6. 3 NFA到DFA的转化

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

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

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

3. 7 词法分析程序的自动生成器LEX

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

3. 7. 2 LEX源程序结构

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

习题

第4章 语法分析--自顶向下分析

4. 1 自顶向下分析方法

4. 2 FIRST集合和FOLLOW集合

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

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

4. 3 递归下降分析

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

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

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

4. 4 LL 1 分析方法

4. 4. 1 LL 1 分析的基本方法

4. 4. 2 LL 1 分析表的构造方法

4. 4. 3 LL 1 分析的主要问题及解决方法

习题

第5章 语法分析--自底向上分析

5. 1 规范推导. 规范句型和规范归约

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

5. 3 LR分析方法

5. 3. 1 LR分析器逻辑结构

5. 3. 2 LR分析表构成

5. 3. 3 LR分析过程

5. 4 LR 0 分析器

5. 4. 1 活前缀和可归前缀

5. 4. 2 LR 0 项目

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

5. 4. 4 LR 0 分析表的构造

5. 4. 5 LR 0 分析器的工作过程

5. 4. 6 LR 0 文法

5. 5 SLR 1 分析器

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

5. 5. 2 SLR 1 分析表的构造

5. 6 LR 1 分析器

5. 6. 1 LR 1 项目

5. 6. 2 LR 1 项目集规范族构造算法

5. 6. 3 LR 1 分析表的构造

5. 7 LALR 1 分析器

5. 8 语法分析程序的自动生成工具--YACC

5. 8. 1 YACC源程序结构

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

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

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

5. 8. 5 二义性文法的处理

5. 8. 6 YACC示例运行

习题

第6章 语法制导翻译技术

6. 1 翻译文法

6. 2 语法制导翻译

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

6. 3. 1 递归下降翻译

6. 3. 2 LL 1 翻译器

6. 4 属性翻译文法

6. 4. 1 综合属性

6. 4. 2 继承属性

6. 4. 3 属性翻译文法定义

6. 4. 4 属性翻译文法举例--算术表达式的翻译

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

6. 5. 1 L-属性翻译文法

6. 5. 2 L-属性翻译文法的翻译实现--递归下降翻译

6. 5. 3 L-属性翻译文法的翻译实现--LL 1 法

6. 6 自底向上语法制导翻译

6. 6. 1 波兰翻译

6. 6. 2 S-属性文法

6. 6. 3 S-属性波兰翻译文法的翻译实现

习题

第7章 符号表管理技术

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

7. 2 符号表的组织和内容

7. 3 符号表上的操作

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

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

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

7. 5. 2 栈式符号表

习题

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

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

8. 2 静态存储分配

8. 3 栈式动态存储分配

8. 3. 1 活动记录

8. 3. 2 运行时的地址计算

8. 3. 3 递归过程的处理

8. 4 堆式动态存储分配

8. 4. 1 堆分配方式

8. 4. 2 堆式存储管理技术

习题

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

9. 1 语义分析的概念

9. 2 中间代码

9. 2. 1 波兰后缀表示

9. 2. 2 N-元表示

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

9. 3 声明的处理

9. 3. 1 符号常量

9. 3. 2 简单变量

9. 3. 3 数组

9. 3. 4 过程声明

9. 4 表达式语句

9. 5 if语句

9. 6 while语句

9. 7 for循环语句

9. 8 write语句

9. 9 read语句

9. 10 过程调用和返回

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

9. 10. 2 过程调用

9. 10. 3 过程定义的处理

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

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

9. 12 错误处理

习题

第10章 代码优化

10. 1 局部优化

10. 1. 1 基本块的划分

10. 1. 2 基本块的优化技术

10. 1. 3 基本块的DAG表示

10. 1. 4 基本块优化的实现

10. 2 循环内的优化

10. 2. 1 循环结构的定义

10. 2. 2 循环的查找

10. 2. 3 循环优化的实现

习题

附录A TEST语言文法规则

A1 TEST语言词法规则

A2 TEST的语法规则

A3 TEST的语义和代码生成规则

附录B 词法分析程序

附录C 语法分析程序

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

附录E TEST抽象机模拟器完整程序

参考文献