正规文法与有限自动机的相互转换.docx

上传人:b****9 文档编号:28712456 上传时间:2023-07-19 格式:DOCX 页数:12 大小:64.41KB
下载 相关 举报
正规文法与有限自动机的相互转换.docx_第1页
第1页 / 共12页
正规文法与有限自动机的相互转换.docx_第2页
第2页 / 共12页
正规文法与有限自动机的相互转换.docx_第3页
第3页 / 共12页
正规文法与有限自动机的相互转换.docx_第4页
第4页 / 共12页
正规文法与有限自动机的相互转换.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

正规文法与有限自动机的相互转换.docx

《正规文法与有限自动机的相互转换.docx》由会员分享,可在线阅读,更多相关《正规文法与有限自动机的相互转换.docx(12页珍藏版)》请在冰豆网上搜索。

正规文法与有限自动机的相互转换.docx

正规文法与有限自动机的相互转换

淮阴工学院

编译原理课程设计报告

选题名称:

正规文法与有限自动机的相互转换

系(院):

计算机工程学院

专业:

计算机科学与技术(软件工程方向)

班级:

软件1082

姓名:

陈超学号:

02

指导教师:

高丽王文豪江波于永彦

学年学期:

2011~2012学年第1学期

2012年01月07日

 

摘要:

正规文法包括左线性文法和右线性文法。

由于正规文法和正规表达式在描述语言的能力上是等价的,而正规表达式和有限自动机在描述语言的能力上也是等价的,因此,正规文法和有限自动机之间也存在着等价性。

通常,对于正规文法G和有限自动机M,G所定义的语言记作L(G),M所能识别的语言记作L(M),如果有L(G)=L(M),则称G和M是等价的。

关键词:

正规文法;有限自动机;等价性;构造方法

 

1课题综述

目的

1.理解正规文法与有限自动机(FA)的本质联系;

2.掌握正规文法与有限自动机之间相互转化的算法原理;

3.学会使用VisualC++等编程工具实现正规文法与有限自动机之间的相互转化;

设计内容

使用VisualC++/VisualC#等工具,设计软件MySoft_3,可以实现以下功能:

1.根据用户输入的文本文件(*.txt)的名称,打开文件,并从文件中获取文法的产生式、非终结符、终结符、开始符等基本信息;

2.判断该文法是否为正规文法,若是,则将其转化为有限自动机;

3.根据用户输入的文本文件(*.txt)的名称,打开文件,并从文件中获取有限自动机的状态集、字母表、初态、终态集、转移函数等基本信息;

4.判断该自动机是否合法,若合法,则将其转化为正规文法;

设计原则

正规文法与有穷自动机有着特殊的关系,采用下面的规则可从正规文法G直接构造一个有穷自动机NFAM;使得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。

2系统分析

正规式

正规式:

正则表达式,表示正规集的工具。

一个正规式对应一个正规文法(3型文法)

之间能够进行准换

三个基本规则:

A->xB,B->y 则A=xy。

A->xA|y 则A=x*y (x*代表x从1到无穷多个)

A->x,A->y则A=x|y

正规式主要用到了递归的思想,无论遇到多复杂的正规式都可以拆分成上面这三种形式,然后进行解题。

有限自动机(有穷自动机)

DFA(DeterministicFiniteAutomation):

确定的有限自动机

表达式:

M=(S,∑,f,So,Z)

为一个有限状态集合

2.∑是一个字母表,它所包含的的每个元素称为一个输入字符;

是一个从SX∑(笛卡尔乘积)至S的单值部分映射。

f(S,a)=s'意味着当现在的状态为s,输入字符a时,将转换到下一状态s'.s'为s的一个后继状态。

∈S,是唯一的初态;

⊆S,是一个终态集。

NFA(Nondeterministic Finite Automata):

不确定的有限自动机

如果理解了有限自动机,则无限自动机和它的区别就是上面的第四项。

So⊆S,它的初态不是唯一的,而是一个集合。

向DFA的转换

这个转换是一个比较简单的过程。

1.如果有一个不确定的有限自动机,则可以转化为图的方式。

此处不详述怎样转图的方式。

2.先将初态确定,然后根据输入的每个元素可以得到哪些状态,依次列表。

3.这些状态集合可以称为这个有限状态集合n个子集。

按0,1,2……的顺序编号。

