Создание разных текстовых языков из одного DSL с MPS
Я ищу способ генерировать код на нескольких разных языках, хорошее начало будет ObjC, Java для Android, Unity и JavaScript (Cordova), для повторного кода. В настоящее время я пишу код вручную снова и снова на каждом языке. Я смотрю на MPS и думаю о разработке одного DSL и генерировать из него разный код для каждого языка.
Мой вопрос: позволяет ли MPS создавать разные TextGen для разных языков?
1 ответ
Да, MPS позволяет вам ориентироваться на разные языки. Конечно, вам нужно различать две логические "фазы" процесса генерации в MPS - генератор, который выполняет преобразования моделей, и textgen, который преобразует модели в текст. Генератор обычно преобразует DSL в язык общего назначения (все еще представленный в виде AST), в то время как textgen, определенный для этого языка общего назначения, преобразует код в текст. В настоящее время существует несколько таких "базовых" языков общего назначения - Java, C, XML и несколько прототипов.
Преобразование DSL непосредственно в текст через textgen, определенный для DSL, также возможно, но выполнимо только для простого DSL.