Сдвиг / уменьшение конфликтов в парсере бизонов
Я строю грамматический парсер с бизоном. Правила, которые я определил до сих пор:
Program : Exp {};
Exp : STRING {};
Exp : TRUE {};
Exp : FALSE {};
Exp : NOT Exp {};
Exp : Exp OP Exp{};
OP : AND | OR | XOR {};
Я получаю сообщение:
warning: 4 shift/reduce conflicts [-Wconflicts-sr]
Я попытался определить префикс и избежать левой рекурсии:
Program : Exp {};
Exp1 : STRING {};
Exp1 : TRUE {};
Exp1 : FALSE {};
Exp1 : NOT Exp {};
Exp : Exp1 OPA{};
OPA : OPExp | {};
OP : OR | AND | XOR {};
Таким образом, я все еще получил конфликты. Как я могу их решить?