Чтобы понять, почему возникает конфликт, рассмотрим вход, который просто состоит из идентификатора. Это MATH_EXPRESSION
или LOGICAL_EXPRESSION
? Парсер не может принять решение, потому что он соответствует обоим правилам.
Что вам нужно сделать, так это иметь одно правило выражения, которое содержит как логические, так и арифметические операторы. Различия между типами, как правило, не могут быть обработаны на уровне синтаксического анализа, вам нужно сделать это в средстве проверки типов.