如何为.NET Compact Framework构建FParsec?

时间:2011-10-01 19:49:39

标签: f# compact-framework fparsec

我正在编写一个基于FParsec的小应用程序。

今天,我正在寻找机会为Compact Framework制作一个版本。 显然,为.NET CF构建FParsec源并不是那么简单。 FParsecCS库具有不安全的代码和一些CF中不可用的类型的引用。即,System.Collections.Generic.HashSetSystem.Text.DecoderFallbackException等。

我想知道是否有办法让它建成。显然,我正在尝试不改变代码,因为在更新版本的FParsec发布时很难更新。

我并不关心表现。如果有一个通用CharStream可以用来代替你拥有的高性能,那就足够了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我对.NET CF没有任何经验,也从未试图让FParsec运行。但是,有一个Silverlight版本的FParsec,这可能是.NET CF端口的一个很好的起点。 Silverlight版本建立在FParsec的LOW_TRUST version之上,它不使用任何“不安全”的代码。希望LOW_TRUST版本的流大小限制不会成为您的应用程序的问题。

处理HashSet依赖关系的最简单方法可能是实现你自己的简单HashSet类型(基于Dictionary),它实现了FParsec实际用于其的几个方法错误处理。如果不支持DecoderFallbackException,则只需注释掉相应的异常处理程序。

如果使用HG跟踪更改,则在更新FParsec时合并应该不难。根据.NET CF的更改范围,我还可以将它们包含在另一个条件编译器符号的主源代码树中。