我有以下语法:
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
被认可。
有谁知道为什么会这样吗?如果您发现语法有问题或有所改进,请立即告诉我。
谢谢@ enrico.bacis,您说对了,它现在已修复。
**incorrect**
BLANK: ['\b'|'\t'|' ']+ -> skip;
**CORRECT**
BLANK: ('\b'|'\t'|' ')+ -> skip ;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句