В зависимости от Ваших требований установка экземпляра SOLR может быть полезной, также. Это основано на Lucene и является веб-приложением Java, которое обеспечивает API стиля REST для того, чтобы запросить и обновить его содержание. Мы используем его для фасетного поиска на веб-сайте нашей компании; Zappos и Netflix используют его также, я верю.
Трудно ответить на вопрос в таком широком смысле, но вот некоторые из моих мыслей.
Использование 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 # или какая-то их комбинация - все это разумный выбор. В конечном итоге «правильный» выбор - это тот, при котором работа выполняется в максимально короткие сроки.