课程内容:
介绍程序设计语言编译程序构造的基本原理和基本实现技术
1.引论
什么是编译程序
什么是翻译程序?
把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序
什么是编译程序?
把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序
什么是解释程序?
把源语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序。
抽象
保留最为重要的信息
编译过程
词法分析
语法分析
中间代码生成
优化
目标代码生成
编译程序的结构
编译程序的生成
总结
2.高级语言机器语法描述
程序语言的定义
语法
语义
高级语言的一般特性
程序语言的语法描述
文法
句法单位用尖括号括起
箭头表示定义
整个句子代表语法规则
语言描述的几个基本概念
V的闭包和V的正规闭包的区别:
如果V中没有空字,闭包当众会有空字,正规闭包中没有空字。
上下文无关文法
符号约定
例题
文法生成语言
中心思想
从文法的开始符号出发,反复连续使用产生式,对非终结符施行替换和展开。
例子
推导与推出
句型句子语言
例题
推导与语法树
最左最右推导
语法分析树
文法的二义性
注意
语言的二义性
也就是说语言的二义性来源于语言本身,一个二义的语言中找不到无二义的文法。
形式语言概述
总结
3.词法分析
对于词法分析器的要求
功能和输出形式
例子:
接口设计
词法分析器的设计
1.输入和预处理
2.单词符号的识别
3.状态转换图及实现
一张转换图只包含有限个状态,其中有一个为初态,至少要有一个终态
正规表达式与有限自动机
一、单词符号的描述
正规式与正规集
就像英文单词是由字母拼接而成,但单词字母拼接并不一定是单词。
正规式的运算
正规式的等价
正规式的性质
正规文法
二、有限自动机
1.DFA
2.NFA
区别
3.DFA与NFA的等价
4.DFA的化简
正规式与有限自动机的等价性
有限自动机=>正规式
正规式=>有限自动机
正规文法与有限自动机的等价性
4.语法分析-自上而下
4.1语法分析器的功能
4.2自上而下分析面临的问题
过程中可能出现问题,需要回溯。
4.3LL(1)分析法
一、左递归的消除
二、消除回溯,提取公共左因子
4.3.2消除回溯、提左因子
FIRST和FOLLOW集合的求法
LL(1)文法
4.4递归下降分析程序构造
4.5预测分析程序
1.预测分析表的构造
2.预测分析程序
3.练习
4.6LL(1)分析中的错误处理
总结
5.语法分析-自下而上
5.1自下而上分析基本问题
一、规约
二、规范规约简述
三、符号栈的使用
5.2算符优先分析
1.算符优先文法及优先表构造
练习
2.算符优先分析算法
1.最左素短语
练习
2.算法
3.优先函数
5.3LR分析法
1.LR分析的逻辑结构
2.分析表的组成
3.LR分析过程
例题
二、LR(0)分析表的构造
构造识别活前缀的NFA
求文法对应的活前缀
构造识别活前缀的DFA
构造LR(0)项目集规范族
构造LR(0)分析表
LR(0)文法
SLR分析表的构建
规范LR分析表的构建
5.4语法分析器的自动产生工具YACC
6.属性文法和语法制导翻译
6.1属性文法
一、基本概念
6.2基于属性文法的处理方法
1.依赖图
例题
二、树遍历的属性计算方法
一遍扫描的处理方法
6.3S---属性文法的自下而上计算
例题