Resolver conflitos na gramática de bisonte com listas de expressão separadas por espaço + if / then / else

Tenho a seguinte gramática yacc / bison / happy:

%token 
  if              TokenIf
  then            TokenThen
  else            TokenElse
  true            TokenTrue
  false           TokenFalse

%left APP
%right IF

%%

Hungry
  : NoHungry
  | Hungry NoHungry %prec APP
  | if Hungry then Hungry else Hungry %prec IF

NoHungry
  : true
  | false

bison -v diz-me que existem dois conflitos na seguinte situação:

State 12

    2 Hungry: Hungry . NoHungry
    3       | if Hungry then Hungry else Hungry .

    true   shift, and go to state 2
    false  shift, and go to state 3

    true      [reduce using rule 3 (Hungry)]
    false     [reduce using rule 3 (Hungry)]
    $default  reduce using rule 3 (Hungry)

    NoHungry  go to state 8

Tentei resolver o conflito dando uma declaração de precedência explícita com%prec, mas sem sucesso. Dado que o bisonte resolve o conflito como desejado (por exemplo, muda em vez de reduzir), isso não é tão ruim, mas eu me pergunto como podemos nos livrar do conflito sem alterar o idioma aceito.

questionAnswers(1)

yourAnswerToTheQuestion