javacc 5.0を使用して、文法ファイルを使用してjsonパーサーを生成します:https ://github.com/inqwell/json/blob/master/src/main/javacc/com/inqwell/json/JSON.jj
ただし、生成されたJavaソースコードにはいくつかのエラーがあります。
char escape = '\u005c\u005c';
と
switch(echar)
{
case 'n':
buf.append(System.getProperties().get("line.separator")); to++;
break;
case 'r': buf.append('\u005cr'); to++; break;
case 't': buf.append('\u005ct'); to++; break;
case 'b': buf.append('\u005cb'); to++; break;
case 'f': buf.append('\u005cf'); to++; break;
case '\u005c\u005c': buf.append('\u005c\u005c'); to++; break;
case '"': buf.append('"'); to++; break;
case '\u005c'': buf.append('\u005c''); to++; break;
case '\u005cr': to++; if (to < len && s.charAt(to) == '\u005cn') to++; break;
case '\u005cn': to++; break;
}
そして、文法ファイルでは、それらは次のとおりです。
char escape = '\\';
と
switch(echar)
{
case 'n':
buf.append(System.getProperties().get("line.separator")); to++;
break;
case 'r': buf.append('\r'); to++; break;
case 't': buf.append('\t'); to++; break;
case 'b': buf.append('\b'); to++; break;
case 'f': buf.append('\f'); to++; break;
case '\\': buf.append('\\'); to++; break;
case '"': buf.append('"'); to++; break;
case '\'': buf.append('\''); to++; break;
case '\r': to++; if (to < len && s.charAt(to) == '\n') to++; break;
case '\n': to++; break;
}
これらのケース文字はエスケープするべきではありませんが、どのように行うのですか?
アップデート
コードをIDEAでコンパイルできません。スクリーンショットを参照してください。