A Language Workbench (LWB) is a development toolset that facilitates the development and editing of domain specific languages (DSLs).
Language Workbench toolsets are founded on the principles of language-oriented programming, a method of software development that relies on DSLs to meet business needs. The tools in a Language Workbench help define an environment that supports the production of software that can incorporate and integrate multiple DSLs, permitting reuse and modification as needed. Examples of LWBs include JetBrains’ Meta Programming System and MS Software Factories.
The editing environments are typically what differentiate Language Workbenches from other IDE toolsets. With the right Language Workbench tools, developers may not need to access and directly edit text files at all. The tools allow editing of an abstract representation which serves as the core definition of the system. Edited versions are fed back into the abstract representation for storage and execution. This abstracted “meta-programming” method of software editing permits developers to focus on the desired behavior of the DSL and how it should interact with other DSLs within a system.