正规表达式与有限自动机(1)
《编译原理》第3章

NFA到相应的DFA的构造的基本思路是: DFA的每 一个状态对应NFA的一组状态. DFA使用它的状 态去记录在NFA读入一个输入符号后可能达到的 所有状态.
NFA M所能接受的符号串的全体记为L(M)
结论:
上一个符号串集V是正规的,当且仅当存 在一个上的不确定的有穷自动机M,使得 V=L(M)。
DFA是NFA的特例.对每个NFA N一定存在一个DFA M,使得 L(M)=L(N)。对每个NFA N存在着与之 等价的DFA M。 有一种算法,将NFA转换成接受同样语言的DFA.这 种算法称为子集法. 与某一NFA等价的DFA不唯一.
0
1
S P
Z
{P} {}
{P}
{S,Z} {Z}
{P}
• δ为S * 到S的子集(2 S)的一种映射
• 从NFA的矩阵表示中可以看出,表项通常是一状态的集合, 而在DFA的矩阵表示中,表项是一个状态
∑*上的符号串t被NFA M接受:
• 对于Σ*中的任何一个串t,若存在一条从某一初态 结点到某一终态结点的道路,且这条道路上所有 弧的标记字依序连接成的串(不理采那些标记为ε 的弧)等于t,则称t可为NFA M所识别(读出或接 受)。 • 若M的某些结点既是初态结点又是终态结点;或 者存在一条从某个初态结点到某个终态结点的道 路,其上所有弧的标记均为ε,那么空字ε可为M所 接受。
其中: δ(S,0)={P}
δ(S,1)={S,Z} δ(Z,0)={P} δ(Z,1)={P} δ(P,1)={Z} • 状态图表示
1 1 S 0 0,1 Z
P
1
• 矩阵表示
状态 输入
δ(S,0)={P} δ(S,1)={S,Z} δ(Z,0)={P} δ(Z,1)={P} δ(P,1)={Z}
【编译原理】词法分析:正则表达式与有限自动机基础

【编译原理】词法分析:正则表达式与有限⾃动机基础引⾔: 编译语⾔设计的精髓在于⾃动化过程,即如果要设计⼀门编程语⾔,那么⼀定要设计⼀个⾃动化系统,能够⾃⾏读⼊分析程序员写⼊的程序,将其翻译为机器能够识别的指令等信息。
当然⾼级语⾔的编译不是⼀蹴⽽就的,⽽是通过若⼲步的分解、规约、转换、优化,最后得到⽬标程序。
具体的编译步骤如下: 源程序就是我们写⼊的⾼级语⾔,编译的第⼀步叫做“词法分析”。
词法分析的本质,就是要拆解出语句的每⼀个单词,然后对这个单词的类型进⾏辨识。
⾸先拿中⽂来举例。
⽐如有⼀句话是“我喜欢你”,那么⾸先我们要把这句话拆成“我”、“喜欢”、“你”,然后再逐个分析他们的类型,得到“我”->主语;“喜欢”->谓语;“你”->宾语。
这样我们就把这句话每个单词都分析出来了,也就完成了中⽂的“词法分析”。
那么回到编程语⾔,它的词法分析就是将字符序列转换为单词(Token)序列的过程。
翻译成俗话,就是把我们写的⼤⽚语⾔⽂本分解为⼀个⼀个单词,再输出每个单词的类型。
举⼀个例⼦:int p = 3 + a; 这个语句⾮常简单,即定义⼀个变量p,它的初值为变量a与3的加和。
那么接下来我们要对这个语句进⾏词法分析,⾸先我们要把这段⽂本拆解成单词,拆出来就是'int'、'p'、'='、'3'、'+'、'a'、';'。
对这些单词再进⾏类型的辨识,那么就得到以下结果:语素语⾔类型int关键字p标识符=运算符3数字+运算符a标识符 这样我们就把这段⽂本中的每个单词的类型都分析出来了。
乍⼀看⾮常简单对不对,对于⼈类⽽⾔你只需要⽤⾁眼就可以轻松观察出来每个单词的类型,但对于计算机⽽⾔,它可没有⼈类那样的智能。
如果想要计算机能够识别并分析语素的类型,那就需要我们⼈类来为它构造⼀个⾃动化输⼊和分析的系统。
【编译原理】1-5章课后习题答案精心整理版,可直接缩印

