Имеется DSL, простой императивный язык с LL(1) грамматикой. Задача: реализовать его на практике.
Я читал что-то про lex+yacc, CL/Scheme/Clojure, MPS, ANTLDR, LLVM, xText и Meta Platform им. Луговского. Но никакого опыта с созданием DSL не имел.
Кроме собственно компилятора/интерпретатора, хочется получить:
- Что-то похожее на отладчик. Не грамматики, а собственно языка. Пройти программу по шагам, посмотреть переменные, всё такое.
- Динамичность для пользователя. Чтобы он мог, например, добавить в язык новое ключевое слово, или переопределить существующее, и одной кнопкой перегенерировать все инструменты.
Технологических ограничений нет, кроме того, что нужна кроссплатформенность (Windows+Linux).
Какое средство наиболее подходит? Будет интересно узнать, кто чем пользовался при создании DSL. Спасибо.