编译原理(正规式、有限自动机)

正规文法(3型文法)

文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则)。由正规文法(3型文法)产生的语言称为正规集。 之所以用“正规”文法命名,是因为这种语言的结构可以用正规式来描述。而正规式是一种表示正规集的工具,是描述程序语言单词的表达式。

如果我们有两个字符a、b,那么有以下几种常用正规式写法。

1、正规式a,表示单一字符a,对应的正规集{a}。
2、正规式a|b,表示单一字符a或者b,对应有2个元素的正规集{a,b}。
3、正规式ab,表示由两个字符ab的元素,对应只有1个元素的正规集{ab}。
4、正规式ab(a|b),ab是确定的部分,然后再添加a或b,对应正规集{aba,abb}。
5、正规式a*,*表示任意个,对应正规集{Φ,a,aa,aaa,...}。
6、正规式(a|b)*,可以表示任意由a、b组成的串的集合,对应正规集{Φ,a,b,ab,aa,bb...}。
 

有限自动机

概念:有限自动机亦称时序机,有限离散数字系统的抽象数学模型。一个有限自动机M由五元组(X,Y,S,δ,λ)给定,其中X,Y和S都是非空有限集,分别称为M的输入集、输出集和状态集;δ是笛卡儿积集合S×X到S的映射,称为M的下一状态函数;λ是S×X到Y的单值映射,称为M的输出函数。

 当δ是单值映射时,称M为确定型有限自动机(DFA);当δ是多值映射时,称M为不确定型有限自动机(NFA)。

他们之间的区别:

确定的有限自动机(DFA):开始状态是唯一

                                               一个输入对应一个状态转换

不确定的有限自动机(NFA):开始状态是一个状态集合

                                                  一个输入对应多个状态转换(状态集)

                                                  有向弧的标记上可以为空


有限自动机的作用:

1、作为序列转换器,将输入序列变换为输出序列;
2、作为序列识别器,识别输入的序列是否具有某种性质;
3、作为序列产生器,产生具有所要求性质的序列 。

有限自动机作为序列识别器时,只能从有限自动机的起始位开始运行,到结束位停下。在结束位停下后,就不能继续输入了。


版权声明:本文为yx1166原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。