编译原理 - 推导与归约(二)

语法树及其二义性

基础概念

  • 短语: S 为文法 G 的开始符号,αβδ 是该文法的一个句型。若 S ⇒ ∗ G α β δ S \underset{G}{\overset{*}\Rightarrow} αβδ SGαβδ A ⇒ + G β A\underset{G}{\overset{+}\Rightarrow}β AG+β,则称 β 是句型 αβδ 相对于非终结符 A 的短语。在语法树中,相当于子树的末端结点形成的符号串
  • 直接短语:又称简单短语。若 S ⇒ ∗ G α β δ S \underset{G}{\overset{*}\Rightarrow} αβδ SGαβδ,且有产生式 A → β A→β Aβ,则称 β 是句型 αβδ 相对于非终结符 A 的直接短语。在语法树中,相当于简单子树(只有一层分支的子树) 的末端结点形成的符号串.
  • 句柄:也称为最左直接短语,即直接短语中在语法树中位于最左边的为该句型的句柄
  • 素短语:是指一个短语至少包含一个终结符,并且除它自身之外不再包含其他素短语
  • 最左素短语:语法树最左边的素短语称为最左素短语

语法树

语法树,也称语法分析树,是针对上下文无关文法,用来表示一个句型的生成过程的一种描述手段,是推导的图形表示形式。
例如,对于产生式A→XYZ,在语法树中就可以这样表示:
语法树

  • 给定句型:T * i ↑ (T * F)

  • 给定文法G[T]:

T → T * F | F
F → F ↑ P | P
P → (T) | i

语法树如下:
语法树示例

  • 短语
    • i
    • T ↑ F
    • (T ↑ F)
    • i ↑ (T ↑ F)
    • T * i ↑ (T * F)
  • 直接短语
    • i
    • T * F
  • 句柄
    • i
  • 素短语
    • i
  • 最左素短语
    • i

文法二义性

如果一个文法存在某个句子对应两颗不同的语法树,则说这个文法是二义的。

不存在一个算法,能在有限步骤内,确切判定任给的一个文法是否为二义的。只要找到一个句子,该句子对应两个不同的语法树,即证明该文法是二义的。

例如,证明文法G(S)是二义的:

S→aB | Ad
A→ab
B→bd

对于句子abc,存在下列两个不同的语法树:
在这里插入图片描述
所以该文法G(S)具有二义性。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值