2010-03-13 76 views
22

我讀過Haskell解析器組合器(在Parsec中)可以解析上下文敏感的語法。對於Scala解析器組合器,這也是如此嗎?如果是這樣,這是「入」(又名「>>」)功能是什麼?Scala解析器組合器與Haskell的Parsec相比如何?

Scala的解析器組合器的實現與Haskell的實現有什麼長處/短處?他們接受同一類語法嗎?更容易產生錯誤信息或用其他方法做其他雜項有用的事情?

packrat解析(在Scala 2.8中引入)如何適合這張圖片?

是否有網頁或其他資源,顯示不同的操作符/函數/ DSL糖從一種語言的實現映射到另一個上?

回答

14

您有很多問題!

秒差距(這僅僅是衆多的Haskell解析器組合庫之一)到Scala實現的秒差距

有人在這裏進行的比較比較,因爲Scala代碼是相當新的,但檢查文檔:

請注意,如果您對此方法感興趣,Haskell還有許多其他解析器組合器庫。

有哪些優勢/ Scala的實現解析器組合的弱點,VS Haskell的?

Haskell代碼已經有十多年的歷史了,很好理解,並且有很多例子,很多文檔和用戶案例。斯卡拉的東西比較新。

packrat解析

packrat解析是完全不同的。最初的packrat paper是在Haskell開發的,但後來變得更加普遍。

是否有網頁或其他資源,顯示不同的操作符/函數/ DSL糖從一種語言的實現映射到另一個上?

不,但那會很酷。但是,幾乎所有(?)解析器組合器庫都基於開創性的parsec實現,所以它們與原始parsec共享很多。

7

還有以下技術報告:

Parser combinators in Scala

解析器組合在函數式編程語言,例如哈斯克爾知名。在本文中,我們描述了它們是如何在Scala中實現的,這是一種面向對象的函數式語言。感謝Scala靈活的語法,我們能夠近似接近由專用解析器生成器支持的EBNF表示法。對於不熟悉的人,我們首先通過從頭開發一個最小的庫來解釋解析器組合器的概念。然後我們轉向對現有Scala庫的詳細描述,包括它對作爲語法一部分的變量綁定的支持。我們提供了幾個現實的例子來說明我們的圖書館的實用性。

report.pdf (324K)

+0

@Adriaan摩爾:有沒有解決的Scala 2.8組合符解析器庫添加的刊物? – 2010-03-16 14:39:03

+0

我不這麼認爲,但我會問Tiark - 自2.7以來我沒有在解析器上工作過。 – 2010-03-17 09:51:28

相關問題