考虑以下语法:
该文法在读取结束符号($)时,在具有以下内核状态的SLR(1)解析表中会产生accept/reduce冲突:
此冲突是否被视为转移/减少或减少/减少冲突?
此外,由于解析表包含此冲突,因此说语法不是 SLR(1) 因而 SRL(1) 语法不能有接受/归约冲突是否正确?
我学习它的方式(我惊讶地发现这不是我的龙书所说的),增强生产将是
S' -> S $
,所以相关状态中的第一个内核项将是S' -> S . $
。所以冲突是shift-reduce。
另外,由于解析表包含这个冲突,所以说该文法不是SLR(1)是否正确
是的。您还可以观察到语法中存在循环 (
S -> A -> S
),因此它是不明确的,因此对于任何 k 都不能是 SLR(k)。
因此 SRL(1) 语法不能有接受/减少冲突?
在我看来,接受/减少冲突是不存在的。接受操作来自项目
S' -> S $ .
,并且具有该项目的状态不能有任何其他项目,因此该状态不能有冲突。