The guys over at Humanized (now at mozilla) did this for plain javascript about two years ago, FWIW. It's not quite as awesome when you don't have a sweet parser DSL.
Actually yes, because of JavaScript/CoffeeScript's habit of pushing declarations up before evaluation, you can more or less lay out your code in any order. We take advantage of this in the Lexer, here...