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.

 

The list of footnotes:

  1. http://dsl-course.org/models/1 redirects to https://blogs.itemis.com/en/the-business-dsl-zurich-insurance
  2. http://dsl-course.org/models/2 redirects to https://en.wikipedia.org/wiki/Clojure
  3. http://dsl-course.org/models/3 redirects to https://en.wikipedia.org/wiki/Syntax_highlighting#Practical_benefits
  4. http://dsl-course.org/models/4 redirects to https://www.tutorialspoint.com/eclipse/eclipse_quick_fix.htm
  5. http://dsl-course.org/models/5 redirects to https://www.eclipse.org/Xtext/
  6. http://dsl-course.org/models/6 redirects to https://eelcovisser.org/publications/2014/WachsmuthKV14.pdf
  7. http://dsl-course.org/models/7 redirects to https://martinfowler.com/bliki/IntentionalSoftware.html
  8. http://dsl-course.org/models/8 redirects to https://link.springer.com/chapter/10.1007/978-3-642-36926-1_10
  9. http://dsl-course.org/models/9 redirects to https://tomassetti.me/getting-started-with-the-whole-platform-grammars/
  10. http://dsl-course.org/models/10 redirects to http://cedalion.sourceforge.net/oopsla11.pdf
  11. http://dsl-course.org/models/11 redirects to http://monticore.de
  12. http://dsl-course.org/models/12 redirects to https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bEgysfDmb8PDV6iCAjH5JIvaI/
  13. http://dsl-course.org/models/13 redirects to https://astexplorer.net
  14. http://dsl-course.org/models/14 redirects to https://ohmlang.github.io/editor/
  15. 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 to true.
  • 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 add INamedConcept after implements.

 

 

 

 


SlideShare doesn’t work? Click here to open as PDF.

  • Create concept IntegerField. Important: add INamedConcept after implements.
  • 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 to trueChildren: 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.