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 of
domain-specific languages together with their
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
. Language workbenches were introduced and popularized by
Martin Fowler in 2005.
Language workbenches usually support:
* Specification of the language concepts or
metamodel
* Specification of the editing environments for the
domain-specific language
* Specification of the execution semantics, e.g. through interpretation and
code generation
Examples
*
Racket
Racket may refer to:
* Racket (crime), a systematised element of organized crime
** Protection racket, a scheme whereby a group provides protection to businesses or other groups through violence outside the sanction of the law
* Racket (sports equ ...
is a cross-platform language development workbench including compiler, JIT compiler, IDE and command-line tools designed to accommodate creating both
domain-specific languages and completely new languages with facilities to add new notation, constrain constructs, and create IDE tools.
*
JetBrains MPS
JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build ...
is a tool for designing domain-specific languages. It uses projectional editing which allows overcoming the limits of language parsers, and building DSL editors, such as ones with tables and diagrams. It implements language-oriented programming. MPS combines an environment for language definition, a language workbench, and an Integrated Development Environment (IDE) for such languages.
*
Kermeta is an open-source academic language workbench. The Kermeta workbench uses three different meta-languages: one meta-language for the abstract syntax (aligned with
Emof
The Meta-Object Facility (MOF) is an Object Management Group (OMG) standard for model-driven engineering. Its purpose is to provide a type system for entities in the CORBA architecture and a set of interfaces through which those types can be c ...
); one for the static semantics (aligned with
OCL) and one for the behavioral semantics (called the Kermeta Language itself).
* Melange is a language workbench that provides a modular approach for customizing, assembling and integrating multiple domain-specific language (DSL) specifications and implementations.
*
Spoofax. is an open-source language workbench for generating parsers, type checkers, compilers, interpreters, as well as IDE plugins for
Eclipse
An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
and
IntelliJ. It uses
SDF and a
scannerless GLR parser
A GLR parser (GLR standing for "Generalized LR", where L stands for "left-to-right" and R stands for "rightmost (derivation)") is an extension of an LR parser algorithm to handle non-deterministic and ambiguous grammars. The theoretical foundatio ...
for syntax, and formalisms derived from
Stratego/XT for semantics.
*
Xtext is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser, but also a class model for the abstract syntax tree. In addition, it provides a fully featured, customizable Eclipse-based IDE.
* Meeduse is an EMF-based framework that allows one to build, prove and animate executable domain-specific languages (xDSLs) using the B Method. The tool embeds ProB, and animator and model-checker of the B Method.
See also
*
Language-oriented programming
*
Compiler-compiler
In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of formal description of a programming language and machine.
The most common type of compiler ...
*
Intentional programming
In computer programming, Intentional Programming is a programming paradigm developed by Charles Simonyi that encodes in software source code the precise ''intention'' which programmers (or users) have in mind when conceiving their work. By using ...
*
:Language workbench
References
External links
* Martin Fowler
Language WorkbenchLanguage Workbench Challenge
2005 introductions
Software development
{{compu-stub