MODELS 2020
23rd International Conference on Model Driven Engineering Languages and Systems (MODELS 2020)
Tutorial “Domain-Specific Languages with JetBrains MPS” , held virtually on 16th of October, 2020.
- Download and install JetBrains MPS to follow the hands-on part of the tutorial: https://www.jetbrains.com/mps/download/
The list of footnotes:
- http://dsl-course.org/models/1 redirects to https://blogs.itemis.com/en/the-business-dsl-zurich-insurance
- http://dsl-course.org/models/2 redirects to https://en.wikipedia.org/wiki/Clojure
- http://dsl-course.org/models/3 redirects to https://en.wikipedia.org/wiki/Syntax_highlighting#Practical_benefits
- http://dsl-course.org/models/4 redirects to https://www.tutorialspoint.com/eclipse/eclipse_quick_fix.htm
- http://dsl-course.org/models/5 redirects to https://www.eclipse.org/Xtext/
- http://dsl-course.org/models/6 redirects to https://eelcovisser.org/publications/2014/WachsmuthKV14.pdf
- http://dsl-course.org/models/7 redirects to https://martinfowler.com/bliki/IntentionalSoftware.html
- http://dsl-course.org/models/8 redirects to https://link.springer.com/chapter/10.1007/978-3-642-36926-1_10
- http://dsl-course.org/models/9 redirects to https://tomassetti.me/getting-started-with-the-whole-platform-grammars/
- http://dsl-course.org/models/10 redirects to http://cedalion.sourceforge.net/oopsla11.pdf
- http://dsl-course.org/models/11 redirects to http://monticore.de
- http://dsl-course.org/models/12 redirects to https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bEgysfDmb8PDV6iCAjH5JIvaI/
- http://dsl-course.org/models/13 redirects to https://astexplorer.net
- http://dsl-course.org/models/14 redirects to https://ohmlang.github.io/editor/
- http://dsl-course.org/models/15 redirects to https://medium.com/@mikhail.barash.mikbar/abc-of-jetbrains-mps-33bed30c330b
Hands-on part:
SlideShare doesn’t work? Click here to open as PDF.
- Start MPS and create a new project. Important: select “Create Sandbox Solution”.
- Creating a new concept: Right-click on the <language-name> (near to orange “L”) -> New -> Concept.
- Create concept Entity. Important: set
instance can be root
totrue
. - Rebuild the language. Important: remember to rebuild the language after each modification to the language definition.
- Creating a new program in our language: Right-click on the <language-name>
.sandbox
(near to pink “S”) -> New -> Entity. - Remove property
name
, and addINamedConcept
afterimplements
.
SlideShare doesn’t work? Click here to open as PDF.
- Create concept IntegerField. Important: add
INamedConcept
afterimplements
. - Add to
children
of concept Entity:fields
:IntegerField[0..n]
.
SlideShare doesn’t work? Click here to open as PDF.
- Creating an editor for concept Entity: Alt/Option + Enter -> Generate Default (Statement like)
- Creating an editor for concept IntegerField.
SlideShare doesn’t work? Click here to open as PDF.
- Playing with style of the editor of concept Entity.
SlideShare doesn’t work? Click here to open as PDF.
- Creating concept EntityReference and and editor for it.
- Add to
children
of concept Entity:parent
:EntityReference[0..1]
. - Updating the editor of concept Entity to take into account the
extends ...
part.
SlideShare doesn’t work? Click here to open as PDF.
- Creating concept Program to “combine” several Entities in one file. Important: set
instance can be root
totrue
. Children:entities
:Entity[1..n]
. - Creating an editor for concept Program.
- Creating an instance of concept Program: right-click on <language-name>
.sandbox
(near to pink “S”) -> New -> Program. - Playing with autocomplete.
SlideShare doesn’t work? Click here to open as PDF.
- Playing with the editor for IntegerField.
SlideShare doesn’t work? Click here to open as PDF.
- Creating a code generator for concept Entity.
SlideShare doesn’t work? Click here to open as PDF.
- Running the code generator.