The following is an obvious statement, but it bears saying:
The parse tree is derived from the source, and the byte-codes are dervived from the parse-tree.
This can also be reversed... the Decompiler takes byte-codes and generates first the parse tree, and then a printed form based on the auto-formatting code in the parse nodes. I will be rebuilding that last step, so that auto-formatting is done by a visitor rather than the nodes. As a side effect, a visitor framework will be built that would also allow analysis tools to be easily built.
At each step, information is lost... not gained. Obviously these two representations are more efficient in certain domains... byte codes are easier to execute, more compact, parse trees are easier to analyze. But these are all optimizations, derived from the source. Alternate source representations should move in the direction of the user, not the computer.
I believe that any current information loss due to these transformations can be solved. The bytecodes used for the Smalltalk VM map rather well into the model of execution that actually is presented to the user, and I don't think there really is all that much opportunity for information loss even in the existing system.
les
squeak-dev@lists.squeakfoundation.org