QxRed » 日志 » 移进规约冲突的消除
移进规约冲突的消除
风暴红QxRed 发表于 2008-02-19 15:39:30
对于项目集I:
A->B.
A->C.a b
A1-> ...
其中A,B,C为非终结符,a 为终结符或非终结符,b为终结符或非终结符组成的字符串
此时会产生移进规约冲突,补救方法:
记S=所有右边首个符号集合,如果S 交 FOLLOW(B)= NULL,则可以通过向前看一个输入字符(终结符)判断
为何不是 FIRST(S) 交FOLLOW(B)?
因为如果a\in S为终结符,则a==FIRST(a)
如果a为非终结符,则存在
a->.c
c为终结符或非终结符组成的字符串,且该项也在项目集I中
如果c为终结符,则c=FIRST(c) \in S,因此FIRST(a) 交 FOLLOW(B)=NULL
如果c为非终结符,则存在
c->.d
...
所以S 交 FOLLOW(B)=NULL 等价于 FIRST(S) 交FOLLOW(B)=NULL
A->B.
A->C.a b
A1-> ...
其中A,B,C为非终结符,a 为终结符或非终结符,b为终结符或非终结符组成的字符串
此时会产生移进规约冲突,补救方法:
记S=所有右边首个符号集合,如果S 交 FOLLOW(B)= NULL,则可以通过向前看一个输入字符(终结符)判断
为何不是 FIRST(S) 交FOLLOW(B)?
因为如果a\in S为终结符,则a==FIRST(a)
如果a为非终结符,则存在
a->.c
c为终结符或非终结符组成的字符串,且该项也在项目集I中
如果c为终结符,则c=FIRST(c) \in S,因此FIRST(a) 交 FOLLOW(B)=NULL
如果c为非终结符,则存在
c->.d
...
所以S 交 FOLLOW(B)=NULL 等价于 FIRST(S) 交FOLLOW(B)=NULL
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
