【发布时间】:2011-02-11 22:37:07
【问题描述】:
我正在用 Java 编写解析器并尝试利用 Java 的 PushbackReader。如果我的解析器猜错了,它可能需要回溯 - 但是一旦阅读器到达 EOF,就会失败。
假设我正在解析一个带引号的字符串并且我正在寻找结束引号。如果我的任何解析器插件无法完全完成,它们会尝试让阅读器保持原始状态并将其传递给下一个插件。 IE:我通常将字符推回缓冲区并让下一个元素尝试解析缓冲区。
不幸的是,如果我一直“读取”到最后一个字符……然后读取 EOF,PushbackReader 将不允许我将任何内容推回它上面。因此,由于这些字符丢失,我的解析无法完成!
我需要为这种类型的字符串处理编写自己的阅读器吗?
编辑:此外,当我阅读最后一个字符(EOF 之前的那个)时,我也不能“未读”那个字符。是否有一个标准的解决方法 - 没有创建我自己的堆栈或缓冲区实现?
【问题讨论】:
-
似乎不太可能。您的代码可能有问题。