Грамматика не распознает || (ИЛИ) оператор

1

У меня есть следующая грамматика:

 cond_stmt: ('('cond_stmt')'|('!' cond_stmt)| cond_expr|cond_or|cond_and) ;
 cond_or: cond_expr(OR cond_stmt)+;
 cond_and: cond_expr(AND cond_stmt)+;
 OR:'||';
 AND: '&&';
 BLANK: ['\b'|'\t'|' ']+ -> skip;

ANTLR может распознавать условный оператор с && как a>5 && b<6
но он не может распознать a>5 || b<6 a>5 || b<6
Он игнорирует || оператора и говорит, что не жизнеспособный ввод a>5b
Если между условными операторами нет пробелов, то он может распознать его.
например, a>5||b<6.

Кто-нибудь знает, почему это так? Я новичок в antlr, если вы найдете некоторые проблемы или улучшения в грамматике, пожалуйста, сообщите им.

  • 0
    В чем вопрос ?
  • 1
    @TJCrowder: я думаю, "почему это не работает и как мне это исправить?" недостающий кусочек головоломки :)
Показать ещё 4 комментария
Теги:
antlr
grammar

1 ответ

0
Лучший ответ

Спасибо @enrico.bacis, вы правы, он исправлен.

     **incorrect**
    BLANK: ['\b'|'\t'|' ']+ -> skip;
   **CORRECT**
    BLANK: ('\b'|'\t'|' ')+ -> skip ; 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню