Я написал DSL для Boo, Irony.NET и инструментария под названием Grammatica. Вы говорите, что генератор синтаксических анализаторов слишком сложен, но, возможно, вы слишком поспешны в своем суждении, на самом деле их довольно просто использовать, когда вы преодолеваете небольшую кривую обучения, и открываете огромный мир возможностей, который легко переопределяется усилие. Я обнаружил, что изучение нотации, необходимой для написания грамматик для большинства генераторов синтаксических анализаторов, чем-то похоже на изучение регулярных выражений - вам нужно лишь слегка согнуть свой ум, чтобы впустить их, но награды значительны.
Мое мнение таково: если ваш целевой язык достаточно прост, чтобы его мог обработать тупой визуальный дизайнер, то написать грамматику для него с помощью генератора синтаксического анализатора должно быть довольно легко.
Если ваша целевая DSL достаточно сложна, чтобы вам приходилось пренебрегать написанием грамматики, то измученный визуальный инструмент в любом случае не срежет горчицу, и вам в любом случае придется научиться писать грамматику .
В долгосрочной перспективе я согласен с внутренними и внешними DSL. Я написал внутренний DSL в Boo и мне пришлось изменить синтаксис DSL, чтобы он работал, и это всегда было похоже на хак. Эту же грамматику с использованием Irony.NET или ANTLR было бы так же просто выполнить с большей гибкостью.
У меня есть сообщение в блоге , в котором обсуждаются некоторые варианты. Эта статья посвящена написанию DSL для оценки выражений во время выполнения, но инструменты все те же.
Мой опыт работы с Irony.NET был положительным, и с его помощью было реализовано несколько эталонных языков, которые являются хорошим началом. Если ваш язык прост, его совсем не сложно запустить и запустить. В CodeProject также есть библиотека под названием TinyParser - она действительно интересна, потому что она генерирует синтаксический анализатор как чистый исходный код, что означает, что ваш конечный продукт полностью свободен от любых сторонних ссылок. Я сам этим не пользовался.