В настоящее время я разрабатываю несколько внешних текстовых DSL с использованием FsLex / FsYacc.Я использовал ручной синтаксический анализатор, но я считаю, что FsLex / FsYacc гораздо проще поддерживать на этапе проектирования.
FsLex / FsYacc не так сложны, как ANTLR, но, поскольку большинство DSL довольно просты , FsLex / FsYacc - идеальный выбор для использования в Visual Studio.И держать DSL простыми - это хорошо, так как они предназначены для ограничения и просты в изучении.
Я считаю книгу Мартина Фаулера хорошим ресурсом, не столько для примеров и подробностей, сколько для энциклопедии DSL.идеи.Его обсуждение удобства использования и других аспектов проектирования DSL также стоит прочитать.Как указал Тоумас, он не охватывает ни F #, ни функциональные языки.Г-н Фаулер пишет, что ему не хватало опыта в этих вопросах, чтобы своевременно выводить книгу на рынок.
Высоко оценивая FsLex / FsYacc, я все еще хотел бы, чтобы кто-нибудь написал хороший бэкэнд для ANTLR для F #.:)
-Neil