4.因为这些子集之间的关系是输入一个确定值确定的,所以这些子集之间存在一些关系,即把这些子集的关系写出来完成NFA向DFA的转换。

如果不懂可以从网上找一个例子进行理解。

正规式与有限自动机之间的转换

任意的正规式都可以转换为上述三种的表现形式。

在一个有限自动机转换为正规式时,就是考虑从初态到终态可以输入哪些数据到达。

而这些数据可以用哪种正规式概括进来。

 

3系统设计

从正规文法到有限自动机

正规文法到有限自动机的等价性证明

定理1:

对于每一个右线性正规文法GR和左线性正规文法GL,都存在一个有限自动机M与之等价。

证明:

1.设右线性文法GR=(VT,VN,S,P),将VN中每个非终结符视为状态符号,并增加一个新的终止符号f,(fVN)。

令M=(VN{f},VT,d,S,{f}),其中状态转换函数d由以下规则定义:

①若对某个AVN及aVT{ε},P中有产生式A→a,则令d(A,a)=f;

②对任意的AVN及aVT{ε},设P中左端为A右端第一个符号为a的所有产生式为A→aA1∣aA2∣…∣aAk(不包括A→a),则令d(A,a)={A1,A2,…,Ak}。

显然上述得到的M为一个NFA。

到此,已说明存在一个FAM与该右线性文法对应,下面说明它们的等价性(L(GR)=L(M))。

对右线性正规文法GR,在SW的最左推导过程中,利用A→aB一次就相当于在M中从状态A出发经标记为a的箭弧到达状态B(包括a=ε的情形)。

在推导过程的最后,利用A→a一次则相当于在M中从状态A出发经标记为a的箭弧到达终态f(包括a=ε的情形)。

综上所述,在正规文法GR中,SW的充要条件是:

在M中,从状态S到状态f有一条通路,其上所有箭弧的标记符号依次连接起来恰好等于W,这就是说,WL(GR)当且仅当WL(M),故L(GR)=L(M)。

2.设左线性文法GL=(VT,VN,S,P),将VN中每个非终结符视为状态符号,并增加一个新的初始状态符号q,(qVN)。

令M=(VN{q},VT,d,q,{S}),其中状态转换函数d由以下规则定义:

①若对某个AVN及aVT{ε},P中有产生式A→a,则令d(q,a)=A;

②对任意的AVN及aVT{ε},设P中所有右端第一个符号为A,第二个符号为a的所有产生式为A1→Aa,A2→Aa,…,AK→Aa,则令d(A,a)={A1,A2,…,Ak}。

显然上述得到的M为一个NFA。

到此,已说明存在一个FAM与该左线性文法对应,下面说明它们的等价性(L(GL)=L(M))。

对左线性正规文法GL,在SW的最左推导过程中,利用B→Aa一次就相当于从状态A出发经标记为a的箭弧到达状态B(包括a=ε的情形)。

在推导的最后,利用A→a一次则相当于在M中从状态q出发经标记为a的箭弧到达状态A(包括a=ε的情形)。

综上所述,在正规文法GL中,SW的充要条件是:

在M中,从状态q到状态S有一条通路,其上所有箭弧的标记符号依次连接起来恰好等于W,这就是说,WL(GL)当且仅当WL(M),故L(GL)=L(M)。

正规文法到有限自动机的构造方法

上述定理的证明采用了构造性的证明方法,由此可以得出由正规文法到有限自动机的构造方法。

从右线性正规文法GR=(VT,VN,S,P)构造有限自动机M=(VN{f},VT,d,S,{f})的方法如下:

①将VN中每个符号视为一个状态符号,增加一个新的终态符号f,fVN;

②对于产生式A→a(aVT{ε}),则构造d(A,a)=f;

③对于产生式A→aA1(aVT{ε}),则构造d(A,a)=A1。

从左线性正规文法GL=(VT,VN,S,P)构造有限自动机M=(VN{q},VT,d,q,{S})的方法如下:

①将VN中每个符号视为一个状态符号,增加一个新的初态符号q,qVN;

②对于产生式A→a(aVT{ε}),则构造d(q,a)=A;

③对于产生式A1→Aa(aVT{ε}),则构造d(A,a)=A1。

从有限自动机到正规文法

有限自动机到正规文法的等价性证明

定理2:

对于每一个有限自动机M,都存在一个右线性正规文法GR和左线性正规文法GL与之等价。

证明:

1.设DFAM=(S,∑,d,S0,F),分以下两种情况进行证明:

