【发布时间】:2012-04-20 21:34:07
【问题描述】:
一个有点模糊的问题,我提前道歉。
我正在借助 Building Parsers with Java 一书构建小型解析器的标记化部分。它使用 PushbackReader 和其中包含的字符串作为首先检测给定字符串的第一个字符的方法,然后将 PushbackReader 发送到适当的状态(然后该状态将令牌构建为包含字符串的单独对象)。
PushbackReader 似乎仅在流中未找到其他使用字符时才使用。然后它会取消读取最后一个字符。
是否可以用 CharBuffer 的追加来做同样的事情?最好是不需要预定义缓冲区的东西。
【问题讨论】:
-
你看过这里的示例代码吗? oozinoz.xp123.com/bpwj.htm
-
是的。那是我最初得到它的地方。虽然我怀疑我正在尝试做的事情本质上是愚蠢的。
-
我没有意识到它是 Java 的一部分。请参阅:docs.oracle.com/javase/1.5.0/docs/api/java/io/…。为什么要尝试重新创建 Java 中已经存在的东西?
-
拥有更一般的东西,例如,没有固定的长度。读者本身似乎是矫枉过正。我所做的只是用 StringBuffer 替换它(在我的版本中)。我有点好奇他们为什么一开始就决定使用 PushbackReader,但也许我会遇到一个地方,它会在以后输入好坏方面有所不同。