- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 词法分析 ;2.3 正规表达式与有限自动机简介 ;对于给定的字母表Σ,正规式和正规集的递归定义如下:
ε和Ф都是Σ上的正规式,所表示的正规集分别为{ε}和Ф。
对任一个a∈Σ,a是Σ上的一个正规式,它所表示的正规集为{a}。
(3) 如果R和S是Σ上的正规式,它们所表示的正规集分别为L(R)和L(S),则:
① R∣S是Σ上的正规式,它所表示的正规集为L(R)∪L(S);
② R.S是Σ上的正规式,它所表示的正规集为L(R) L(S);
③ (R)*是Σ上的正规式,它所表示的正规集为(L(R))*;
④ R也是Σ上的正规式,它所表示的正规集为L(R)。
(4) 仅由有限次使用规则(1)~(3)得到的表示式是Σ上的正规式,它所表示的集合是Σ上的正规集。
; 说明:
规则(1)、(2)为基础规则,规则(3)为归纳规则,规则(4)是界限规则或终止规则。
Σ上的一个字是指由Σ中的字符所构成的一个有穷序列;
不包含任何字符的序列称为空字,用ε表示。
Σ*表示Σ上所有字的全体,则空字ε也在其中。
Ф表示不含任何元素的空集{}
例如,若Σ={a,b},则Σ*={ε,a,b,aa,ab,ba,bb,aaa,…}。; 正规式间的运算符
“∣”表示或
“· ”表示连接(通常可省略)
“*”表示闭包,使用括号可以改变运算的次序。
Σ*的正规式R和S的连接可以形式化地定义为
RS={α β∣α∈Rβ∈S}
即集合RS中的字是由R和S中的字连接而成的,且R自身的n次连接记为 ; R0={ε}
R*=R0∪R1∪R2∪R3∪…,则称R*是R的闭包
R+=RR*,并称R+是R的正闭包。
对于Σ上的正规式R和S,如果它所表示的正规集L(R)=L(S),
则称R和S等价并记为R=S。
正规式具有下列性质:
(1) 交换律:R∣S = S∣R。
(2) 结合律:R∣(S∣T) = (R∣S)∣T;
R(ST) = (RS)T。
(3) 分配律:R∣(S∣T) = RS∣RT;
(R∣S)T = RT∣ST。
(4) 同一律:εR = Rε = R。;例2.1 令Σ={a,b},设R=(ab)*a、 S= a(ba)*是Σ上的正规式,试求其表示的正规集。
[解答]; 2.3.2 有限自动机
有限自动机(FA)是更一般化的状态转换图
确定有限自动机DFA
非确定有限自动机NFA
1.确定有限自动机(DFA)
一个确定的有限自动机Md(记为DFA Md)是一个五元组M d=(S,Σ, f, s0, Z),其中:
(1) S是一个有限状态集,它的每一个元素称为一个状态;
(2) Σ是一个有穷输入字母表,它的每一个元素称为一个输入字符; ; (3) f是一个从S×Σ到S的单值映射,即f (si , a)=sj且有si、sj∈S和a∈Σ;
(4) s0∈S,是惟一的一个初态;
(5) Z ( S,是一个终态集。
DFA Md有三种表示形式:五元组形式、状态转换图、状态转换矩阵
例2.4 假定
DFA Md=({s0,s1,s2},{a,b},f,s0,{s2}),且有:
f(s0,a)= s1 f(s0,b)= s2
f(s1,a)= s1 f(s1,b)= s2
f(s2,a)= s2 f(s2,b)= s1
; DFA的状态转换图与状态转换矩阵表示
(1)假定DFA有m个状态、n个输入字符(或字),则这个状态转换图含有m个状态,每个状态最多有n条输出边与其它状态相连接,每一条输出边用Σ(或Σ*)中的一个不同的输入字符(或一个输入字)作标记,整个图含有惟一一个初态(或多个初态)和若干个终态。
(2)DFA也可以用状态转换矩阵表示。状态转换矩阵的行表示状态,列表示输入符号,矩阵元素表示f(si,a)的值。
;表2.2 状态转换矩阵;2.非确定有限自动机(NFA)
一个非确定有限自动机Mn(记为NFA Mn)是一个五元组Mn=(S,Σ,f,Q,Z),其中:
(1) S、Σ、Z的意义与DFA相同;
文档评论(0)