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
- “language to describe application-level protocols among communicating systems”
- (see Session Types Implementations - Multiparty Session Types)
- 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
- hardware description languages
- Spade has a nice online playground
- 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;

- formal modeling and specification of distributed systems;
- 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:
- various languages for specifying some business rules
- Starbound (videogame)‘s DSL
- ”[…] crappy sort of DSL for drawing material blocks that visually connect in arbitrarily complicated ways”
- Minecraft’s datapack (scripting) language
- Skript
- a scripting language for a Minecraft server plugin for the Bukkit platform
- Call of Duty scripting language (GSC)
- Papyrus (Bethesda’s scripting language)
- miniature languages for filtering
- Gmail search filters
- boolean filters in the
whenproperty of VSCode keybindings (with auto-suggest support)
- CEG description format for ceg.testos.org
- Little Languages
- ImHex pattern language
DSL research, case studies, experience reports, conferences: