Skip to content

Domain-specific languages

limited formal languages designed for a specific domain

  • examples: CSS, SQL, CMake, Bash, PowerShell, GLSL, VHDL, Verilog, Modelica, TeX, Protobuf schema, PlantUML, Mermaid, …

DSL development frameworks and language workbenches:

  • Xtext (Java/Eclipse)
  • Spoofax (Java/Eclipse)
  • JetBrains MPS (Java)
    • projectional editing
  • Langium (JS/TS)
  • …

More examples of (external) DSLs:

(see https://beautifulracket.com/appendix/domain-specific-languages.html)

  • CSS, SCSS/Sass, Less, …
  • SQL, GraphQL, Cypher, Gremlin, SPARQL, Kusto (KQL), CQL, CQL, OQL, TypeQL, BIMQL, PathQuery, PromQL, LogQL, HQL/JPQL, …
    • query languages
  • LookML
    • semantic data modeling language to simplify data exploration and reporting
  • Markdown, Texy, …
  • TeX, LaTeX, Typst
    • typesetting engines+languages
  • BNF, EBNF, ANTLR4 grammar (.g4), Pegen grammar, Langium grammar language
  • StringTemplate, TemplateToolkit, Velocity, FreeMarker, Twig
    • text/code templating languages
    • + T4 (C#), Razor (C#), PHP, JSP (Java)
      • these ones support embedding code in an existing programming language
  • AWK
  • bash, fish, zsh, PowerShell, …
  • GLSL, HLSL, MSL, WGSL, Shadeup
    • (GPU) shading languages
  • Makefile, CMake, Gradle, Cabal, Starlark (Bazel), Cocoa Podfile …
    • build-configuration languages
  • Dockerfile, Earthfile
    • script languages for containerized builds
  • DOT (GraphViz), GrGen, PlantUML, Mermaid, Sequence, D2, blockdiag, …
    • diagramming languages
  • ERML, DBML
    • languages used to design and document entity relationships and database schemas
  • Apache config (.htaccess), named.conf + DNS zone file
  • QML, Quid, Slint, …
    • GUI description languages
  • Gherkin
  • OMG IDL, WebIDL, Avro IDL; WIT (WASM Interface Type) + WAI
    • interface description languages
  • Protobuf schema (.proto)
    • serialization schema language
  • YANG
    • data modeling language for network management protocols (see RFC 7950)
  • Prisma schema
    • Prisma ORM schema language (specifies data sources, generators and data models)
  • .http file
  • IPL (Imandra Protocol Language)
  • Scribble
  • TypeSpec
    • “language for describing cloud service APIs and generating […] client and service code, documentation, and other assets”
  • RBS
    • “a language to describe the structure of Ruby programs”
  • DTD, RELAX NG (compact syntax)
  • ALFA
  • P4
    • language for controlling network data forwarding
  • MSL (MAPE Specification Language)
    • “a pattern language for engineering self-adaptive systems”; msl on GitHub
  • Modelica
  • VHDL, Verilog, SystemVerilog, Lola, AHDL, Spade
  • Q#
    • programming language for quantum algorithms
  • Onshape FeatureScript
    • programming language for building and working with 3D parametric models
  • Prism
    • probabilistic model checking
  • PuzzleScript
  • Rant
    • a templating language for procedural generation of dialogs/text
  • Nomos
    • “A Programming Language for Digital Contracts”
  • ISLE
    • used in the Cranelift compiler project to express instruction-lowering patterns and optimizing rewrites
  • AADL
    • “architecture description language for modeling and analysis of real-time, safety-critical systems”
  • GAL (Guarded Action Language)
    • “a modeling language dedicated to the description of data manipulation for formal verification of concurrent systems”
  • P
    • formal modeling and specification of distributed systems; example P code
  • Promela
    • formal modeling of concurrent processes (e.g. in distributed systems) for SPIN model checker
  • ALPH
    • Aspect Language for Pervasive Healthcare
  • PGQL (Property Graph Query Language)
  • Sieve
    • mail filtering language
  • Hedy
    • a gradual programming language for learning programming
  • LeQuest
    • description of medical devices? (student thesis)
  • KnitScript
    • A Domain-Specific Scripting Language for Advanced Machine Knitting
  • TableGen
  • EisenScript
    • programming language for generating 3D structures
  • GDL (Graphite Description Language)
    • a rule-based language for describing the “smart” behavior of a font
  • JSON, JSON5, YAML, TOML, Jsonnet, INI (+ .editorconfig)…
    • configuration languages
  • search for C# DSL repositories

project-specific DSLs and DSLs used internally within organizations:

DSL research, case studies, experience reports, conferences: