JetBrains’ Meta Programming System is an open source projectional language workbench licensed under Apache 2.0.
Defining a language starts by defining the abstract syntax, the editor for the language concepts is specified in a second step. Lastly the generator is defined. It outputs text (for a low-level language) or it transforms higher-level code into code expressed in lower level languages. The higher-level to lower-level generators are not text generators, they transform abstract syntax trees.
Editing the tree as opposed to “real text” needs some accustomization. Without specific adaptations, every program element has to be selected from a drop-down list and "instantiated". However, MPS provides editor customizations to enable editing that resembles modern IDEs that use automatically expanding code templates.
To learn more about MPS please see jetbrains.com/mps. Documentation is available at jetbrains.com/mps/documentation and you can download the tool from jetbrains.com/mps/download/.
MPS is also used by other groups/companies for various purposes, including