自底向上LR(1),SLR(1),LR(1),LALR(1)分析的比较
首先来看张图,上图是四种文法的包含关系,即 LR(1)文法范围最大,而 LR(0)文法范围最小。同时也说明了四种文法分析过程的强弱,即 LR(1)文法分析最强,而 LR(0)文法分析最弱。
画出文法的LR(0)自动机,如果没有冲突,则该文法是LR(0)文法;
如果没有移进--规约冲突,则该文法是SLR(1)文法;
画出文法的LR(1)自动机,如果没有同心项且没有状态冲突,则该文法是LALR(1)文法;
如果有同心项且合并同心项有状态冲突,则是LR(1)文法。
自动机有两种: LR(0)自动机和 LR(1)自动机。LR(0) 和 SLR文法分析用的是 LR(0)自动机,LR(1)和 LALR文法分析用的是 LR(1)自动机。而LR(1)自动机构造方法和LR(0)自动机的构造方法相同,只是多增加了向前搜索符号。
对于判断文法G是LR(0),SLR(1),LALR(1)还是LR(1),说明理由,构造分析表。
对于这类题,①拓广文法 ②求first和follow集 ③LR(0)识别活前缀的DFA(自动机) ④分析自动机里有什么冲突,解决一下顺便判断什么文法 ⑤构造分析表