第三章:上下文无关文法与下推自动机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
上下文无关文法和它所描述的上下文无关语言,在定 义程序设计语言、语法分析、简化程序设计语言的翻译 等方面有重要的意义. 内容:1、上下文无关文法 2、两个范式:Chomsky 范式,Greibach范式 3、确定的下推自动机、非确定下推自动机(PA)
(Pushdown Automaton)
4、对任何CFA都能找到一种具有特有形式的 等价的CFG (Context-Free Grammar) 与上下文无关文法相应的识别器是下推自动机. 确定的下推自动机对应于上下文无关语言的一个子集(大 部分程序设计语言) 例如:程序设计语言中的嵌套结构,用CFG描述而RG不行
上一页 下一页 退 出
16
例: CFG G1= ({S,A,B},{a},S, P1 ). P1 ={S → AB,A→ a,B→ ε}, CFG G2 =({S,A,B},{a,b},s,P2) P2={S→ AB,A→ a|ε,B→ b} 求与G1 和G2 分别等价,且没有ε产生式的CFG G1’,G2’ 解:G1, V0={ B}, P1’={S→ AB,A → a, S→ A} 所以G1’=({S,A,B},{a},S,P1’) G2,V0={ A} P2’={S→ AB,A → a, B→ b, S→ B } G2’=({S,A,B},{a,b},S, P2’) 当S∈V0时,(即S→ε),则P’’应加入以下生成式 S’ →ε∣S, S’是一个新非终结符。 N1= N∪{ S’ },则 :G’ =( N1,T,S,P’’)
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的构造可知:
上一页 下一页 退 出
15
P2={B→αβ|B→ α Aβ∈P,A∈V0, α β≠ε}. 令P’’=P- P1 +P2 从而,构造出G”=(N,T,S,P’’) 显然,G”中没有ε产生式,如果G的某步推导中,用到 P中的产生式B→αAβ(A∈V0 , α β≠ε),而再以后的 每一步推导中,必须要用A→ ε的,那么再G’’相应推导 中,用P’’中的B→αβ,而不必用A→ε,推导照样进行; 反之亦然,L(G’’)=L(G) 再对G”应用定理1,2,便得到CFG G’=(N’,T’,S,P’), G’没有无用符号,且L(G’)= L(G’’)= L(G), 又P’ ⊆ P’’,所以,G’也无ε产生式,可得 无ε字产生 式及无用符号的文法G’。
上一页 下一页 退 出
18
(2) 单生成式 形如 A→ B, A,B∈N,则称为单生成式 当G是无ε产生式的CFG,但存在单产生式。可利用算 法2构成一个无单产生式的等效方法G1。 算法2: ① 对任意∀ A∈N, * 构造一个非终结符集合任意NA={B∣A⇒B} 1) N0={A}. 2) N’={C∣B→ C∈P且B∈N0}∪N0 3) 如果N’ ≠N0, 则N0=N’,转2) 否则,NA=N’
上一页 下一页 退 出
14
定理:CFG G=(N,T,S,P),若L(G)≠Φ, L(G)≠{ε},则 存在一个没有无用符号,没有ε产生式的 CFG G‘=(N’,T’,S,P’),使:L(G’)=L(G) 证明:先构造一个与CFG G=(N,T,S,P)等价,又没有ε 产生式的CFG G”=(N,T,S,P”)。为此,先找出G中所 有的可零化的非终结符号。 设:V0={A| A→ ε,A ∈N} 可零化的非终结符号。 构造V0: (1)若:A → ε∈P,则 A → V0 (2)若:A →X1X2 …Xn∈P,且Xi∈V0(1≤i≤n),则 A∈V0 (3)重复(2),直到没有新的非终结符加入V0为止, 现将P改造为P”: P1={A → ε|A → ε∈P}
+ 如果存在A⇒Aβ,则称G是左递归文法, + 如果存在A⇒aA, 则称G是右递归文法, + 如果存在A⇒A, 上一页
则称G是循环文法。
下一页 退 出
21
定 理 :CFG G=(N,T,P,S),P 中 有 A 产 生 式 A→Aα1|Aα2∣…∣Aα m∣β1∣β2∣….∣βn,其中βi 是第一个字符不再是非终结符A,可构成文法G1 : G1 =(N∪{A’},T,P,S) P1 是P中A的产生式用以下两组产生式取代: A→β1|β2|…|βn|β1A’|β2 A’∣…|βn A’ A’ →α 1|α 2|….|αm|α 1A’|α2 A’|…|α m A’ 其中A’是一个新非终结符,则有L(G1)=L(G) 证明:G中只有关于A的产生式被改变了,要证明G和G1 等效,主要考虑G中A产生式产生的语言,和G1 中AA’ 产生的语言之间的关系。 由G:A → Aα1|Aα2|….|Aα m|β1|β2|….|βm A → A (α 1|α 2|….|α m )|β1|β2|….|βm
上一页 下一页 退 出
4
定义:CFG G是二义的⇔ ∃ ω∈L(G),有两棵不同的语法树(叶子为ω) 定义:CFG G是二义的⇔ ∃ ω∈L(G),有两T不同的最 左(右)推导 文法二义的⇒语言二义⇒表示其文法均二义
上一页
下一页
退 出
5
3.2上下文无关文法的改写 不改变文法描述能力前提下改写文法满足一定要求. 改写目标:将CFG改写成某种标准形式. (1) 改写成Chomsky范式: A→ BC|a A,B,C∈N a∈T (2)Greibach范式 A→ a α α ∈N*, a∈T
6
1、删除文法中的无用符号 (1)有用/无用符号 CFG G=(N,T,P,S) ∀α,β,ω∈T*x∈N∪T
* * 当x出现在S⇒ αxβ⇒ ω,则x有用符号 * * x不出现在S⇒ αxβ⇒ ω,则x为无用符号 即: ①CFA G中,∀A∈N,能否由A推导出某些终结符串; ②A是否能出现在由文法起始符号S推出的句型中 .
上一页 下一页 退 出
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},
* * 1)S⇒ ω与S⇒ ω等价,则G1与G等价 G G1
上一页
下一页
退 出
12
2)∀x∈(N1∪T1)它必出现在G1的 某个 * 句型中,即存 在ε∈(N1∪T1)*使得 S⇒ω=αxβ G1 * 其中α,β∈(N1∪T1) 定理1:把G中不能推导出终结符串的非终结符删去; 定理2:把G中不在句型中出现的非终结符号和终结符号 删去。 G经过定理1和定理2后得出G1 与G等价,并没有无用符 号。 例:CFG G=({S,A,B},{a},S,P) P={S→ AB|a,A→ a} 求一个与G等价的且没有无用符号的CFG。 解:删不能产生终结符的非终结符B.及S → AB. 得:G’=({S,A},{a}, S, {S → a,A → a}) 删不可达非终结符A,及相应产生式A → a G’’=({s},{a},s,{s → a})
形式语言与自动机
主讲:方 敏
1
西安电子科技大学
第三章 上下文无关文法 与下推自动机
3.1 推导树与二义性 3.2 上下文无关文法的改写 3.3 Chomsky范式和Greibach范式 3.4 CFL的泵引理 3.5 下推自动机 3.6 上下文无关文法与下推自动机 3.7 上下文无关语言的性质 3.8 CFG中的ε规则
上一页 下一页 退 出
17
例:G =( N,T, P ,S)。N={S},T={a,b} P: S→ aSbS∣bSaS∣ε 求:无ε字生成式的等效文法G1 解:G1是有ε生成式的文法,除S → ε外,S出现在产生 式右边 V0={ S} P’ ={S → aSbS|abS|aSb|ab|bSaS|baS|bSa|ba} 因为 S∈V0, 所以P’ ={S → a S b S |abS|aSb|ab|bSaS |baS|bSa|ba,S’→ε |S } G’ =({S,S’},{a,b},P’,S’) 结论:含ε产生式的CFG G ,存在一个与G等效的无ε 产生式的G1 。
上一页 下一页 退 出
13
注:先删不能生成终结符的非终结符,再删不可达符 号,顺序不可颠倒。 2. CFG变换 上面讨论了CFG的化简,实际上也是CFG的一种变换。 CFG的变换:将一个CFG变换成另一个等价的CFG,其 目的是通过变换,得到一个具有较好性质的CFG。 例如:chomsky范式和Greibach范式,就是两个具有很好 性质的CFG。 (1)定义:ε产生式。可零化的非终结符。 设 CFG G=(N,T,S,P).若A→ε∈P,则称: A → ε为ε产生式; * 若A⇒ ε ,则称A为G中可零化的非终结符号。 G 若P中无ε字产生式,或只有S →ε,S不出现在 任何产生式右部,则称G为无ε文法。
上一页
下一页
退 出
9
算法1:找出所有有用非终结符(能推出终结符的非终结 符) 对已给G=(N,T,P,S) 删无用非终结符,及相关产生式,得G1=(N1,T,P1,S) (1) N0=φ, N0为非终结符集合 (2) N’ ={A|A→ ω,ω∈T*}, N’为非终结符集合 (3)如果N0≠N’,则(4),否则N1=N'(有用非终结符) (4) N0=N’ N’= N0∪{A|A→ α , α ∈(T∪N0)*},转(3)
上一页 下一页 退 出
20
构造P1,因为E→ E+T∈P,且不是单生成式,故P1有 E → E+T∣T*F∣(E) ∣a T→ T*F∣(E) ∣a F→ (E) ∣a 则 P1={ E → E+T∣T*F∣(E)∣a, T→ T*F∣(E)∣a, F→ (E)∣a } 3.递归文法 + 定义:CFG G,如果存在A ⇒aAβ,A∈N,称G是递归的文法;
* 证:A∈N如A⇒ ω,ω∈T*, 则A∈N1 经1步推导:有生成式A→ ω∈P
上一页
下一页
退 出
8
根据定义有A∈N1 * 设当推导步骤<K,有A⇒ ω,A∈N1成立 * 当进行K步骤推导时, A⇒x1x2…xn ⇒ ω(ω1ω2…ωn) * 其中xi⇒ ωi 1≤i≤n ωi∈T* 而且它们都是少于K步推导出来的。 ∴xi ∈N1 * 故 A⇒x1x2…xn A∈N1 A→x1x2…xn∈P
上一页
下一页
退 出
7
(2) 定 理1:已知:CFG G=(N,T,P,S) L(G)≠φ,则必能找到一个等效G1,对G1的每个非终 结符A ,有: A⇒ω ,ω∈T*(证明有用非终结符可推出终结符串) 证明: 已知:G=(N,T,P,S) 设:G1=(N1,T1,P1,S) ∃ A∈N, 有A→ ω∈P 则:A∈N1 如果:有A →x1x2…xn∈P xi∈VT∪N1(已放入 N1 中非终结符) 则A⇒x1x2…xn⇒ ω(终结符串) 则A∈N1 G1的P1:是符号在N1∪T中的生成式。
上一页 下一页 退 出
3
3.1 推导树与二义性(语法树) 树 中 的 一 个 枝 结 点 A , 有 直 接 子 孙 x 1 x 2… x K , 有产生式A→x1x2…xK 定义:tree是CFG G=(N,T,P,S)语法树,是有序树 树根:S 枝结点是非终结符 叶子结点是终结符或ε 枝特点A有直接子孙x1x2…xi,则A→x1x2…xi 例:G=({E},{+,*,i,(,),},P,E) E→ E+E|E*E|(E)|i 句子:(α*α+α) * 定义:CFG G=(N,T,P,S)如果存在 S⇒ ω⇔ G是有一棵叶子为ω的语法树
相关文档
最新文档