内容简介
§1.1 编译程序
第一章 概述
§1.2 解释程序
§1.3 编译程序的组成
一.编译程序的组成部分
二.编译程序的结构
§1.4 BNF范式和语法图
§2.2 集合
一.集合
§2.1 引言
第二章 文法和形式语言简介
二.笛卡尔乘积
§2.3 关系
一.关系
二.关系的乘积
三.关系的传递闭包
§2.4 符号串
四.自反传递闭包
§2.5 文法和语言的形式定义
§2.6 与文法有关的一些关系和集合
§2.7 文法的其它表示方法
一.扩充的BNF
二.语法图
§2.8 文法的分类
§2.9 语法树和二义性
一.语法树
二.二义性
三.怎样排除二义性
§2.10 有关文法的实用限制和文法变换
§2.11 语法分析初步
一.自顶向下分析
二.自底向上分析
习题
§3.1 词法分析程序的任务
一.词法分析程序的任务
第三章 词法分析
二.单词的类别及其输出形式
三.词法分析程序举例
§3.2 词法分析程序的设计
§3.3 正则表达式和有穷自动机
一.正则表达式和正则集
二.确定有穷自动机(FA)
三.非确定有穷自动机(NFA)
四.由正则表达式构造确定有穷自动机
§3.4 词法分析程序的生成器
习题
第四章 自顶向下语未能分析
§4.1 自顶向下分析方法中的问题及解决办法
一.消除左递归
二.避免回溯
§4.2 递归子程序法
§4.3 LL(1)方法
一.LL(1)方法
二.构造分析表M
§4.4 带回溯的自顶向下分析算法
一.算法大意
二.自顶向下分析算法
三.文法在内存中的表示
习题
第五章 自底向上语法分析
§5.1 简单优先分析法
一.优先关系
二.构造优先关系
三.优先文法
四.分析算法
五.优先函数
§5.2 算符优先分析法
一.算符优先关系
二.算符优先文法
三.构造算符优先关系
四.最左素短语
五.算符优先分析算法
§5.3 LR(0)分析法
一.可归前缀
二.构造识别可归前缀的有穷自动机
三.LR(0)分析表
四.LR(0)分析法
§5.4 SLR(1)分析法
§5.5 LR(1)分析法
习题
§6.1 符号表的作用
第六章 符号表
§6.2 符号表的内容
§6.3 符号表栏目的组织
§6.4 符号表的操作和结构
一.符号表的操作
二.符号表的结构
习题
第七章 运行阶段的数据存贮组织与分配
§7.1 概述
§7.2 静态存贮分配
§7.3 动态存贮分配
一.以过程为单位的动态存贮分配
二.以过程为单位的存贮分配方案的实现
三.堆存贮分配
习题
第八章 中间语言
§8.1 波兰表示
一.表达式的波兰表示
二.形成波兰表示
三.扩充的波兰表示
§8.2 四元组表示
§8.3 三元组和树表示
一.三元组
二.树表示
§8.4 伪(抽象机器)代码
习题
第九章 代码生成
§9.1 概述
§9.2 目标代码结构
一.赋值语句的目标结构
二.当型语句的目标结构
三.过程说明和过程语句的目标结构
习题
第十章 代码优化
§10.1 优化概述
§10.2 表达式的优化
一.合并表达式中的常量运算
二.消除多余的运算
§10.3 循环优化
一.外提不变表达式
二.削减运算强度
三.循环的合并与展开
四.循环中的下标变量的优化
习题
§11.1 错误处理概述
§11.2 词法分析阶段的错误检测与处理
第十一章 错误的检测与处理
§11.3 语法分析阶段的错误检测与处理
§11.4 语义错误的检测与处理
一.遏止由单个错误引起的株连错误的基本方法
二.遏止重复错误的方法
附录
一.PL/0程序设计语言文法(扩充BNF表示)
二.PL/0编译程序文本
三.PL/0源程序及其(伪)代码实例
四.PL/0语言的语法错误信息表
五.上机实习题
实习一.词法分析
实习二.简单优先分析法
实习三.LL(1)分析法
实习四.?L(0)分析法
实习五.带回溯的自顶向下分析法
实习七.生成中间语言
实习八.代码优化
实习六.扩充PL/0语言及其编译程序