对这种语法是否含糊不清有点困惑
C' -> C
C -> d C u C
C -> d C
C -> ε
我尝试为此建立DFA,但我在其中一个州得到了这个:
C -> d C DOT u C, $
C -> d C DOT, $
这不是一个转移 - 减少冲突,所以它肯定意味着语法不是LR(1)?或者它是否会减少,因为$和u都在C的后续集合中?
答案 0 :(得分:3)
确实存在减少转移的冲突。这是通过选择班次生成的状态机。冲突处于状态4.
我应该指出你的问题有点过了。语法可以是明确的,但仍然不是LR(1)。
但这个恰好是模棱两可的。考虑字符串ddudu
。最左边的两个推导是
C'->C->dCuC->ddCuCuC->dduCuC->ddudCuC->dduduC->ddudu
C'->C->dCuC->ddCuC->dduC->ddudCuC->dduduC->ddudu
这些存在意味着语法含糊不清。
证明一般语法含糊不清是一个不可判定的问题:它可能没有算法。令人高兴的是,这一点并不那么难以解决。