(22)第三章 第五讲 上下文无关文法与下推自动机(简介)
第三章:上下文无关文法与下推自动机
19
②构造P1: 如果B→α∈P且不是单产生式,则对于B∈NA中的所有 A,把A→α加入P1中, ③得G1=( N1,T1, P1 ,S) 结论:对于每个单产生式得CFG G,存在一个等效的无 单产生式的文法G1 。 例: G=({E,T,F},{+,*, (,),a},p,E) E→ E+T∣T P: T→ T*F∣F F→ (E)∣a 解:G是无ε产生式文法,但有单生成式E → T,T → F ①N0={E} ②因为E→ T ∈P, F→ T ∈P,则N’={E,T,F}=NE ③同理:NT={T,F},NF={F},
2
上下文无关文法和它所描述的上下文无关语言,在定 义程序设计语言、语法分析、简化程序设计语言的翻译 等方面有重要的意义. 内容:1、上下文无关文法 2、两个范式:Chomsky 范式,Greibach范式 3、确定的下推自动机、非确定下推自动机(PA)
(Pushdown Automaton)
4、对任何CFA都能找到一种具有特有形式的 等价的CFG (Context-Free Grammar) 与上下文无关文法相应的识别器是下推自动机. 确定的下推自动机对应于上下文无关语言的一个子集(大 部分程序设计语言) 例如:程序设计语言中的嵌套结构,用CFG描述而RG不行
10
例:N={S,A,B} T={0,1} P={S→ 0,A→ 1,B→ 0} 解: (1)N0=φ (2)N'={S,A,B } (3)N0≠N‘∴N0=N‘ P={S→ 0,A→ 1,B→ 0} (4)N'=N0∪{ }=N0 ∴有用非终结符集=N0={S,A,B}
上一页
下一页
退 出
11
定理2:CFG:G=(N,T,P,S)则必可找到等效的 G1=(N1,T1,P1,S) 对x∈N1∪T1 * 存在α ,β∈(N1∪T1)*,有S⇒ α x β (证:从文法起始S能推出含X的句型) 证明: 构造G1: S∈N1 (1)若A∈N1且A→ α ∈P,则含α中的非终结符是属 于N1,终结符∈T1。 (2)重复(1),直到再没有新的符号加入N1,T1为止 (3)P1={A→α |A→α ∈P,A∈N1, α ∈(N1∪T1)*} 由G1的构造可知:
(22)第三章 第五讲 上下文无关文法与下推自动机(简介)
END
RETURN
三、上下文无关语言的判定问题 1. 空问题 上下文无关语言的空问题是可以判定的。
2. 成员问题
上下文无关语言的成员问题也是可以判定的。 3. 等价问题 上下文无关语言的等价问题是不可以判定的。
四、上下文无关文法的二义性
1. 定义
若对于上下文无关文法G产生的语言L(G),如果有句子 w∈L(G),存在两个不同的推导树,或者说对w存在两个不 同的最左或最右推导,那么就称文法G是二义的。
2={ 2 k a |k≥1}
都不是
二、上下文无关语言的性质
1.上下文无关语言的封闭性 定理21:若L1和L2是上下文无关语言,则L1∪L2也是上下 文无关语言。
(证明略) 定理22:若L1和L2是上下文无关语言,则L1L2也是上下文 无关语言。 (证明略) 定理23:若L是上下文无关语言,则L的闭包L*也是上下文 无关语言。 (证明略)
特例:在定义中只要取w2=ε,则生成式的形式变为: A→w1C , A→w3 。这显然是右线性文法。因此,右线性 文法是线性文法的特例。
五、受限型上下文无关文法
2. 顺序文法
定义:对于上下文无关文法G , 如果非终结符可以排序为: A1,A2,A3,......,An ,当P中有生成式Ak→β时,若β内不含有l < k的Al,则称G是顺序文法。 实例:设文法G=({A2},{a,b},P,A2),其中生成式P如下: A2→aA2b , A2→ε 由定义可知,该文法G是顺序文法,由它产生的语 言为: L(G)={anbn | n≥0}。(参考书第181页的例2有错) 结论:线性文法总可以设法转换为顺序文法。利用顺序文 法进行文法分析是比较方便的。这样一来,前面所有的有 关右线性文法的分析都可以转换为对顺序文法的分析。
计算理论导引习题答案
什么是时间复杂度?请举例说 明。
时间复杂度是评价算法执行时 间快慢的一个指标,通常用大O 表示法来表示。例如,对于一 个简单的顺序查找算法,其时 间复杂度为O(n),表示随着问 题规模n的增加,算法的执行时 间线性增长。
计算模型习题答案详解
习题1
解释图灵机的基本原理和工作过程。
答案
图灵机是一种理论上的计算模型,由一条无限长的纸带和一个读写头组成。读写头可以读取、写入和移动纸带上 的符号,根据当前状态和读取的符号来决定下一步的动作和状态转移。图灵机的工作过程可以模拟任何计算机程 序的执行过程。
RAM模型的扩展与优化
包括引入并行计算、分布式计算等概念,以 提高RAM模型的计算能力和效率。
其他计算模型
量子计算模型
利用量子力学原理进行计算的模型,具有在某些特定 问题上比传统计算机更高的计算效率。
生物计算模型
模拟生物体内信息处理过程的计算模型,如神经网络、 基因算法等。
光计算模型
利用光学原理进行计算的模型,具有高速并行处理和 低能耗等优点。
形式语言与自动机习题答案详解
习题1
解释什么是形式语言,并给出其定义和性质 。
答案
形式语言是பைடு நூலகம்于描述计算机程序的语法和语 义的一种数学工具。它由一组符号和一组规 则组成,可以表示各种不同类型的数据结构 和算法。形式语言具有确定性、封闭性和可 计算性等性质,这些性质使得我们可以对计
算机程序进行精确的描述和分析。
Python语言基础 掌握Python语言的基本语法、数 据类型、控制结构、函数等,以 及常用的Python库和框架。
其他编程语言 了解其他常见的编程语言,如C#、 JavaScript、Go等,以及它们的 特点和应用场景。
形式语言和自动机上下文无关文法与下推自动机课堂PPT
(3)由(q1,)(q1, 1, X) 得 [q1 ,X ,q1] 1;
(4)由(q2,)(q1, , Z0) 得 [q1 ,Z0 ,q2] ;
(5)由(q0,XZ0)(q0, 0, Z0) 得 [q0 ,Z0 ,qj] 0[q0 ,X ,qi] [qi ,Z0 ,qj] , i, j = 0,1,2;
从上下文无关文法构造等价的下推自动机
定理4.5.1(由CFG可导出PDA): 设上下文无关文法G=(N,T,P,S),产生语
言L(G),则存在PDA M,以空栈接受语言Lφ(M), 使Lφ(M)=L(G)。
证明:构造下推自动机M,使M按文法G的最左推导 方式工作。
1
从上下文无关文法构造等价的下推自动机
q0 b, A/ε
b, A/ε ε, A/ε
q1 ε, z0/ε
(3) 对①式δ(q0,a,z0)={( q0, A z0)} , ∵所有可能的状态序列为:q0q0,q1q0,q0q1,q1q1 ∴可构造出产生式:
[q0,z0,q0]→ a [ q0,A, q0 ][ q0,z0, q0 ] [q0,z0,q0]→ a [ q0,A, q1 ][ q1,z0, q0 ] [ q0,z0,q1]→ a [ q0,A, q0 ][ q0,z0, q1 ] [ q0,z0,q1]→ a [ q0,A, q1 ][ q1,z0, q1 ]
then A w.
归纳于 (q, w,A)├*(q, , ) 的步数 n.
基础 n=1,必有 w = ,且 A 为 G 的产生式,所以 A w.
归纳 n>1,设第一步使用产生式 AX1X2…Xm , 可以将w 分为 w = w 1 w 2… w m ,满足 (q, wi , Xi )├*(q, , ),
计算理论第3章
下面证明此算法的有效性。 显然对任何变元A∈NEWVN,不论A是在第⑵步还是在第 ⑸步加入到NEWVN中的,都有派生A*w,其中w∈VT*。 只证明G中任何派生A*w,w∈VT*,必有A∈NEWVN。 (对派生的步数归纳证明) a)若此派生是一步完成的,即有Aw,则说明P中有产 生式Aw,于是A在算法的第⑵步被添加到NEWVN中。 b)假设G中派生A*w是少于k步完成的,则A∈NEWVN。 c)当G中有k步派生AX1X2 …Xnk-1w,不妨设 w=w1w2 …wn,其中Xi*wi,(i=1,2,…,n),而且由于这些 派生的步数少于k步,如果Xi是变元,则根据假设b)得Xi 最终会加入到NEWVN中。在执行算法的第⑷步时 OLDVN:=NEWVN,当最后一个Xi加入OLDVN时,在执 行算法的第⑸步时,就将A加入到NEWVN中。
149
2.构造P’:是由P中只含有(VN’∪VT’)中的符号的 产生 式构成的。 3.证明L(G)=L(G’) a)显然有L(G’)L(G),因为VN’VN,VT’VT, P’ P,所以G’中任何派生S*w,在G中也有S*w。所以 L(G’)L(G)。 b)证明L(G)L(G’),任取w∈L(G),不妨设w在G中的 派生为S*αXβ*w,其中α,β∈(VN∪VT)*,由上 述算法可知,在此派生中出现的所有符号,都不会因为 对G使用此引理而被去掉,所以这些符号必在VN’∪V T’ 中,此派生中所用到的产生式也在P’中,所以这个派生 在G’中也可以实现,因而必有w∈L(G’)。 故 150 L(G)L(G’)。
解:先对G应用引理3-2.1方法处理,执行此算法得到的 结果如表3-2.2所示。 循环次数i OLDVN NEWVN 初值 Φ {S,A} 1 {S,A} {S,A }
152
3第三章 上下文无关文法及分析1
例 设有文法 G2=(VN,VT,P,S) 其中,VN={A}、VT={a}、P={ A→Aa, A→ } 试问:此文法描述的语言L(G2)=?
解:由于从开始符号A出发,可以有 AAaa=a AAa Aaa aa=aa AAa Aaa Aaaa =aaa =aaa 得L(G2)={a,aa,aaa,aaaa,}={an,n>1}
其中符号“*”表示经过0步或多步推导(S=u则称 为0步推导,而Su则称为1步推导,“+”则称为 一步或多步推导)。
仅含终结符的句型称为句子。
• 语言的形式化定义
文法G所描述的语言用L(G)表示,它由文法G所产 生的全部句子组成,即:
L(G)={w|wVT+ 且S+w } 这个定义式的意义如下: (1)符号串w是从开始符号推导出来的; (2)w仅由终结符号组成; (3)w称为该语言的句子; (4)L(G)是由所有这样的句子构成的。
• 问题:属于VT+的符号串x,是否一定属于L(G)?
例 设有文法 G1=(VN,VT,P,S) 其中,VN={A}、VT={a}、P={A→a} 试问:此文法描述的语言L(G1)=?
解:由于从开始符号A出发,只能推导出一个句子 a,所以 L(G1)={a},因此文法G1所定义的语言 L(G1)是有穷语言。 由于VT+ ={a,aa,aaa, },因此L(G1)只是 VT+ 的一个真子集。
第3章
语言和上下文无关文法及分析
主要内容
文法及语言的表示及定义 分析过程 分析树与抽象语法树 二义性 文法的扩展表示:EBNF和语法图 TINY语言的语法
• 什么是语言? • 如何描述语言? • 如何识别语言中的句子?
• 语言的定义
编译原理课程设计之第三章上下文无关文法及分析
14
无关文法及分析
1. 上下文无关文法(即2型文法)的形式定义:
上下文无关文法是一个四元组(VT , VN , P , S):
① ②
终非结终符 结集 符合 集合VTVN(与VT产的不生左相式部交)
产生式 的右部
③ 产生式或文法规则A→α形成的集合P,
其中A∈VN,α∈(VT∪VN)* 4) 开始符号S,其中S∈VN
25
无关文法及分析
3.2 上下文无关文法的形式定义
1. 上下文无关文法(即2型文法)的形式定义 2. chomsky文法的分类 3. 推导和规约的定义 4. 句型和句子的定义 5. 最左和最右推导 6. 文法定义的语言 7. 递归产生式和递归文法 8. 文法和语言
mcy
编译原理课程设计之第三章上下文
mcy
编译原理课程设计之第三章上下文
1
无关文法及分析
第三章 上下文无关文法及分析
本章的目的是为语言的语法 描述寻求形式工具,要求该 工具对程序设计语言给出精 确无二义的语法描述。
mcy
编译原理课程设计之第三章上下文
2
无关文法及分析
第三章 上下文无关文法及分析
✓3.1 语法分析过程 ▪ 3.2 上下文无关文法的形式定义
下面的2型文法描述了包含加法、减法和乘法的简 单整型算术表达式的语法结构。
文法G[exp]:
exp → exp op exp exp →(exp) exp → number
34-3 是符合该 语法结构的简单 整型算术表达式 (句子)吗?
op → + | - | *
mcy
编译原理课程设计之第三章上下文
令G是一个如上所定义的文法,则G=(VT,VN,P,S)
编译原理-西安交通大学(冯博琴)第三章上下文无关文法
2、二义性问题
定义:
文法G的某一句子有两棵不同的树,则G为二义的。
二义性对语法分析不便,因此希望:
1)判定二义否 2)无二义性的充分条件 3)如何消除二义性
解决办法:尽量去掉二义性
①如对上例,可以通过阐明运算符的优先性和 结合性来解除文法的二义性
②通过重写一个文法,把结合性和优先规则结 合进文法本身中去 注意到,L(G)=L(G’),G≠G’
AM20.10.1420.10.14
•
2、
。0 5:03:50 05:03:5 005:031 0/14/2 020 5:03:50 AM
每天只看目标,别老想障碍
•
3、
。20.1 0.1405: 03:500 5:03Oct-2014-Oct-20
宁愿辛苦一阵子,不要辛苦一辈子
•
4、
。05:0 3:5005: 03:500 5:03We dnesda y, October 14, 2020
树的内节点:非终结符A标记 若A ->α,则该产生式的一棵子树为 A XYZ
树的叶:非终结符|终结符,对应一个句型
语法树为语法分析提供一些新的途径
在语法树中找出文法中的概念
•内结点A •叶 •子树 •根结点 •任一次全剪 •叶子∈VT时,将叶子顺序排列
VN 文法符号 直接推导 S 句型 句子
例3 E -( id + id )的语法树
得到相同的语法树 •有的语法,对于同一句子、应用不同规则进行推
导得到不同的语法树
例4 根据文法G对句子id + id * id进行推导
①文法G E -> E+E|E*E|( E )| i
②推导1 E => E+E => id+E => id+E*E => id+id*E => id+id*id ③推导2 E => E*E => E+E*E => id+E*E => id+id*E => id+id*id
上下文无关文法
mcy
35
3.2 上下文无关文法的形式定义
1.
2. 3. 4. 5. 6. 7. 8.
上下文无关文法(即2型文法)的形式定义 chomsky文法的分类 推导和规约的定义 句型和句子的定义 最左和最右推导 文法定义的语言 递归产生式和递归文法 文法和语言
mcy
36
5. 最左和最右推导
最左推导 对于文法G[S]: S * 是一个最左推导 是指:在推导过程中的任何一步直接推导α β , 都是对字符串α 中的最左非终结符进行替换,其中 α 、β 是句型。 简单整型算术表达式文法:
mcy
20
3型文法:通常,我们把右线性文法及左线性文法
统称为3型文法或正规文法。 若文法G中任一产生式α→β的形式都为A→aB 或 A→a,其中 A∈VN ,B∈VN ,a∈VT ,则称G 为右线性文法; 类似地,如果G中仅含有形如A→Ba 或 A→a的 产生式,则称G为左线性文法;
mcy
mcy
32
4. 句型和句子的定义
定义4 句型和句子:设G=(VN , VT , P , S)是一文 法,且 V=VN∪VT 若S =>*α,α∈V*,则称α为文法G的句型;
若S=>+α,α∈VT*,则称α为文法G的句子;
mcy
33
简单整型算术表达式文法:
exp → exp op exp|(exp)|number op → +|-|* 给出算术表达式(34-3)*42的一个推导,请 列出推导过程中出现的句型和句子。
28
例:G[S]:S→0S1,S→01 直接推导: S 0S1 0S1 00S11 00S11 000S111 000S111 00001111
上下文无关
上下文无关文法的基本概念
符号的使用约定 :
6.
如果A → α1、A → α2、…、A → αk 是所 有以A为左部的产生式(称为A产生式), 则可以把它们写成A → α1|α2|…|αk,我们 将α1、α2、…、αk称为A的候选式。除非另 有说明,否则第一个产生式左部的符号是开 始符号。
上下文无关文法的基本概念
文法的设计
消除二义性 - “悬挂else”的问题
stmt → if expr then stmt | if expr then stmt else stmt | other
文法的设计
消除二义性 - “悬挂else”的问题
每个else都同其前面最近的未匹配的then相匹配 改写后的文法如下:
stmt → matched_stmt | unmatched_stmt matched_stmt → if expr then matched_stmt else matched_stmt | other unmatched_stmt → if expr then stmt | if expr then matched_stmt else unmatched_stmt
文法的设计
例 考虑下面的算术表达式文法: E→E + T |T T→T * F |F F→( E ) | id 消除E和T的直接左递归,可以得到 E → T Eˊ Eˊ→ + T Eˊ|ε T → F Tˊ Tˊ→ * F Tˊ|ε F→( E )|id
文法的设计
例 考虑下面的文法: A→Ba|Aa|c B→Bb|Ab|d 令A1 = A,且A2 = B,当i = 1时,得到的文法是: A →B a Aˊ | c Aˊ Aˊ → a Aˊ |ε B → B b | A b| d 当i = 2得到了文法: A →B a Aˊ | c Aˊ Aˊ → a Aˊ |ε B → B b | B a Aˊb | c Aˊb | d
下推自动机与上下文无关文法的对应关系
句子
B
名词短语 动词短语
墙壁 f c d e E
a
b D
冠词 The
名词 girl
动词 studies (a)
子 模 式
副词 hard
地板 g
景物 A
(b )
物体 B
背景 C
三棱柱 D
长方体 E
地 板 g 面 e
墙 壁 f
基 元
基 元
面 a
Hale Waihona Puke 三 角 形 b面 c
面 d
(c)
图6.1 景物结构描述 与英文句子句法描述的对比
① ② ③ ④ ⑤ ⑥ S aSBD aabDBD aabBDD aabbDD aabbcD aabbcc
属于 L(G ) 。
3.2型文法:上下文无关文法 。
P: A 其中 A VN , V 。
例 6.3 设有文法 G (VN , VT , P, S ) , VN {S , A, B} , ① S aB ,② S bA ③ A a ,④ A aS ,⑤ A bAA ⑥ B b ,⑦ B bS ,⑧ B aBB G 是否属于上下文无关文法?用 G 产生一个属于 L(G ) 的句子。
VT {a, b, c} ,P 的各生成式为
问 G 是否为上下文有关文法? x aabbcc 是否属于 L(G ) ?
解:将 P 改写如下: ① S aSBD ,② S abD ,③ DB BD ④ bB bb ,⑤ bD bc ,⑥ cD cc 符合条件,文法 G 是上下文有关文法。
VT {a, b} ,P 的各生成式为
6.2.2 文法分类 四种类型:0型文法、1型文法、2型文法和3型文法。 1.0型文法:无约束文法。 P:
上下文无关文法自顶向下分析
3.2 上下文无关文法(CFG)
CFG的定义与表示 上下文无关文法,Context Free Grammar,CFG 定义3.1 CFG是一个四元组: G =(N,T,P,S),其中 (1) N是非终结符(Nonterminals)的有限集合; (2) T是终结符(Terminals)的有限集合,且N∩T=Φ; (3) P是产生式(Productions)的有限集合,形如: A→α,其中A∈N(左部),α∈(N∪T)*(右部), 若α=ε,则称A→ε为空产生式(也可以记为A →); (4) S是非终结符,称为文法的开始符号(Start symbol)。
13
3.3 语言与文法简介
计数问题 L3={anbncn|n≥1} L3'={ambmcn|m,n≥1} L3''={akbmcn|k,m,n≥1} CSL A→AC A→aAb|ab C→cC|c ? CFL 正规集 a+b+c+
命题:L3'不是正规集,因为构造不出可以识别L3'的DFA。 证明:(反证) 假设L3'是正规集,则可构造n个状态的DFA D,它接受L3'; 考察D读完ε,a,aa,...,an,分别到达S0,S1,...,Sn, 共有n+1个状态。根据鸽巢原理,序列中至少有两个状态相 同,设Si=Sj(j>i),因为aibick∈L3',所以存在路径aibick。 但是D中也有路径ajbick,矛盾。故L3'不是正规集。 aj-i bi ai ck 14 S0 Si Sk f
8
语言与文法简介
3.3 语言与文法简介
正规式与上下文无关文法 1. 正规式到CFG的转换 推论3.1 正规式描述的语言结构均可用CFG描述,反之不一定
下推自动机
使用n-1次规则 <a,S,SB> 1次规则 <a,S,B> n次规则 <b,B,ε>
5.1.5 下推自动机的存储技术
初始
栈为空 从左到右逐个扫描串w∈(a,b)*
入栈
若栈为空,当前符号是a,则A入栈 若栈为空,当前符号是b,则B入栈 若栈顶为A,当前符号是a,则A入栈 若栈顶为B,当前符号是b,则B入栈
出栈
若栈顶为A,当前符号是b,则A出栈 若栈顶为B,当前符号是a,则B出栈
若串w有相同个数的a和b 当且仅当 w扫描结束后,栈为空。
扫描到字母c时 PDA的状态转为match 开始处理整个串的后半部分,将栈 中的内容出栈。
规则<q,x,D,q′,V>
若PDA处于状态q w的当前字母是x 当前栈顶符号为D 则自动机的状态改变为q′ 并用符号串V代替D
(在本例中)用Z代表任意的栈顶符号 规则〈read,a,Z,read,AZ> 可以表示以下3条规则: 〈read,a,Z0,read,AZ0> 〈read,a,A,read,AA> 〈read,a,B,read,AB>
NFA:δ(q,x)= {q1,q2,… qn} 单态的PDA: <x,q, q1 > <x,q, q2 > … <x,q, qn >
NFA:
若 q ∈δ*(q0,w) 单态的PDA: 有 (*,w,q0)=>*(*,ε,q)
NFA:
若δ(q,x)∩F≠ф 单态的PDA:
<x,q,ε>
对于文法G S=>*w1A=>w1bB=>*w1bw2=w 对于单态PDA (*,w1bw2,S)=>*(*,bw2,A) =>(*,w2,B)=>*(*, ε, ε)
下推自动机与上下文无关文法.ppt
(1)((p,e,e),(q,S)) (2)对于R中的每一条规则A→x,((q,e,A),(q,x)) (3)对于每一个a∈ ∑,((q,a,a),(q,e)) 下推自动机工作过程: M首先将G中的起始字符S推入栈(开始栈是空的) 进入状态q。在接下来的每步有两种可能:如果栈 顶是一个非终结符A,则把A替换成x,如果栈顶是一 个终结符且与下一个输入符号相同,则把这个符号 拖出栈。
下面我们看M如何接受abbcbba这个字符串
状态
1 2 3 p q q 未读的输入 abbcbba abbcbba abbcbba 栈 e S aSa 使用的转移 T1 T2
4
5 6 7 8 9 10 11 12 13
q
q q q q q q q q q
bbcbba
bbcbba bcbba bcbba cbba cbba bba ba a e
3.4下推自动机与上下文无关文法
主要内容:
证明定理3.4.1:下推自动机接受的语言正好 是上下文无关语言类。
证明:这个证明分成两部分,首先我们证明第一个部分
引理3.4.1:每一个上下文无关语言都被一台下 推自动机接受。 证:设G=(V,∑,R,S)是一个上下文无关文法。 V:终结符与非终结符的集合。 ∑:是一个字母表(所有的输入符号)。 R:表示产生式的集合。 S:表示初始状态。 要构造一台下推自动机M使得L(M)=L(G)。 令M=({p,q}, ∑ ,V, △,p,{q}),其中我们构造的M 只有两个状态p,q,p是初态q是终态,并且在第一步后 一直保持在状态q,△表示转移关系:
Sa
bSba Sba bSbba Sbba cbba bba ba a e
T5
T3 T6 T3 T6 T4 T7 T6 T6 T5
形式语言自动机——上下文无关文法与下推自动机(五)
§4.6 上下文无关语言的性质1. 2型语言的泵浦引理:设L 是上下文无关语言,存在常数p ,如果ω∈L , 且︱ω︱≥p ,则ω可以写为ω=ω1ω2ω0ω3ω4,使ω2ω3≠ε,∣ω2ω0ω3∣≤p ,对于i ≥0有ω1ωi2ω0ωi3ω4∈L 。
(不含L ={ε}的情况) 物理意义:线性语言的泵浦引理是说,在正规集合中,每个足够长的字符串都包含一个短的字串,随便将这个子串在原处重复插入多少次,所得的新字串还是在原正规集中。
2型语言的泵浦引理是说,有两个靠得很近的子串,它们可以重复任意多次(但二者重复的次数相同),所得的新串依然属于该2型语言。
证明:设G 是Chomsky 文法(形如A →BC,A →a ),产生语言L -{ε} 若ω∈L 且ω有一定的长度,则边缘为ω的推导树有一定长度的路径。
对于Chomsky 范式,设路径长度为n ,则有边缘长度 ︱ω︱≤ 2n -1,如下图所示a 路径 =1︱ω︱=︱a ︱=21- 1=1a a路径 =2︱ω︱=︱aa ︱=22- 1=2设文法G 有n 个非终结符,取p =2n若ω∈L ,且︱ω︱≥p (即︱ω︱≥ 2n)则必有︱ω︱≥ 2n -1,即存在一条长度 > n 的路径,至少为n+1。
这时,该路径上的结点数为n+2(包括最高层顶点及最底层叶子)。
∵G 中只有n 个非终结符∴在这条路径上必然有某两个结点相同设为v 1= v 2=A, v 1靠近树根,v 1到叶子的最长路径为n+1。
路径=4︱ω︱≤24- 1=8 (第i 层最多有2i个非终结符。
第i+1层若全为终结符,则与第i 层非终结符个数相等。
)ω2 ω0 ω3=εv 1靠近根,其子树为T 1,Z 1v 2远离根,其子树为T 2,ω0如图:Z 1=ω2ω0ω3︱Z 1∣≤2 n =p (∵v 1到叶子的路径最多为n+1) 而v 1* =>ω2v 2ω3, v 2* =>ω0∵v 1=v 2=A ∴v 1 *=>ω2v 2ω3 =>ω2ω2v 2ω3ω3=>ωi2ω2v 2ω3ωi3 =>ωi2v 2ωi3 =>ωi2ω0ωi3∴ S =>ω1ω2ω0ω3ω4 *=>ω1ωi 2ω0ωi3ω4 v 1的子树得证#2型文法泵浦引理的用途:判断一给定语言是否是上下文无关文法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、上下文无关语言的性质
1.上下文无关语言的封闭性
定理24:若L1和L2是上下文无关语言,则L1∩L2不是上下 文无关语言,即对交运算不封闭。 证明思路:用反证法,找两个上下文无关语言的特例 L1和L2,使得L1∩L2不是上下文无关文法即可。 定理25:若L是上下文无关语言,则L的补不是上下文无关 语言,即对补运算不封闭。 证明思路:用反证法。设有两个上下文无关语言L1和L2 是上下文无关语言,若对补运算是封闭的,则有: L1∪L2=L1∩L2也应当是上下文无关语言,这于对交运 算不封闭是矛盾的。
特例:在定义中只要取w2=ε,则生成式的形式变为: A→w1C , A→w3 。这显然是右线性文法。因此,右线性 文法是线性文法的特例。
五、受限型上下文无关文法
2. 顺序文法
定义:对于上下文无关文法G , 如果非终结符可以排序为: A1,A2,A3,......,An ,当P中有生成式Ak→β时,若β内不含有l < k的Al,则称G是顺序文法。 实例:设文法G=({A2},{a,b},P,A2),其中生成式P如下: A2→aA2b , A2→ε 由定义可知,该文法G是顺序文法,由它产生的语 言为: L(G)={anbn | n≥0}。(参考书第181页的例2有错) 结论:线性文法总可以设法转换为顺序文法。利用顺序文 法进行文法分析是比较方便的。这样一来,前面所有的有 关右线性文法的分析都可以转换为对顺序文法的分析。
2. 结论
上下文无关文法的二义性问题是不可判定的。
3. 常见的几种具有二义性的情况分析
(1)含有生成式S→SS|β的文法具有二义性。 (2)含有生成式S→SbS|β的文法具有二义性。 (3)含有生成式S→αS|Sβ的文法具有二义性。
五、受限型上下文无关文法
1. 线性文法
定义:对于上下文无关文法G , 如果每个生成式的形式都 是:A→w1Cw2 或:A→w3 。 其中,A,C是非终结符, w1、w2、w3是终结符串,则称G是线性文法。 实例:设文法G=({S},{a,b},{S→aSb,S→ε},{S}),显然G产生 的语言L(G)={anbn | n≥0}。 此处只要分别取w1=a , w2=b , w3=ε,则由定义可知,G是 一个线性文法。
END
RETURN
定理19 (P166):设下推自动机M以空栈方式接受语言 LФ(M),则存在一个上下文无关文法G产生语言L(G) , 使得有: L (G)=LФ (M) (证明略: P 166~P169)
一、上下文无关文法与下推自动机的关系
2.上下文无关语言的泵浦引理 也即中间部分不会很长。 定理20:设L是上下文无关语言,存在常数p,如果w∈L且 |w|≥p,则w可写为w=w1w2w0w3w4,使w2w3≠ε(即w2,w3不同时 为ε),|w2w0w3|≤p及对于i≥0,有w1w2iw0w3iw4∈L。 注意:利用泵浦引理只能证明某些语言不是上下文无关语 言,而不能足以证明某语言一定是上下文无关语言。因 为泵浦引理所给出的条件只是上下文无关语言的必要条 件而不是充分条件。 例如:可以证明:L1 上下文无关语言。 ={anbncn|n≥1}和L
2={ 2 k a |k≥1}
都不是
二、上下文无关语言的性质
上下文无关语言的封闭性 定理21:若L1和L2是上下文无关语言,则L1∪L2也是上下 文无关语言。
(证明略) 定理22:若L1和L2是上下文无关语言,则L1L2也是上下文 无关语言。 (证明略) 定理23:若L是上下文无关语言,则L的闭包L*也是上下文 无关语言。 (证明略)
第三章
上下文无关文法与下推自动机
第五讲
上下文无关文法与下推自动机 (简介)
一、上下文无关文法与下推自动机的关系
1.上下文无关文法与下推自动机的等价性
注意:由上一讲我们已经知道下推自动机的终止状态接受 和空栈接受是可以互换的,所以下面的两条定理就只强调 了下推自动机的空栈接受与上下文无关文法的关系。 定理18 (P161):设上下文无关文法G=(N,T,P,S),产生语言 L(G),则存在一个下推自动机M,以空栈方式接受语言 LФ(M),使得有LФ(M)=L(G) (证明略: P162~P164)
三、上下文无关语言的判定问题 1. 空问题 上下文无关语言的空问题是可以判定的。
2. 成员问题
上下文无关语言的成员问题也是可以判定的。 3. 等价问题 上下文无关语言的等价问题是不可以判定的。
四、上下文无关文法的二义性
1. 定义
若对于上下文无关文法G产生的语言L(G),如果有句子 w∈L(G),存在两个不同的推导树,或者说对w存在两个不 同的最左或最右推导,那么就称文法G是二义的。