Я использую ANTLR (3.2) для анализа довольно простой грамматики. К сожалению, я столкнулся с небольшой проблемой. Возьмите следующее правило:
exp
: NUM
| '(' expression OPERATOR expression ')' -> expression+
| '(' (MINUS | '!') expression ')' -> expression
;
ОПЕРАТОР содержит тот же знак минуса ('-'), который определен для МИНУС. Теперь ANTLR, похоже, не может справиться с этими двумя правилами. Если я удаляю любой из них, все работает нормально.
Есть идеи?