[英]Translate Haskell Parsec grammar to Scala?
我正在尝试使用Parsec将用Haskell编写的语法翻译成Scala的解析器组合器。
实际匹配表达式的翻译非常简单,至少在我看来,在Scala中更容易一些。 对我来说一点都不清楚的是如何处理Parsec使用monad传递的状态。
Scala解析器读入Input并生成ParseResult [T]。
相反,Haskell中的GenParser读入输入和状态并生成另一个解析器。 在Scala中传递这种状态令我感到困惑。
有没有人在Scala中有一个状态解析的例子,他们愿意分享?
我知道在Scala Parsers Combinators中处理状态丰满的唯一方法是通过into
方法,也称为>>
和flatMap
(是的,你可以在for-comprehensions中使用它)。 然而,它通过状态(或者,更准确地说,分析结果) 为解析器,而不是沿下一个解析器,这似乎是你所描述的。
不知道Haskell的Parsec,我很难猜测如何用它来翻译你的语法。
另见这个问题 。 有一篇关于Scala解析器组合的非常有趣的论文,但我无法找到它。 Scala Lang上的一些人可能会把它打开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.