当前位置:文档之家› 编译原理(2)词法_2(NFA、DFA的确定化和化简)

编译原理(2)词法_2(NFA、DFA的确定化和化简)

西北农林科技大学本科教程
第 3 讲
主讲教师:赵建邦
本讲目标

第二章《词法分析》2.3-2.5节

2.3 2.4 2.5
正规表达式与有限自动机简介 正规表达式到优先自动机的构造 词法分析器的自动生成

重点掌握

有限自动机理论 有限自动机的构造、确定化和化简
第二章 词法分析
2.1 2.2
• DFA是一个五元组,Md= (S, ∑, f, s0 , Z) ,其中: (1) S是一个有限状态集合,它的每个元素称为一个状态 (2) ∑是一个有穷字母表,它的每个元素称为一个输入字符 (3) f是一个从S×∑至S的单值映射,也叫状态转移函数 (4) s0∈S 是唯一的初态 (5) Z S 是一个终态集
J中的每一个状态经过任意条 ε通路得到ε_CLOSURE(J) =
4
Ia= {5,6,2,3,8,4,7}
2.4

正规表达式到有限自动机的构造
2.4.2:NFA的确定化(子集法)
(1) 构造一张转换表,第一列记为状态子集I,对于不同的符号
(a∈Σ),在表中单设一列Ia ; (2) 表的首行首列置为ε_CLOSURE(s0),其中s0为初始状态; (3) 根据首行首列的I,为每个a求其Ia 并记入对应的Ia 列中, 如果此Ia 不同于第一列中已存在的所有状态子集I,则将其
si
r1 r2 r1 *
sj sj
si
si
sj
si
2.4
正规表达式到有限自动机的构造
例2.6 对给定正规表达式 b*(d|ad)(b|ab)+ 构造其NFA M [解答] 先用R+=RR*改造正规表达式 b*(d|ad)(b|ab)+ = b*(d|ad)(b|ab)(b|ab)* 按照正规式从左到右构造NFA: b X ε 1 ε 2 a 3
0 1 2 3
1 3 1 3
2 2 3 3
a 0 b b
1
2.4
正规表达式到有限自动机的构造
例2.8 求正规表达式(a|b) *(aa|bb) (a|b) *对应的DFA M a a a 3 a ε ε ε ε Y 6 NFA M: 5 1 2 X b 4 b b b a a b 3 5 1 a b a a b 化简前的DFA M: 0 b a a b b 4 6 2 b a 1 a

正规表达式到有限自动机的构造
2.4.3:DFA的化简
– 状态的等价:
• 假设s1和s2是M的两个不同的状态,如果从s1出发能识别字 符串α而停于终态,从s2出发也能识别α而停于终态。 反之 也是成立的。称s1和s2等价,否则称它们可区分 – 一个确定有限自动机M的化简是指:
• 寻找一个状态数比M少的DFA M’,使得L(M)=L(M’)
{1,2,3}
{1,2,3,5,6,Y} {1,2,3}
{1,2,4} {1,2,4}
{1,2,4,5,6,Y}
{1,2,3,5,6,Y} {1,2,3,5,6,Y} {1,2,4,6,Y} {1,2,4,5,6,Y} {1,2,3,6,Y} {1,2,4,5,6,Y} {1,2,4,6,Y} {1,2,3,6,Y} {1,2,4,5,6,Y} {1,2,3,6,Y} {1,2,3,5,6,Y} {1,2,4,6,Y}
需要了解的等价性:
– 1.如果R是字母表Σ上的一个正规式,则必然存在一个NFA
M,使得L(M)=L(R); – 2.对于任意一个NFA M,一定存在一个DFA M’与其等价 ,即 L(M)=L(M’);

从正规式开始构造DFA的过程有以下几个步骤:
– 1.由正规式构造NFA; – 2.由NFA构造与之等价的DFA(确定化) – 3.DFA的化简
(3)后继状态有多个
• 如果每次转换的后继状态是唯一的,则称它为确定有限自 动机(Deterministic FA) • 如果每次转换的后继状态不是唯一的,则称它为非确定有 限自动机(Nondeterministic FA)
2.3

正规表达式与优先自动机简介
2.3.2:有限自动机
– 1、确定有限自动机(DFA):
顺序列入空行中的第一列;
(4) 重复(3)直至对每个I及a均已求得Ia ,并且无新的状态子集 Ia加入第一列时为止; (5) 重新命名第一列的每一个状态子集,形成新的状态转换矩阵, 即为与NFA等价的DFA
2.4
正规表达式到有限自动机的构造
例2.8 求正规表达式(a|b) *(aa|bb) (a|b) *对应的DFA M [解答]首先根据正规式构造NFA M: a X ε 1 b 1.构造状态转换表: 2.确定首行首列: ε_CLOSURE(s0) I {X,1,2} {1,2,3} {1,2,4} Ia Ib ε 2 a 3 a a ε
2.3

