The ArtRage scripting language has some elements of XML, C and unformatted language.
Originally I was going to adhere as much as possible to the XML standard but quite quickly realized this would make for a very bulky file which was 'human readable' in the same way a bicycle is 'human digestible' (it may well be possible to digest a bicycle, but who really wants to?). So while there are blocks defined with <block> </block> statements, the contents of the blocks may not be legal XML.
For flow-control and programmability the language resembles C or C++. The for/next, while, if/then syntax is practically identical to C.
But there are also elements of C++ with functions attached to the string and file variable types. And I've also thrown in some handy dynamic strings and dynamic arrays for good measure.
But if you're recording a script most of the commands are a short-hand representation of data ArtRage needs to reproduce the strokes and layer operations. Speed of writing and reading the script data to and from the file is important so recording a script doesn't interfere too much with the process of painting. And so the scripts aren't too bulky for sharing.
So while I would have liked to have stuck to one standard, practical considerations meant I had to take elements of some different means of recording data to a file.
For the sake of writing a procedural script if you know C you should be able to immediately do most things (with just enough limitation on the language you're going to have to keep refering to the scripting language guide and cursing my name. )
AndyRage's mantra for graphics engine code:
"Sure - how hard can it be?"