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]

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.[7] 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.[8]
  • Spoofax 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]
gollark: It's much easier to remember a sequence of random words than a long string of numbers, but if you want to operate on the wordy one you also need to store a big lookup table, which defeats the point.
gollark: Besides, the easy to operate on forms are also annoyingly hard to remember.
gollark: Oh yes, I'll just ??? elliptic curves mentally.
gollark: Well, you could memorize a cryptographic key, although this might be impractical.
gollark: You can mostly have those things without needing to unsafely connect things to your brain.

See also

References

  1. Fowler, Martin. "LanguageWorkbench". Retrieved 14 April 2015.
  2. Fowler, Martin (12 June 2005). "Language Workbenches: The Killer-App for Domain Specific Languages?". Retrieved 14 April 2015.
  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" (PDF). 2016 Language Workbench Challenge (65). Retrieved 9 June 2019.
  4. Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Languages as Libraries" (PDF). Programming Language Design and Implementation.
  5. Flatt, Matthew (2012). "Creating Languages in Racket". Communications of the ACM. Retrieved 2012-04-08.
  6. "JetBrains MPS: Domain-Specific Language Creator".
  7. Jézéquel, Jean-Marc; Combemale, Benoit; Barais, Olivier; Monperrus, Martin; Fouquet, François (2013). "Mashup of metalanguages and its implementation in the Kermeta language workbench" (PDF). Software & Systems Modeling. 14 (2): 905–920. arXiv:1306.0760. doi:10.1007/s10270-013-0354-4.
  8. "Melange".
  9. Kats, Lennart C. L.; Visser, Eelco (2010). "The Spoofax language workbench: rules for declarative specification of languages and IDEs.". Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010. doi:10.1145/1869459.1869497.
  10. "Xtext".


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.