Parsing Scala解析器组合器与Haskell';是帕塞克吗?

Parsing Scala解析器组合器与Haskell';是帕塞克吗?,parsing,scala,haskell,parsec,parser-combinators,Parsing,Scala,Haskell,Parsec,Parser Combinators,我已经读到Haskell解析器组合器(在Parsec中)可以解析上下文敏感语法。Scala解析器组合器也是这样吗?如果是,这就是“into”(又名“>>”)函数的用途吗 与Haskell相比,Scala实现解析器组合器有哪些优点/缺点?他们接受同一类语法吗?是否更容易生成错误消息或使用其中一个执行其他杂项有用的操作 packrat解析(在Scala 2.8中引入)如何适应这张图片 是否有网页或其他资源显示不同的操作员/功能/DSL sugar如何从一种语言的实现映射到另一种语言的实现?您有很多问

我已经读到Haskell解析器组合器(在Parsec中)可以解析上下文敏感语法。Scala解析器组合器也是这样吗?如果是,这就是“into”(又名“>>”)函数的用途吗

与Haskell相比,Scala实现解析器组合器有哪些优点/缺点?他们接受同一类语法吗?是否更容易生成错误消息或使用其中一个执行其他杂项有用的操作

packrat解析(在Scala 2.8中引入)如何适应这张图片


是否有网页或其他资源显示不同的操作员/功能/DSL sugar如何从一种语言的实现映射到另一种语言的实现?

您有很多问题

比较parsec(它只是众多Haskell解析器组合器库中的一个)和parsec的Scala实现

这里没有人进行过比较,因为Scala代码相当新,但请查看文档:

请注意,如果您对这种方法感兴趣,Haskell还有许多其他解析器组合器库,例如

  • +
与Haskell相比,Scala实现解析器组合器有哪些优点/缺点

Haskell代码已经有十多年的历史了,已经被很好地理解了,并且有许多示例、大量文档和用户案例。Scala的东西相对较新

packrat解析

packrat解析是完全不同的。最初是在哈斯克尔开发的,但后来变得更为广泛

是否有网页或其他资源显示不同的运营商/功能/DSL如何从一种语言的实现映射到另一种语言的实现


不,但那太酷了。然而,几乎所有(?)parser combinator库都基于领先的parsec实现,因此它们与原始parsec有很多共同之处。

还有以下技术报告:

解析器组合器在Haskell等函数式编程语言中是众所周知的。在本文中,我们描述了如何在Scala(一种面向对象的函数语言)中将它们实现为一个库。由于Scala灵活的语法,我们能够接近专用解析器生成器支持的EBNF表示法。对于新手,我们首先通过从头开发一个最小库来解释解析器组合器的概念。然后,我们将详细介绍现有的Scala库,包括它支持将变量绑定表示为语法的一部分。我们提供了几个现实的例子来说明我们的库的实用性


@Adrian Moors:是否有一份出版物介绍了Scala 2.8 combinator解析器库的新增内容?我不这么认为,但我会问Tiark——我从2.7开始就没有研究过解析器。