Writing a DSL in Lua (2015)
Published on: 2025-07-12 13:46:13
DSLs, or domain specific languages, are programming languages that are designed to implement a set of features specific to a particular problem or field. An example could be Make, the build tool, which is a specially designed language for combining commands and files while managing dependencies.
A lot of modern programming languages have so much flexibility in their syntax that it’s possible to build libraries that expose their own mini-languages within the host language. The definition of DSL has broadened to include these kinds of libraries.
In this guide we'll build a DSL for generating HTML. It looks like this:
html { body { h1 "Welcome to my Lua site" , a { href = "http://leafo.net" , "Go home" } } }
Before jumping in, here are some DSL building techniques:
Dropping the parenthesis
One of the cases for Lua as described in its initial public release (1996) is that it makes a good configuration language. That’s still true to this day, and Lua is friendly to building DSLs.
A u
... Read full article.