2

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

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

我想知道是否有任何方法可以构建它。显然,我试图不更改代码,因为当 FParsec 的其他版本发布时很难更新。

我真的不关心性能。如果有一个CharStream可以用来代替高性能的泛型,那就足够了。

谢谢您的帮助。

4

1 回答 1

3

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

处理HashSet依赖关系的最简单方法可能是实现您自己的简单HashSet类型(基于 a Dictionary),该类型实现 FParsec 实际用于其错误处理的少数方法。如果DecoderFallbackException不支持,您可以注释掉相应的异常处理程序。

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

于 2011-10-01T20:44:40.447 回答