У меня есть грамматика ANTLR4 для определенного формата JSON (я знаю, что мне следует использовать схему JSON, но давайте пока проигнорируем это)
Как часть моего объекта JSON, я хотел бы сопоставить такую строку:
"order" : "somefield ASC, someotherfield DESC"
Вот соответствующие части грамматики
Парсер:
orderObject : ORDER;
Лексер:
COLON: ':';
QUOT: '"';
FIELDNAME : ALPHA (ALPHA | DIGIT | UNDER)*;
fragment DIGIT : [0-9];
fragment UNDER : '_';
fragment ALPHA : [a-zA-Z];
ORDER : '"order"' -> pushMode(ORDERMODE);
WS : [ \r\n\t]+ -> skip;
mode ORDERMODE;
WS2 : [ \r\n\t]+ -> skip;
PREFIX : COLON QUOT -> skip;
ORDERCLAUSE : (ORDERITEM (COMMA ORDERITEM)*)+;
CLOSE : '"' -> popMode;
ORDERITEM : FIELDNAME ORDERDIRECTION?;
ORDERDIRECTION : 'ASC' | 'DESC';
Результат, который я получаю,
line 1:8 token recognition error at: ': '
Что я делаю не так?