我有以下语法:
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
被认可。
有谁知道为什么会这样?如果您发现某些问题或语法方面的改进,请告诉他们,我是新手。
答案 0 :(得分:0)
谢谢@ enrico.bacis你说得对,现在已修好了。
**incorrect**
BLANK: ['\b'|'\t'|' ']+ -> skip;
**CORRECT**
BLANK: ('\b'|'\t'|' ')+ -> skip ;