正规表达式与优先自动机简介
2.3.2:有限自动机
– 2、非确定有限自动机(例2.5):
假定NFA Mn =({s0, s1, s2},{a,b}, f , {s0 ,s2},{s2}),状态转移函数: f(s0, a) ={s2 } f(s1, b) ={s2 } 状态转换图: b s0 b b s2 s1 f b S s0 s1 s2 a {s2} Ф Ф f(s0, b) ={s0,s2 } f(s2, a) = Ф f(s1, a) = Ф f(s2, b) ={ s1 }
2.4
正规表达式到有限自动机的构造 a X
ε 1 b ε 2 a
3
4
a a 5 ε 6 b ε Y
b
b
S 0 1 2 3 4 5 6
a 1 3 1 3 6 6 3
b 2 2 4 5 4 4 5
得到新的状态转换图DFA: a a 0 b b 2 1 a b 4 b
a
3
b
b a
5 a 6 b
a
2.4
词法分析的设计方法 一个简单的词法分析器
2.3
2.4
正规表达式与有限自动机简介
正规表达式到有限自动机的构造
2.5
词法分析器的自动生成
2.3

正规表达式与优先自动机简介
2.3.2:有限自动机:可以自动识别单词的机器
–有限自动机(Finite Automation):
• FA是一个状态转换图,“有限”指的是状态有限。当前状 态读入一个字符后,和后继状态的转换有以下三种情形: (1)后继状态为自身 (2)后继状态只有一个
d 4 da
b
b
6
b
ε
8
ε b
Y
a 7
5
2.4

正规表达式到有限自动机的构造
2.4.2:NFA的确定化(相关概念)
– NFA的确定化:构造一个和NFA等价的DFA
– 状态集合I的ε_闭包 (1) 若si∈I,则si∈ ε_CLOSURE(I) ; (2) 若si∈I,则对从si出发经过任意条ε通路所能到达的
5 b 4 b
6 b
ε
Y
{1,2,3}
{1,2,4}
3.依次计算Ia和Ib 并更新首列
2.4
正规表达式到有限自动机的构造 a X
ε 1 ε 2 a
3
4
a a 5 ε 6 ε Y
b 4.重复(3) ,直至无新状态加入首列为止 I {X,1,2} {1,2,3} {1,2,4} Ia Ib
b
b
b 5.新的状态转换矩阵 S 0 1 2 3 4 5 6 a 1 3 1 3 6 6 3 b 2 2 4 5 4 4 5
则称M和M’等价
– 对于任意一个NFA M,一定存在一个DFA M’与其等价
2.3
课堂例题
例2.5 接受与正规式(a|b) *abb相同的语言的DFA与NFA: DFA: a b a
s1
a a
DFA识别abb b s2
aabb
abab
无论成功或者失败只需要
运行一次
s0
b
s3
b
NFA识别abb
aabb
一子集;
② 用G划分出的所有子集替换G,形成新的划分Hnew (3) 如果Hnew == H,执行(4);否则令H = Hnew,重复执行(2) (4) 划分结束后,一个子集只对应一个状态,作为代表状态,删去 其它一切等价状态,并将对应的弧射向这个代表状态
2.4
正规表达式到有限自动机的构造
例2.8 求正规表达式(a|b) *(aa|bb) (a|b) *对应的DFA M [解答] 画出例2.8未化简的DFA: a 3 b b 5
正规表达式到有限自动机的构造
例2.7 已知一状态转换图如下图所示,且假定 I=ε_CLOSURE({1})={1,2},试求从状态集I出发经过一条有向 边a能到达的状态集J和ε_CLOSURE(J) [解答] 6 a ε 3 7 ε 8 状态集I经过一条a弧得到J,
a 1 ε a
5
2
ε ε
J = {5,3,4}
• 设I是FA M的状态子集,则以下状态属于ε_CLOSURE(I) :
状态sj,都有sj ∈ ε_CLOSURE(I) 。
– 定义Ia = ε_CLOSURE(J) ,其中: I={s1, s2,…, sn},J = f(I,a) = f(s1,a)∪f(s2,a)∪… ∪ f(sn,a)
2.4
a 0 b
b
1 a 2
a
a
6
b
4 b
a
a
b
(1)初始划分集合1={0,1,2} ,集合2={3,4,5,6} (2)考察{0,1,2}:0a,0b,1b,2a 在集合1;1a, 2b在集合2; 因此划分为{0}{1}{2}; 考察{3,4,5,6}: 3a,4a,5a,6a在集合2;3b,4b,5b,6b在集合2; 因此不进行划分。
相关主题