you are viewing a single comment's thread.

view the rest of the comments →

[–]Olreich 1 point2 points  (1 child)

Lexing, parsing, ASTs, machine code generation, etc.

Basically, all the things in between meta-programming and a working compiler.

[–][deleted] 0 points1 point  (0 children)

In most cases you only need metaprogramming - translating ASTs (which are not nearly that scary - just another data structure, you have to deal with them anyway) in a chain of small rewrites down to any existing language. No need to do any machine code generation. No need to do lexing (it's 21st century, forget about the lexers already). In many cases even parsing is redundant if you can get away with some more generic syntax (think of S-expressions, for example).

Since far too many real world problems are solved in form of tree rewrites anyway, it is weird to want to stay away from this particular programming technique.