这个 antlr 语法有什么问题?通配符问题?



语法很简单:

expression: signal logic_op right_op;
signal: .+?;
right_op: .+?;
logic_op: GT|GTE|LT|LTE|NOT|EQ;
GT: '>';
GTE: '>=';
LT: '<';
LTE: '<=';
NOT: 'NOT';
EQ: '=';
WS : [ trn]+ -> skip ;

但我用"a>b',它给了我这个错误:

line 1:0 token recognition error at: 'a'
line 1:4 token recognition error at: 'b'
line 1:5 mismatched input '<EOF>' expecting {'>', '>=', '<', '<=', 'NOT', '=', WS}

为什么?

没有与ab匹配的lexer规则。添加此:

ID : [a-zA-Z]+;

如果你的后续问题是";但是ab是由.+?匹配的,对吗&";,那么答案是";否";。在解析器规则(如signal(中,.(点(匹配任何令牌。在lexer规则中,.匹配任何字符。

最新更新