Как разрешить сдвиг / уменьшение конфликта в простой грамматике

Грамматика выглядит следующим образом:

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

Как я могу найти причину этого конфликта?

0 ответов

Другие вопросы по тегам