第一章1.2 计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 【解答】计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
这两种途径的主要区别在于:解释方式下不生成目标代码程序,而编译方式下生成目标代码程序。
从执行速度上看,编译型的高级语言比解释型的高级语言要快,但解释方式下的人机界面比编译型好,便于程序调试。
(在解释方式下,翻译程序事先并不采用将高级语言程序全部翻译成机器代码程序,然后执行这个机器代码程序的方法,而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能的机器代码语句串并执行,而所翻译的机器代码语句串在该语句执行后并不保留,最后再读入下一条源程序语句,并解释执行。
这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行的,如果一语句处于一循环体中,则每次循环执行到该语句时,都要将其翻译成机器代码后再执行。
在编译方式下,高级语言程序的执行是分两步进行的:第一步首先将高级语言程序全部翻译成机器代码程序,第二步才是执行这个机器代码程序。
因此,编译对源程序的处理是先翻译,后执行。
)1.3 请画出编译程序的总框图。
如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题? 【解答】编译程序总框图如图1-1所示。
作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,要充分掌握目标指令的功能及特点,如果目标语言是机器指令,还要搞清楚机器的硬件结构以及操作系统的功能;第三,对编译的方法及使用的软件工具也必须准确化。
总之,总设计师在设计编译程序时必须估量系统功能要求、硬件设备及软件工具等诸因素对编译程序构造的影响等。
第二章2.1 正规式M1和M2等价是指:M1和M2所识别的语言集相等。
2.2 什么是扫描器?扫描器的功能是什么?【解答】扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
西安理工大学《编译原理》编译原理作业集-第三章-修订版

第三章词法分析本章要点1.词法分析器设计,2.正规表达式与有限自动机,3.词法分析器自动生成。
本章目标:1.理解对词法分析器的任务,掌握词法分析器的设计;2.掌握正规表达式与有限自动机;3.掌握词法分析器的自动产生。
本章重点:1.词法分析器的作用和接口,用高级语言编写词法分析器等内容,它们与词法分析器的实现有关。
应重点掌握词法分析器的任务与设计,状态转换图等内容。
2.掌握下面涉及的一些概念,它们之间转换的技巧、方法或算法。
(1)非形式描述的语言↔正规式(2)正规式→ NFA(非确定的有限自动机)(3)NFA→ DFA(确定的有限自动机)(4)DFA→最简DFA本章难点(1)非形式描述的语言↔正规式(2)正规式→ NFA(非确定的有限自动机)(3)NFA→ DFA(确定的有限自动机)(4)DFA→最简DFA作业题一、单项选择题(按照组卷方案,至少15道)1. 程序语言下面的单词符号中,一般不需要超前搜索a. 关键字b. 标识符c. 常数d. 算符和界符2. 在状态转换图的实现中,一般对应一个循环语句a. 不含回路的分叉结点b. 含回路的状态结点c. 终态结点d. 都不是3. 用了表示字母,d表示数字, ={l,d},则定义标识符的正则表达式可以是:。
(a)ld*(b)ll*(c)l(l | d)*(d)ll* | d*4. 正规表达式(ε|a|b)2表示的集合是(a){ε,ab,ba,aa,bb} (b){ab,ba,aa,bb}(c){a,b,ab,aa,ba,bb} (d){ε,a,b,aa,bb,ab,ba}5. 有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所对应的状态转换图为。
6. 有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所能接受的语言可以用正则表达式表示为。
3.3.1-正规式

