短语、直接短语和句柄

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

2.5.3 文法二义性的消除
EE+T | T TT*F | F
F(E) | i 则句子i*i+i只有 唯一一棵语法树:
E
E+ T
T
F
T*F i
F
i
i
2.5.3 文法二义性的消除
例2 定义某程序语言条件语句的文法G为: Sif b S | if b S else S | A (其它语句)
试证明该文法是二义性的并消除之。 分析 该文法的句子 if b if b A else A 对应下面两棵不同的语法树:
| if b S else S | A (其它语句) G': S S1 | S2 S1 if b S1 else S1 | A S2 if b S | if b S1 else S2
2.5.3 文法二义性的消除
这是因为通过分析,得知引起 二义性的原因是:
if—else 语句的 if 后可以 是if型,因此改写文法时规定: if — else之间只能是if—else语 句或其他语句。
2.6 文法和语言的分类
2型文法(上2型下文文法无描述关的文语法)
若文法G=(VN,V言T是, P2,型S)语中言的。每一条规则的 形式为 A β , 其中: 2型语言由下推
AVN , β(VN∪自V动T机)*识别。 则称G是2型文法。 2型文法又称上下文无关文法,其产生的 语言又称为上下文无关的语言。
构造句型i*i+i的语法树。
首先给出句型的推导过程 (最左推导) : EE+TT+TT*F+TF*F+Ti*F+T i*i+Ti*i+Fi*i+i
2.5.1 推导和语法树
根据推导过程构造句型i*i+i的语法树如下:
EE+T T+T T*F+T F*F+T i*F+T
i*i+T i*i+F i*i+i
文法的某个句型是否只对应唯一的一棵 语法树呢?也就是,它是否只有唯一的一 个最左(最右)推导呢?
2.5.2 文法的二义性
例如 设有文法G[E]: E E+E | E*E | (E) | i
句子 i*i+i 有两个不同的最左推导, 对应两棵不同的语法树。
2.5.2 文法的二义性
最左推导1 EE+EE*E+E i*E+Ei*i+E i*i+i
2.5.1 推导和语法树
前例 对文法G[S]=({S,A,B},{a,b},P,S) 其中P为:
SAB AAa | bB Ba | Sb 可用语法树非常直观地求出句型baSb 的全部短语,直接短语和句柄。
2.5.1 推导和语法树
分析 首先根据句型baSb的推导过程画出对
应的语法树如下:
S
SABbBBbaBbaSb
若1文型法文G法=(V(N上,VT下, P文, S有)中1语关型的言文文每是法法一1型描条)语述规言的则。的
形式为 αAβ αμβ , 其中: AVN , α, β(VN∪VT)* , μ(VN∪VT)+
则称G是1型文法。 1型语言由线性界 1型文法也称为上下文限有自关动文机法识,别。相应
SAB AAa | bB Ba | Sb 求句型 baSb的全部短语、直接短语和句 柄。
2.4 短语、直接短语和句柄
分析 根据短语定义,可以从句型 的推导过程 中找出其全部短语、直接短 语和句柄。
对文法,首先建立该句型的推导过程:
最左推导:
SAB
SABbBBbaBbaSb AAa | bB
最右推导:
Ba | Sb
SAB ASb bBSbbaSb 句型 baSb
2.4 短语、直接短语和句柄
根据最左推导: SAB bBB baB baSb
S* αAδ A + β
(1) S* S
句型本身是(相对于非终结符S)
S +baSb 句型baSb的短语。
(2) S* baB B Sb
将一个语言说成是二义性的,是 指对它不存在无二义性的文法,这样 的语言称为先天二义性的语言。
例如 L={ ai bj ck | i=j 或 j=k 且 i, j, k≥1} 便是这种语言。
2.6 文法和语言的分类
著名的语言学家乔姆斯基(Chomsky) 将文法和语言分为四大类,即0型、1型、 2型、3型。划分的依据是对文法中的规则 施加不同的限制。
直接短语:简单子树的末端结点形成的 符号串是相对于简单子树根的直接短语。
句柄:最左简单子树的末端结点形成的 符号串是句柄。
2.5.1 推导和语法树
短语:
i*i+i
i*i
第一个i
第二个i
T
第三个i
三个i都是直接短语 F
第一个i是句柄
i
注意:i+i不是句型的短语
E
E+ T
T
F
*Fi
i
句子 i*i+i
2.5.3 文法二义性的消除
Sif b S | if b S else S | A 句子 if b if b A else A
S
S
if b S else S if b S A
if b S if b S else S
A
AA
所以该文法是二义的。
2.5.3 文法二义性的消除
消除文法的二义性可采用下面两种方法:
E
E+E
E* E i
i
i
最左推导2 EE*Ei*E i*E+Ei*i+E i*i+i
E
E* E
E+ E i
i
i
2.5.2 文法的二义性
如果一个文法存在某个句子对应两 棵不同的语法树,则说这个文法是二义 性的。
或者说,若一个文法中存在某个句 子,它有两个不同的最左 (最右) 推导, 则这个文法是二义性的。
2.6 文法和语言的分类
例如前面描述算术表达式的文法G[E]:
EE+E | E*E | (E) | i
2.6 文法和语言的分类
例如,有2型文法G=(VN,VT, P, S) 其中:VN={S, A, B} , VT={a, b}
P={ S aB | bA A a | aS | bAA B b | bS | aBB }
2.4 短语、直接短语和句柄
注意: 短语、直接短语和句柄都 是针对某一句型的,都是指句型中 的哪些符号串能构成短语和直接短 语 , 离 开 具 体 的 句 型 αβδ 来 谈 短 语 、 直接短语和句柄是无意义的。
2.4 短语、直接短语和句柄
例如 设有文法G[S]=({S,A,B},{a,b},P,S) 其中P为:
2.6 文法和语言的分类
若000型 型型文文语法文法言G法描。=((述V的N无,V语限T言, 制P是, S文)中法的)每条规则
αβ 是这样一种结构: 0型语言由 α(VN∪VT)+ , β(VN∪图V灵T机)* 识别。
而且α中至少含一个非终结符, 则称G 是0型文法。 0型文法没有加任何限制条件,又称为 无限制性文法,相应的语言称为无限制 性语言。
1. 不改变已有规则,仅
加进一非形式的语法规
S
定:else与前面最接近 的不带else的 if 相对。
if
b
S
文法G的句子
if b S else S
if b if b A else A 只对应唯一的一棵语
AA
法树,消除了二义性。
2.5.3 文法二义性的消除
2. 改写文法G为G' G: Sif b S
(4) S* ASb 句型baSb中的子串ba,是(相对 A + ba 于非终结符A)句型baSb的短语。
2.5 语法树与文法的二义性
推导和语法树
1. 语法树 对句型的推导过程给出一种图形
表示, 这种表示称为语法树,也称推 导树。
2.5.1 推导和语法树
例如 设有文法G[E]: EE+T | E–T | T TT*F | T/F | F F(E) | i
E
E+ T
T
F
T* F i
F
i
i
2.5.1 推导和语法树
由例可知,语法树的构造过程是从 文法的开始符号出发,构造一个推导的 过程。
因为文法的每一个句型 (句子) 都 存在一 个推导,所以文法的每个句型 (句子) 都存在一棵对应的语法树。
2.5.1 推导和语法树
对句型i*i+i,还可给出最右推导:
句型baSb中的子串Sb,是(相对 于非终结符B)句型baSb的短语, 且为直接短语。
2.4 短语、直接短语和句柄
根据最右推导: SAB ASb bBSb baSb
S* αAδ A + β
(3) S* bBSb 句型baSb中的子串a,是(相对
B a
于非终结符B)句型baSb的短语, 且为直接短语、句柄。
2.5.3 文法二义性的消除
应该指出的是文法的二义性和语 言的二义性是两个不同的概念。
通常我们只说文法的二义性, 而不 说语言的二义性, 这是因为可能有两个 不同的文法G和G' ,而且其中一个是二 义性的,另一个是无二义性的, 但却有 L(G)=L(G'), 即这两个文法所产生的语言 是相同的。
2.5.3 文法二义性的消除
2.5.3 文法二义性的消除
S S1 | S2 S1 if b S1 else S1 | A S2 if b S | if b S1 else S2 对改写后的文法,句子
if b if b A else A 只对应唯一的一棵语法 树。
S S2 if b S
S1
if b S1else S1 AA
EE+T
E
E+F E+i
E+ T
T+i T*F+i T*i+i
T
F
T* F i
F*i+i
F
i
i*i+i
i
2.5.1 推导和语法树
这也就是说,一棵语法树表示了 一个句型的种种可能的(但未必是所 有的)不同推导过程, 包括最左(最右) 推导。
3.5.1 推导和语法树
2. 子树
E
语法树的子
2.4 短语、直接短语和句柄
短语
令G是一个文法,S是文法的开始符 号,假定αβδ是文法G的一个句型,如果 有
S* αAδ 且 A+ β
则称 β是相对于非终结符A的, 句型αβδ的 短语。
2.4 短语、直接短语和句柄
直接短语
令G是一个文法,S是文法的开始符 号,假定αβδ是文法G的一个句型,如果 有
2.6 文法和语言的分类
例如,有0型文法G=(VN,VT, P, S) 其中:VN={A,B,S} , VT={0,1}
P: S 0AB 1B 0 B SA | 01 A1 SB1 A0 S0B STOP
其描述的 0 型语言为 L0(G[S])={ }
2.6 文法和语言的分类
E+ T
树是由某一结点
T
F
连同所有分枝组
成的部分。
T* F i
F
i
i
3.5.1 推导和语法树
3. 简单子树
E
语法树的
ቤተ መጻሕፍቲ ባይዱ
E+ T
简单子树是指
T
F
只有单层分枝
T*
F
i
的子树。
F
i
i
2.5.1 推导和语法树
句型的短语、直接短语和句柄的 直观解释是:
短语:子树的末端结点形成的符号串是 相对于子树根的短语。
的语言又称为上下文有关语言。
2.6 文法和语言的分类
例如,有1型文法G=(VN,VT, P, S) 其中:VN={S,A,B} , VT={a,b,c}
P: S aSAB | abB BA BA' BA' AA' AA' AB bA bb bB bc cB cc
其描述的1型语言为L1(G[S])={anbncn | n≥1}
S* αAδ 且 Aβ
则称β是直接短语。
2.4 短语、直接短语和句柄
注意:短语和直接短语的区别 在于第二个条件, 直接短语中的第 二个条件表示有文法规则 Aβ , 因此,每个直接短语都是某规则右 部。
2.4 短语、直接短语和句柄
句柄
一个句型的最左直接短语称为该句 型的句柄。 句柄特征:
(1) 它是直接短语,即某规则右部。 (2) 它具有最左性。
E E+E | E*E | (E) | i
2.5.3 文法二义性的消除
1. 不改变文法中原有的语法规则, 仅加 进一些非形式的语法规定。
E
E+E
E* E i
i
i
2.5.3 文法二义性的消除
2. 构造一个等价的无二义性文法。即 把排除二义性的规则合并到原有文法中, 改写原有的文法。
例如,对于上例文法G[E],将运算符的 优先顺序和结合规则:*优先于+; +、* 左结合加到原有文法中, 可构造出无二义 性文法如下 :
SABASbbBSbbaSb A
B
由语法树可知
b BS b
baSb 为句型的相对于S的短语
ba 为句型的相对于A的短语
a
a 句型的相对于B的短语、直接短语和句柄
Sb 为句型的相对于B的短语、直接短语
2.5.2 文法的二义性
从前面的讨论可以看出,对于文法G中 任一句型的推导序列, 我们总能为它构造 一棵语法树,现在我们提出一个问题:
相关文档
最新文档