Как собрать FParsec для .NET Compact Framework? - PullRequest
2 голосов
/ 01 октября 2011

Я пишу небольшое приложение на основе FParsec.

Сегодня я ищу возможность сделать версию для Compact Framework. По-видимому, не так просто создать исходные коды FParsec для .NET CF. Библиотека FParsecCS содержит небезопасный код и некоторые ссылки на типы, недоступные в CF. А именно, System.Collections.Generic.HashSet, System.Text.DecoderFallbackException и более.

Мне интересно, есть ли способ сделать его построенным. Очевидно, я пытаюсь не изменять код, так как будет сложно обновить его, когда будут выпущены другие версии FParsec.

Меня не волнует производительность. Если есть универсальный CharStream, который можно использовать вместо имеющегося у вас высокопроизводительного, этого будет вполне достаточно.

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 02 октября 2011

У меня нет опыта работы с .NET CF, и я никогда не пытался запустить FParsec на нем. Однако существует версия FParsec Silverlight, которая может быть хорошей отправной точкой для порта на .NET CF. Версия Silverlight основана на версии LOW_TRUST FParsec, которая не использует какой-либо «небезопасный» код. Надеемся, что ограничение размера потока в версии LOW_TRUST не станет проблемой для вашего приложения.

Самый простой способ справиться с зависимостью HashSet, вероятно, заключается в реализации собственного простого типа HashSet (на основе Dictionary), который реализует несколько методов, которые фактически использует FParsec для обработки ошибок. Если DecoderFallbackException не поддерживается, вы можете просто закомментировать соответствующие обработчики исключений.

Если вы отслеживаете свои изменения с помощью HG, не составит труда объединить обновления в FParsec. В зависимости от того, насколько обширны изменения для .NET CF, я мог бы также включить их в главное дерево исходных текстов для другого условного символа компилятора.

...