Создание разных текстовых языков из одного 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.

Другие вопросы по тегам