У меня есть правило лексера, которое определяет буквальную строку в одинарных кавычках как
L_S_STRING : '\'' (('\'' '\'') | ('\\' '\'') | ~('\''))* '\''
. В одном конкретном случае это не удается:
'yyyy-MM-dd\\'T\\'HH:mm:ss\\'Z\\''
Проблема действительно в последних двух одинарных кавычках,Если я добавил пробел между ними, это сработало.Или я мог бы использовать две одинарные кавычки для завершения, и это тоже сработало, например:
'yyyy-MM-dd\\'T\\'HH:mm:ss\\'Z'''
Я не уверен, что это как-то связано с наличием не жадного оператора, который вызвал первое совпадение ('\ '' '\' ')?Если это так, я не вижу, как могла бы работать последняя версия.
В любом случае, может кто-нибудь помочь, пожалуйста?
ОБНОВЛЕНИЕ - Я не могу воспроизвести ее за пределами полной версии.грамматика.Это может быть красная сельдь.
ОБНОВЛЕНИЕ - я пропустил какой-то важный контекст, поэтому я разместил здесь еще один вопрос Antlr4: правило одинарных кавычек не выполняется, когда есть escape-символы плюс возврат каретки, новая строка