I guess in theory you could do it using macros, but if the underlying language lacks certain features you end up with compiler-in-a-macro-style macros. I'm not sure you are really extending the language at that point...
Elisp does this; it has no language-level lexical scope, but you can get it using the lexical-let macro. From a functionality perspective it works surprisingly well, but if you look at the macroexpansion you'll go blind.