我有一个非常简单的键/值语法(不是我正在研究的实际语法,但这是我能想到的最简单的语法,它显示了我的问题),它似乎与 ANTLR 4.0b4 中的词法分析器匹配顺序有问题。语法是:
grammar test;
r : HELLO COLON VALUE;
HELLO : 'hello';
COLON : ':';
VALUE : .+;
鉴于此语法和输入 'hello:world' 我希望它能够正确解析,但是似乎整个输入被拉入单个 VALUE 令牌并因此失败:
hello:world
[@0,0:11='hello:world\n',<3>,1:0]
[@1,12:11='<EOF>',<-1>,2:12]
line 1:0 mismatched input 'hello:world\n' expecting 'hello'
我究竟做错了什么?