Thanks for the confusion -- I've made the first paragraphs more clear about PJ's scope.
Title changed: s/compiler/syntax cross-compiler/ EDIT: title changed again
I would call what you have done a source-to-source compiler: it translates from one target high-level language to another. http://en.wikipedia.org/wiki/Source-to-source_compiler
ie. 2 * * 1024? print object.__mro__? slice objects? __call__? etc.
If there's no collateral damage and the JS is clear (e.g. 28 --> Math.pow(2, 8)): do it.
If there's no proper way to express the JS in Python (e.g. instanceof and typeof keywords): do it
If it's really important (only "print" and "self"): do it
Else: DON'T
These few special cases that mess with your code are all mentioned in a section on the the main page.
And you can easily remove them from the transformations if you want.