This idea of a separate phase modifying your input is really powerful, and I think more languages should design their syntax around that idea.
A nice example comes from AppleScript of all places. You can close a block with just `end`, or by referencing the opening like `end if`. When you save a file, the compiler rewrites all the `end`s to the second form.
Any other examples where the language is designed to be enriched by tooling?