MPS

Methods and tools

Our goal is simplifying the development of domain-specific languages (DSLs). To support this goal, we make heavy use of Jetbrains MPS. Our team is the premier MPS development team worldwide, and we provide development, expert consulting and extension development.

What is MPS?

MPS is a language workbench, a tool for developing languages and IDEs. Users specify the subject language with the means of language-definition-DSLs built into MPS; MPS then creates an IDE for end users to express models or programs with the subject language. MPS has been developed by Jetbrains for the last 15 years and is open source software under the Apache software license.

Why MPS?

MPS is generally considered to be one of the most versatile and powerful language workbenches (as evident already from this 2013 comparison paper). It supports a wide range of language aspects, from structure over syntax and type system to generators, transformations and interpreters. What makes MPS special is its projectional editor, which supports a wide range of notational styles, including text, forms, symbols, tables and diagrams. Because of the unified editor architecture, it is possible to seamlessly mix these notations (text in tables, symbols in text). This, in turn, means that MPS allows the definition of very rich languages, languages that capture existing (informal) notations established in a domain. Check out the first 10 slides in this presentation for examples.

The second reason why MPS is standing out from the crowd of language workbenches is that it robustly supports language modularity. Because the projectional editor will never run into parsing ambiguities and because of the design of its language-definition-DSLs, language enginners can reuse existing language (modules) in many ways. This ability allows us to grow domain specific languages on top of general-purpose languages (as we have been doing with mbeddr C for years now) and to embed the reusable functional KernelF in several DSLs for a range of business domains.

What we do with MPS