art*_*tif 22 parsing haskell scala parsec parser-combinators
我已经读过Haskell解析器组合器(在Parsec中)可以解析上下文敏感语法.Scala解析器组合器也是如此吗?如果是这样,这就是"进入"(又名">>")功能的用途吗?
与Haskell相比,Scala实现解析器组合器有哪些优点/缺点?他们接受同一类语法吗?是否更容易生成错误消息或使用其中一个进行其他各种有用的事情?
packrat解析(在Scala 2.8中引入)如何适应这张图片?
是否有网页或其他资源显示一种语言的实现中不同的运算符/函数/ DSL-sugar如何映射到另一种语言?
Don*_*art 14
你有很多问题!
将parsec(只是众多Haskell解析器组合库中的一个)与parsec的Scala实现进行比较
没有人在这里进行比较,因为Scala代码相当新,但请查看文档:
请注意,如果您对此方法感兴趣,Haskell还有许多其他解析器组合库,例如
与Haskell相比,Scala实现解析器组合器有哪些优点/缺点?
Haskell代码已有十多年的历史,很好理解,并且有许多示例,大量文档和用户案例.Scala的东西相对较新.
packrat解析
packrat解析完全不同.最初的包装纸是在Haskell开发的,但后来变得更加普遍.
是否有网页或其他资源显示一种语言的实现中不同的运算符/函数/ DSL-sugar如何映射到另一种语言?
不,但那会很酷.但是,几乎所有(?)解析器组合库都基于开创性的parsec实现,因此它们与原始parsec共享很多.
还有以下技术报告:
解析器组合器在诸如Haskell之类的函数编程语言中是众所周知的.在本文中,我们将描述它们如何在Scala中实现,这是一种面向功能的面向语言.由于Scala灵活的语法,我们能够非常接近专用解析器生成器支持的EBNF表示法.对于没有经验的人,我们首先通过从头开发一个最小的库来解释解析器组合器的概念.然后,我们转向现有Scala库的详细描述,包括支持将变量绑定表示为语法的一部分.我们提供了几个现实的例子来说明我们图书馆的实用性.