Anything that is self-described as an "abstraction markup language" and must be compiled into the language it abstracts is really a pre-processor.
Regardless of intended use cases, i cant think of a better definition.
I disagree. A preprocessor doesn't
1) transform the entire document
2) doesn't fully parse the input document
that is exactly why the c family on languages has such difficulty with modules: they are hacked on with a preprocessor and aren't part of the language.