Основная цель MPS - разрешить расширение языков.Это связано с тем, что для каждого существующего языка уже определен строгий синтаксис языка, что ограничивает его гибкость.
Проблема в расширении синтаксиса языка заключается главным образом в текстовом представлении кода.Это особенно верно, если мы хотим использовать различные языковые расширения, где у каждого может быть свой синтаксис.
Это естественно приводит к идее нетекстового представления программного кода.Основным преимуществом этого подхода является то, что он устраняет необходимость разбора кода.Наше решение состоит в том, чтобы всегда поддерживать код в абстрактном синтаксическом дереве (AST), которое состоит из узлов со свойствами, дочерними элементами и ссылками, и полностью описывает программный код.
В то же время MPS предлагает эффективныйспособ сохранить написание кода в текстовом виде.
При создании языка вы определяете правила для редактирования и рендеринга кода.Вы также можете указать систему типов языка и ограничения.Это позволяет MPS проверять программный код на лету и, таким образом, делает программирование на новом языке простым и менее подверженным ошибкам.
MPS использует генеративный подход.Вы также можете определить генераторы для их языка, чтобы преобразовать код на пользовательском языке в скомпилированный код на каком-либо традиционном языке.В настоящее время MPS особенно хорош, но не ограничивается генерацией кода Java.Вы также можете создавать XML, HTML, JavaScript и т. Д.