由于epsilon规则而在第一状态下发生Shift / Reduce冲突

时间:2018-12-04 16:09:30

标签: bison shift-reduce-conflict shift-reduce

我在野牛中有转移/减少冲突的机会。

我检查了parser.output文件:

State 0

0 $accept: . Prog $end

STRUCT  shift, and go to state 1

$default  reduce using rule 6 (Structs)

Prog        go to state 2
Structs     go to state 3
StructDec   go to state 4

我有规则:

Prog    :   Structs Funcs {};
Structs :   StructDec Structs | {};
StructDec : STRUCT ID LB StrctMmLst RB SC{};

Prog是开始符号。

%start Prog

我认为原因是结构的epsilon规则。在不改变含义的情况下如何解决?

1 个答案:

答案 0 :(得分:0)

解决方案实际上是查看文件的开头。 在那里您可以看到冲突状态的数量。我正在看的那个根本不是冲突。