第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等都是保 留字,它们一般不用作一般标识符。
- 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等价。