不难看出在I1,I2,I9中存在移进-归约冲突,因而这个表达式文法不是LR(0)文法,也就不能构造LR(0)分析表,现在分别考查这三个项目集(状态)中的冲突是否能用SLR(1)方法解决。 在I1中:S′→E· E →E·+T 由于FOLLOW(S′)={#},而S′→E·是唯一的接受项目,所以当且仅当遇到句子的结束符"#"号时才被接受。又因{#}∩{+}= ![]() ![]() 在I2中: E→T· T→T·*F 我们可计算非终结符E的FOLLOW集为: FOLLOW(E)={+,),#} 所以FOLLOW(E)∩{*}={+,),#}∩{*}= ![]() ![]() 在I9中: E→E+T· T→T·*F 与I2中的情况类似因归约项目的左部非终结符E的后跟符集合FOLLOW(E)={+,),#}与移进项目圆点后终结符不相交,所以冲突可以用SLR(1)方法解决,与I2不同的只是在面临输入符为'+',')'或'#'号时用产生式E→E+T归约。 |