语法树、句型的分析、空规则

上下文无关文法及其语法树
语法树就是上下文无关文法句型推导的直观工具
给定文法G=(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树。这棵树满足下列4个条件:
(1)每个结点都有一个标记,此标记是V的一个符号
(2)根的标记是S
(3)若一结点n至少有一个它自己除外的子孙,并且有标记A,则A肯定是在VN中
(4)若结点n的直接子孙,从左到右的次序是结点n1,n2,…,nk,其标记分别为A1,A2,…,Ak,那么A->A1A2…Ak一定是P中的一个产生式

我自己对语法树的理解:
根结点是开始字符S,除根以外所有的结点都必须是(VT U VN)集合的元素,如果一个结点有子孙的话,那么这个结点一定是非终结符,并且存在规则结点->子孙(从左到右依次)

最左推导、最右推导
如果在推导的任何一步a=>b,其中a、b是句型,都是对a中最左(最右)非终结符进行替换,则称这种推导为最左(最右)推导。
最右推导常被称为规范推导。由规范推导所得的句型称为规范句型。
定义说的很明白,就不多赘述了

句型的分析
自上而下的分析方法
由文法开始符号S到句子x的最左推导中所用规则序列
自下而上的分析方法
由S到句子x的最右推导所用规则逆序列

短语、直接短语、句柄
短语
一棵子树的所有叶子自左至右排列起来形成一个相对于子树根的短语。
直接短语
仅有父子两代的一棵子树,它的所有叶子自左至右排列起来所形成的符号串。
句柄
一个句型的分析树中最左最下那棵只有父子两代的子树的所有叶子的自左至右排列。

一个句型的最左直接短语就是句柄。

对实用文法的限制与扩充
简化文法
(1)文法中不存在P→P的规则(P∈VN),这是一个有害规则,会产生二义性。
(2)每个非终极符都必须是可达和可终止的。
设S是文法的开始符号,对任意P∈VN,若存在S * αPβ,则称P是可达的;同时P * γ(γ∈VT*),称P是可终止的,又称为活符号。

【EG1】化简文法:① S→aAa ② A→Sb ③ A→bBB ④ B→aC ⑤ B→abb ⑥ C→aCA
首先求活符号,就是推导出来的句型全部为终结符。
w1={B}
w2={B,A}
w3={B,A,S}
我们发现文法和C无关,所以删掉所有带C的规则,剩下:
① S→aAa ② A→Sb ③ A→bBB ⑤ B→abb
然后再求可达符,就是能够推导出来的符号
w1={S}
w2={S,A,a}
w3={S,A,a,b,B}
所以简化后的文法为: ① S→aAa ② A→Sb ③ A→bBB ⑤ B→abb

【EG2】简化文法:①S→aSb ②S→bAB ③S→a ④B→d ⑤A→aAc ⑥C→aSbS ⑦C→aba
还是先求活符号
w1={S,B,C}
删去和A有关的所有规则,剩下:
①S→aSb ③S→a ④B→d ⑥C→aSbS ⑦C→aba
然后求可达字符
w1={S}
w2={S,a,b}
再删掉带B、C的所有规则,剩下:
①S→aSb ③S→a
所以简化后的文法为:S->aSb | a

空规则与文法扩充
(1)对给定的带ε规则的文法,在不生成空串的情况下,可构造出一个不带空规则的等价文法。
(2)不带ε规则的文法不能生成空串。
(3)对任意文法中的任意非终极符A,形如A→ε的产生式不改变文法的语言类型,因此在需要时,可以出现形如A→ε的产生式。
(4)原来的1型~3型文法,若想生成空串,可在文法规则P中增加新的开始符号S′及新的产生式S′→S,S′→ε。而不影响文法的分类。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值