JetBrains MPS
   HOME

TheInfoList



OR:

JetBrains MPS (Meta Programming System) is a
language workbench A language workbench is a tool or set of tools that enables software development in the language-oriented programming software development paradigm. A language workbench will typically include tools to support the definition, reuse and composition ...
developed by
JetBrains JetBrains s.r.o. (formerly IntelliJ Software s.r.o.) is a Czech software development private limited company which makes tools for software developers and project managers. The company has its headquarters in Amsterdam, and has offices in Ch ...
. MPS is a tool to design
domain-specific language A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
s (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams.
It supports
language-oriented programming Language-oriented programming (LOP) is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components, and rather than solving problems in general-purpose programming languages, ...
. MPS is an environment for language definition, a
language workbench A language workbench is a tool or set of tools that enables software development in the language-oriented programming software development paradigm. A language workbench will typically include tools to support the definition, reuse and composition ...
, and
integrated development environment An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
(IDE) for such languages.


Composable languages

While
domain-specific language A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
extensions can often be useful in general-purpose programming languages, their text-based nature means that adding domain-specific language extensions can lead to ambiguity in text-based syntax. MPS avoids this grammatical ambiguity by working with the
abstract syntax tree An abstract syntax tree (AST) is a data structure used in computer science to represent the structure of a program or code snippet. It is a tree representation of the abstract syntactic structure of text (often source code) written in a formal ...
directly. In order to edit this tree, a text-like projectional editor is used. Because MPS directly uses the abstract syntax tree, MPS supports composable language definitions. This means that languages can be extended, and embedded, and these extensions can be used in the same program in MPS and will not conflict.


Reusable language infrastructure

MPS provides a reusable language infrastructure which is configured with language definition languages. MPS also provides many IDE services automatically: editor,
code completion Code completion is an autocompletion feature in many integrated development environments (IDEs) that speeds up the process of coding applications by fixing common mistakes and suggesting lines of code. This usually happens through popups while typ ...
, find usages, etc.


Existing languages

* Base Language - 99%
Java Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
reimplemented with MPS. There are many extensions of this language ** collections language ** dates language ** closures language ** regular expressions language * Language definition languages - these language are implemented with themselves, i.e. bootstrapped ** structure language ** editor language ** constraints language **
type system In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usu ...
language ** generator language


MPS applications


Mbeddr

mbeddr is an embedded development system based on MPS. It has languages tailored to embedded development and
formal methods In computer science, formal methods are mathematics, mathematically rigorous techniques for the formal specification, specification, development, Program analysis, analysis, and formal verification, verification of software and computer hardware, ...
: * Core C language * Components * Physical units * State machines


YouTrack

In October 2009, JetBrains released the YouTrack bug tracking system - the first commercial software product developed with MPS.


Realaxy editor

In April 2010, the Realaxy ActionScript Editor beta was released, the first commercial IDE based on the MPS platform.


PEoPL

PEoPL is a tool for software product line engineering realised in MPS.


GDF (Gamification Design Framework)

GDF
is a framework for designing and deploying gameful applications. GDF consists of domain-specific languages allowing for stepwise refinement of application definitions, from higher levels of abstraction towards implementation code to be run on a gamification engine. According to GDF's case study from Jetbrains, MPS was chosen for three main reasons: the need to provide text-based DSLs, the availability of language extension mechanisms conveying consistency management between abstraction layers, and the provision of generators to automatically derive implementation code.


Licensing

The MPS source code is released under the
Apache License The Apache License is a permissive free software license written by the Apache Software Foundation (ASF). It allows users to use the software for any purpose, to distribute it, to modify it, and to distribute modified versions of the software ...
.


See also

* Xtext


References


External links

*
MPS blog

MPS User's Guide
{{Webarchive, url=https://web.archive.org/web/20130115030119/http://confluence.jetbrains.net/display/MPSD1/MPS+User%27s+Guide , date=2013-01-15 Language workbench