Как разрешить сдвиг / уменьшение конфликта в простой грамматике
Грамматика выглядит следующим образом:
terminal TERM1,TERM2;
non terminal entry, sector, unit_a, unit_b;
entry ::= sector unit_b;
sector ::= unit_a sector | unit_a;
unit_a ::= TERM1 TERM1;
unit_b ::= TERM1 TERM2;
Когда я пытаюсь сгенерировать парсер с jcup, я получаю следующие предупреждения
Warning : *** Shift/Reduce conflict found in state #1
between sector ::= unit_a (*)
and unit_a ::= (*) TERM1 TERM1
under symbol TERM1
Resolved in favor of shifting.
Warning : *** Production "sector ::= unit_a " never reduced
Как я могу найти причину этого конфликта?