赞
踩
设文法 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的语法树
从根节点开始推导,推导过程中的替换过程就是语法树延伸的过程,如下图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。