И под строковыми литералами я имею в виду те, которые содержат \123
-подобные символы.
Я написал что-то, но не знаю, идеально ли это:
<STRING> {
\" { yybegin(YYINITIAL);
return new Token(TokenType.STRING,string.toString()); }
\\[0-3][0-7][0-7] { string.append( yytext() ); }
\\[0-3][0-7] { string.append( yytext() ); }
\\[0-7] { string.append( yytext() ); }
[^\n\r\"\\]+ { string.append( yytext() ); }
\\t { string.append('\t'); }
\\n { string.append('\n'); }
\\r { string.append('\r'); }
\\\" { string.append('\"'); }
\\ { string.append('\\'); }
}
На самом деле, я знаю, что это не идеально, так как для трех строк, похожих на \ddd
-подобные символы, я не помещаю сам символ в строку, а вместо этого его представление.
Я могу попытаться преобразовать его, используя методы символов, но тогда, возможно, я не исчерпывающий, может быть, есть другие escape-последовательности, которые я не обработал ... так что, если есть канонический файл jflex, для него это было бы идеально.