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

What's wrong with this antlr grammar? wildcard problem?

语法很简单:

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 : [ \t\r\n]+ -> 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 的词法分析器规则。添加:

ID : [a-zA-Z]+;

如果您的后续问题是“但是 ab.+? 匹配,对吗?”,那么答案是“否”。在解析器规则(如 signal)内,.(点)匹配任何标记。在词法分析器规则中,. 匹配任何字符。