I may take a look later on.  I already have quite a bit of code invested in Flex, and the code I'm parsing is compiled with Flex, so I'm stuck with it, for now.

I went ahead and made the necessary changes, ended up being fairly simple.  Unfortunately, my editor "fixed" a bunch of trailing whitespace abnormalities, so it may be a bit before I can produce a "clean" diff. Changes are at <https://gitlab.com/VentureGuy/flex-sdk/commit/10dff5661cef6eaeda2f68e51f821aaa8daf874b>, in case someone else is in the same boat and comes by this thread via Google.

Thanks for your time.

On 5/9/2019 9:03 PM, Alex Harui wrote:
Hi,

I do not know the Flex MXMLC compiler very well at all, and I'm not sure anyone 
else does either at this point.

The next generation compiler (was known as Falcon) might be worth a try.  A few 
more of us do know this compiler better, and you might find that its AST has 
what you need.   The Apache Royale project has the latest version of the Falcon 
compiler so inquire on d...@royale.apache.org if you interested.

HTH,
-Alex

On 5/8/19, 10:15 PM, "Lance Johnson" <friedfrogs...@yahoo.com.INVALID> wrote:

     Greetings.
This email will probably contain some dumb questions buried in a jumble
     of context, but I'm potentially looking at patching Flex to fix this
     problem and would like to exhaust all /other/ possibilities before I do
     so.  The project I am working on has already snowballed into an
     avalanche, so additional complexity is something I would like to avoid.
I'm involved in a rather complicated modding project, where, due to
     licensing restrictions, we are patching commercially-licensed but
     undistributable code[1] by using the usual diff method, and then using
     Flex's generated AST to find particular sequences of statements in
     parsed code. We then patch them appropriately, and then emit the patched
     ActionScript using a custom Evaluator. The evaluator in question is
     based on PrettyPrinter, but is ending up being quite more exhaustive in
     order to present compilable code. We use this tool to collect
     information and patch repetitive statements that can be parsed with
     tools like regular expressions, but need thousands of lines of
     supporting code to properly keep track of context and syntax.
The problem I'm running into is that I'm having to run the Parser with
     `Context.scriptAssistParsing` turned on, as I need the AST with as few
     mutations as possible, and without loading includes or imports.
     Unfortunately, this has resulted into running into a problem with
     ForStatementNodes in this mode.
It appears that, while `for each` statements are parsed, there is no
     indication applied in NodeFactory to the ForStatementNode to indicate
     that the Node is a `for each` loop /in scriptAssistParsing mode/. In
     addition, if I were to turn scriptAssistParsing off, there would be
     significant mutations applied.  In NodeFactory.java, it appears like
     there were plans made to introduce a boolean (is_each?) to mark this,
     but it never materialized.
Is there another way to determine this information, or will I need to
     patch Flex itself to expose it?  If this is something that should be
     added to the upstream project, what would be the most agreeable means to
     implement it?  Right now, I simply plan on adding a public boolean
     is_each to ForStatementNode, and updating NodeFactory accordingly.
Thanks in advance, Lance Johnson 1: The owners of the code in question have released it on GitHub, but
     the license terms forbid distribution of modified code or binaries, so
     we distribute our mod as patches, instead.  There's also talk of more
     permissive licensing in the future. Maybe.

Reply via email to