Мне нужно написать простую грамматику antlr4 для таких выражений:
{paramName=simple text} //correct
{ paramName = simple text} //correct
{bad param=text} //incorrect
Первые два выражения почти равны. Разница заключается в пробелах до и после имени параметра. Третье неверно, пробелы не допускаются в имени параметра. Я пишу грамматику:
grammar Test;
prog : '{' paramName '=' paramValue '}' ;
paramName : PARAM_NAME ;
paramValue : TEXT_WITH_SPACES ;
PARAM_NAME : [A-Za-zА-Яа-я_] [A-Za-zА-Яа-я_0-9]* ;
TEXT_WITH_SPACES : (LETTERS_EN|' ')+ ;
WS : [ ]+ -> skip;
fragment LETTERS_EN : ([A-Za-z]) ;
Итак, задача - игнорировать пробелы вокруг имени параметра, но разрешить пробелы в значении параметра. Но когда я добавляю пробел в правило TEXT_WITH_SPACES, мое второе выражение выделяется как неправильное.
Скриншот
Что я могу сделать? Заранее спасибо!