当前位置:   article > 正文

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

短语直接短语句柄与语法树

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

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

设文法 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的语法树

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/830172
推荐阅读
相关标签
  

闽ICP备14008679号