LL推导和LR推导

来源:互联网 发布:数控车床编程软件下载 编辑:程序博客网 时间:2024/05/14 08:41

1、LL推导,从左至右分析,最左推导,超前查看K个单词

1)总是扩展产生式右边部分的最左边非终结符的推导

2)使用FOLLOW()和FIRST()

3)FIRST(X)指从X可推导出的任意字符串(即X产生式右边部分),FOLLOW(X)指从直接跟随X之后的终结符集合。

2、LR推导,从左至右分析,最右推导,超前查看K个单词

1)总是扩展产生式右边部分的最右边非终结符的推导。

2)使用Closure()和goto()

3)I是一个项集合,X是一个方法符号(终结符或非终结符),圆点代表分析器当前位置,文法规则与指出其右部位置的圆点组合在一起称为项.一个状态是由若干个项组成的集合。

Closure(I)=

repeat

    forI中的任意项A->α.Xβ

       for 任意产生式X->γ

             I<-I∪{X->γ}

 until I没有改变

 return I

 

Goto(I,X)=

设置J为空集合

    forI中的任意项A->α.Xβ

        将A->α.Xβ加入到J中

       return Closure(J)

原创粉丝点击