2011-10-01 138 views
2

我正在寫一個基於FParsec的小應用程序。如何爲.NET Compact Framework構建FParsec?

今天,我正在尋找一個爲Compact Framework製作一個版本的機會。顯然,爲.NET CF創建FParsec源並不那麼簡單。 FParsecCS庫具有不安全的代碼和一些對CF中不可用的類型的引用。即,System.Collections.Generic.HashSet,System.Text.DecoderFallbackException,等等。

我想知道是否有任何方法使它建成。很顯然,我試圖不改變代碼,因爲在FParsec的更多版本發佈時很難更新代碼。

我並不在乎表現。如果有一個通用的CharStream可以用來代替你的高性能,那就足夠了。

謝謝你的幫助。

+0

您可以使用Mono的HashSet實現。 –

回答

3

我對.NET CF沒有任何經驗,也從來沒有嘗試過FParsec在其上運行。但是,有一個FParsec的Silverlight版本,這對於.NET CF的移植來說可能是一個很好的起點。 Silverlight版本基於FParsec的LOW_TRUST version,它不使用任何「不安全」的代碼。希望LOW_TRUST版本的流大小限制對您的應用程序不成問題。

應對HashSet的依賴可能是實現你自己的簡單HashSet類型(根據Dictionary)實現該FParsec實際上是它的錯誤處理採用一些方法最簡單的方法。如果DecoderFallbackException不被支持,你可以註釋掉相應的異常處理程序。

如果您使用HG跟蹤更改,則在更新FParsec時合併應該不會很困難。根據.NET CF的變化有多大,我也可以將它們包含在主源代碼樹中作爲另一個條件編譯器符號。