(1)若S0F,则令GR=(∑,S,S0,P),其中P是由以下规则定义的产生式集合,对任何a∑及A,BS,若d(A,a)=B,则:

①当BF时,令A→aB;

②当BF时,令A→aB∣a;

显然,上述得到的文法为一个右线性正规文法,下面说明它们的等价性(L(M)=L(GR))。

在DFAM中,对任何w∑*,不妨设w=a1a2…ak,其中ai∑(i=1,2,…,k),若SW,则存在一个最左推导:

S0a1A1a1a2A2…a1…aiAia1…aiai+1Ai+1…a1…ak,因而,在M中存在一条从S0出发一次经过A1,…,Ak-1到达终态的通路,该通路上所有箭弧的标记依次为a1,…,ak。

反之亦然。

所以,wL(GR)当且仅当wL(M),故L(M)=L(GR)。

(2)若S0F,因为d(S0,ε)=S0,所以εL(M),但上面构造的L(GR)中不含ε。

因此,需在文法中添加产生式S0→ε,这样,就有L(M)=L(GR)。

2.设DFAM=(S,∑,d,S0,F),分以下两种情况进行证明:

(1)若S0F,则令GL=(∑,S,X,P),其中XF,P是由以下规则定义的产生式集合,对任何a∑及A,BS,若d(A,a)=B,则:

①当A≠S0时,令B→Aa;

②当A=S0时,令B→a∣Aa;

显然,上述得到的文法为一个左线性正规文法,下面说明它们的等价性(L(M)=L(GL))。

在DFAM中,对任何w∑*,不妨设w=a1a2…ak,其中ai∑(i=1,2,…,k),若存在一条从S0到X的通路,通路上所有箭弧的标记依次为a1,…,ak,则在GL中一定存在一个最左推导:

XAkakAk-1ak-1ak…A2a2…ak…a1…ak,即wL(GL)。

反之亦然。

所以,wL(GL)当且仅当wL(M),故L(M)=L(GL)。

(2)若S0F,则εL(M),但上面构造的L(GL)中不含ε。

因此,需在文法中添加产生式X→ε,这样,就有L(M)=L(GL)。

有限自动机到正规文法的构造方法

上述定理的证明采用了构造性的证明方法,由此可以得出由有限自动机到正规文法的构造方法。

从有限自动机M=(S,∑,d,S0,F)构造右线性正规文法GR的方法如下:

令GR=(∑,S,S0,P),其中P是由以下规则定义的产生式集合:

对任何d(A,a)=B,

①若BF,则令A→aB;

②若BF,并且B状态有箭弧射出,则令A→aB∣a;若BF,并且B状态没有箭弧射出,则令A→a;

③若S0F,则令S0→ε。

从有限自动机M=(S,∑,d,S0,F)构造左线性正规文法GL的方法如下:

令GL=(∑,S,X,P),其中P是由以下规则定义的产生式集合:

对任何d(A,a)=B,

①若A不是初始状态,则令B→Aa;

②若A是初始状态,并且A状态有箭弧射入,则令B→Aa∣a;若A是初始状态,并且A状态没有箭弧射入,则令B→a;

③若S0F,则令X→ε。

4代码编写

#include

usingnamespacestd;

intmain()

{

intn,m;

和于永彦火旺等.程序设计语言编译原理(第3版)[M].北京:

国防工业出版社,2000.7

2.胡元义.编译原理教程(第二版)[M].西安:

西安电子科技大学出版社,2006.8

3.刘坚.编译原理基础[M].西安:

西安电子科技大学出版社,2002.4

4.吕映芝.编译原理[M].北京:

清华大学出版社,1998.5

5.胡元义等.编译原理课程辅导与习题解析[M].北京:

人民邮电出版社,2002.

指导教师评语

学号

02

姓名

陈超

班级

软件1082

选题

名称

正规文法与有限自动机的相互转换

序号

评价内容

权重(%)

得分

1

考勤记录、学习态度、工作作风与表现。

5

2

自学情况:

上网检索机时数、文献阅读情况。

10

3

论文选题是否先进,是否具有前沿性或前瞻性。

5

4

成果验收:

是否完成设计任务;能否运行、可操作性如何等。

20

5

报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。

30

6

文献引用是否合理、充分、真实。

5

7

答辩情况:

自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。

25

合计

指导教师(签名):

年月日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1