Java でパーサーを作成しており、Java の PushbackReader を活用しようとしています。間違って推測した場合、パーサーはバックトラックする必要があるかもしれませんが、リーダーが EOF に達すると失敗します。
引用符で囲まれた文字列を解析していて、閉じ引用符を探しているとしましょう。パーサー プラグインのいずれかが完全に終了できない場合、リーダーを元の状態のままにして、次のプラグインに渡そうとします。IE: 通常、文字をバッファにプッシュし、次の要素にバッファの解析を試みさせます。
残念ながら、最後の文字まで「読んで」...そして EOF を読んだ場合、PushbackReader では何もプッシュバックできません。その結果、これらの文字が失われるため、解析を完了できません!
このタイプの文字列処理用に独自のリーダーを作成する必要がありますか?
EDIT:さらに、最後の文字(EOFの直前の文字)を読み取ると、その文字を「読み取る」こともできません。これに対する標準的な回避策はありますか?独自のスタックまたはバッファーの実装を作成する以外に?