0

用 Java 制作一个词法分析器,我正在使用 PushbackInputStream,因为我需要能够推回我读到的内容,以防它不是我想要的。但是每当流为空并且 read() 返回 -1 时。它不允许我使用 unread()。

编辑:我目前正在使用常规的 InputStream,一次读取所有内容,将其放入堆栈中,并将堆栈用作流,以便我可以对其进行 pop() 和 push() 项目。

4

3 回答 3

1

I think your problem is that you are using a crufty 3rd-party pushback stream.

You probably should be using java.io.PushbackInputStream or java.io.PushbackReader which have a more clearly specified API, and don't do peculiar things like "flushing" the buffer.

于 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 回答