目录
一、编译程序的概述
1.编译程序的组成和功能
2.编译程序的过程
二、上下文无关文法和形式语言
.1文法
1.文法的基本知识
语言的文法是一种规则,包含词法规则和语法规则
词法规则:描述语言单词符号构成的规则。
语言的单词符号包括:标识符、常数、运算符等。
描述工具通常为:正规文法(正规式、有限自动机)
语法规则:描述语言语法单位构成的规则。
语法单位包括:表达式、语句、函数、过程。
描述工具:上下文无关文法。
.2文法和语言的形式定义
1.推导和归约
2.规范推导和规范归约
规范推导是最右推导,即每一步替换最右边的非终结符,而最右推导对应于最左归约,或者规范归约。每一个句型不一定都有规范推导。
3.句型和句子
根据产生式推导得出的符号串叫句型,如果这个符号串包含终结符叫句子。
规范推导所得的句型成为规范句型(最右句型)
4.语言
文法产生的所有句子的集合,称为文法所定义的语言
5.形式语言理论可以证明的两点:
(1)给定一个文法可以从结构上唯一的确定其语言。
(2)给定语言可以确定其文法,但其文法不是唯一的。
6.语法树和等价文法
语法树展示了句子的语法结构,也体现了其推导的过程。
两个不同的文法,推导出来的语言相同,称为等价文法。
7.递归产生式和递归文法
含有递归产生式的文法称为递归文法
递归文法定义的语言集是无穷的,即递归文法可用有穷的产生式来描述无穷的语言。
8.文法二义性
一个句子对应两个不同的语法树
9.文法
文法是描述语言结构的形式规则
4种类型:0、1、2、3型
3型:正则文法,描述程序语言词法的有效工具
2型:上下文无关文法,描述程序语言语法的有效工具。
三、有穷自动机与正则表达式理论基础
.1正规式与有限自动机的转化
正规式转化为nfa的三种替换规则:
步骤:
1.正规式转化为状态转化图
2.状态转换矩阵
3.简化后重命名的状态转换矩阵。
nfa转化为正规式方法示例:
2.1词法分析及状态转化图
1.词法分析的主要工作:
从左到右扫描源程序,一次读一个字符,根据词法规则将有关字符组合成单词,识别各类单词,确定单词类别后,将单词输出。
2.词法分析过程中其他任务:
~过滤注释和空白
~记录读入字符的行号,以便发现错误后报告出错位置;
~进行预编译工作(宏展开)
~符号表操作
~错误处理
3.超前搜索:
为了进一步判断情况,采取前假读字符的方法,最近向前读取字符和判别字符是什么,不马上处理,明确情况后再回来处理已读过的字符。
4.单词的输出:
(1)单词的种类:
用整数编码表示:
标识符为一类,常数按类型分类;关键字一字一类,或全体定为一类,界符作为一类,或一符一类
标识符:字符串编码或对应地址
常数:其自身值的二进制形式
关键字:内部整数编码或串编码
状态转换图
许多程序设计语言的单词可以用正则文法描述,这样的语言使用状态转换图可以设计词法分析程序。
能被状态转换图(TG)接受的符号串的集合记为L(TG),称为状态转换图能识别的语言。
2.2确定的有限自动机
正则文法可以用状态转换图非形式的进行表示,这表明正则文法所对应的语言(正则语言)可以用状态转换图来接受。
有限自动机是对状态转换图进一步形式化对结果。
对扫描器对构造,特别是对扫描器对自动生成将带来很大方便。
1.定义
一个有限自动机是一个五元组:
DFA M=(S,Z,f,S0,F)
(1)S是一个非空有限集,每一个元素称为一个状态
(2)Z是一个有限的输入字母表,每一个元素称为一个输入字符
(3)f转换函数
(4