A curated list of awesome MPS extensions/libraries, software and resources.
Inspired by awesome-python and awesome-rust.
- Understand what MPS is
- See what others have been building with MPS
- Build with MPS are open source projects that all build on MPS
- Research contains a list academic papers that make heavy use of MPS
- Get started with building stuff on top of MPS
- To get stated we suggest to look at the tutorials in the following order
- Fast track tutorial is the official tutorial for MPS. It will provide you with an high-level overview in 10 steps, covering all aspects of MPS at a high level.
- MPS Intro Course by @markusvoelter is an advanced introduction to MPS in the form of multiple videos as well as a github repository to play around with. It also covers extensions to MPS such as additional notations or the interpreter framework.
- Grammar Cells An extension to the editor language of MPS. It will help you to create consistent and well-behaving textual notations in MPS with no effort.
- If you are specificly looking for input on how to build generators this guide contains a set of best practices.
- The DSL Engineering Book contains detailed discussions of the concepts behind MPS in its Part III on language implementation.
- For more details on specific MPS topics we refer to 2 books on MPS as well as the official MPS User Guide
- Learning contains a list of even more tutorials
- In addition Research contains a list academic papers that make heavy use of MPS
- To get stated we suggest to look at the tutorials in the following order
- Find existing extensions for MPS
- Awesome MPS contains a collection of extensions to MPS
- Get in touch with the community
- The Community list the usual subects
- ANTLR_MPS - An ANTLR language for MPS, and the ToMPS language to help create MPS languages and ANTRL visitors from an ANTLR 4 grammar.
- mps-code-reviewer - Code Review for JetBrains MPS providing integration with Bitbucket
- ecmascript4mps - ECMAScript language implementation for JetBrains MPS
- Editor2PDF - Serialises editor into PDF files
- ingrid - Ingrid is a plugin for JetBrains MPS allowing import of ANTLRv4 grammars and create an MPS language out of it.
- MPS Extensions - Various extensions to simplify language development.
- MPS gradle plugin - A Gradle plugin to build & test langauges and to support various tasks related to custom RCP packaging.
- PlantUML - Language for PlantUML models, also useful to generate PlantUML diagrams from custom DSL.
- Simple Generator Editors - Simplified editors to increase readability of generators.
- Text Generator Plugin - Alternative Textgen for JetBrains MPS using the standard model to model generation mechanisms.
- Nyan Progress Bar - Pretty progress bars for IJ based IDEs.
- MPS JSON Language - A JSON implementation for MPS.
- digitalember.extensions - MPS baseLanguage editor extensions for better readability.
- FormatsDSL - A DSL to describe formats and generate loaders
- Hardella IDE - Smart programming environment for PLC
- iets3 - Base language for system modelling and specification including basics abstractions for components, expression, variability, etc
- mbeddr - An extensible C implementation in MPS to support embedded software development.
- MetaR - A IDE for R for people with limited computer science background.
- PeoPL - A full IDE build upon MPS to manage Software Product Lines.
- FASTEN - An IDE for system level formal specification. A stack of DSLs built on top of SMV, verified using the NuSMV model checker.
- Learning
- Creating a simple language using JetBrains MPS - The objective of this project is to construct a language to define mindmaps.
- DSL Engineering - Contains a detailed discussion of the concepts behind MPS in its Part III on language implementation.
- Fast track tutorial
- Heavy Meta a stream series about MPS on Twitch - Live every Tueday and Thursday and recording archive
- MPS Intro Course by @markusvoelter - A slightly advanced introduction to MPS
- Towards Maintainable Generators - Best practices for maintainable generators and a set of rules when to apply them.
- The MPS Language Workbench
- MPS User Guide
- Slack
- Websites
- languageengineering.io - A blog focused in language engineering with many examples implemented using MPS.
- Official Website
- Programming Basics - Uses MPS to teach the basics of programming to none computer science people.
- Papers
- Using Language Workbenches and Domain-Specific Languages for Safety-critical Software Development
- The Design, Evolution and Use of KernelF Slides
- Domain-Specific Languages for Efficient Satellite Control Software Development
- Using C Language Extensions for Developing Embedded Software - A Case Study
- Automated Testing of DSLs 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
- IncA: A DSL for the Definition of Incremental Program Analyses
- An Extensible Framework for Variable-Precision Data-Flow Analyses in MPS
- Towards Usable Projectional Editors
- Taming the Software Development Complexity with Domain Specific Languages
Your contributions are always welcome! Please take a look at the contribution guidelines first.