Maybe there is a confusion of terms here? An Expr is the way to represent an AST in Julia (some very simple ASTs are instead represented by ints/floats/strings/symbols). So when you talk about inserting an Expr into an AST it seems to me that all it means is to make an Expr where some subtree is given by another Expr.
Macros are really only a way to save typing. Consider a few cases: what is the input AST, and what is the output AST that you want to generate in each case. From there, you should be able to figure out how to write the code that does the transformation.
