语法不识别|| (或)运营商

时间:2014-08-31 22:03:22

标签: java antlr grammar

我有以下语法:

 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>5b
如果条件语句之间没有空格,那么它就可以识别它 例如a>5||b<6被认可。

有谁知道为什么会这样?如果您发现某些问题或语法方面的改进,请告诉他们,我是新手。

1 个答案:

答案 0 :(得分:0)

谢谢@ enrico.bacis你说得对,现在已修好了。

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