i've been experimenting with porting carocad's antlr grammar (in parcera) for clojure and so far it is looking promising.
though it handles metadata the way rewrite-clj* does so might be nicer if that portion could be modified appropriately