1- Since ASDF 2.019, there is support for :around-compile, that allows you to effectively redefine syntax around a module. Combined with reader-interception, you can portably redefine your syntax to be that of e.g. python, or whatever you fancy. You know where to find emacs modes.
This seems to suggest that this only works for compiled code. What about interpreted code?
I don't know what you call "compiled code", but if that's what you mean, the perform method of load-source-op also does call that hook.
2- Since well before that, there is named-readtables. I recommend you make your #; syntax available as a named readtable.
3- You can always define a new subclass of cl-source-file, that gets compiled within proper syntax redefinition.
Yes, there are a lot of ways to implement this. But that's my primary interest (the implementation is trivial).
The question is how to provide a modular interface to this and other extensions. So far, named-readtables is your best bet for simple reader macros, and reader-interception if you need a complete syntax redesign.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org What is mind? No matter! What is matter? Never mind! — Bertrand Russell's Grand Mother, In Karl Popper, The Unended Quest