在Java中制作词法分析器,我使用的是PushbackInputStream,因为我需要能够推回所读取的内容,以防它不是我想要的。但是,只要流是空的,read()就返回-1。它不允许我使用unread()。编辑:我目前正在使用一个普通的InputStream,一次读取它,把它放入一个堆栈,并使用堆栈作为流,所以我可以弹出()和推()上的项目。如何在流为空后在PushBackBufferedInputStream中使用unread()?
0
A
回答
1
我认为你的问题是你正在使用一个crufty第三方回推流。
你可能应该使用java.io.PushbackInputStream
或java.io.PushbackReader
它有一个更明确指定的API,并且不要做特殊的事情,比如“冲洗”缓冲区。
0
如果你可以通过单个令牌前瞻和回推获得,那么古怪的老师StreamTokenizer
类就足够了。它用在递归下降解析器的简单implementation中。
+0
哇谢谢,但我实际上必须编码Tokenizer自己哈哈。 – fent 2010-02-18 06:43:13
0
但是,只要流为空,并且 read()返回-1。它不允许我 使用未读()。
请详细说明'不允许我使用未读()'。从简单的源代码看,它应该可以正常工作。
也很想知道为什么你要推回EOF。
相关问题
- 1. 如何显示unread消息栏
- 2. 如何在使用ffmpeg php开始流之后停止流?
- 3. 如何使ImageView在使它变为空后重新出现
- 4. 如何在流中使用ICSharpCode.ZipLib?
- 5. 如何在数据流中使用memcache?
- 6. 如何在流星中使用pdf.js?
- 7. 如何在张量流中使用tf.losses.log_loss?
- 8. 如何在流星1.0中使用jQuery
- 9. 如何在流明中使用papertrail
- 10. 如何在DynamoDB流中使用Apache Streaming
- 11. JPA Entity CreateTimestamp在为空后为空
- 12. 序列化后SOAP扩展流为空
- 13. 为什么在流星中使用NGINX?
- 14. 如何在“if”中使用空格?
- 15. 如何在mongoDB中使用空数组?
- 16. 如何在FMDB中使用真空iOS
- 17. 如何在开关中使用空值
- 18. 如何在可空列中使用SqlBulkCopy
- 19. 在AngularJS中使用$ routeProvider加载URL后,页面变为空白
- 20. 如何在执行一个操作后重新使用流
- 21. 在ViewDidLoad之后NSMutableArray为空
- 22. 如何在td为空时使colspan auto?
- 23. 如何使默认为空在Oracle
- 24. 如何使用urllib3在URL中将空格编码为'+'?
- 25. 如何在表达式中使用Doctrine的“为空”?
- 26. 为什么以及如何在C++中使用名称空间?
- 27. 如何在SED中使用空格作为变量
- 28. 如何在Android Studio中使用Text Utils设置TextField为空?
- 29. 在数组为空后中止“for”
- 30. 如何使用jsdoc为流星应用
糟糕!我实际上是使用java.io.PushbackInputStream。但是在发布这篇文章时,我在学校,无法访问我的代码,因此无法完全记得我使用的是什么。 – fent 2010-02-18 06:44:29