问题描述
我有一个简单的语法,它总是在看似正确的输入上给我不匹配的输入。我的语法如下
root: expression;
expression
: METRIC comparator RHS
| expression AND expression
| expression OR expression
| LPAREN expression RPAREN
;
comparator
: EQ | GT | GE | LT | LE;
EQ: [eE][qQ];
GE: [gG][eE];
GT: [gG][tT];
LE: [lL][eE];
LT: [lL][tT];
LPAREN: '(';
RPAREN: ')';
AND: [aA][nN][dD];
OR: [oO][rR];
WS: [ \t\n\r]+;
METRIC: 'latency' | 'qps';
RHS: 'foobar' | 'foobaz';
当输入为 mismatched input 'latency'
时,为什么此语法会给出 latency eq foobar
错误。当然,这是在第一个生产 METRIC comparator RHS