Language workbench

A language workbench[1][2] is a tool or set of tools that enables software development in the language-oriented programming[2] 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. Language workbenches were introduced and popularized by Martin Fowler in 2005. Language workbenches usually support:[1]

* 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

## Contents

* 1 Examples
* 2 See also
* 3 References
* 4 External links

## Examples

* Racket 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.[3][4][5]

* JetBrains MPS 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.[6]
* 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); 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.[7]
* Spoofax.[8] is an open-source language workbench for generating parsers, type checkers, compilers, interpreters, as well as IDE plugins for Eclipse and IntelliJ.[9] It uses SDF and a scannerless GLR parser 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.[10]

* Meeduse[11] 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.[12]

## See also

* Language-oriented programming
* Compiler-compiler
* Intentional programming

## References

1. ↑ 1.0 1.1 Fowler, Martin. "LanguageWorkbench". http://martinfowler.com/bliki/LanguageWorkbench.html.
2. ↑ 2.0 2.1 Fowler, Martin (12 June 2005). "Language Workbenches: The Killer-App for Domain Specific Languages?". http://martinfowler.com/articles/languageWorkbench.html.
3. ↑ Feltey, Daniel; Florence, Spencer P.; Knutson, Tim; St-Amour, Vincent; Culpepper, Ryan; Flatt, Matthew; Findler, Robert Bruce; Felleisen, Matthias (2016). "Languages the Racket Way". 2016 Language Workbench Challenge (65). http://florence.io/resources/papers/Racket_LWC_2016.pdf. Retrieved 9 June 2019.
4. ↑ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Languages as Libraries". http://www.ccs.neu.edu/scheme/pubs/pldi11-thacff.pdf.
5. ↑ Flatt, Matthew (2012). "Creating Languages in Racket". Communications of the ACM. http://cacm.acm.org/magazines/2012/1/144809-creating-languages-in-racket.
6. ↑ "JetBrains MPS: Domain-Specific Language Creator". https://www.jetbrains.com/mps/.
7. ↑ "Melange". http://melange.inria.fr.
8. ↑ "The Spoofax Language Workbench". https://www.spoofax.dev/.
9. ↑ Kats, Lennart C. L.; Visser, Eelco (2010). "The Spoofax language workbench: rules for declarative specification of languages and IDEs.". doi:10.1145/1869459.1869497. https://lennart.cl/publications/the-spoofax-language-workbench.
10. ↑ "Xtext". https://eclipse.org/Xtext/.
11. ↑ Idani, Akram; Ledru, Yves; Vega, German (December 2020). "Alliance of Model Driven Engineering with a proof-based Formal Approach". Innovations in Systems and Software Engineering (ISSE), NASA Journal 6 (3): 289–307. doi:10.1007/s11334-020-00366-3.
12. ↑ "Meeduse". http://vasco.imag.fr/tools/meeduse/.

## External links

* Martin Fowler, Language Workbench
* Language Workbench Challenge

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Language workbench. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Language_workbench&oldid=260213"