(4)仅由有限次使用上述三步骤而定义的表达式 才是Σ上的正规式,仅由这些正规式表示的 字集才是Σ上的正规集
规定算符的优先顺序 () *
·
|
令∑={a,b},∑上的正规式和相应的正规集 ∑={a,b},
正规式
a b a|b ab (a|b)(a|b) a* (a|b)*
正规集
{a} {b} {a, b} {ab} {aa, ab, ba, bb} {ε, a, aa, aaa, …} {ε, a, b, aa, ab …所有 由a或b组成的串} 补充例
·
* ( ) }
(1) (2)
正规集 {ε} { } {a}
Σ: 语言的字母表 VT
(3)假定U和V都是Σ上的正规式, 他们所表示的正规集分别为L(U)和L(V) 正规式 或 U|V U·V 连接积 闭包 (U)* 补充: ( ) (U) 正规集 L(U)∪L(V) L(U)·L(V) (L(U))* L(U)
4、正规式服从的代数规律 U,V,W为正规式 ① U|V=V|U ② U|(V|W)=(U|V)| W ③ (UV)W=U(VW) ④ U(V|W)=UV|UW , (V|W)U=VU|WU ⑤ εU=Uε=U
补充:正规式服从的代数规律 补充:
r为正规式 ⑥ r|r=r (r*)* = r* =ε|r|rr|… r*=ε|r|rr| ∑*=∑0 ∪∑1 ∪∑2 … ∪ ∑n ∪ …
课堂练习
r,s是正规式, 证明 (rs)*r = r(sr)*
补充例:定义无符号数的正规式 补充例:
2,12.59,3.6e2,471.88e-1 12.59,3.6e2,471.88e-
Σ = {d . e + -} d为0~9的数字, ‘.’表示小数点 d* (.dd*|ε) (e(+|-|ε)dd* |ε)
正规式转化为有限自动机的算法综述

