また、文字列リテラルとは、の\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
-like 文字を解析する 3 行では、文字自体を文字列に入れるのではなく、その表現を文字列に入れるからです。文字メソッドを使用して変換しようとするかもしれませんが、網羅的ではないかもしれません。処理しなかった他のエスケープシーケンスがあるかもしれません....そのための正規のjflexファイルがあれば完璧です。