第3章 有穷状态自动机 计算机专业 形式语言课件
合集下载
第3章词法分析与有穷自动机0319 优质课件
编译原理
2019年12月7日
教学内容
1 词法分析程序的功能 2 词法分析程序的输出形式 3 程序设计语言单词的定义 4 正规式与有穷自动机 5 正规文法与有穷自动机 6 词法分析程序的编写方法
编译原理
2019年12月7日
3.1 词法分析程序的功能
(1)分析和识别单词及属性, 包括识别语言的关键字、标识符、常数、运算符等;
正规式相等 这两个正规式表示的语言相等
编译原理
2019年12月7日
正规式举例
• 例:设有字母表 ∑={a,b},根据正规式与正规集的定义,有以 下的正规式和正规集
正规式
正规集
a
{a}
a∣b
{a,b}
ab
{ab}
( a∣b)( a∣b)
{aa,ab,ba,bb}
a*
{ε,a,aa,aaa,…,任意个a的串}
编译原理
2019年12月7日
表3.1
int x=10,y=20,sum;词法分析的结果
单词类别 1 2 4 3 5 2 4 3 5 2 5
单词的属性值
int 指向x的符号表入口指针
= 10 , 指向y的符号表入口指针 = 20 , 指向sum的符号表入口指针 ;
编译原理
2019年12月7日
3.3语言单词符号的两种定义方式
编译原理
2019年12月7日
实现方案:基本上有两种
1.词法分析单独作为一遍
S.P.(字符串)
第一遍 词法分析
单词串 S.P.(符号串)
第二遍 语法分析
优点: 结构清晰、各遍功能单一
2.词法分析程序作为单独的子程缺序点:效率低
S.P.(字符串)
第三章词法分析及有穷自动机-PPT
={a}*={ε,a,aa,aaa,、、…}
复 6o 合 7o
8o
ba* a| ba* (a|b)*
L(ba*)=L(b) L(a*) ={b,ba,baa,baaa,……}
L(a| ba*)=L(a)∪L(ba*)={a,b,ba,baa,……}
L((a|b)*)= (L(a|b))*={a,b}*={ε,a,b,aa,ab,…… 所有ab组成得串}
……
§3 正规式与有穷自动机
❖ 为了进一步讨论词法分析程序得自动生成,需 要将状态转换图得概念加以形式化;同时将由 正规文法描述得单词由正规式描述,可利用有 穷自动机生成词法分析程序。
一、正规式与正规集
语言得单词结构不仅由正规文法描述,还可以 由正规式描述。
例:<标识符>∷=<字母>|<标识符><字母>|<标识符>< 数字>
单词:指语言中具有独立意义得最小语法单位。 语言中得单词符号:
一般可归结为五种:
❖ 保留字(基本字):如if, for, and 等――个数确定 ❖ 标识符:表示常量、变量、类型、过程等名称――个数不确定 ❖ 常数:如34,-0、37等――个数不确定 ❖ 运算符:如+,-,*,/,< 等――个数确定 ❖ 界线符:如逗号,分号,括号等――个数确定
④ 以识别符号为终止状态。
例:设有正规文法G[Z]:
Z∷= U0|V1
U∷=Z1|1
V∷=Z0|0
(描述得语言为L(G)={01,10}
+
)
则状态转换图如下:
新增加开 始状态S
1 S
0
U 1
0
V
0 Z
sun编译原理第3章词法分析与有穷自动机第4 8讲 优质课件
={a,b}*{aa,bb}{a,b}*
练习:若S=a|bb,则L((a|bb)*)=?
2019/11/24
信息学院 孙丽云
5
第3章 词法分析与有穷自动机
■正规式中运算的优先级
括号优先,* 次之,•(连接)再次之,| 最后 例:a|bc* ≌ a|(b(c*))
ab|c*d ≌ (ab)|((c*)d)
其中 U、W∈N t∈T 其中 U、W∈N t∈T
2019/11/24
信息学院 孙丽云
8
第3章 词法分析与有穷自动机
■正规文法到正规式的转换
(1)将正规文法中的每个非终结符表示成关于它的一 个正规式方程,获得一个联立方程组。 (2)依照求解规则:
若x=αx|β(或x=αx+β),则解为x=α*β; 若x=xα|β(或x=xα+β),则解为x=βα*; 以及正规式的分配律、交换律和结合律求关于文法 开始符号的正规式方程组的解. 这个解是关于该文法开始符号S的一个正规式,显然 它表示了由该正规文法所描述的语言。
信息学院 孙丽云
2
第3章 词法分析与有穷自动机
3.3 语言单词符号的两种定义方式 多数程序设计语言的单词符号都能用正规文法或正规 式来定义。
■ 正规式与正规集
设有字母表={a1,a2,…,an},在字母表上的正 规式和它所表示的正规集可用如下规则定义: (1) Φ是上的正规式,它所表示的正规集是Φ, 即空集{} (2)ε是上的正规式,它所表示的正规集是{ε} (3)ai是上的正规式,它所表示的正规集由单个符 号ai组成,即{ai}
③ (e1)*是上的一个正规式,它所表示的正规集为 L((e1)*) =L((e1))*
正规式描述了单词符号的构成规则,正规集是正规 式能描述的所有的单词的集合。
第三章有穷自动机-PPT课件
q 0 c h a rc h ,n a m e [ k ] n a m e r e a d ( c h ) 若 c h = l q 1 q 2 符 号 表 , n a m e查 n a m e n a m e + c h 非 l , d 用 r e a d ( c h ) 若 没 有 , 则 填 表 , 否 则 返 回 其 地 址 r e a d ( c h ) 若 c h = lo rd
自动机接受(收)字符串
• 3)自动机接收语言 自动机 M所能接收的串组成一个集合, 则称该集合为自动机 M所能接收(识别)的 语言。 用L(M)表示: L ( M ) = {ω ∣ t(q0, ω )∈ F , ω ∈ * }
3.2.4 自动机的等价性
•定义3.2 M和M是等价的,当且仅当 对每一个串x,M接收x当且仅当M接收x。 •定义3.3 如果M仅通过重新标记它的 状态就能转换称M,则M和M称为同构的 (Isomorphic)。 •FSA的一个基本定理是:对每一个自动 机M,存在一个等价的具有最少状态个 数的自动机M,而且对于每一个其状态 个数与M相同且等价于M的自动机M″, 必是与M同构的。换句话说,M在结构 上是唯一的。
3.2.5 非确定有穷状态自动机
•定义3.4 一个非确定有穷自动机NDFSA是一个
五元组
NDFSA=(Q, , t, q0, F) 其中,Q是一个非空有穷状态集, 是一个非空有穷输入字母集, 映射t为QQ的子集(即t是一个多值映射), Q0Q是开始状态集, FQ是终止状态集。 •同样的,NDFSA也可以用状态转换表和状态转换 图表示。
3.2.3 构形和移动(2)
• 构形(q0,ω)称为初始构形,其中q0 是初始状态,ω是由该自动机可接 收或拒绝的任何输入串。构形(q, ) 称为终止构形,其中是空串, qF(终态集)。 • 自动机的移动(记为├)是从一种构 形到另一种构形的转换。 • DFSA的工作过程就是一系列的移动 过程。 • 记号├+称为├的传递闭包;├*称为 ├的自反闭包。 ├*表示“0次或多 次移动”;├+表示“一次或多次移 动”。
自动机接受(收)字符串
• 3)自动机接收语言 自动机 M所能接收的串组成一个集合, 则称该集合为自动机 M所能接收(识别)的 语言。 用L(M)表示: L ( M ) = {ω ∣ t(q0, ω )∈ F , ω ∈ * }
3.2.4 自动机的等价性
•定义3.2 M和M是等价的,当且仅当 对每一个串x,M接收x当且仅当M接收x。 •定义3.3 如果M仅通过重新标记它的 状态就能转换称M,则M和M称为同构的 (Isomorphic)。 •FSA的一个基本定理是:对每一个自动 机M,存在一个等价的具有最少状态个 数的自动机M,而且对于每一个其状态 个数与M相同且等价于M的自动机M″, 必是与M同构的。换句话说,M在结构 上是唯一的。
3.2.5 非确定有穷状态自动机
•定义3.4 一个非确定有穷自动机NDFSA是一个
五元组
NDFSA=(Q, , t, q0, F) 其中,Q是一个非空有穷状态集, 是一个非空有穷输入字母集, 映射t为QQ的子集(即t是一个多值映射), Q0Q是开始状态集, FQ是终止状态集。 •同样的,NDFSA也可以用状态转换表和状态转换 图表示。
3.2.3 构形和移动(2)
• 构形(q0,ω)称为初始构形,其中q0 是初始状态,ω是由该自动机可接 收或拒绝的任何输入串。构形(q, ) 称为终止构形,其中是空串, qF(终态集)。 • 自动机的移动(记为├)是从一种构 形到另一种构形的转换。 • DFSA的工作过程就是一系列的移动 过程。 • 记号├+称为├的传递闭包;├*称为 ├的自反闭包。 ├*表示“0次或多 次移动”;├+表示“一次或多次移 动”。
第3章 有穷自动机
例3.10
NDFA =(Q,,t,Q0,F)其中 Q={q0, q1, q2, q3}, ={x, y}, Q0={q0}, F={q1}. t(q0,x)={q1, q2}, t(q0,y )={q0}, t(q1, x)={q0}, t(q1,y )={q1,q2}, t(q2,x)={q3}, t(q2,y) ={q3}, t(q3,x)={q1,q3}, t(q3,y)={q3} DFA =(Q’, , t’,q0, F’). (1) ={x,y}; (2)Q’={[q0], [q1], [q2], [q3], [q0, q1], [q0, q2], [q0, q3], [q1, q2], [q1, q3], [q2, q3], [q0, q1, q2], [q0, q1, q3], [q0, q2, q3], [q1, q2, q3], [q0, q1, q2, q3]} (3)定义映射t’: t’([q0], x)=[q1,q2], t’([q0], y)=[q0], t’([q1], x)=[q0], t’([q1], y)=[q1, q2], t’([q2], x)=[q3], t’([q2], y)=[q3], t’([q3], x)=[q1, q3], t’([q3], y)=[q3], t’([q0, q1], x)=[q0, q1,q2], t’([q0, q1], y)=[q0, q1,q2], …. t’([q0, q1 , q2 , q3], x)=[q0, q1,q2 ,q3], t’([q0, q1 , q2 , q3], y)=[q0, q1,q2 ,q3]. (4)DFA的开始状态q0’=[q0] (5) DFA的开始状态集合F=[q1], [q0, q1], [q2, q1], [q3, q1], [q0, q1, q2], [q0, q1, q3], [q1, q2, q3], [q1, q2, q3 , q4]
编译原理课件第3章有穷自动机
and some of which are designated as final states. 2) An alphabet of possible input symbols. 3) A finite set of transitions that specifies for each state and for each symbol of the input alphabet, which state to go to next.
14
例:下图是一个NDFA,它所识别的是所有含有相 继两个a或相继两个b的字。
15
例子 NFA M=({S,P,Z},{0,1},f,{S,P},{Z}) 其中 f(S,0)={P} f(Z,0)={P} f(P,1)={Z} f(Z,1)={P} f(S,1)={S,Z}
16
状态图表示
1S 0
9
3.1.3 自动机的等价性
对于*中的任何字 ,若存在一条从初态结点 到某一终态结点的通路,且这条通路上所有弧的标 记符连接成的字等于 ,则称可为 DFA M所识别 (读出或接受)若M的初态结点同时又是终态结点, 则空字可为M所识别(或接受)。DFA M所能识别的 字的全体记为L(M)。
对于任给的DFA A1和A2,若L(A1)=L(A2),称 自动机A1与A2等价。P37 例3.5。
13
对于∑*中的任何一个字,若存在一条从某一 初态结点到某一终态结点的通路,且这条通路上所 有弧的标记字依序连接成的字(忽略那些标记为的 弧)等于,则称可为NDFA M所识别。若M的某些 节点既是初态结点又是终态结点,或者是存在一条 从某个初态结点到某个终态结点的的通路,那么, 空了可为M所接受。
4
3.1.1 状态转换表
14
例:下图是一个NDFA,它所识别的是所有含有相 继两个a或相继两个b的字。
15
例子 NFA M=({S,P,Z},{0,1},f,{S,P},{Z}) 其中 f(S,0)={P} f(Z,0)={P} f(P,1)={Z} f(Z,1)={P} f(S,1)={S,Z}
16
状态图表示
1S 0
9
3.1.3 自动机的等价性
对于*中的任何字 ,若存在一条从初态结点 到某一终态结点的通路,且这条通路上所有弧的标 记符连接成的字等于 ,则称可为 DFA M所识别 (读出或接受)若M的初态结点同时又是终态结点, 则空字可为M所识别(或接受)。DFA M所能识别的 字的全体记为L(M)。
对于任给的DFA A1和A2,若L(A1)=L(A2),称 自动机A1与A2等价。P37 例3.5。
13
对于∑*中的任何一个字,若存在一条从某一 初态结点到某一终态结点的通路,且这条通路上所 有弧的标记字依序连接成的字(忽略那些标记为的 弧)等于,则称可为NDFA M所识别。若M的某些 节点既是初态结点又是终态结点,或者是存在一条 从某个初态结点到某个终态结点的的通路,那么, 空了可为M所接受。
4
3.1.1 状态转换表
第3章词法分析与有穷自动机0316 优质课件
3.2 词法分析程序的输出形式
单词的种类 (1)关键字:if、for、while (2)标识符: (3) 常数: (4) 运算符:+、-、* (5)分界符:, 、;、(、)
编译原理
2019年12月7日
词法分析程序的输出形式-----二元式
单词类别 单词的属性值
单词类别可以用整数编码表示:一类一种或一字一种
单词类别
关键字 标识符 常数 运算符 分界符
编译原理
编码
1 2 3 4 5
2019年12月7日
• 单词符号属性的值:
单词自身符号的机内编码。 关键字、运算符、界符:只输出其种别码即可。 标识符:自身字符串的值,长度受限制。 常数:本身的值。字符型输出字符串本身,数值型,输出其自 身的二进制。 • 对于标识符和常数,若要建符号表,则输出其在符号表的入口地 址。
正规式相等 这两个正规式表示的语言相等
编译原理
2019年12月7日
正规式举例
• 例:设有字母表 ∑={a,b},根据正规式与正规集的定义,有以 下的正规式和正规集
正规式
正规集
a
{a}
a∣b
{a,b}
ab
{ab}
( a∣b)( a∣b)
{aa,ab,ba,bb}
a*
{ε,a,aa,aaa,…,任意个a的串}
(a∣b)*
{ε,a,b,aa,ab,ba,bb,…所有a,b组成的串}
(a︱b) *(aa︱bb) (a︱b) * ∑*上所有含两个连续的a 或两 个连续的b组成的串
编译原理
2019年12月7日
【例】Σ={d,·,e,+,-} 则Σ上的正规式
d*(·dd*∣ε)(e(+∣- ∣ε)dd*∣ε)表示的是实数。 其中d为0~9中的数字。比如:2,12.59,3.6e2和 471.88e-1等等都是该正规集所表示集合中的元素。
第3章 词法分析与有穷自动机PPT课件
或作为一个联合
typedef struct {
TokenType tokenval;
unon { char* stringval;
int numval; } attribute;
} TokenRecord;
10
【例】试给出程序段 if (a>1) b = 100;输出 的单词符号串。
假定基本字、运算符和界符都是一符一种,标识符自身 的值是字符串,常数是二进制值。
(2,)
基本字 if
(29,)
左括号 (
(10,‘a’)
标识符 a
(23,)
大于号 >
(11,‘1’的二进制)
常数 1
(30,)
右括号 )
(10,‘b’)
标识符 b
(17,)
赋值号 =
(11,‘100’的二进制) 常数 100
(26,)
分号 ;
11
【例】考虑下述 C++ 代码段:
另一种 表示
while ( i >= j ) i--;
第三章 词法分析
人们理解一篇文章(或一个程序)起码是在单 词的级别上来思考的。同样,编译程序也是在单 词的级别上来分析和翻译源程序的。词法分析的 任务是:从左至右逐个字符地对源程序进行扫描, 产生一个个的,把作为字符串的源程序改造成为 单词符号串的中间程序。因此,词法分析是编译 的基础。
执行词法分析的程序称为词法分析器。本章讨 论词法分析程序的手工构造方法和自动构造方法。
将字符组合成记号与在一个英语句子中将字母构成单词 并确定单词的含义很相像,此时的任务很像拼写。
5
程序语言的单词符号一般可分为下列五种:
1) 关键字:是由程序语言定义的具有固定意义的标识符, 也称保留字或基本字。如Pascal中的 begin、end、 if、integer等,C 中的if、else、do、while, C++ 中的class、int、switch、break等都是保 留字,它们一般不用作一般标识符。
第3章 有穷自动机
形如U→aW的规则,引一条从状态U到W的a弧。
33
正规文法FA
给定文法G[S]: S→aS|aA|bB A→bA|cC B→aB|dD C →cC|c D →dD|d 给出其对应的状态转换图。S是开始状 态,Z是终止状态.图3.16 FA
34
FA正规文法
①自动机A中的每一个状态均作为G的非终结符号,
q1 q2
q5 q6 q6 q4 q6
26
q3 q4 q3
NFA到DFA的转换 ③ 利用子集法构造确定的有穷自动机
假设已知的NFA为(Q′,Σ′,t′,Q0′,F′)。与NFA等 价的DFA为(Q,Σ,t,Q0,F)。 Σ:可由NFA所含有的输入字母集合得到。 Q:由Q ′的一些子集组成。 Q0:是包含NFA的开始状态在内的Q ′的一个子集。 F:由包含NFA的终止状态F ′在内的Q ′的一些子集组 成。
31
DFA化简举例
G 0 0 I
0
start
F 1
1
0
1
0
H
1
J
1
32
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A。
令G的终结符号集为A的字母表;
G的非终结符号作为A的状态,G的开始符号为A的开始 状态;
增加一个终止状态Z(ZVN);
形如U→a的规则,引一条从状态U到终止状态Z的标记为a 的 弧;
a T U T V W S b
a a Z b
15
a b
B a
a
3.1.4非确定的有穷自动机NDFA的形式定义 非确定的有穷自动机NFA
NFA=(Q,∑,t, Q0,F) Q——有穷非空的状态集 。
33
正规文法FA
给定文法G[S]: S→aS|aA|bB A→bA|cC B→aB|dD C →cC|c D →dD|d 给出其对应的状态转换图。S是开始状 态,Z是终止状态.图3.16 FA
34
FA正规文法
①自动机A中的每一个状态均作为G的非终结符号,
q1 q2
q5 q6 q6 q4 q6
26
q3 q4 q3
NFA到DFA的转换 ③ 利用子集法构造确定的有穷自动机
假设已知的NFA为(Q′,Σ′,t′,Q0′,F′)。与NFA等 价的DFA为(Q,Σ,t,Q0,F)。 Σ:可由NFA所含有的输入字母集合得到。 Q:由Q ′的一些子集组成。 Q0:是包含NFA的开始状态在内的Q ′的一个子集。 F:由包含NFA的终止状态F ′在内的Q ′的一些子集组 成。
31
DFA化简举例
G 0 0 I
0
start
F 1
1
0
1
0
H
1
J
1
32
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A。
令G的终结符号集为A的字母表;
G的非终结符号作为A的状态,G的开始符号为A的开始 状态;
增加一个终止状态Z(ZVN);
形如U→a的规则,引一条从状态U到终止状态Z的标记为a 的 弧;
a T U T V W S b
a a Z b
15
a b
B a
a
3.1.4非确定的有穷自动机NDFA的形式定义 非确定的有穷自动机NFA
NFA=(Q,∑,t, Q0,F) Q——有穷非空的状态集 。
自动机与形式语言第三章epsilon-NFA
2019/10/20
8
ε-NFA状态的闭包
• ε-CLOSURE(q)= 从状态q出发,跟随ε标
记的弧所能到达的状态的集合。 ε
• 例: ε-CLOSURE(A)= {A};
ε-CLOSURE(E)= {B, C, D, E}.
1
1
1B
C
D
A εε 0
• 状态集合的闭包ε-CLOSURE(P) 0
DFA NFA ε-NFA RE RG
正则语言 (RL)
2019/10/20
1
3.4 带空移动的有穷状态自动机
• 接受语言{0n1m2k|n,m,k≥0}的NFA
2019/10/20
2
3.4 带空移动的有穷状态自动机
• 允许带ε 输入的状态跳转 • 这些状态跳转可以同时进行,无需输入字
E
F
0
= 集合P中所有元素的ε闭包的集合
例: ε-CLOSURE({A,E})= {A,B,C,D,E};
9
3.4 带空移动的有穷状态自动机
⑴ ε -CLOSURE(q)={p|从q到p有一条标记为ε 的路}。
(2) CLOSURE (P) CLOSURE ( p)
pP
2019/10/20
13
3.4 带空移动的有穷状态自动机
• 对任意(P,a)∈2 Q×∑。
(5) (P, a) (q, a)
qP
(6)ˆ(P, w) ˆ(q, w)
qP
2019/10/20
14
3.4 带空移动的有穷状态自动机
• 在ε -NFA中,对任意a∈∑,q∈Q,
ˆ(q, a) (q, a)
D
形式语言与自动机_课件_陈有祺第03章 有穷自动机
定义3.7 给出NFA M=(Q,∑,δ,q0 , F),若δ(q0,x)∩F非空( x∈∑*),则称字符串x被M接受。被NFA M接受的全体字符串称 为M接受的语言,记作L(M)。也就是 L(M)={x∣x∈∑*,且δ(q0,x)∩F非空}。
从定义3.7可知,在δ(q0,x)的众多状态中,只要有一个状态属于 终结状态集F,则x就被该NFA M接受。如对例3.4中的NFA,字 符串01001是被接受的,因为δ(q0 ,01001)={q0,q1,q4} ,而 q0∈F。但字符串010是不被接受的,因为δ(q0 ,010)={q0,q3} ,其中没有一个状态在F中。
从给定集合构造接受该集合的FA
实现上述思路的FA M1如图所示
初始状态标记为“1”,表示要么还没有读入符号,要么刚读过符号1。对 于“0”状态遇1,“01” 状态遇0,“010”状态再遇0或1的情况,上 面已经做了解释。其他情况是:“0”状态遇0,此时应当保持在“0”状 态,意味着刚读过的符号是0;再有“01”状态遇1,表示这次的期望“ 半途而废”,只能从头再来,所以转回到“1”状态。
形式语言与自动机
第三章 有穷自动机
非形式化描述 有穷自动机的基本定义 非确定的有穷自动机 具有ε转移的有穷自动机 有穷自动机的应用 具有输出的有穷自动机
有穷状态系统
指针式钟表共有12*60*60个状态
围棋共有3361个状态
电梯的控制结构
某些电子产品中的开关电路,具有n个门的开关网络有 2n种状态
分析:x∈L当且仅当把x看成二进制数时,x模5与0同余。换句话说,x 要能被5整除。例如,0,101,1010,1111等都能被5整除,而10, 11,100,110等都不能被5整除。
当二进制数x的位数向右不断增加时,它的值(换算成十进制)的增加很 有规律:x0的值等于2x,x1的值等于2x+1。
从定义3.7可知,在δ(q0,x)的众多状态中,只要有一个状态属于 终结状态集F,则x就被该NFA M接受。如对例3.4中的NFA,字 符串01001是被接受的,因为δ(q0 ,01001)={q0,q1,q4} ,而 q0∈F。但字符串010是不被接受的,因为δ(q0 ,010)={q0,q3} ,其中没有一个状态在F中。
从给定集合构造接受该集合的FA
实现上述思路的FA M1如图所示
初始状态标记为“1”,表示要么还没有读入符号,要么刚读过符号1。对 于“0”状态遇1,“01” 状态遇0,“010”状态再遇0或1的情况,上 面已经做了解释。其他情况是:“0”状态遇0,此时应当保持在“0”状 态,意味着刚读过的符号是0;再有“01”状态遇1,表示这次的期望“ 半途而废”,只能从头再来,所以转回到“1”状态。
形式语言与自动机
第三章 有穷自动机
非形式化描述 有穷自动机的基本定义 非确定的有穷自动机 具有ε转移的有穷自动机 有穷自动机的应用 具有输出的有穷自动机
有穷状态系统
指针式钟表共有12*60*60个状态
围棋共有3361个状态
电梯的控制结构
某些电子产品中的开关电路,具有n个门的开关网络有 2n种状态
分析:x∈L当且仅当把x看成二进制数时,x模5与0同余。换句话说,x 要能被5整除。例如,0,101,1010,1111等都能被5整除,而10, 11,100,110等都不能被5整除。
当二进制数x的位数向右不断增加时,它的值(换算成十进制)的增加很 有规律:x0的值等于2x,x1的值等于2x+1。
《编译原理》第3章 词法分析与有穷自动机PPT课件
式和正规集的基本概念和它们之间的关系。 5. 掌握词法分析程序的手工实现方法。 6. 掌握词法分析程序的自动构造原理。
教学内容
3.1 词法分析的任务 3.2 词法分析程序的输出形式 3.3 词法分析程序的设计与实现 3.4 正规式与有穷自动机 3.5 词法分析程序的自动生成工具LEX 3.6 PL/0编译程序的词法分析
G[D]: D→ int L | float L L→ L, id | id
3.4.3 有穷自动机
状态图的形式化描述
读字符
字母、数字
查保留字表
S 字母 1
非字母数字
标识符
数字
数字 2
非数字
无符号整数
+*, 3 ()
其他字符 非=
<4 =
5 其他字符 出口
其他
出错
返回S
单界符 双界符
• 有穷自动机是一种数学模型,具有离散的输入与输出, 系统可处于有穷状态中的任何一个
单词类别
编码
关键字
1
标识符
2
常数
3
运算符
4
分界符
5
3.3 词法分析程序的设计与实现
词法规则
状态图
词法分析程序
3.3.1 正规文法及其状态图
1.状态图:为识别单词而专门设计的有向图, 是设计词法分析程序的一种好途径。
结点代表状态,用圆圈表示,为非终结符
有向弧表示状态转移
弧上的标记表示在射出弧的结点状态下可能出现的输入字
DFA M所接受的语言为:L(M)={α|f(S, α)=Sn, Sn ∈Z}
DFA M所能接受的符号串的全体记为L(M)
DFA的状态图表示:
a1 a
教学内容
3.1 词法分析的任务 3.2 词法分析程序的输出形式 3.3 词法分析程序的设计与实现 3.4 正规式与有穷自动机 3.5 词法分析程序的自动生成工具LEX 3.6 PL/0编译程序的词法分析
G[D]: D→ int L | float L L→ L, id | id
3.4.3 有穷自动机
状态图的形式化描述
读字符
字母、数字
查保留字表
S 字母 1
非字母数字
标识符
数字
数字 2
非数字
无符号整数
+*, 3 ()
其他字符 非=
<4 =
5 其他字符 出口
其他
出错
返回S
单界符 双界符
• 有穷自动机是一种数学模型,具有离散的输入与输出, 系统可处于有穷状态中的任何一个
单词类别
编码
关键字
1
标识符
2
常数
3
运算符
4
分界符
5
3.3 词法分析程序的设计与实现
词法规则
状态图
词法分析程序
3.3.1 正规文法及其状态图
1.状态图:为识别单词而专门设计的有向图, 是设计词法分析程序的一种好途径。
结点代表状态,用圆圈表示,为非终结符
有向弧表示状态转移
弧上的标记表示在射出弧的结点状态下可能出现的输入字
DFA M所接受的语言为:L(M)={α|f(S, α)=Sn, Sn ∈Z}
DFA M所能接受的符号串的全体记为L(M)
DFA的状态图表示:
a1 a
第3章 有穷状态自动机 计算机专业 形式语言课件
因为a可能需要用来判定输入串的最初45个字符组成的子串是否满足语言的要当i45也就是m读到输入串的第45个字符时在a3的情况下m需要将a201111195532当i6也就是m读到输入串的第6个字符此时以前读到的第1个字符a就没有用了此时它要看a3是否成立如果成立m需要将a201111195632i4的考察并发现它满足语言的要求时m记下来的是i4此时它读入输入串的第i5个字符i5以前读到的第i个字符a就没有用了此时它要看ai1i53是否成立如果成立m需要将ai1下来
2021/4/26
19
3.2有穷状态自动机
• 例 3-2 构造一个DFA,它接受的语言为 {x000y|x,y∈{0,1}*}
q0——M的启动状态; q1—第—1个M0读;到了一个0,这个0可能是子串“000”的
q2—是—子M串在“q001后0”紧的接第2着个又0;读到了一个0,这个0可能
q3—符—串M含在有q子2后串紧“接00着0”又;读因到此了,一这个个0状,态发应现该输是入字终 止状态。
2021/4/26
7
3.1 语言的识别
• ⑷ 系统中有一个状态,它是系统的开始状 态,系统在这个状态下开始进行某个给定 句子的处理。
• ⑸ 系统中还有一些状态表示它到目前为止 所读入的字符构成的字符串是语言的一个 句子,把所有将系统从开始状态引导到这 种状态的字符串放在一起构成一个语言, 该语言就是系统所能识别的语言。
– 定义。 – ε-NFA与DFA的等价性。
• FA是正则语言的识别器
– 正则文法(RG)与FA的等价性。 – 相互转换方法。 – 带输出的有穷状态自动机。 – 双向有穷状态自动机。
2021/4/26
2
第3章 有穷状态自动机
• 重点:DFA的概念,DFA、NFA、ε-NFA 、 RG之间的等价转换思路与方法。
2021/4/26
19
3.2有穷状态自动机
• 例 3-2 构造一个DFA,它接受的语言为 {x000y|x,y∈{0,1}*}
q0——M的启动状态; q1—第—1个M0读;到了一个0,这个0可能是子串“000”的
q2—是—子M串在“q001后0”紧的接第2着个又0;读到了一个0,这个0可能
q3—符—串M含在有q子2后串紧“接00着0”又;读因到此了,一这个个0状,态发应现该输是入字终 止状态。
2021/4/26
7
3.1 语言的识别
• ⑷ 系统中有一个状态,它是系统的开始状 态,系统在这个状态下开始进行某个给定 句子的处理。
• ⑸ 系统中还有一些状态表示它到目前为止 所读入的字符构成的字符串是语言的一个 句子,把所有将系统从开始状态引导到这 种状态的字符串放在一起构成一个语言, 该语言就是系统所能识别的语言。
– 定义。 – ε-NFA与DFA的等价性。
• FA是正则语言的识别器
– 正则文法(RG)与FA的等价性。 – 相互转换方法。 – 带输出的有穷状态自动机。 – 双向有穷状态自动机。
2021/4/26
2
第3章 有穷状态自动机
• 重点:DFA的概念,DFA、NFA、ε-NFA 、 RG之间的等价转换思路与方法。
第3章 有穷自动机共45页
(c)
空移环路的消除
• 找到空移环路之后,要消除它只要把空移环路上 所有结点q1,q2,…,qn合成一个结点,并消除它们 所有的弧。如果其中的某一个结点qi(i=1或 2,…,n)是开始结点或终止结点,则将此合并后的 新结点相应地设置为开始状态或终止状态。
例3.8
q0
a
q1
q2
则L(A)=L(B)={(ab)n|n1}, 所以自动机A,B等价。
非确定的有穷自动机NDFA
• 定义3.5 一个非确定的有穷自动机是一个五 元组,NDFA=Q,,t,Q0,F,其中Q 为状态的有穷非空集, 为有穷输入字母 表,t为Q 到Q的子集(多值映射), Q0Q是初始状态集,F Q为终止状态集。
例3.5 DFA A=({q0,q1}, {a,b}, t, q0, {q0} ), 其中 t(q0,a)=q1, t(q1,b)=q0.
DFA B=({q0’,q1’,q2’}, {a,b}, t’, q0’, {q2’} ), 其中 t’(q0’,a)=q1’, t’(q1’,b)=q2’, t’(q2’,a)=q1’.
有穷自动机DFA定义:
一个确定的有穷自动机(DFA)M是一个五元组:M=(Q, Σ,t,q0,F)其中
✓ 1 Q是一个有穷集,它的每个元素称为一个状态;
✓ 2 Σ是一个有穷字母表,它的每个元素称为一个输入符 号,所以也称Σ为输入符号字母表;
✓ 3 t是转换函数,是在Q×Σ→Q上的映射,即,如 t(qi, a)=qj,(qi,qjQ)就意味着,当前状态为qi,输入 符为a时,将转换为下一个状态qj,我们把qj称作qi的一 个后继状态;
例子
NDFA N=({S,P,Z},{0,1},t,{S,P}, {Z})
第03章有穷状态自动机-电子科技大学
nfadfa0101dfanfa1637状态说明状态输入字符减少工作量的方法只列出可达状态的转移即填表时不需要填完填表时可用01代替q总是不可达的可将该状态对应的转移去掉说明这种记法主要是为了保持上下文一致实际上它与q画出nfa状态转移图
即时描述
设M = (Q, , , q0, F)为一个FA,x, y *, (q0, x)=q,xqy称为M的一个即时描述。 它表示xy是M 正在处理的一个字符串,x引导M 从q0启动并到达状态q,当前正指向y的首字符。 如果xqay是M的一个即时描述,且(q, a)=p,则 经过字符a的处理后,即时描述变为xapy。这一 过程记作: xqay
证明思路
(1) 显然,DFA是NFA的特殊形式;即所有 的DFA已经用NFA的形式表示; (2) 需要证明对于任意给定的NFA,存在与 之等价的DFA。
根据NFA构造DFA,将状态集合从Q变换到2Q, 这样DFA中的任意一个状态实际上是NFA中某 些状态的组合(这里避免使用术语“集合”)。 使用归纳法证明DFA与NFA的状态转移存在一 一对应关系。 证明由DFA和NFA能识别相同的语言。 L(M1) = L(M2)
作为对DFA的修改 q1 0 0 S 1 0 q0 1 1 q2
构造接受语言
0,1
q3
L={x| x{0,1}*,且 x含有子串00或11}的DFA
“直接”的FA
q1
0,1
S q0
0 1
0 1
0,1
q3
q2 希望是接受语言 L={x| x{0,1}*,且 x含有子串00或11}的FA
与DFA的区别
当这个子集为空时,表示没有状态与之对应;
当这个子集的元素个数大于1时,表示有多个状 态与之对应。
即时描述
设M = (Q, , , q0, F)为一个FA,x, y *, (q0, x)=q,xqy称为M的一个即时描述。 它表示xy是M 正在处理的一个字符串,x引导M 从q0启动并到达状态q,当前正指向y的首字符。 如果xqay是M的一个即时描述,且(q, a)=p,则 经过字符a的处理后,即时描述变为xapy。这一 过程记作: xqay
证明思路
(1) 显然,DFA是NFA的特殊形式;即所有 的DFA已经用NFA的形式表示; (2) 需要证明对于任意给定的NFA,存在与 之等价的DFA。
根据NFA构造DFA,将状态集合从Q变换到2Q, 这样DFA中的任意一个状态实际上是NFA中某 些状态的组合(这里避免使用术语“集合”)。 使用归纳法证明DFA与NFA的状态转移存在一 一对应关系。 证明由DFA和NFA能识别相同的语言。 L(M1) = L(M2)
作为对DFA的修改 q1 0 0 S 1 0 q0 1 1 q2
构造接受语言
0,1
q3
L={x| x{0,1}*,且 x含有子串00或11}的DFA
“直接”的FA
q1
0,1
S q0
0 1
0 1
0,1
q3
q2 希望是接受语言 L={x| x{0,1}*,且 x含有子串00或11}的FA
与DFA的区别
当这个子集为空时,表示没有状态与之对应;
当这个子集的元素个数大于1时,表示有多个状 态与之对应。
第03章 有穷状态自动机-19、20、21节课-2011-10-22
由于这里的陷井状态不是终止状态,它可以 在文法中被删除。化简后文法:
q0 0q1
q1 0q1 | 1q2 q2 1q2 | 2q3| 2 q3 2q3| 2
练习(见习题)
20(左图)
习题评讲
q0 0q1 | 1q3 | 1 q1 0q0 | 1q3| 1 q2 1q0 | 0q3| 0 q3 0q1 | 1q1
Ø {q1} Ø Ø Ø {q2}
M接受(识别)的语言
M接受(识别)的语言 对于x∈∑*,仅当
时,称x被M接受。
*
ˆ ( q0 , x ) F
ˆ L(M ) {x | x 并且 (q0 , x) F }
定理3-2
-NFA与NFA等价。
证明思路: (1) 显然, NFA是-NFA的特殊形式;即所 有的NFA 已经用-NFA的形式表示; (2) 需要证明对于任意给定的-NFA ,存在 与之等价的NFA 。
定理3-4(续)
对(a,A)∈T×V
{B|AaB∈P}∪{Z} 如果Aa∈P 如果AaP
δ(A,a)=
{B|AaB∈P}
用B∈δ(A,a)与产生式AaB对应 用Z∈δ(A,a)与产生式Aa对应。
注意
ε-CLOSURE(q)与δ(q,ε)不同
定义3-9
带空移动的不确定的有穷状态自动机(nondeterministic finite automaton with -moves, NFA) M是一个五元组: M = (Q, , , q0, F) 其中,Q, , q0, F 状态的意义同DFA (定义3-1)。
定理3-2(续)
设有-NFA M1 = (Q, , 1, q0, F) (1) 构造与之等价的NFA 取 NFA M2 = (Q, , 2, q0, F2),其中 F2 = F {q0} 如果F -CLOSURE(q0) Ø F 如果F -CLOSURE(q0) =Ø
q0 0q1
q1 0q1 | 1q2 q2 1q2 | 2q3| 2 q3 2q3| 2
练习(见习题)
20(左图)
习题评讲
q0 0q1 | 1q3 | 1 q1 0q0 | 1q3| 1 q2 1q0 | 0q3| 0 q3 0q1 | 1q1
Ø {q1} Ø Ø Ø {q2}
M接受(识别)的语言
M接受(识别)的语言 对于x∈∑*,仅当
时,称x被M接受。
*
ˆ ( q0 , x ) F
ˆ L(M ) {x | x 并且 (q0 , x) F }
定理3-2
-NFA与NFA等价。
证明思路: (1) 显然, NFA是-NFA的特殊形式;即所 有的NFA 已经用-NFA的形式表示; (2) 需要证明对于任意给定的-NFA ,存在 与之等价的NFA 。
定理3-4(续)
对(a,A)∈T×V
{B|AaB∈P}∪{Z} 如果Aa∈P 如果AaP
δ(A,a)=
{B|AaB∈P}
用B∈δ(A,a)与产生式AaB对应 用Z∈δ(A,a)与产生式Aa对应。
注意
ε-CLOSURE(q)与δ(q,ε)不同
定义3-9
带空移动的不确定的有穷状态自动机(nondeterministic finite automaton with -moves, NFA) M是一个五元组: M = (Q, , , q0, F) 其中,Q, , q0, F 状态的意义同DFA (定义3-1)。
定理3-2(续)
设有-NFA M1 = (Q, , 1, q0, F) (1) 构造与之等价的NFA 取 NFA M2 = (Q, , 2, q0, F2),其中 F2 = F {q0} 如果F -CLOSURE(q0) Ø F 如果F -CLOSURE(q0) =Ø
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态说明
状态
输入字符
0
开始状态
q0
q1
q1
q2
终止状态
q2
q1
2020/10/3
13
3.2有穷状态自动机
M2=({q0,q1,q2,q3},{0,1,2},δ2,q0,{q2}) δ2(q0,0)= q1,δ2(q1,0)= q2 δ2(q2,0)= q1,δ2(q3,0)= q3 δ2(q0,1)= q3,δ2(q1,1)= q3 δ2(q2,1)= q3,δ2(q3,1)= q3 δ2(q0,2)= q3,δ2(q1,2)= q3 δ2(q2,2)= q3,δ2(q3,2)= q3
2020/10/3
8
3.1 语言的识别
• 相应的物理模型
一个右端无穷的输入带。 一个有穷状态控制器(finite state control,FSC) 。 一个读头。
• 系统的每一个动作由三个节拍构成:读入 读头正注视的字符;根据当前状态和读入 的字符改变有穷控制器的状态;将读头向 右移动一格。
2020/10/3
q0——q0∈Q,是M的开始状态(initial state), 也可叫做初始状态或者启动状态。
2020/10/3
11
3.2有穷状态自动机
δ——状态转移函数(transition function),有 时候又叫做状态转换函数或者移动函数。δ: Q×∑Q,对(q,a)∈Q×∑,δ(q,a)=p 表示:M在状态q读入字符a,将状态变成p, 并将读头向右移动一个带方格而指向输入 字符串的下一个字符。
第3章 有穷状态自动机
• 主要内容 • 确定的有穷状态自动机(DFA)
– 作为对实际问题的抽象、直观物理模型、形式 定义,DFA接受的句子、语言,状态转移图。
• 不确定的有穷状态自动机(NFA)
– 定义; – NFA与DFA的等价性;
2020/10/3
1
第3章 有穷状态自动机
• 带空移动的有穷状态自动机(ε-NFA)
2020/10/3
6
3.1 语言的识别
• ⑶ 系统在任何一个状态(当前状态)下,从 输入字符串中读入一个字符,根据当前状 态和读入的这个字符转到新的状态。当前 状态和新的状态可以是同一个状态,也可 以是不同的状态;当系统从输入字符串中 读入一个字符后,它下一次再读时,会读 入下一个字符。这就是说,相当于系统维 持有一个读写指针,该指针在系统读入一 个字符后指向输入串的下一个字符。
9
3.1 语言的识别
• 有穷状态自动机的物理模型
2020/10/3
10
3.2有穷状态自动机
• 有穷状态自动机(finite automaton,FA)
M=(Q,∑,δ,q0,F) Q——状态的非空有穷集合。q∈Q,q称为
M的一个状态(state)。
∑——输入字母表(Input alphabet)。输入字符 串都是∑上的字符串。
2020/10/3
16
3.2有穷状态自动机 ˆ(q, a) ˆ(q,a)
(ˆ(q, ),a) (q, a)
两值相同,不用区分这两个符号。
2020/10/3
17
3.2有穷状态自动机
• 确定的有穷状态自动机
– 由于对于任意的q∈Q, a∈∑,δ(q,a)均有 确定的值,所以,将这种FA称为确定的有穷状 态自动机(deterministic finite automaton,DFA)
• 难点:对DFA概念的理解,DFA、RG的构 造方法, RG与FA的等价性证明。
2020/10/3
3
3.1 语言的识别
• 识别系统(模型) • ⑴ 系统具有有穷个状态,不同的状态代表
不同的意义。按照实际的需要,系统可以 在不同的状态下完成规定的任务。 • ⑵ 我们可以将输入字符串中出现的字符汇 集在一起构成一个字母表。系统处理的所 有字符串都是这个字母表上的字符串。
F——FQ,是M的终止状态(final state)集合。 q∈F,q称为M的终止状态,又称为接受 状态(accept state)。
2020/10/3
12
3.2有穷状态自动机
• 例 3-1 下面是一个有穷状态自动机
M1=({q0,q1,q2},{0},δ1,q0,{q2}) 其中,δ1(q0,0)= q1,δ1(q1,0)= q2,δ1(q2,0)= q1 用表3-1表示δ1。
– 定义。 – ε-NFA与DFA的等价性。
• FA是正则语言的识别器
– 正则文法(RG)与FA的等价性。 – 相互转换方法。 – 带输出的有穷状态自动机。 – 双向有穷状态自动机。
2020/10/3
2
第3章 有穷状态自动机
• 重点:DFA的概念,DFA、NFA、ε-NFA 、 RG之间的等价转换思路与方法。
2020/10/3
19
3.2有穷状态自动机
• 例 3-2 构造一个DFA,它接受的语言为 {x000y|x,y∈{这个0可能是子串“000”的
q2—是—子M串在“q001后0”紧的接第2着个又0;读到了一个0,这个0可能
q3—符—串M含在有q子2后串紧“接00着0”又;读因到此了,一这个个0状,态发应现该输是入字终 止状态。
2020/10/3
14
3.2有穷状态自动机
状态说明 开始状态 终止状态
表3-2 δ2转换函数
状态
输入字符
0
1
2
q0
q1
q3
q3
q1
q2
q3
q3
q2
q1
q3
q3
q3
q3
q3
q3
2020/10/3
15
3.2有穷状态自动机
• 将δ扩充为
ˆ:Q*Q
对任意的q∈Q,w∈∑*,a∈∑,定义
(1)ˆ(q,)q (2)ˆ(q,wa)(ˆ(q,w),a)
2020/10/3
7
3.1 语言的识别
• ⑷ 系统中有一个状态,它是系统的开始状 态,系统在这个状态下开始进行某个给定 句子的处理。
• ⑸ 系统中还有一些状态表示它到目前为止 所读入的字符构成的字符串是语言的一个 句子,把所有将系统从开始状态引导到这 种状态的字符串放在一起构成一个语言, 该语言就是系统所能识别的语言。
2020/10/3
18
3.2有穷状态自动机
• M接受(识别)的语言
对于x∈∑*如果δ(q,w)∈F,则称x被M接受, 如果δ(q,w)F,则称M不接受x。 L(M)={x| x∈∑*且δ(q,w)∈F}
称为由M接受(识别)的语言 L(M1)= L(M2)={02n|n≥1}
• 如果L(M1)=L(M2),则称M1与M2等价。