编译原理笔记

合并同心集(一个一样不能合并)
编译原理笔记_第1张图片
冲突有两种,移进规约冲突和规约规约冲突

移进规约冲突
编译原理笔记_第2张图片
从上图可以看出:

对于I2,由E–>T · 可以知道,无论下一个字符输入什么,我们都要采取归约动作。但是,由T–>T · *F得知,当下个字符是 * 的时候,我们需要采用移进操作。 这里就产生了移进/归约操作。因为当下一个字符是 * 的时候,自动机不知道是用归约,还是移进,就产生了冲突。类似的情况I9也是一样。

规约规约冲突:合并同心集时不知道按哪个规约
编译原理笔记_第3张图片
如图I5和I9

LR(1)范围最大,一般都是LR(1)的,判定方法是DFA有没有冲突

合并同心集没有产生冲突或者没有同心项目集可以合并,那么是LALR(1)的

编译原理笔记_第4张图片
首先来看张图,上图是四种文法的包含关系,即 LR (1) 文法范围最大,而 LR (0) 文法范围最小。同时也说明了四种文法分析过程的强弱,即 LR (1) 文法分析最强,而 LR (0) 文法分析最弱。

你可能感兴趣的:(编译原理)