短语(直接短语、句柄)以及语法树

短语(直接短语、句柄)以及语法树

一.短语、直接短语、句柄

设文法 G=(VN,VT,P,S) ,且 U∈VN,x,y,u ∈V*

短语

若有 S⇒*xUy⇒+xuy,则u称为句型xuy相对于U的短语

注意:一个短语,一定要讨论句型,并且一定要讨论是相对于哪一个部分。观察定义可以看到,U和u的上下文,也就是x和y是一样的,U通过多步推导的到u(x和y没有进行推导)。通过这样严格的定义,短语u才可以规约为U

举个例子:

G(expr):
expr → expr + term | expr - term | term
term → term * factor | term / factor | factor
factor → digit | (expr)
digit → 0 | 1 | 2 … | 9

推导:

expr ⇒ expr + term
⇒ expr + factor
⇒ expr + digit

解释:上面的例子中,digit是句型expr + digit相对于factor的一个短语;同样,digit是句型expr + digit相对于term的一个短语。

digit可以规约为factor;同样digit可以规约为term

当然,还有一个没有说,factor是句型expr + factor相对于term的短语。

直接短语

若有 S⇒ * xUy⇒xuy,则u称为句型xuy相对于U直接短语(或简单短语)

与短语的区别:xUy⇒xuy仅需要一步推导

仍然使用上面的例子

expr ⇒ expr + term
⇒ expr + factor
⇒ expr + digit

digit是句型expr + digit相对于factor的直接短语;factor是句型expr + factor相对于term的直接短语。

句柄

一个句型的最左直接短语称为该句型的句柄。

最左直接短语:若一个句型只有一个直接短语,则这个直接短语就是句柄;若存在多个直接短语,则把位于最左边的直接短语称为最左直接短语。

上面的直接短语的两个例子中,两个直接短语分别为各自句型的句柄,因为每个句型仅有一个直接短语。

对于一些复杂的句型来说,可以通过语法树快速准确的确定句柄。

二.语法树(或语法分析树)

语法树通过图形化的方式表示从开始符号到某个句型的推导过程。

特点:

  • 根结点:开始符号
  • 中间结点:推导过程中的非终结符号
  • 叶节点:从左到右组合叶结点形成的串就是要推导的句型

例子:

G(expr):
expr → expr + term | expr - term | term
term → term * factor | term / factor | factor
factor → digit | (expr)
digit → 0 | 1 | 2 … | 9

画出 句型digit * digit + digit的语法树

从根节点开始推导,推导过程中的替换过程就是语法树延伸的过程,如下图

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值