У меня очень простая грамматика «ключ / значение» (не та грамматика, над которой я работаю, но это самое простое, что я могу придумать и которое показывает мою проблему), которая, похоже, имеет проблемы с порядком сопоставления лексера в 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'
Что я делаю неправильно?