None of what you just said seems to have any substance as it all sounds very abstract and easily doable in other languages (I.e. Python through exec). What should I read in order to understand the difference?
The parent's point is very clear, but I guess you never had the opportunity to see it in action. Basically, you can write a Prolog interpreter for the full language very easily (a few lines), and this interpreter can extend the original language in any way you want. So you can not only write your own DLS, but do any kind of reasoning/transformation/interpretation/debugging with the new constructs, almost for free, no knowledge of compilers is needed. This is how people write new languages based on Prolog.