编译原理第3章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-5-22
4
3.1 正规文法与有限自动机
• 一、正规文法、正规集、正规式
3、正规式(Re):正规文法所产生的语言用一种表达 式来表示,称为正规式。
• 定义:设A是非空的有限字母表,A={ai| i=1,2,……n},则
– 1) ,和ai(i=1,2,……n)都是正规式。 – 2) 若、是正规式,则|、 • 、*、 *也是正规式。 – 3) 正规式只能通过有限次使用1,2规则获得
c b c a
3
1
17
3.1 正规文法与有限自动机
故:DFA: M=({0,1,2,3,},{a,b,c},f,0,{1,2,3}) 其中:f: f(0,a)=1 f(0,b)=1 f(0,c)=1 f(1,a)=1 f(1,b)=1 f(1,c)=1 f(2,a)=3 f(2,b)=2 f(2,c)=2 f(3,b)=3 f(3,c)=3
2014-5-22
23
3.1 正规文法与有限自动机
• 二、有限自动机
3、不确定有限自动机(NFA)
• 定义:不确定有限自动机是一个五元式M=(S,,f,S0,Z) 其中:
– – – – – S:有限状态集 (同DFA) :有限字母表 (同DFA) f: S2S(S的子集)上的映射 S0:非空的初态集,S0 S (与DFA的区别) Z:终止状态集,ZS,可为空集
例:已知正规文法G1的产生式,求出它所定义的正规式。
产生式为:SaS|aB BbB|bA AcA|c
• 解:由产生式写出对应的联立方程组: S=aS|aB ( 1) B=bB|bA ( 2) A=cA|c ( 3) 运用定理2求解(1)(2)(3): …
2014-5-22
11
3.1 正规文法与有限自动机
2014-5-22
8
3.1 正规文法与有限自动机
• 一、正规文法、正规集、正规式
定理2:设若、、是字母表A上的正规式,且L(), 则:
• = | 当且仅当 = * • = | 当且仅当 = *
2014-5-22
9
3.1 正规文法与有限自动机
• 一、正规文法、正规集、正规式
• 一、正规文法、正规集、正规式
定理1:令,,是Re,则
• • • • • • • (1) + = + (2) +( + )=( + )+ () =( ) (3) ( + )= + (+) = + (4) = = (5) (*)*=* (6) *=++ += * = * (7) (+ )*= (* + *)*= (* *)*
3.1 正规文法与有限自动机
0 I0 1 0 I2
I1
1
0 0 1
0 I3 1 I4 1
2014-5-22
32
3.1 正规文法与有限自动机
5.Re=>DFA 两核心理论(关系定理):
• 定理3: 上的NFA M所能识别的语言L(M)可以用 上的正规式Re来表示
– 对上的NFA M ,可构造一个正规式,使得L()=L(M)
3.1 正规文法与有限自动机
• 二、有限自动机
电梯是典型的有限状态自动机 那电梯如何描述呢? 电梯的程序又如何构造呢?
2014-5-22
13
3.1 正规文法与有限自动机
• 二、有限自动机-分别讲解
2、确定有限自动机(DFA)
• 确定有限自动机DFA是一个五元组 M(S,,f,s0,Z),其中:
2014-5-22
18
3.1 正规文法与有限自动机
• 二、有限自动机
2、确定有限自动机(DFA)
• 一步操作:
– 每读一个字符,状态就向前进至下一状态。记为:“┣ ” –┣ K 表示自动机做了K步动作 –┣ * 表示自动机做了0步动作或0步以上动作 –┣ + 表示自动机做了1步动作或1步以上动作
• 二、有限自动机(FA:Finite Automata)
1、说明:
• 有限自动机是具有离散输入输出系统的数学模型。它具 有有限数目的内部状态,系统可以根据当前所处的状态 和面临的输入字符决定系统的后继行为。其当前状态概 括了过去输入处理的信息
输入带
a b
c d
读头
e ……
有限状态控制器
2014-5-22 12
2014-5-22 20
3.1 正规文法与有限自动机
例 S0 1 1 S1
0
0
S2 1
0
S3
0
板书 ”110101”、 ”11100” 的识别过程
1
2014-5-22
21
作业
2014-5-22
22
3.1 正规文法与有限自动机
• 构造一个DFA,使它识别{0,1}上以00结尾的字符串。 • (国防科技大学考博题)
2014-5-22
19
3.1 正规文法与有限自动机
• 二、有限自动机
2、确定有限自动机(DFA)
• DFA识别字符串:
– 串*为 DFA M=(S, ,f,s0,Z) 所识别,当且仅当(s0, ) ┣ *(s,),且s ∈Z – 与文法中的S*类似 – 能被DFA M所接受的字符串的集合,称为自动机M所能识 别的语言,记为L(M) – 不能被DFA识别的两种情形: » (s0,) ┣ *(s’,),且s’ Z » 在读过程中出现不存在的映射,使自动机无法继续动 作
2014-5-22
a 1 3 1 3
b 2 2 3 3
a 0 b b
1 a
a
3 b
a
b
2
16
3.1 正规文法与有限自动机
• 例:构造一个DFA M,它接受字母表{a,b,c}上,以a 或b开始的字符串,或以c开始但所含的a不多于一个 的字符串:
解:
b
b 2 a c
体现了 直观性
0
a c b
2014-5-22
2014-5-22
28
3.1 正规文法与有限自动机
• 例:
解:列表将NFA确定化为DFA:
Q
I0 ={q0} I1 ={q1} I2 ={q0,q1}
0
I0 ={q0} I2 ={q0,q1} I2 ={q0,q1}
1
I1 ={q1} I0 ={q0} I2 ={q0,q1}
2014-5-22
q0
1 1 0
q1
0
2014-5-22
25
3.1 正规文法与有限自动机
• 二、有限自动机
3、不确定有限自动机(NFA)
• 不同自动机FA M,M’之间的等价问题:
– 若它们识别的语言相同,L(M)=L(M’)
2014-5-22
26
3.1 正规文法与有限自动机
• 二、有限自动机
4、NFADFA(NFA的确定化)
29
3.1 正规文法与有限自动机
I0 I1 I2 0 I0 I2 I2 1 I1 I0 I2
F={I1 ,I2},所得DFA的状态转换图:
0 I0
2014-5-22
0
1 1 I1 Baidu Nhomakorabea I2 1
30
3.1 正规文法与有限自动机
• 二、有限自动机
4、NFADFA(NFA的确定化)
• 以P52 3-4为例强化理解 • 解: Q
• 定理4: 上任何正规式 ,存在DFA M使得 L(M)=L()
1
0 1
2014-5-22 15
3.1 正规文法与有限自动机
• 例: DFA M=({0,1,2,3},{a,b},f,0,{3})
f: f(0,a)=1 f(2,a)=1 f(0,b)=2 f(2,b)=3 f(1,a)=3 f(3,a)=3 f(1,b)=2 f(3,b)=3
输入 状态 0 1 2 3
• 重点内容 • 子集法
– 实质: f(q1,0)={q0,q1} => f({q1},0)={q0,q1} => f(s0,0)=s1
• 转化理论
– 设L是由一NFA接受的正规集,则存在一个DFA接受L
2014-5-22
27
3.1 正规文法与有限自动机
• 二、有限自动机
算法:NFA M=(S,,f,S0,Z)DFA M’=(Q, ,,I0,F)
• 注:
– “不确定”指后继状态可有多个 – DFA是NFA的特例
2014-5-22 24
3.1 正规文法与有限自动机
• 例:设NFA M=({q0,q1},{0,1},f,{q0},{q1}) f映 射为:
0
字符 状态 q0 q1
0
q0 q 0, q 1
1
q1 q0
f(q1,0)={q0,q1} f(q0,0100)=?
• 一、正规文法、正规集、正规式
例:证明b(ab)*=(ba)*b
证明: ∵L(b(ab)*)={b,bab,babab,……} L((ba)*b)={b,bab,babab,……} 由于正规集的前n项相同 可知它们的正规集是相等的 ∴ 正规式 b(ab)*=(ba)*b
2014-5-22
7
3.1 正规文法与有限自动机
– – – – – S:有限状态集 :有限字母表 f:S S上的单值映射,f(s,a)=s’ s0:唯一的初态,s0∈ S Z:终止状态集,ZS
2014-5-22
14
3.1 正规文法与有限自动机
• 二、有限自动机
2、确定有限自动机(DFA)
• 注解:
– 1)用矩阵表示转换便于计算机处理,但不直观,而用状 态转换图表示比较直观 – 2)在整个状态转换图中只有一个初始状态结点,用“” 射入的结点表示初始状态。可有若干终止状态(也可能没 有),用双圆圈表示 – 3)若初始状态结点同时又是终止状态结点,则表示空串 可为相应DFA识别
I0={S} I1={A,C} I2={B,C} I3={A,C,Z} I4={B,C,Z}
2014-5-22
0
1
I2={B,C} I2={B,C} I4={B,C,Z} I4={B,C,Z} I4={B,C,Z}
31
I1={A,C} I3={A,C,Z} I1={A,C} I3={A,C,Z} I3={A,C,Z}
• 1. 取I0=S0 • 2. 若状态集Q中有状态Ii={s0,s1,……sj} , sk∈S , 0 kj;而 且M机中有f({s0,s1,……sj},a)= f(s0,a)∪f(s1,a)…∪f(sj,a) ={s0,s1,……st} =It,若It不在Q中,则将It加入Q。 • 3. 重复第(2)步,直至Q中没有新的状态加入 • 4.取终态F={I | I ∈ Q,且I ∩ Z }
• 注意:
– 仅由字母表A={ai| i=1,2,……n}上的正规式所组成的语言 称作正规集,记作L() – 利用正规集相同,可用来证明相应正规式等价 – “|”读作为“或”,也可写作为“+”或“,”;“•”读作 连接
2014-5-22 5
3.1 正规文法与有限自动机
• 一、正规文法、正规集、正规式
3、正规式(Re)
• 例:
– A={ai|i=1,2,…,n},则ε,a1,a1|a5a7,a5(a3|a2)*,…都是A上 的Re –V={0,1},则ε,0,1,0011,(01)*10,((01)*|1)*,…等二进 制字符串都是V上的Re
2014-5-22
6
3.1 正规文法与有限自动机
A→α
α∈VT*
<标识符>→<字母>|<标识符><字母>|<标识符><数字> <字母>→a|b|…|z|A|B|…|Z|_ <数字>→0|1|2|3|4|5|6|7|8|9
2014-5-22 3
3.1 正规文法与有限自动机
• 一、正规文法、正规集、正规式
2、正规集
• 由正规文法产生的语言集合,称为正规集. • 正规集是集合,可有穷也可无穷。可通过正规式 (Re:Regular Expression)来形式化表示
编译原理及编译程序构造
陈宏建 二○一二年十二月
第三章 词法分析
本章主要内容结构 Rg
Re
NFA
DFA
Min DFA
算法 结构
2014-5-22
2
3.1 正规文法与有限自动机
• 一、正规文法、正规集、正规式
1、正规文法(Rg:Chomsky 3型文法):
• 只能含有产生式: (左线性文法) A→αB 或者 (右线性文法) A→ Bα • 二者不能同时存在 • 举例 A→α α∈VT*
4、如何由正规文法得到对应的正规式?
• 1) 由正规文法G的各个产生式写出对应的正规方程式, 得到联立方程组 • 2) 把方程组中的非终结符当作变元 • 3) 求此正规式方程组的解,得到关于开始符号S的解: S=, ∈VT*,就是所求正规式。
2014-5-22
10
3.1 正规文法与有限自动机