parsing - Scala 解析器框架能否解析以 "push"模式提供的序列?

标签 parsing scala

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

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

最佳答案

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

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

感谢导致此结论的评论。

关于parsing - Scala 解析器框架能否解析以 "push"模式提供的序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12676855/

相关文章:

python - 我的美丽汤刮刀无法按预期工作

android - 使用 scalatest + robolectric

scala - 为什么 Scala 中的 block 内转发引用值必须是惰性的?

javascript - 重定向到 .scala.html 文件(Scala Play)仅显示纯文本

c - 解析文件并将其存储到 BST 中

c++ - 将解析树转换为 AST(抽象语法树)C++

arrays - 如何在 flutter 中解析json?

scala - Spark DataFrame 计算列

scala - SBT 不能将 Seq[Object] 附加到 Seq[ModuleID]

c# - 如何解析字符串并获取公式?在 C#