编译原理第三章自动机基础(3)_第1页
编译原理第三章自动机基础(3)_第2页
编译原理第三章自动机基础(3)_第3页
编译原理第三章自动机基础(3)_第4页
编译原理第三章自动机基础(3)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.4 3.4 正规语言正规语言描述方法描述方法间的间的相互转换相互转换 众所周知众所周知,正规语言正规语言有三种等价的表示方法:有三种等价的表示方法: 正规文法正规文法 正规式正规式 有限自动机有限自动机 我们以我们以有限自动机有限自动机为核心,介绍彼此间的转换关系:为核心,介绍彼此间的转换关系: . . 正规文法正规文法 DFA DFA设设 G(Z)=(VG(Z)=(VN N,V,VT T,Z,P), DFA=(Q,s,F,Z,P), DFA=(Q,s,F, ) )则有:则有:DFADFA正规文法正规文法 ( (字符字符集集) ) V VT T ( (终结符终结符集集) ) (A,a)=B

2、(A,a)=BA - aBA - aB (A,a)=B(A,a)=B(结束态结束态) )A - aA - a S( S(开始状态开始状态) ) Z( Z(开始符号开始符号) ) Q( Q(状态状态集集) ) V VN N( ( 非终结符非终结符集集) )A - A - A A( (结束态结束态) ) Z-aZ|bA| Z-aZ|bA| , A-bA|dB ,B- , A-bA|dB ,B- 正规文法正规文法 与与 DFADFA间转换示例:间转换示例:【例【例3.163.16】 自动机自动机 = = 正规文法正规文法: :ab bcd d+ +- -DFA:DFA:令令 Z=Z=, A=, A=

3、, B=, B=则有则有 正规文法正规文法Z - aAZ - aA【例【例3.173.17】正规文法正规文法 = = 自动机自动机, , 并求并求 L(G)L(G): :G(Z): Z-aZ|bA|G(Z): Z-aZ|bA| ,A-bA|d ,A-bA|d A-d A-d 可变换为可变换为 G(Z) ( G(Z) ( 与与 G(Z)G(Z)等价等价 ): ): 令令 -Z, -Z, -A, -A, -B-B对应的对应的DFADFAb ba ad d+ +- - -b b则则 L(G)=L(G)= , ,a am mb bn nd|m0,n0d|m0,n0G(Z):G(Z):| cB| cB

4、, A -bA, A -bA | dB| dB , B- , B- A-dB, B-A-dB, B- s sf fe e+ +- -. . 正规式正规式 DFA DFA设设 e e 为正规式为正规式 , DFA=(Q,s,F, DFA=(Q,s,F, ) ) 转换机制转换机制: e = DFA e = DFA 分解过程分解过程 ( ( 其逆过程为合成过程其逆过程为合成过程) ):则有:则有:合成合成分解分解i ij je e1 1| |e e2 2i ij je e1 1. .e e2 2i ij je e* *i ij je e2 2e e1 1i ij je e1 1k ke e2 2i

5、ij je ek k 实践实践中,可简中,可简化为其中化为其中一种:一种:i ie ej j j je ei i e ei ie ej j或或或或或或 正规式正规式 与与 DFADFA间转换示例:间转换示例:【例【例3.183.18】正规式正规式 = = 自动机自动机 设设 e = ae = a* *b|bcb|bc* *则:则:a a* *b bbcbc* *+ +- -a a* *c c* *+ +- -b bb b+ +- -a aa aa aa ac c+ +- -b bb bb b- -+ +a aa ac cA A+ +B Bb bb bD D- -C CE Ec c- - -等价

6、等价! !a a c c+ +- -b bb b b bc c+ +- -b bb b + +- -确定化确定化2 2DFA:DFA:确定化确定化1 1 b bc ca aA1,2A1,2+ +D9D9C3,9C3,9B2B2B2B2D9D9E3E3C3,9C3,9B2B2E3E3E3E3- - - - 令令 getchar(ch) getchar(ch) 读符号函数。读符号函数。3.5 3.5 有限自动机的实现问题有限自动机的实现问题 用计算机完成有限自动机的功能,用计算机完成有限自动机的功能,其核心是“变换”的实现技术。这里介绍的是把变换表按某种方式存贮起来,作为知识源,实现机制是: 【三

7、点说明】【三点说明】 假定自动机只作为假定自动机只作为识别器识别器,即,即 对对待识别的待识别的符号串符号串: 仅回答仅回答 是是( (接受接受) )或或 否否( (拒绝拒绝) )。 为便于处理为便于处理, ,可令可令为此,扩展自动机如下:为此,扩展自动机如下:okok 4 4okok 5 5 6 6 3 3 1 1 b b a a+ +- - -空空 则则 nono控制程序控制程序 变换表变换表 + + +- -a a- -b b- -作为作为待识别的待识别的符号串符号串的泛指的泛指后继符后继符。3.5.1 3.5.1 控制程序设计控制程序设计开始开始结束结束state:=1state:=1

8、getchar(ch)getchar(ch)查变换表:查变换表: (state,ch)= ? (state,ch)= ? = = =ok=ok回答回答:ok:ok回答回答:no:noy yn ny ystate:= state:= n n 开始状态开始状态1 1赋赋给变量给变量 statestate 从输入串中从输入串中读取一符号到读取一符号到变量变量 ch ch 变量变量 state state 重新被赋值!重新被赋值! n3.5.2 3.5.2 变换表存贮结构设计变换表存贮结构设计变换表的存贮结构可选择下述两种方式之一:变换表的存贮结构可选择下述两种方式之一: 二维数组二维数组 ,其下标是

9、,其下标是( (状态,输入符号);状态,输入符号); 为了适应不同编码语言的需要,状态和输入为了适应不同编码语言的需要,状态和输入符号可采取相应的编码形式;通常,使用连续的符号可采取相应的编码形式;通常,使用连续的正整数:正整数:0,1,2,3,0,1,2,3,。 压缩变换表压缩变换表,方法是把每个状态行作为,方法是把每个状态行作为子表,状态为子表,状态为索引,索引,并把并把错误的输入符号合并在一起错误的输入符号合并在一起, ,如:如:nobanofenoyx索引表索引表 ( (其他其他)-)-错误符号。错误符号。状状态态变换子表变换子表c ca a3 3有限自动机实现示例:有限自动机实现示例

10、:【例【例3.193.19】 有限自动机有限自动机DFA: DFA: + +a ab b- -# #a ab bc cd d nonob ba a nonod dnono c cb ba a nonookok# #压缩变换表压缩变换表输入串输入串 aacd# aacd# 识别过程:识别过程:索引表索引表备注备注变换变换剩余剩余chchstatestate3 3acd#acd#a a1 1接受接受okok# #4 44 4# #d d2 22 2d#d#3 33 3cd#cd#练习题练习题: :【习题【习题3.73.7】已知正规式】已知正规式 ,试转换为自动机和正规文法:,试转换为自动机和正规文法: e1=(ab) e1=(ab)* * ; ; e2=(a|b) e2=(a|b)* * . .【习题【习题3.83.8】已知符号串集合,构造正规式、自动机和正规】已知符号串集合,构造正规式、自动机和正规文法:文法:A= A= ,a,an n,ba,ban n|n1 |n1 【习题【习题3.93.9】已知自动机】已知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论