У меня есть следующая грамматика, которая дает мне три смены уменьшить конфликты:сдвига уменьшить число конфликтов в середине действия правила зубра
boolexpression: boolexpression OR boolterm
| boolterm ;
boolterm: boolterm AND boolfact
| boolfact;
boolfact: "!" "(" boolexpression ")"
| "(" boolexpression ")"
| BOOLLITERAL
| expression boolop expression
boolop: "<"| ">"| BOOLOPLEQ /* <= */ | BOOLOPGEQ /* >= */ | BOOLOPEQ /* == */ | BOOLOPNEQ /* != */;
expression: sum ;
sum: sum "+" term
| sum "-" term
| term ;
term: term "*" factor
| term "/" factor
| factor;
factor: ID
| NUMBER
| "(" {/* rules to generate IR/*} expression ")";
Когда я удалить {/* rules to generate IR/*}
, все работает нормально.
У грамматики, которую вы опубликовали, нет конфликтов, поэтому конфликты, которые вы видите, исходят из какой-либо другой части грамматики, которую вы оставили вне своего поста ... –