language workbench
{{Short description|Tool for language-oriented programming}}
A language workbench{{cite web |url= http://martinfowler.com/bliki/LanguageWorkbench.html |title=LanguageWorkbench |last1=Fowler |first1=Martin |access-date=14 April 2015}}{{cite web |url= http://martinfowler.com/articles/languageWorkbench.html |title=Language Workbenches: The Killer-App for Domain Specific Languages? |last1=Fowler |first1=Martin |date=12 June 2005 |access-date=14 April 2015}} 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. 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 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.{{cite journal |last1=Feltey |first1=Daniel |last2=Florence |first2=Spencer P. |last3=Knutson |first3=Tim |last4=St-Amour |first4=Vincent |last5=Culpepper |first5=Ryan |last6=Flatt |first6=Matthew |last7=Findler |first7=Robert Bruce |last8=Felleisen |first8=Matthias |title=Languages the Racket Way |journal=2016 Language Workbench Challenge |date=2016 |issue=65 |url=http://florence.io/resources/papers/Racket_LWC_2016.pdf |access-date=9 June 2019}}{{cite conference
| last1 = Tobin-Hochstadt | first1 = S.
| last2 = St-Amour | first2 = V.
| last3 = Culpepper | first3 = R.
| last4 = Flatt | first4 = M.
| last5 = Felleisen | first5 = M.
| title = Languages as Libraries
| book-title = Programming Language Design and Implementation
| year = 2011
| url = http://www.ccs.neu.edu/scheme/pubs/pldi11-thacff.pdf}}{{Cite news |last=Flatt |first=Matthew |title=Creating Languages in Racket |newspaper=Communications of the ACM |year=2012 |url=http://cacm.acm.org/magazines/2012/1/144809-creating-languages-in-racket |access-date=2012-04-08 }}
- 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.{{cite web|url=https://www.jetbrains.com/mps/|title=JetBrains MPS: Domain-Specific Language Creator}}
- 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.{{cite web|url=http://melange.inria.fr|title=Melange}}
- Spoofax.{{cite web|url=https://www.spoofax.dev/|title=The Spoofax Language Workbench}} is an open-source language workbench for generating parsers, type checkers, compilers, interpreters, as well as IDE plugins for Eclipse and IntelliJ.{{cite conference
|last1 = Kats | first1 = Lennart C. L.
|last2 = Visser | first2 = Eelco
| title = The Spoofax language workbench: rules for declarative specification of languages and IDEs.
| book-title = Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010
| year = 2010
| url = https://lennart.cl/publications/the-spoofax-language-workbench
| doi = 10.1145/1869459.1869497}}
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.{{cite web|url=https://eclipse.org/Xtext/|title=Xtext}}
- Meeduse{{cite journal |last1=Idani |first1=Akram |last2=Ledru |first2=Yves |last3=Vega |first3=German |title=Alliance of Model Driven Engineering with a proof-based Formal Approach |journal=Innovations in Systems and Software Engineering (ISSE), NASA Journal |date=December 2020 |volume=6 |issue=3 |pages=289–307 |doi=10.1007/s11334-020-00366-3|doi-access=free }} 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.{{cite web|url=http://vasco.imag.fr/tools/meeduse/|title=Meeduse}}
See also
References
{{Reflist}}
External links
- Martin Fowler, [http://martinfowler.com/bliki/LanguageWorkbench.html Language Workbench]
- [http://www.languageworkbenches.net/ Language Workbench Challenge]
{{compu-stub}}