繁体   English   中英

将Haskell Parsec语法翻译成Scala?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM