Scala解析器框架可以解析以“推送”模式提供的序列吗?

时间:2012-10-01 16:00:56

标签: parsing scala

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

我知道我可以将一系列令牌推送到一个期望通过线程拉动序列的组件,但这是一个混乱的解决方案。

1 个答案:

答案 0 :(得分:2)

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

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

感谢导致这一结论的评论。