第二章+(4)非确定有限自动机NFA
- 格式:ppt
- 大小:1.12 MB
- 文档页数:35
编译原理nfa
编译原理中的NFA,是指非确定有限状态自动机(Nondeterministic Finite Automata)。
在计算机科学中,NFA是一种有限状态自动机,它可以用于描述一类模式匹配问题。
NFA由一组状态、一组输入符号、一个转移函数、一个初始状态和一组接受状态组成。
与确定性有限状态自动机(DFA)相比,NFA在某些方面具有更高的表达能力,因为它允许在同一时刻有多个状态,并且在输入符号为空时可以不进行转移。
但由于NFA的非确定性,使用NFA进行模式匹配时,需要进行转换和回溯,增加了计算的复杂度。
在编译原理中,NFA通常用于描述正则表达式的语法结构和匹配算法。
编译器在识别程序中的正则表达式时,会将其转换为NFA,并使用NFA进行模式匹配和语义分析。
通过这种方式,可以实现高效的正则表达式匹配和语法分析。
总之,NFA是编译原理中非常重要的概念,它为编译器设计和实现提供了一种有效的工具,能够实现正则表达式匹配和其他相关问题的解决。
简述有限状态机的分类和区别
有限状态机是计算机科学中的一种数学模型,用于描述系统的状态转换行为。
根据状态转换的规则和方式,可以将有限状态机分为两类:确定性有限状态机和非确定性有限状态机。
确定性有限状态机(Deterministic Finite Automaton,DFA)
指的是状态转换是唯一的,即在任何时候,从任何状态出发,只要读入相同的输入符号,都会到达同一个状态。
这种状态机的状态转换图是一个有向无环图,每个状态只有一个后继状态。
非确定性有限状态机(Nondeterministic Finite Automaton,NFA)指的是状态转换不唯一,即在某些情况下,从同一状态出发,
读入相同的输入符号,可能会到达不同的状态。
这种状态机的状态转换图是一个有向图,每个状态可能有多个后继状态。
在实际应用中,有限状态机还可以根据状态的数量、输入符号的类型、输出符号的类型等进行分类。
例如,根据状态数量的不同,可以将有限状态机分为有限自动机和无限自动机;根据输入符号的类型,可以将有限状态机分为确定性和非确定性的输入符号型有限状态机等。
总之,有限状态机是一种非常重要的计算机模型,能够描述许多复杂的系统行为。
了解有限状态机的分类和区别,可以更好地理解和应用它们。
- 1 -。
第二章 词法分析2.1 完成下列选择题:(1) 词法分析器的输出结果是。
a. 单词的种别编码b. 单词在符号表中的位置c. 单词的种别编码和自身值d. 单词自身值(2) 正规式M1和M2等价是指。
a. M1和M2的状态数相等b. M1和M2的有向边条数相等c. M1和M2所识别的语言集相等d. M1和M2状态数和有向边条数相等(3) DFA M(见图2-1)接受的字集为。
a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合【解答】(1) c (2) c (3) d图2-1 习题2.1的DFA M2.2 什么是扫描器?扫描器的功能是什么?【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。
每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有限自动机,其中f 定义如下:f(x,a)={x,y} f {x,b}={y}f(y,a)=Φ f{y,b}={x,y}试构造相应的确定有限自动机M ′。
【解答】 对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y,b)均为多值函数,因此M 是一非确定有限自动机。
先画出NFA M 相应的状态图,如图2-2所示。
图2-2 习题2.3的NFA M 用子集法构造状态转换矩阵,如表表2-1 状态转换矩阵1b将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到 M ′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图2-3所示。
表2-2 状态转换矩阵将图2-3所示的DFA M ′最小化。
第三章3.1 对于词法分析器的要求1.词法词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。
词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序。
2.程序语言的单词符号:关键字、标识符、常数、运算符、界符。
3.输出的单词符号的表示形式:(单词种别,单词自身的值)Eg:while (i>=j) i--;输出单词符号:< while, - >< (, - >< id, 指向i的符号表项的指针><>=, - >< id, 指向j的符号表项的指针>< ), - >< id, 指向i的符号表项的指针>< --, - >< ;, - >4.词法分析器作为一个独立子程序:结构简洁、清晰和条理化,有利于集中考虑词法分析一些枝节问题。
5.词法分析器3.2 词法分析器的设计1.词法分析器2.输入、预处理:输入串放在输入缓冲区中。
预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符;区分标号区、捻接续行和给出句末符等扫描缓冲区(指向开始位置,向前搜索确定终点)3.单词符号的识别、超前搜索:(1)基本字识别Eg:DO99K=1,10 DO 99 K = 1,10IF(5.EQ.M)GOTO55 IF (5.EQ.M) GOTO 55DO99K=1.10IF(5)=55需要超前搜索才能确定哪些是基本字(2)标识符(3)常数(4)算符和界符4.状态转换图(有限方向图)<1>结点代表状态<2>状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入字符或字符类。
<3>一个状态转换图可用于识别(或接受)一定的字符串。
5.语法分析的状态转换图6.状态转换图的实现思想:每个状态结对应一小段程序。
概念记号有字母表中的符号组成的有限长度的序列。
记号s的长度记为|s|。
长度为0的记号称为空记号,记为ε。
有限自动机(Finite State Automaton)为研究某种计算过程而抽象出的计算模型。
拥有有限个状态,根据不同的输入每个状态可以迁移到其他的状态。
非确定有限自动机(Nondeterministic Finite Automaton)简称NFA,由以下元素组成:1. 有限状态集合S;2. 有限输入符号的字母表Σ;3. 状态转移函数move;4. 开始状态sSUB{0};5. 结束状态集合F,F ∈ S。
自动机初始状态为sSUB{0},逐一读入输入字符串中的每一个字母,根据当前状态、读入的字母,由状态转移函数move控制进入下一个状态。
如果输入字符串读入结束时自动机的状态属于结束状态集合F,则说明该自动机接受该字符串,否则为不接受。
确定有限自动机(Deterministic Finite Automaton)简称DFA,是NFA的一种特例,有以下两条限制:1. 对于空输入ε,状态不发生迁移;2. 某个状态对于每一种输入最多只有一种状态转移。
将正则表达式转换为NFA(Thompson构造法)算法算法1将正则表达式转换为NFA(Thompson构造法)输入字母表Σ上的正则表达式r输出能够接受L(r)的NFA N方法首先将构成r的各个元素分解,对于每一个元素,按照下述规则1和规则2生成NFA。
注意:如果r中记号a出现了多次,那么对于a的每次出现都需要生成一个单独的NFA。
之后依照正规表达式r的文法规则,将生成的NFA按照下述规则3组合在一起。
规则1对于空记号ε,生成下面的NFA。
规则2对于Σ的字母表中的元素a,生成下面的NFA。
规则3令正规表达式s和t的NFA分别为N(s)和N(t)。
a) 对于s|t,按照以下的方式生成NFA N(s|t)。
b) 对于st,按照以下的方式生成NFA N(st)。
第二章 词法分析2.1 完成下列选择题: (1) 词法分析器的输出结果是 。
a. 单词的种别编码 b. 单词在符号表中的位置 c. 单词的种别编码和自身值 d. 单词自身值 (2) 正规式M1和M 2等价是指 。
a. M1和M2的状态数相等b. M1和M2的有向边条数相等c. M1和M2所识别的语言集相等d. M1和M2状态数和有向边条数相等 (3) DFA M(见图2-1)接受的字集为 。
a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合 【解答】(1) c (2) c (3) d图2-1 习题2.1的DFA M2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。
每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有限自动机,其中f 定义如下: f(x,a)={x,y} f{x,b}={y} f(y,a)=Φ f{y,b}={x,y} 试构造相应的确定有限自动机M ′。
【解答】 对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y ,b)均为多值函数,因此M 是一非确定有限自动机。
先画出NFA M 相应的状态图,如图2-2所示。
图2-2 习题2.3的NFA M用子集法构造状态转换矩阵,如表表2-1 状态转换矩阵1b将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到 M ′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图2-3所示。