Основывайте маленькое выражение DSL на ДОЛЛАРЕ или сохраните это скрученным вручную в F#?

В зависимости от Ваших требований установка экземпляра SOLR может быть полезной, также. Это основано на Lucene и является веб-приложением Java, которое обеспечивает API стиля REST для того, чтобы запросить и обновить его содержание. Мы используем его для фасетного поиска на веб-сайте нашей компании; Zappos и Netflix используют его также, я верю.

6
задан Rickard 10 October 2009 в 20:43
поделиться

1 ответ

Трудно ответить на вопрос в таком широком смысле, но вот некоторые из моих мыслей.

Использование F # для создания синтаксического анализатора звучит хорошо.

FSParsec - отличная библиотека. Я неравнодушен к FSLex и FSYacc. В любом случае, в F # есть библиотеки, специально разработанные для синтаксического анализа, которые экономят ваше время.

Создание кода с помощью DLR звучит нормально.

DLR - отличная платформа для генерации динамического кода. Однако ваше приложение гораздо более конкретное. Если вы ограничиваетесь вычислением значений, вам следует использовать API-интерфейсы деревьев выражений из .NET 3.5. Этот API предназначен для представления произвольных кодовых выражений. DLR, с другой стороны, спроектирован как среда выполнения или динамический язык. Я не говорю, что это невозможно, просто это неподходящий инструмент для работы.

Дон ' • скомпилируйте сгенерированный код.

Если вы используете DLR для представления вашего AST, затраты на компиляцию и выполнение, вероятно, будут намного выше, чем простая интерпретация дерева. Компилируйте код, если: A.) вы выполняете одну и ту же функцию / метод много раз или B.) функция / метод очень сложны.

C # + DLR, IronPython, F # или некоторые другие комбинация из трех - все разумный выбор. В конечном итоге «правильный» выбор - это тот, при котором работа выполняется в максимально короткие сроки.

) функция / метод очень сложны.

C # + DLR, IronPython, F # или какая-то их комбинация - все это разумный выбор. В конечном итоге «правильный» выбор - это тот, при котором работа выполняется в максимально короткие сроки.

) функция / метод очень сложны.

C # + DLR, IronPython, F # или какая-то их комбинация - все это разумный выбор. В конечном итоге «правильный» выбор - это тот, при котором работа выполняется в максимально короткие сроки.

7
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: