I do prefer Racket macros to Template Haskell, but you can do some of the same kind of things in Template Haskell. Go ahead and play with it for it for a bit.
Mostly, you need to have the data-structure it defines for the parse tree, and it's harder to convert than syntax->datum. Also there's the Q monad, to generate new safe names. But it works pretty well.
I'm not sure there's anything you can't do in TH, but it feels messier than Lisp macros. I'm hoping typed TH will improve things (not in precisely the same direction as lisp, of course).