Я не уверен, что не так в грамматике ниже, был бы признателен за любую помощь. Я упростил запрос для цели ответа, но попытался получить ключевое слово поиска без пробелов, в свою очередь, я вернул строку, но все пробелы удалены. Например, если я передаю свой поисковый запрос как «Лучшая покупка», я получаю BestBuy взамен.Сохранять пробелы между тегами
Ниже упрощенной грамматикой, я хочу, чтобы извлечь точные слова/фразы, которая включает пробелы, запятая и т.д., указанный в блоке ключевых слов
Поиск Синтаксис
СЛОВО = [Best Buy] // хотите сохранить пробел между [и]
identlit : RESKEYWORD OPERATOR keywordidentifier ;
keywordidentifier : '[' (~']') * ']';
RESKEYWORD: K E Y W O R D;
OPERATOR: [=] ;
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
Пробовал другую версию грамматики, но тот же вопрос
identlit : RESKEYWORD OPERATOR '[' keywordidentifier ']';
keywordidentifier : KEYWORDID*;
KEYWORDID : [a-zA-Z0-9]+ ; // match identifiers
RESKEYWORD: K E Y W O R D;
OPERATOR: [=] ;
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
Спасибо Притам за ваш ответ. Я попытался использовать подход с регулярным выражением, но это не решает мою проблему. Проблема заключается в том, что при автоматическом анализе пространство автоматически уменьшается, например, когда я передаю этот ввод «Pritam Narkhede» во время разбора, я получаю «PritamNarkhede», поэтому ANTLR-парсер пропускает пробелы даже хотя в моем идентификаторе правила я специально упомянул о захвате WS. Надеюсь, это прояснится. В очередной раз благодарим за помощь. – GammaVega