显然这两种方法都较为直观,但第一种方法先构造识别活前缀的NFA再确定化为DFA,工作量较大。第二种方法构造较简单不易出错。 由本节(2)可知LR(0)项目集规范族的项目类型分为四种: a) 移进项目b) 归约项目c) 待约项目d) 接受项目 一个项目集中可能包含以上四种不同的项目,但是一个项目集中不能有下列情况存在: a) 移进和归约项目同时存在: 形如:A→α·aβ B→γ· 由于这时面临输入符号为a时不能确定移进a还是把γ归约为B,因为LR(0)分析是不向前看符号,所以对归约的项目不管当前符号是什么都应归约。对于在一个项目集中同时存在移进和归约项目时称该状态含有移进-归约冲突。 b) 归约和归约项目同时存在。 形如:A→β· B→γ· 因这时不管面临什么输入符号都不能确定归约为A,还是归约为B,对于在一个项目集中同时存在两个以上归约项目时称该状态含有归约-归约冲突。 对一个文法的LR(0)项目集规范族不存在移进-归约,或归约-归约冲突时,称这个文法为LR(0)文法。 |