编译原理第三章
左线性和右线性文法
3.1正规语言及其描述方法
正规文法的等价形式:自动机
自动机的定义:
自动机是一种语言模型,是语言的一种识别工具,其中的有限自动机(Finite Automata, FA) 被用来处理正规语言,正规语言是编译程序设计中词法分析的对象。
3.1.1正规语言的定义
正规语言是由正规文法定义的语言;程序设计语言中的单词,大都属于此种语言
3.1.2正规语言的另外两种表示方法
正规式表示法
正规式是指由字母表中的符号,通过圆括号和以下三种运算连接起来构成的表达式e
闭包(*,+)连接(.)或(|)
(优先级由高到低)
有限自动机(FA)表示法
由此可以看出,优先自动机是带标记的有向图
说明(对于L3来说):
正规语言的三种表示方法综合示例
3.2有限自动机的定义和分类
3.2.1有限自动机的定义
定义:是一种数学模型,用于描述正规语言,可定义为五元组
FA=(Q,∑,S,F,δ)
3.2有限自动机所描述的语言
L(FA)生成或识别的过程
3.2有限自动机的两种表现形式
‘+’和‘-’表示开始状态和结束状态
3.2有限自动机所描述的的分类
确定的有限自动机:只包含一个开始状态,
- 确定的有限自动机(DFA):同时满足如下三个特征
①开始状态唯一;②变换函数单值;③不带 ε边
2.非确定的有限自动机(NFA):不同时满足上述三个条件
3.3有限自动机的等价转换
(1)有限自动机的确定化(NFA=>DFA)
非确定的有限自动机(NFA)较易构造,但不好用!
确定的有限自动机(DFA)较难构造,但好用!
任何一个非确定的有限机NFA,都可通过有效算法把其转化为等价的确定的有限机DFA(二者描述的语言相同)。
(2)有限自动机的最小化(DFA=>最小的DFA)
有限自动机的最小化,又称为有限自动机的化简;是指:对给定的确定的有限自动机DFA1,构造另一个确定的有限自动机DFA2,使得L(DFA1)=L(DFA2),且DFA2的状态最少。
3.3.1有限自动机的等价
1.两个自动机的等价
【定义1】设有两个有限自动机FA1和FA2,如果有L(FA1)=L(FA2),则称FA1与FA2等价,记作FA1≡FA2。
写出语言的方法:
①辨认通路时,从开始状态->结束状态
②将通路合并
2.连个状态的等价
【定义2】设i和j为FA的两个状态,若把其看作初态,二者接受的符号串集合相同,则有i≡j(等价)。
3和5都是结束状态,没有向其他状态变换,所以可以识别的符号串都只有 ε,所以等价
2可以识别a这个符号串,4可以接受b这个字符串
3.3.2有限自动机的确定化算法
2步步骤
1.消除ε边算法(εNFA=>~εNFA或DFA)
(1)存在ε闭路,将闭路上的节点合而为一
(2)标记隐含的开始态和结束态:
开始态的ε通路上的节点:+
结束态的逆向ε通路上的节点:-
(3)对ε边,按ε通路逆向逐一进行:
① 删除一个ε边;
②同时引进新边,凡由原ε边终点发出的边,也要由其始点发出。
(4)重复步骤(3),直到再无ε边
2.将~εNFA化为DFA算法( ~εNFA=>DFA)
例子
3.3.3有限自动机的最小化算法(DFA=>最小的DFA)
最小的有限自动机,是指满足下述条件的确定的有限自动机:
(1)没有无用状态(无用状态已删除)
(2)没有等价状态(等价状态已合并)
|.删除无用状态算法
【定义】无用状态是指自动机从开始态出发,对任何符号串的识别过程都不能到达的状态。
II.合并等价状态算法
【原理】两个状态i与j等价,当且仅当满足下面两个条件:
① 必须同是结束态,或同是非结束态;
②对字母表上的所有符号,状态i和j必变换到等价状态。
例子
此时划分的每个子集中状态是等价的,所以最终可以合并为一个状态
例子:化简下述DFA
2和8并没有出现,所以是无用状态,删除
{1,3,4}是非结束状态,{5,6,7}是结束状态
这里就是判断经过字母表中的元素得到的值是否属于一个集合,属于一个集合就是等价状态,不划分
3.4有限自动机的实现
3.4.1控制程序设计
用计算机完成有限自动机的功能,其核心是“变换”的实现技术。把变换表按某种方式存储起来,作为知识源来识别单词,实现机制是:控制程序⊕变换表
(1)假定自动机只作为识别器,即对待识别的符号串,仅回答是(表示接受)或否(表示拒绝)。
(2)为便于处理,可令**#作为待识别的符号串的后继符。**
OK表示当前字符串能被有限自动机识别
(3)令getchar(ch)为读符号函数
3.4.2变换表存储结构设计
(1)二维数组,下标是(状态,输入符号)
※为了适应不同编码语言的需要,状态和输入符号可采取相应的编码形式;通常,使用连续的正整数0.1.2.3…
示例:
每一个状态都有一个指针指向它的子表
3.5正规语言描述方法之间的相互转化
三种等价的表示方法:
(1)正规文法;(2)正规式;(3)有限自动机
以有限自动机为核心,介绍其他两种方法与有限自动机的关系
3.5.1正规文法与有限自动机的转换
只是从正规文法向有限自动机的转换时,要增加一些结束状态
3.5.2正规式与有限自动机的转换
示例:
步骤:
①将正规式->自动机
②自动机的确定化:
1.消除ε边;2.将~εNFA转化为DFA
③DFA的最小化