Et par littéraux chaîne, je veux dire ceux qui contiennent \123
aussi des caractères. J'ai écrit quelque chose, mais je ne sais pas s'il est parfait:Existe-t-il une spécification jflex des littéraux de chaîne Java quelque part?
<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('\\'); }
}
En fait, je sais que ce n'est pas parfait, puisque pour les trois lignes d'analyse syntaxique \ddd
-comme caractères, je ne mets pas le caractère lui-même dans la chaîne, mais sa représentation à la place. Je peux essayer de le convertir en utilisant des méthodes de caractères, mais peut-être que je ne suis pas exhaustif, peut-être qu'il y a d'autres séquences d'échappement que je n'ai pas traitées ... donc s'il y a un fichier canonique.