liveBook · Manning

Language workbench

As explained in Building User-Friendly DSLs

A software tool or environment for designing, implementing, and deploying programming languages and their development tools.

A language workbench (LWB) is a platform for implementing software languages, especially domain-specific languages (DSLs), efficiently. It often takes the form of a specialized IDE and uses meta-DSLs to define structure, constraints, editors, type systems, and code generation. section 15.4.1 section 15.5

Assess a language workbench by considering:

  • Maturity, including software quality and documentation. section 15.4.1
  • DSL style: textual and parsing-based, or projectional, with graphical notation as an extreme. section 15.4.1
  • Openness, support, community, and operating-system or platform compatibility. section 15.4.1

A workbench can accelerate DSL implementation, but using one effectively requires working knowledge of DSL implementation. Building a DSL from scratch exposes that knowledge without committing to a vendor’s terminology or tools that may later change. section 15.4.1

How Building User-Friendly DSLs covers it

How deep it goes
Defines core components and evaluation criteria, but stops short of implementing a DSL with a specific workbench.
Examples
Names JetBrains MPS as a mature language workbench running on the JVM.
What it assumes
Assumes working knowledge of DSL implementation rather than advanced workbench expertise.
What you can do after
Evaluate language workbenches by maturity, DSL style, openness, support, and platform compatibility.
How it connects
Connects DSLs with metamodels, parsing, projectional notation, type systems, code generation, and model-driven software development.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Building User-Friendly DSLs. The section links point to the parts of the book it draws on.