ABZ 2020 → 2021

For participants — feedback forms:

First part: http://dsl-course.org/abz/feedback/first

Second part: http://dsl-course.org/abz/feedback/hands-on

Tutorial on “Implementing Domain-Specific Languages with JetBrains MPS” will be colocated with 8th International Conference on Rigorous State Based Methods (ABZ 2021). It will take place online on Tuesday the 8th of June, 2021.

Session 1 (Tuesday, 08.06.21, 9:00 — 10:30 (GMT+2))

Session 2 (Tuesday, 08.06.21, 11:00 – 12:30 (GMT+2))

  • Implementing a language in JetBrains MPS (hands-on) 
    • defining abstract syntax
    • concrete syntax in a projectional editor
    • intentions and quickfixes
    • implementing a simple type system
    • code generation as a model-to-text transformation
    • code generation as a model-to-model transformation

Installing JetBrains MPS

 

The list of footnotes:

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