gpt4 book ai didi

Java 的 PushbackReader 和 EOF

转载 作者:行者123 更新时间:2023-11-30 06:36:20 24 4
gpt4 key购买 nike

我正在用 Java 编写解析器并尝试利用 Java 的 PushbackReader。如果我的解析器猜错了,它可能需要回溯 - 但一旦读者到达 EOF,它就会失败。

假设我正在解析一个带引号的字符串并且正在寻找结束引号。如果我的任何解析器插件无法完全完成,它们会尝试让阅读器保持原始状态并将其传递给下一个插件。 IE:我通常将字符推回缓冲区,让下一个元素尝试解析缓冲区。

不幸的是,如果我一直“读取”到最后一个字符……然后读取 EOF,PushbackReader 将不允许我将任何内容推回到它上面。因此,我的解析无法完成,因为这些字符丢失了!

是否需要为这种类型的字符串处理编写自己的阅读器?

编辑:此外,当我读取最后一个字符(EOF 之前的字符)时,我也无法“未读取”该字符。是否有针对此问题的标准解决方法 - 除了创建我自己的堆栈或缓冲区实现之外?

最佳答案

注意永远不要取消读取 EOF 标记,PushbackReader 中的缓冲区是 char[] 类型,因此整数 -1 将被转换为 char 0xFFFF,这将是 read 方法返回的下一个字符。例如,在解析带引号的字符串时,除了结束引号字符之外,始终包括对 -1 的检查,并将其作为失败情况处理,例如通过抛出 IOException。

关于Java 的 PushbackReader 和 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com