正规式转化为有限自动机的算法综述网络工程04379024 刘伟莉[摘要]本文从正规表达式的广阔应用开始,阐述引入有限自动机的必要性与可行性。
详细列举了几种将正规表达式转换为有限自动机的算法,并对它们的特点进行了比较。
[关键词]:正规表达式;有限自动机;Thompson算法0 引言在编译原理的词法分析理论中,从正规表达式到有限自动机的转换是词法分析器自动生成理论研究的重要内容。
其中,正规表达式(Regular Expressions)在编译程序中用来描述程序设计语言中某种单词的词法结构。
而有限自动机(Finite Automata,简称为FA)则用来识别某些字符串是否符合某种词法规则。
[1]二者在编译程序中的作用可由图1[2]所示图1 词法分析器的自动生成将正规表达式转化为有限自动机的算法中,Thompson算法最为经典。
这种算法的思想是根据正规表达式的递归定义,按照正规表达式的构成层次进行归纳构造。
其核心是2个FA进行连接、并和闭包运算。
一般方法是:先构造带ε动作的FA,再构造与其等价的非确定有限自动机(NFA),最后再由NFA构造与其等价的确定有限自动机(DFA)。
[3]显然,当正规表达式的层次较多时,上述方法就显得很繁琐,因此出现了一系列对Thompson算法的改进。
本文将后续介绍其中的两种改进,它们都利用对原算法的分析,改造Thompson结构,以达到减少有限自动机的状态数和ε边,提高编译程序工作效率的目的。
最后,介绍一种非Thompson算法的基于属性文法的正规式到NFA的转换。
本文分为5部分:第1部分将通过对正规表达式应用的讨论解释有限自动机引入的必要性;第2部分通过证明正规表达式与有限自动机的等价性来阐明两者转换的可行性;第3部分具体介绍5种转换算法;第4部分则对上一部分各种算法进行了比较;第5部分是文章小结。
1 正规表达式的应用与有限自动机的引入除了在编译程序构造与设计外,正规表达式还被应用于其他领域,比如字处理软件中的文本检索、数据库查询语言、文件处理语言以及遗传序列的研究等。
《编译原理》课后习题答案第三章第3章文法和语言第1
《编译原理》课后习题答案第三章第3 章文法和语言第1 题文法G=({A,B,S},{a,b,c},P,S)其中P 为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。
答案:L(G[S])={abc}第2 题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。
V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD.... =>NDDDD...D=>D......D或者:允许0 开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。
答案:G[S]:S->S+D|S-D|DD->0|1|2|3|4|5|6|7|8|9第4 题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。
盛威网()专业的计算机学习网站 1《编译原理》课后习题答案第三章答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbbL(G[Z])={anbn|n>=1}第5 题写一文法,使其语言是偶正整数的集合。
要求:(1) 允许0 打头;(2)不允许0 打头。
答案:(1)允许0 开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0 开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|0第6 题已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。
(5)i+(i+i)(6)i+i*i盛威网()专业的计算机学习网站 2 《编译原理》课后习题答案第三章答案:<表达式><表达式> + <项><因子><表达式><表达式> + <项><因子>i<项><因子>i<项><因子>i( )(5) <表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)<表达式><表达式> + <项><项> * <因子><因子> i<项><因子>ii(6) <表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i盛威网()专业的计算机学习网站 3《编译原理》课后习题答案第三章第7 题证明下述文法G[〈表达式〉]是二义的。
第2章词法分析
2.3 正规表达式与有限自动机简介
2.3.1 正规表达式与正规集
状态转换图对构造词法分析器非常 有效,为便于词法分析器的自动生成, 需将状态转换图的概念形式化。正规表 达式就是一种形式化表示法,它可以表 示单词符号的结构,从而精确定义单词 符号集。正规表达式简称正规式,它表 示的集合称为正规集。
下面以标识符为例来说明正规式与正规集: 标识符是以字母开头的字母数字串。
第2章 词法分析
2.1 词法分析器设计方法 2.2 一个简单的词法分析器示例 2.3 正规表达式与有限自动机简介 2.4 正规表达式到有限自动机的构造 2.5 词法分析器的自动生成
词法分析的任务: 从左至右逐个字符 地对源程序进行扫描, 产生一个个单词符 号, 把字符串形式的源程序改造成为单词 符号串形式的中间程序。
…
case 'z':
while (letter ( )‖digit ( )) { concatenation ( ); /*将当前读入
的字符送入token数组*/
getchar ( );
}
retract ( ); /*扫描指针回退一个字符*/ c=reserve ( ); if (c==0) {
buildlist ( ); /*将标识符登录到符号表*/ return (id, id在符号表中的入口指针); } else return (保留字码, null) ; break;
(5)letter( )和digit( ): 判断character中的字 符是否为字母和数字的布尔函数,若是 则返回true, 否则返回false。
(6)reserve( ): 按token数组中的字符串查 保留字表, 若是保留字则返回其编码, 否则返回0。
编译原理第3章
1、说明:
• 有限自动机是具有离散输入输出系统的数学模型。它具 有有限数目的内部状态,系统可以根据当前所处的状态 和面临的输入字符决定系统的后继行为。其当前状态概 括了过去输入处理的信息
输入带
a b
c d
读头
e ……
有限状态控制器
2014-5-22 12
3.1 正规文法与有限自动机
• 二、有限自动机
电梯是典型的有限状态自动机 那电梯如何描述呢? 电梯的程序又如何构造呢?
2014-5-22
13
3.1 正规文法与有限自动机
• 二、有限自动机-分别讲解
2、确定有限自动机(DFA)
• 确定有限自动机DFA是一个五元组 M(S,,f,s0,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 }
例:已知正规文法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 正规文法与有限自动机
• 注意:
– 仅由字母表A={ai| i=1,2,……n}上的正规式所组成的语言 称作正规集,记作L() – 利用正规集相同,可用来证明相应正规式等价 – “|”读作为“或”,也可写作为“+”或“,”;“•”读作 连接
正规文法与有限自动机的相互转换.
正规文法与有限自动机的相互转换二零一五年十二月二十七日目录摘要 (1)关键词 (1)1课题综述 (1)1.1目的 (1)1.2设计内容 (1)1.3设计原则 (1)2系统分析 (2)2.1正规式 (2)2.2有限自动机(有穷自动机) (2)2.3NFA向DFA的转换 (3)2.4正规式与有限自动机之间的转换 (3)3系统设计 (4)3.1从正规文法到有限自动机 (4)3.11正规文法到有限自动机的等价性证明 (4)3.12 正规文法到有限自动机的构造方法 (5)3.2从有限自动机到正规文法 (6)3.21 有限自动机到正规文法的等价性证明 (6)3.22 有限自动机到正规文法的构造方法 (7)4 运行与测试 (7)总结 (9)参考文献 (9)附录 (10)摘要:正规文法包括左线性文法和右线性文法。
由于正规文法和正规表达式在描述语言的能力上是等价的,而正规表达式和有限自动机在描述语言的能力上也是等价的,因此,正规文法和有限自动机之间也存在着等价性。
通常,对于正规文法G和有限自动机M,G所定义的语言记作L(G),M所能识别的语言记作L(M),如果有L(G)=L(M),则称G和M是等价的。
关键词:正规文法;有限自动机;等价性;构造方法1课题综述1.1目的1.理解正规文法与有限自动机(FA)的本质联系;2.掌握正规文法与有限自动机之间相互转化的算法原理;3.学会使用Visual C++等编程工具实现正规文法与有限自动机之间的相互转化;1.2设计内容使用Visual C++/Visual C#等工具,设计软件MySoft_3,可以实现以下功能:1.根据用户输入的文本文件(*.txt)的名称,打开文件,并从文件中获取文法的产生式、非终结符、终结符、开始符等基本信息;2.判断该文法是否为正规文法,若是,则将其转化为有限自动机;3.根据用户输入的文本文件(*.txt)的名称,打开文件,并从文件中获取有限自动机的状态集、字母表、初态、终态集、转移函数等基本信息;4.判断该自动机是否合法,若合法,则将其转化为正规文法;1.3设计原则正规文法与有穷自动机有着特殊的关系,采用下面的规则可从正规文法G直接构造一个有穷自动机NFA M;使得L(M)=L(G):(1)M的字母表与G的终结符相同;(2)为G中的每一个非终结符生成M的一个状态,G的开始符S是开始状态;(3)增加一个新状态Z,作为NFA的终态;(4)对G中的形如A->tB的规则(其中T为终结符或,A为非终结符的产生式),构造M的一个转换函数f(A,t)=B;(5)对G中形如A->t的产生式,构造M的一个转换函数f(A,t)=Z。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交换律 结合律 结合律 分配律 分配律 e1e2 <> e2 e1
L(e1|e2) = L(e1 ) L(e2) = L(e2 ) L(e1) = L(e2|e1)
14
正规集 3.3.1
正规式
FA DFA
3.3.2
15
Deterministic Finite Automata
3.3.2 确定有限自动机(DFA)
有穷序列 不包含任何字符的序列称为空字,记为ε 用∑*表示∑上的所有字的全体,包含空字ε 例如: 设 ∑={a, b},则
∑* ={ε,a,b,aa,ab,ba,bb,aaa,...}
7
∑*的子集U和V的连接(积)定义为
UV={ | U & V }
V自身的 n次积记为 Vn=V V…V
4
调查:词法分析程序
在操作系统的“shell命令解释器”实验中,你是如何 设计和实现命令的单词识别程序的( )
A. 全部自己实现 B. 使用LEX(FLEX)工具实现 C. 使用其它词法分析程序开发工具实现
5
Knuth on Theory and Practice
Donald Ervin Knuth
规定V0={} 令
V*=V0∪V1∪V2∪V3∪… 称V*是V的闭包
记 V+=V V* ,称V+是V的正规闭包
8
3.3.1 正规式和正规集
正规集可以用正规表达式(简称正规式) 表示
正规表达式是表示正规集一种方法 一个字集合是正规集当且仅当它能用正规
式表示
9
冯-诺伊曼构造自然数的方案
0
{}
= L(b) (L(ab))* = L(b) (L(a)L(b))*
= (L(ba))*L(b)
(a*b*)*=(=a(|Lb(b))*L(a))* L(b)
={b} {ab}*
= {ba}* {b}
= {b} {, ab, abab, ababab, …} = {, ba, baba, bababa, …} {b}
2
DFA M
a 3 b
20
练习
哪个DFA识别{} ?
q0
q0
A
B
21
关系图
正规集 3.3.1
DFA 3.3.2
正规式
将证明:上的字集V*是正规集,当且 仅当存在上的DFA M,使得V=L(M)
22
16
例如:DFA M=({0,1,2,3},{a,b},
f,0,{3}), 其中:f定义如下:
f(0,a)=1
f(0,b)=2
f(1,a)=3
f(1,b)=2
f(2,a)=1
f(2,b)=3
f(3,a)=3
f(3,b)=3
ab 012 132 213 333
状态转换矩阵
1
a
a
a
0a
b
3
b
b
2
b
状态转换图
编译原理
第三章 词法分析
1
第三章 词法分析
对于词法分析器的要求 词法分析器的设计 正规表达式与有限自动机 词法分析器的自动产生--LEX
2
回顾
词法分析器的功能 词法分析器的设计
状态转换图 状态转换图的实现
是否有自动的方法产 生词法分析程序?
3
第三章 词法分析
对于词法分析器的要求 词法分析器的设计 正规表达式与有限自动机 词法分析器的自动产生--LEX
= {b, bab, babab, bababab, …} = {b, bab, babab, bababab, …}
∵ L(b(ab)*)= L( (ba)*b) ∴b(ab)*=(ba)*b
13
对正规式,下列等价成立:
e1|e2 = e2|e1 e1 |(e2|e3) = (e1|e2)|e3 e1(e2e3) = (e1e2)e3 e1(e2|e3) = e1e2|e1e3 (e2|e3)e1 = e2e1|e3 e1 e = e = e
仅由有限次使用上述三步骤而定义的表达式才是上的 正规式,仅由这些正规式表示的字集才是上的正规 集。
12
所有词法结构一般都可以用正规式描述
若两个正规式所表示的正规集相同,则称 这两个正规式等价。如
b(ab)*=(ba)*b
L(b(ab)*)
L( (ba)*b)
= L(b)L((ab)*)
请证明: = L((ba)*) L(b)
对状态图进行形式化,则可以下定义:
确 定 有 限 自 动 机 (DFA)M 是 一 个 五 元 式 M=(S, , f, S0, F),其中:
1. S: 有穷状态集 2. :输入字母表(有穷) 3. f: 状态转换函数,为SS的单值部分映射,
f(s,a)=s’表示:当现行状态为s,输入字符 为a时,将状态转换到下一状态s’,s’称为s 的一个后继状态 4. S0S是唯一的一个初态 5 FS :终态集(可空)
1
{, {}}
2
{, {}, {, {}}} 3
10
正规式和正规集的递归定义
对给定的字母表
1) 和都是上的正规式,它们所表示的正规 集为{}和;
2) 任何a ,a是上的正规式,它所表示的 正规集为{a} ;
11
正规式和正规集的递归定义(续)
3) 假定e1和e2都是上的正规式,它们所表示的正规集 为L(e1)和L(e2),则 i) (e1|e2)为正规式,它所表示的正规集为L(e1)L(e2) ii) (e1.e2)为正规式,它所表示的正规集为L(e1)L(e2) iii) (e1)*为正规式,它所表示的正规集为(L(e1))*
17
DFA可以表示为状态转换图
假定DFA M含有m个状态和n个输入字符 这个图含有m个状态结点,每个结点顶多含有
n条箭弧射出,且Βιβλιοθήκη 条箭弧用Σ上的不同的输 入字符来作标记
18
对于*中的任何字,若存在一条从初态 到某一终态的道路,且这条路上所有弧上 的标记符连接成的字等于,则称为DFA M所识别(接收)
Theory and practice are not mutually exclusive; they are intimately connected. They live together and support each other.
6
3.3 正规表达式与有限自动机
几个概念
考虑一个有穷 字母表∑ 字符集 其中每一个元素称为一个字符 ∑上的字(也叫字符串) 是指由∑中的字符所构成的一个
DFA M所识别的字的全体记为L(M)
L(M)={以00结尾的串}
2 0
1
10
1
3
0 4
1
0
1 DFA M
19
练习
图中DFA M识别的L(M) 是什么? A. L(M)={以aa或bb开头的字} B. L(M)={含aa或bb的字} C. L(M)={以aa或bb结尾的字}
1
a
a
0a b
b b