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

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

淮阴工学院

编译原理课程设计报告

选题名称:正规文法与有限自动机的相互转换系(院):计算机工程学院

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

班级:软件1082

姓名:陈超学号: 02

指导教师:高丽王文豪江波于永彦

学年学期:2011 ~ 2012 学年第 1 学期

2012 年 01 月 07 日

摘要:

正规文法包括左线性文法和右线性文法。由于正规文法和正规表达式在描述语言的能力上是等价的,而正规表达式和有限自动机在描述语言的能力上也是等价的,因此,正规文法和有限自动机之间也存在着等价性。通常,对于正规文法G和有限自动机M,G所定义的语言记作L(G),M所能识别的语言记作L(M),如果有L(G)=L(M),则称G和M是等价的。

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

目录

1课题综述...................................... 错误!未定义书签。

目的························错误!未定义书签。

设计内容······················错误!未定义书签。

设计原则······················错误!未定义书签。

2系统分析...................................... 错误!未定义书签。

正规式·······················错误!未定义书签。

有限自动机(有穷自动机)··············错误!未定义书签。

向DFA的转换····················错误!未定义书签。

正规式与有限自动机之间的转换············错误!未定义书签。

3系统设计...................................... 错误!未定义书签。

从正规文法到有限自动机···············错误!未定义书签。

正规文法到有限自动机的等价性证明................. 错误!未定义书签。

正规文法到有限自动机的构造方法................ 错误!未定义书签。

从有限自动机到正规文法···············错误!未定义书签。

有限自动机到正规文法的等价性证明............... 错误!未定义书签。

有限自动机到正规文法的构造方法................. 错误!未定义书签。

4代码编写...................................... 错误!未定义书签。

5运行与测试.................................... 错误!未定义书签。

1课题综述

目的

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

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

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

设计内容

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

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

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

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

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

设计原则

正规文法与有穷自动机有着特殊的关系,采用下面的规则可从正规文法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。

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(Deterministic Finite Automation ):确定的有限自动机

表达式: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的转换。

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

相关文档
最新文档