第三章 语法分析

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

输入带
读头
有穷控制器
3.3 正规表达式和有限自动机
确定有限自动机(DFA)的定义 确定有限自动机(DFA)的定义 (DFA)
确定的有限自动机DFA M是一个五元组 确定的有限自动机DFA M是一个五元组 =( M =(S,∑ ,δ ,s0 ,F ) 是一个非空有限集, (1) S 是一个非空有限集,它的每个元素称为一个状态 是一个有穷字母表, (2) ∑ 是一个有穷字母表,它的每个元素称为一个输 入符号, 入符号,所以也称为输入符号字母表 (3)δ是状态转换函数 是在S 是状态转换函数, (3)δ是状态转换函数,是在S×∑→S上的单值映射 (具体解释见下页) 具体解释见下页) ∈S, (4) s0 s0∈S,是唯一的一个初态 F⊆ 可空,是一个终态集, (5) F F⊆ S,可空,是一个终态集,终态也称可接受状 态或结束状态
ቤተ መጻሕፍቲ ባይዱ
3.3.2 正规文法与正规式
Z = 0A (1) 将(3)代入(2)中的B得 A = 0A + 0B (2) A = 0A + 01A + 0 (4) B = 1A + ε (3) 对(4)利用分配律得 A = (0 + 01)A + 0 (5) 对(5)使用求解规则得 A = (0 + 01)* 0 (6) 将(6)代入(1)式中的A,得 Z = 0 (0 + 01)* 0 即正规文法G[Z]所生成语言的正规式是 R = 0 (0 | 01)* 0
3.3 正规表达式和有限自动机
DFA M 所能接受的字符串的全体为
L(M)={α| 特别地: 特别地:
s00 ⇒ sj j 且sj ∈F } s ⇒ s
α α
s0 ε s0 ,则ε可为M所接, ⇒ 可为M所接, ∈F, 若s0∈F,即有 即ε∈ L(M) 若F=φ,则 L(M)=φ F=φ,
3.3 正规表达式和有限自动机
3.3.2 正规文法与正规式
对B根据规则(4)变换为 A → a*b 转换成 A → aB | bB A → aA | b B → aaB | a | b B → (aa)*(a | b) 根据规则(3)变换为 A → aB | bB B → aC | a | b C → aB 即前面例2中的文法。
3.3
和有限自动机
确定有限自动机(DFA) 3.3.2 确定有限自动机(DFA)
输 入 带 起 激 励 状 态 变 迁 的 作 用
有限自动机是具有离散输入输出系统的数学模型; 有限自动机是具有离散输入输出系统的数学模型; 它具有有穷数目的内部状态, 它具有有穷数目的内部状态,概括了对过去输入处 理的信息, 理的信息,根据当前所处状态和面临输入即可决定 系统的后继行为
M =(S,∑ ,δ ,s0 ,F ) =(
a
3.3 正规表达式和有限自动机
DFA可识别符号串 DFA可识别符号串 =( 设 DFA M =(S,∑,δ ,s0 ,F ) α 定义: 定义:若α∈ ∑*, s0, sj 且sj ∈F , ⇒
则称α可为DFA M所接受 识别,读出) 则称α可为DFA M所接受(识别,读出) 所接受( 含义: 对于∑ 若存在一条从初态结 含义:若对于∑*中的任何字α,若存在一条从初态结 某一终态结点的通路,且这条通路上所有弧的标 点s0到某一终态结点的通路,且这条通路上所有弧的标 可为DFA M所识别 所识别( 记符连接成的字等于α,则称α可为DFA M所识别(读 出或接受) 出或接受) 特别地,若初态结点同时又是终态结点, 特别地,若初态结点同时又是终态结点,则空字 ε可为DFA M所识别 可为DFA M所识别
状态——结点 状态——结点 转换函数——有向边 转换函数——有向边 输入符号——边上标记 输入符号——边上标记
si
a
sj
表示在状态s 表示在状态si, 读入符号a 读入符号a后, 状态将转换到s 状态将转换到sj
问题:怎样将DFA M转换成一张状态转换图 转换成一张状态转换图? 问题:怎样将DFA M转换成一张状态转换图?
a, b
3.3 正规表达式和有限自动机
DFA识别过程 DFA识别过程
设 DFA 定义: 定义:若 si
sj ,则 si a sj ,表示在状态si下输入符号a ⇒ 下输入符号a 可到达状态sj ,或si到sj有通路,通路上字符串为a 通路,通路上字符串为a α a si ⇒ sj , sj sk ,则 si αa sk ,表示si到sk 定义:若 定义: ⇒
非确定有限自动机NFA 3.3.3 非确定有限自动机NFA
• 定义 一个NFA M是五元式 M=(S,Σ,δ,S0,F) 一个NFA M是五元式 M=(S,Σ –S 有穷非空状态集合 S –Σ 有穷的输入字母表集合 Σ –δ 从S×∑*到S的子集的映射 –S0⊆ S 是S的非空子集,称为初始状态集合 的非空子集, S –F ⊆ S 是S的子集(可空),称为终止状态集合 的子集(可空), ),称为终止状态集合 F • NFA和DFA的不同在于 NFA和DFA的不同在于 –δ的值域是S的子集 的值域是S –开始状态有不止一个 开始状态有不止一个 –在NFA中每个结点可射出若干条弧与别的结点相 在NFA中每个结点可射出若干条弧与别的结点相 连接,每条弧用∑ 连接,每条弧用∑中的一个正规式做标记
3.3 正规表达式和有限自动机
δ— 状态转换函数,是在S×∑→S上的单值映射 状态转换函数,是在S 其中s 定义形式: 定义形式:δ(si,a)=sj,其中si∈S,sj∈S 含义: 在当前状态为s 输入符号为a 含义: 在当前状态为si,输入符号为a时,将转换为 下一状态sj,我们把sj称为si的一个后继状态 下一状态s 我们把s 称为s 状态图: 状态图:
3.3.2 正规文法与正规式
1. 正规文法到正规式的转换
(1) 将正规文法中的每个非终结符表示成关于 它的一个正规式方程,获得一个联立方程组。 (2) 依照求解规则: 若 x = αx | β (或 x = αx + β ) 则解为 x = α*β 若 x = xα | β (或 x = xα + β ) 则解为 x = βα * 以及正规式的分配律、交换律和结合律求关于 文法开始符号的正规式方程组的解。
a, b
3.3 正规表达式和有限自动机
特点:假定 含有m个状态和 特点:假定DFA M含有 个状态和 个输入字符 含有 个状态和n个输入字符 1)一个DFA可以唯一的转换成一张状态转换图; )一个 可以唯一的转换成一张状态转换图; 可以唯一的转换成一张状态转换图 2)任何一个状态结点最多只有n条弧射出,而且每条弧以 )任何一个状态结点最多只有 条弧射出, 条弧射出 不同的输入字符作标记; 不同的输入字符作标记; 3)整张图含有唯一的一个初态结点和若干个(可以是0个 )整张图含有唯一的一个初态结点和若干个(可以是 个 终态结点。 )终态结点。 a 0 b b 2 1 a b a 3
3.3.2 正规文法与正规式
例2 设有正规文法G: A → aB | bB B → aC | a | b C → aB 试给出该文法生成语言的正规式。 分析 首先给出相应的正规式方程组(方程组中用 “+”代替正规式中的“ | ” )如下: A = aB + bB (1) B = aC + a + b (2) C = aB (3)
3.3 正规表达式和有限自动机
例如有DFA 例如有DFA =({0,1,2,3},{a,b}, ,0,{3} {3}) M =({0,1,2,3},{a,b},δ,0,{3}) 其中δ定义为: δ( 其中δ定义为:δ(0,a)=1 δ(0,b)=2 δ( δ(1,a)=3 δ(1,b)=2 δ( δ(2,a)=1 δ(2,b)=3 δ( δ(3,a)=3 δ(3,b)=3 其它表示形式:状态转换矩阵和状态转换图 其它表示形式: a 0 b b 2 1 a b a 3
(2)和(3)代入(1)得 Z = Z10 + 10 + Z01 + 01 (4) 对(4)使用求解规则得 Z = (10 + 01) (10 + 01 )* 即正规文法G[Z]所生成语言的正规式是 R = (10 | 01)(10 | 01)*
3.3.2 正规文法与正规式
2. 正规式到正规文法的转换 (1) 令 VT=Σ 。 (2) 对任何正规式R选择一个非终结符Z生 成规则Z→R并令S=Z。 (3) 若a和b都是正规式,对形如 A→ab 的 规则转换成 A→aB 和 B→b 两规则, 其中B是新增的非终结符。
有通路,通路上字符串为αa。 有通路,通路上字符串为α 例如 1.状态 到状态3有通路, 状态0 1.状态0到状态3有通路, 通路上字符串为aa aa。 通路上字符串为aa。 2.状态 到状态3有通路, 2.状态0到状态3有通路, 状态0 通路上字符串为abaa 通路上字符串为abaa a 0 b b 2 1 a b a 3 a,b
3.3.2 正规文法与正规式
(4) 对已转换的文法中, 形如A → a*b 的规 则,进一步转换 成 A → aA | b 。 (5) 不断利用规则(3)和(4)进行变换,直到 每条规则最多含有一个终结符为止。
3.3.2 正规文法与正规式
例1 将 R=(a | b)(aa)*(a | b) 转换成相应的 正规文法 令A是文法开始符号,根据规则(2)变换为 A → (a | b)(aa)*(a | b) 根据规则(3)变换为 A → (a | b)B B → (aa)*(a | b)
0 1 2 3 4 a {0,3} {1} {2} {1} b {0,4} {1} {2} a,b
a,b
0
b
a
3
a
1
φ
{2}
4
b
φ
2
a,b
NFA识别过程 NFA识别过程
设 NFA M =(S,∑,δ , S0 ,F ) =( 且存在一条从某一初态到某一终态 初态到某一终态的 若α∈∑ *,且存在一条从某一初态到某一终态的通 通路上所有弧上标记连接成的字符串等于α 路,通路上所有弧上标记连接成的字符串等于α,则 可为NFA M所识别 接受) 所识别( 称α可为NFA M所识别(接受) 所能接受的字符串的全体为: NFA M 所能接受的字符串的全体为: α L(M)={α| s0 ⇒ sj 且s0 ∈S0, sj ∈F }
3.3.2 正规文法与正规式
A = aB + bB (1) B = aC + a + b (2) C = aB (3) 将(3)代入(2)中的C得 B = aaB + a + b (4) 对(4)使用求解规则得 B = (aa)*(a + b) (5) (5)代入(1)中的B得 A = (a + b)(aa)*(a + b) 即正规文法G[A]所生成语言的正规式是 R = (a | b)(aa)*(a | b)
3.3.2 正规文法与正规式
例1 设有正规文法G: Z → 0A A → 0A | 0B B → 1A | ε 试给出该文法生成语言的正规式。 分析 首先给出相应的正规式方程组(方程组中用 “+”代替正规式中的“ | ” )如下: Z = 0A (1) A = 0A + 0B (2) B = 1A + ε (3)
3.3.2 正规文法与正规式
例3 设有正规文法G: Z → U0 | V1 U → Z1 | 1 V → Z0 | 0 相应的正规式方程组为 Z = U0 + V1 U = Z1 + 1 V = Z0 + 0 (1) (2) (3)
3.3.2 正规文法与正规式
Z = U0 + V1 U = Z1 + 1 V = Z0 + 0 (1) (2) (3)
3 ε X a 5 b ε a 1 b 4 b a 2 ε 6 b a ε Y
3.3 正规表达式和有限自动机
例如 NFA M =({0,1,2,3,4},{a,b},δ,{0},{1,2}) =({0,1,2,3,4},{a,b a,b},δ,{0},{1,2}) 其中: 其中:δ(0,a)={0,3} δ(0,b)={0,4} δ(1,a)={1} δ(1,b)={1} δ(2,a)={2} δ(2,b)={2} δ(3,b)=φ 状态转换矩阵 δ(3,a)={1} 和状态转换图 δ(4,a)=φ δ(4,b)={2}
相关文档
最新文档