5

我可以使用 Scala 解析器框架来解析在推送模式下提供给解析器的事件流(即一系列 write() 调用)吗?还是必须使用迭代器“拉”其输入?我正在考虑使用解析器主要来验证 write() 调用的序列是否是格式良好的合法序列,但它也可能会向流中注入额外的令牌。

我知道我可以将一系列标记推送到期望通过使用线程来拉取序列的组件,但这是一个混乱的解决方案。

4

1 回答 1

2

好的,答案似乎是 Scala 解析器需要“拥有控制循环”:它不能在推送模式下驱动。这是因为作为递归下降解析引擎,它需要程序栈来维护状态。通过将其作为独立线程运行,它可能会在单独的堆栈上运行,但当然必须考虑语法是否需要回溯和/或前瞻并实现任何必要的缓冲。

出于预期目的,找到一个生成简单状态机的工具似乎是一个更好的方法。

感谢导致此结论的评论。

于 2012-10-04T17:12:52.047 回答