2014-11-03 3 views
1

У меня есть следующее правило:antlr4 - строка, выходящая в буквальное

value  : STRING; 

STRING  : '"' ('\\"' | ~'"')* '"'; 

Является ли это правильный и умный способ разрешить присутствие " в строке? Это бежит как \".

Строка обрабатывается следующим образом:

final ValueContext c = ...; 
final String s = c.STRING().getText(); 

s.substring(1, s.length() - 1).replaceAll("\\\\\"", "\""); 

ответ

2

Да, как и многие другие языки позволяют цитаты быть экранированы. Обратите внимание, что ~'"' также допускает включение разрывов строк в строковых литералах. Если вы этого не хотите, замените его на ~["\r\n].

Смежные вопросы