Or more typically, a half-baked Lisp that uses XML or JSON instead of s-expressions.
Code is data, but the converse of that is that a sufficiently complex configuration file is just a piece of executable code.
Code is data, but the converse of that is that a sufficiently complex configuration file is just a piece of executable code.
Which, inevitably, starts to include things like macros, include files, looping constructs and eventually bits of perl or TCL.