Your SlideShare is downloading. ×
0
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Intro to MPS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Intro to MPS

4,165

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,165
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Введение в MPS Михаил Мухин JetBrains Старший разработчик, MPS Mihail.Muhin@jetbrains.com
  • 2. LOP, или что плохо всуществующем подходе• Универсальные языки недостаточно выразительны Проблема – мы ограничены синтаксисом языка
  • 3. «Старый» подход к LOP• Лексический анализатор• Парсер (абстрактный синтаксис) – «как выглядит синтаксическое дерево?» load a• Компилятор (семантика) – «а что load b это AST значит?» cmp …
  • 4. Проблемы, которые мы решили• Сложно «смешивать» языки (2 языка внутри одного выражения) - нет никаких гарантий, что удастся корректно распарсить A: “String with {value}” B: “String with ${anotherValue}” A+B: “String with ${problemValue}”• Отсутствие инструментария o editor o code completion o intentions o refactorings o ...
  • 5. Подход MPS AST (Abstract Syntax Tree) editor typesystem generator codeintentions tools transformations
  • 6. MPS• Быстрая разработка языков (а будет еще быстрее!)• Неограниченное смешивание языков (нет парсера)• Автоматический тулинг – editor, code completion, refactorings• Лаконичное описание системы типов• Шаблонная кодогенерация• DSLи для создания тулов
  • 7. Языки MPS• Closures• Collections• Dates• Checked dots• Math• Tuples• Regexp
  • 8. Язык “Lazy”• Язык для «ленивых» вычислений• Интегрируется с Java• Наш язык не будет работать в некоторых случаях (но мы знаем как это поправить!)
  • 9. Язык “Lazy” AST тип lazy<Type> Generator Editor Typesystem lazy<T> x;Представление: lazy<T> :<: T x = 1+1; lazy < Type > lazy<T> :>: T print(x);
  • 10. Demo• Будет 2 этапа o Structure + editor – после этого можно писать на языке o Generator – можно «скомпилировать» нашу программу в рабочий код на Java
  • 11. Just give it a try!• MPS бесплатен• Полностью открытый исходный код• Распространяется под лицензией Apache 2.0 (бери и продавай!)

×