设有文法G(其中S是G的开始符号): G:S→Sbc|cL L→S|b 判断文法G是SLR(1)文法还是LR
文法,符号,
已帮助 人
设有文法G(其中S是G的开始符号): G:S→Sbc|cL L→S|b 判断文法G是SLR(1)文法还是LR(1)文法。
请帮忙给出正确答案和分析,谢谢!
-
参考答案:对文法进行拓广: ①S′→S ②S→S6c ③S→cL ④L→S ⑤L→b 文法的LR(0)项目集规范族如图5—25所示。 考察项目集I1中存在“移进一归约”冲突因此该文法不是LR(0)文法。根据SLR(1)方法求解: FOLLOW(S)={b#) 且 FOLLOW(S)n{6)≠Ф 使用SLR(1)方法无法解决“移进一归约”冲突所以该文法不是SLR(1)文法。 文法的LR(1)项目集规范族如图5—26所示。 考察该文法的LR(1)项目集规范族项目集中无冲突故该文法为LR(1)文法。对文法进行拓广:①S′→S②S→S6c③S→cL④L→S⑤L→b文法的LR(0)项目集规范族如图5—25所示。考察项目集I1中存在“移进一归约”冲突,因此该文法不是LR(0)文法。根据SLR(1)方法求解:FOLLOW(S)={b,#)且FOLLOW(S)n{6)≠Ф使用SLR(1)方法无法解决“移进一归约”冲突,所以该文法不是SLR(1)文法。文法的LR(1)项目集规范族如图5—26所示。考察该文法的LR(1)项目集规范族,项目集中无冲突,故该文法为LR(1)文法。
