A slightly advanced introduction to MPS: two languages, a generator, an interpreter, language composition and non-textual notations. Check out this Youtube playlist to understand the code. And explore the commits and branches for intermediate states.
N.B. Since MPS 2019.2, there are numbered branches in this repository which are corresponding with the numbers of the videos in the playlist. Be aware of that, since the videos don't refer to branches but rather to commits. If you want the old commit structure (which only works for MPS 2018.2), you can look in the archive/mps20182/* branches So for the code corresponding with video number 4, you will need to refer to the branch named 04-second-language-for-testing-statemachines. For versions of the code that work on older MPS releases than MPS 2020.3, please refer to the branches in archive/<mps_version>. As an extra support for obtaining KernelF for your MPS version, you can also refer to this DSLFoundry post
- Clone the repository
git clone https://github.com/markusvoelter/mpsintrocourse.git
- Navigate into the root folder of the repository
- Execute
./gradlew
or./gradlew.bat
- Download MPS 2023.2 from https://www.jetbrains.com/mps/download/previous.html
- Open MPS and open the cloned directory as a project
- Watch the videos N.B. Since MPS 2019.2, there are numbered branches in this repository which are corresponding with the numbers of the videos in the playlist. Be aware of that, since the videos don't refer to branches but rather to commits. If you want the old commit structure (which only works for MPS 2018.2), you can look in the archive/mps20182/* branches
-
Of course you might want to check out Jetbrains' MPS docs page
-
For a slower and more detailed introduction, check out Kolja's evolving list of Twitch sessions.
-
And many of the papers and booklets I (co-)wrote over the last years are of course also relevant:
-
Using Language Workbenches and Domain-Specific Languages for Safety-critical Software Development
-
Automated Testing of DSL Implementations - Experiences from Building mbeddr
-
Lessons Learned from Developing mbeddr - A Case Study in Language Engineering with MPS
-
Efficient Development of Consistent Projectional Editors using Grammar Cells
-
Using C Language Extensions for Developing Embedded Software - A Case Study
- Installation and Setup
- The State Machine, States and a Checking Rule
- Transitions and Triggers
- Building the Testing Language
- Introduction to KernelF
- Integrating Variables and Guard Conditions (embedding KernelF)
- Building an Interpreter
- Enhancing the Java generator to include Expressions
- A Tabular Notation for Tests
- A Diagram Notation for State Machines
- Language Testing
I will release the videos over time. I will announce each newly released video on Twitter @markusvoelter