3、3.3语法树与二义性

1、推导和语法树

最左推导和最右推导

  • 从一个句型到另一个句型的推导往往不唯一

    E+E⇒i+E⇒i+i

    E+E⇒E+i⇒i+i

  • 最左推导:任何一步α⇒β都是对α中的最左非终结符进行替换
  • 最右推导:任何一步α⇒β都是对α中的最右非终结符进行替换

语法树

  • 用一张图表示一个句型的推导,称为语法树
  • 一颗语法树是不同推导过程的共性抽象

   G(E): E→i | E+E | E*E | (E)

   (i*i +i)

 

 

 

 (两种不同的推导过程,等到同一棵语法树)(可以理解为两种不同的最左推导)(这种形式也可以证明是二义的)

 2、语法树与二义性

一个句子是否只对应唯一一颗语法树?

(i*i+i)对于这个文法会产生下面两种语法树

 

 

 

 

  •  对每一个句型,该句型一定有一个推导过程(可能不唯一),推导过程一定对应一颗语法树(推导过程可能不唯一,当然语法树也可能不唯一。
  • 文法的二义性,如果一个文法存在某个句子或句型对应两颗不同的语法树,则说这个文法是二义的。

    G(E):E→i|E+E|E*E|(E)是二义文法

  • 语言的二义性:一个语言是二义的,如果对它不存在无二义的文法

   对于语言L,可能存在G和G‘,使得L(G)=L(G’)=L,有可能其中一个文法为二义的,另一个为无二义的。

 语言的二义性

 

 

  • 考虑句子(i*i+i)

 

  • 二义性问题是不可判定问题,即不存在一个算法,它能在有限的步骤内,确切的判定一个文法是否是二义的。
  •  可以找到一组无二义文法的充分条件(也就是说可以列出一组条件,如果一个文法满足这些条件的话,我们就能断定它是无二义的。但是不满足的话,可能是二义的也不能是无二义的)

 

posted @ 2022-11-18 21:31  多一些不为什么的坚持  阅读(531)  评论(0编辑  收藏  举报