> > > In {a.b.c} the compiler has to understand what a, b, and c resolve to, > what [Bindable] metadata there is on each one, etc. It uses the syntax tree > and the symbol table to do this. > > This is very far from reality. What compiler does is actually like this: > > < ... {the expression that appears in between the curly bracket} .../> > ==> > var anotherBinding:Function = function():* { return the expression that > appears in between the curly bracket; } >
Right. I am pretty sure that changes to a['b'].c will not get executed in this case, even though it should be resolved the same as a.b.c Om On Tue, Apr 24, 2012 at 4:57 PM, Left Right <olegsivo...@gmail.com> wrote: > > In {a.b.c} the compiler has to understand what a, b, and c resolve to, > what [Bindable] metadata there is on each one, etc. It uses the syntax tree > and the symbol table to do this. > > This is very far from reality. What compiler does is actually like this: > > < ... {the expression that appears in between the curly bracket} .../> > ==> > var anotherBinding:Function = function():* { return the expression that > appears in between the curly bracket; } > > It builds the trees and does all the code analysis much-much later after > all bindings are already generated into AS3 code. So, at the time of > binding generation the compiler has no idea what's inside the expression. > It only knows where it copied the expression from so that once the AS3 > lexer or later layers of the compiler find an error, it will know to > reroute it to the place where the error happened in the original source > code (which, quite often doesn't work). In some special cases the compiler > can analyze the type (probably functions, classes, strings), but this is > rare. > > I would also repeat that we are trying to solve the problem too early. We > really need to have a direction and a plan of what to do with MXML. So far > it is an ad hoc created set of random rules, it repeats all the mistakes of > the early programmers (from before 30 years ago at least). This initiative > is very good in the sense it welcomes this discussion and some more > analysis, but we really need to formulate the strategy and rules we want to > keep to when dealing with MXML. There are a lot of things good and bad we > have to at least compare MXML to before we start making changes. > Some things to consider: > cpp (C++ preprocessor and templates) > Lisp macros > T4 templates in MSVS > JSP / Coldfusion > > MXML today is a concrete set of rigid arbitrary rules, in terms of the > development of computer science this roughly equals to the > early assembler macros predating C and C++, where this was already made > more generic and configurable. > I think we could do better than that. > > Best. > > Oleg >