- Text processing: awk, sed, m4
- Document preparation: LaTeX, roff
- Page description: PostScript
- Software development: make, lex, yacc [1]
- Mathematics: MATLAB [2], Scilab [3]
- systems-level bit-twiddling: C
- interacting with command-line programs: expect
- composing structured text: STX, TIP format, wikit's page formatting language
- everything that seems to fall outside tcl syntax: all of the tcl little languages
- regexp
- (not usually thought of as a language) network protocols for performing the network interaction specified by the protocol, so SMTP for example, can be considered a DSL for defining a mail exchange. If Java can use XML, we can use SMTP.
- (also not usually thought of as a language) Undo Lists - programs which implement an undo function must do so by maintaining an ordered list of functions to apply to reverse a given operation - these have linguistic structure.
Implementation of DSLs is sometimes effectively done as "programming by exception".
AM (3 march 2006) I consider the script in Solving the advection-diffusion equation an example of a domain-specific language:
- The script defines some convenient commands to get the description of the physical-mathematical problem into the solver's data structures
- It uses the control structures offered by Tcl to steer the computation and produce output.
CMcC (Wed 13th Sept 2006) tcl is eminently suitable as a target for compilation of DSLs, in that it has a very regular/minimal syntax and a rich and extensible semantics. Tcl's syntax supports trees (as lists of lists) and lexically colouring elements with semantics (by using [] instead of {} to delineate sub-tree nodes.) It is therefore possible, and quite often effective, to transform (compile) a DSL into tcl, then evaluate the product.This is how I implement STX ... parsing the input text into functional units, basically duples (function and text-or-subexpression) and then lexically converting these into invocations of tcl-supplied semantics.
Category Glossary
