Я пишу парсер на Java и пытаюсь использовать Java PushbackReader. Моему парсеру, возможно, придется вернуться назад, если он угадал неправильно, но как только читатель достигнет EOF, это не удастся.
Допустим, я анализирую указанную строку и ищу закрывающие кавычки. Если какой-либо из моих плагинов парсера не может полностью завершиться, они пытаются оставить читателя в исходном состоянии и передать его следующему плагину. IE: я обычно помещаю символы обратно в буфер и позволяю следующему элементу попытаться проанализировать буфер.
К сожалению, если я «прочитаю» весь путь до последнего символа ... и затем прочитаю EOF, PushbackReader не позволит мне что-либо толкнуть обратно на него. Следовательно, мой анализ не может быть завершен, так как эти символы потеряны!
Нужно ли мне писать собственный ридер для этого типа обработки строк?
РЕДАКТИРОВАТЬ: кроме того, когда я читаю последний символ (тот, который был непосредственно перед EOF), я не могу «прочитать» этот символ. Есть ли стандартный обходной путь для этого - если не считать создание моей собственной реализации стека или буфера?