Intro to MPS
-
Upload
anton-arhipov -
Category
Documents
-
view
4.111 -
download
2
description
Transcript of Intro to MPS
LOP, или что плохо в существующем
подходе• Универсальные языки недостаточно
выразительны
Проблема – мы ограничены синтаксисом языка
«Старый» подход к LOP
• Лексический анализатор
• Парсер (абстрактный синтаксис) – «как выглядит синтаксическое дерево?»
• Компилятор (семантика) – «а что это AST значит?»
load aload bcmp…
Проблемы, которые мы решили
• Сложно «смешивать» языки (2 языка внутри одного выражения) - нет никаких гарантий, что удастся корректно распарсить
A: “String with {value}”B: “String with ${anotherValue}”A+B: “String with ${problemValue}”
• Отсутствие инструментария o editor o code completion o intentions o refactoringso ...
AST (Abstract Syntax Tree)
editor
intentionscode
transformations
tools
typesystem generator
Подход MPS
MPS• Быстрая разработка языков (а будет еще
быстрее!)• Неограниченное смешивание языков (нет
парсера)• Автоматический тулинг – editor, code
completion, refactorings• Лаконичное описание системы типов• Шаблонная кодогенерация• DSLи для создания тулов
Языки MPS• Closures• Collections• Dates• Checked dots• Math• Tuples• Regexp
ClosuresCollectionsDatesChecked dotsMathTuplesRegexp
Язык “Lazy”• Язык для
«ленивых» вычислений
• Интегрируется с Java
• Наш язык не будет работать в некоторых случаях (но мы знаем как это поправить!)
Язык “Lazy”
AST тип lazy<Type>
EditorПредставление:
lazy < Type >
Generatorlazy<T> x;x = 1+1;print(x);
Typesystemlazy<T> :<: Tlazy<T> :>: T
Demo• Будет 2 этапа
o Structure + editor – после этого можно писать на языке
o Generator – можно «скомпилировать» нашу программу в рабочий код на Java
Just give it a try!• MPS бесплатен• Полностью открытый исходный код• Распространяется под лицензией Apache 2.0
(бери и продавай!)