0

Java で語彙アナライザーを作成し、PushbackInputStream を使用しています。これは、私が望んでいたものではない場合に備えて、読んだものをプッシュバックできるようにする必要があるためです。しかし、ストリームが空で read() が -1 を返すときはいつでも。unread() を使用することはできません。

編集:私は現在、通常の InputStream を使用しており、一度にすべてを読み取り、スタックに入れ、スタックをストリームとして使用して、アイテムを pop() および push() できるようにしています。

4

3 に答える 3

1

あなたの問題は、あなたが無愛想なサードパーティのプッシュバック ストリームを使用していることだと思います。

おそらく、java.io.PushbackInputStreamまたはjava.io.PushbackReaderより明確に指定された API を持つものを使用する必要があり、バッファーの「フラッシュ」などの特殊なことをしないでください。

于 2010-02-18T01:21:36.280 に答える
0

シングルトークンの先読みとプッシュバックでうまくいくことができれば、古風な趣のあるStreamTokenizerクラスで十分かもしれません。これは、再帰下降パーサーのこの単純な実装で使用されます。

于 2010-02-18T05:21:55.490 に答える
0

しかし、ストリームが空で read() が -1 を返すときはいつでも。unread() を使用することはできません。

「unread() を使用することはできません」と詳しく説明してください。ソースコードをざっと見てみると、問題なく動作するはずです。

また、なぜ EOF を押し戻すのか知りたいです。

于 2010-02-18T08:04:19.800 に答える