SLR(1) 解析器可以接受/减少冲突吗?

问题描述 投票:0回答:1

考虑以下语法:

  • S → A
  • A → S |一个

该文法在读取结束符号($)时,在具有以下内核状态的SLR(1)解析表中会产生accept/reduce冲突:

  • S' → S.
  • A→S。

此冲突是否被视为转移/减少或减少/减少冲突?

此外,由于解析表包含此冲突,因此说语法不是 SLR(1) 因而 SRL(1) 语法不能有接受/归约冲突是否正确?

parsing grammar shift-reduce-conflict reduce-reduce-conflict srl
1个回答
0
投票

我学习它的方式(我惊讶地发现这不是我的龙书所说的),增强生产将是

S' -> S $
,所以相关状态中的第一个内核项将是
S' -> S . $ 
。所以冲突是shift-reduce。

另外,由于解析表包含这个冲突,所以说该文法不是SLR(1)是否正确

是的。您还可以观察到语法中存在循环 (

S -> A -> S
),因此它是不明确的,因此对于任何 k 都不能是 SLR(k)。

因此 SRL(1) 语法不能有接受/减少冲突?

在我看来,接受/减少冲突是不存在的。接受操作来自项目

S' -> S $ .
,并且具有该项目的状态不能有任何其他项目,因此该状态不能有冲突。

© www.soinside.com 2019 - 2024. All rights reserved.