With regard to:

"It can compile an app against a library project without creating the SWC for 
that library on disk."

...sounds to me like Falcon could* serve as a replacement for the JavaScript 
interpreter. Interesting.

http://www.quilix.com/node/96 

-- 
Rick Winscot


On Friday, January 20, 2012 at 1:34 PM, Gordon Smith wrote:

> Here is some other possibly-interesting info about Falcon:
> 
> It was designed from the beginning for incremental compilation of a complete 
> workspace, so it tracks dependencies between compilation units in various 
> projects. (I.e., if you edit a file, it knows which other files it should 
> recompile.)
> 
> It can compile an app against a library project without creating the SWC for 
> that library on disk.
> 
> It tracks where in the source every token/tree node/definition came from, to 
> support operations like go-to-definition in Flash Builder.
> 
> It has the general concept of a "problem", where a problem can end up being 
> considered an error, a warning, or ignored.
> 
> It provides live problem highlighting to Flash Builder. When you pause during 
> editing a file, the file is compiled and the problems show up as red squiggly 
> underlines.
> 
> It tries to continue after almost all problems, so that you don't necessarily 
> have to fix every problem before you can get a SWF to run.
> 
> And these are probably obvious:
> 
> It includes code for reading and writing SWFs and SWCs. 
> 
> It includes code for reading and writing ActionScript byte code, at the level 
> of individual instructions.
> 
> It includes transcoders for the various types of embedded assets, which read, 
> for example, a PNG file and convert it to the form required inside a SWF.
> 
> - Gordon
> 
> -----Original Message-----
> From: Gordon Smith 
> Sent: Friday, January 20, 2012 10:17 AM
> To: flex-dev@incubator.apache.org (mailto:flex-dev@incubator.apache.org)
> Subject: RE: Falcon compiler source code / Falcon architecture
> 
> > Does the ANTLR parser use the standard token stream if it's not lexing the 
> > source?
> 
> For AS, where we use JFlex to do the lexing (for better performance), we 
> implement our own token stream.
> 
> For CSS, where ANTLR is doing the lexing, we use its standard token stream.
> 
> > Would there be a way to create a linked list token stream with what the 
> > lexer creates?
> 
> We don't buffer visited tokens for AS, but it would be straightforward to 
> implement your own linked list token stream.
> 
> > Is there any plan on adding FXG grammar and DOM?
> 
> I forgot to mention that Falcon does support compiling FXG. But we didn't 
> innovate much in this area... we mainly just brought over the FXG code from 
> the old compiler, which you can take a look at. I believe it uses a SAX 
> parser to parse the XML of the FXG file, and it builds a custom DOM with 
> classes like RectNode and TextNode which it then uses for semantic analysis 
> and code generation. One improvement is that the FXG compilation takes place 
> in the same multithreaded fashion as other Falcon compilation.
> 
> - Gordon
> 
> -----Original Message-----
> From: Michael Schmalle [mailto:m...@teotigraphix.com]
> Sent: Thursday, January 19, 2012 4:48 PM
> To: flex-dev@incubator.apache.org (mailto:flex-dev@incubator.apache.org)
> Subject: RE: Falcon compiler source code / Falcon architecture
> 
> Gordon, when you have time;
> 
> Does the ANTLR parser use the standard token stream if it's not lexing the 
> source?
> 
> Would there be a way to create a linked list token stream with what the lexer 
> creates?
> 
> Is there any plan on adding FXG grammar and DOM (this would be awesome but 
> maybe something the community could implement)?
> 
> Thanks,
> Mike
> 
> 
> Quoting Gordon Smith <gosm...@adobe.com (mailto:gosm...@adobe.com)>:
> 
> > ANTLR is used to parse (but not lex) AS, and to both lex and parse CSS.
> > 
> > - Gordon.
> > 
> > -----Original Message-----
> > From: Michael Schmalle [mailto:m...@teotigraphix.com]
> > Sent: Thursday, January 19, 2012 11:16 AM
> > To: flex-dev@incubator.apache.org (mailto:flex-dev@incubator.apache.org)
> > Subject: RE: Falcon compiler source code / Falcon architecture
> > 
> > Gordon this is about the best news we could get.
> > 
> > It's great to see this structure! I can't wait.
> > 
> > What parts are using ANTLR grammar?
> > 
> > Thanks,
> > Mike
> > 
> > Quoting Gordon Smith <gosm...@adobe.com (mailto:gosm...@adobe.com)>:
> > 
> > > Until we release specs, Javadoc, or code for Falcon, here is a very 
> > > brief overview of Falcon's architecture:
> > > 
> > > Falcon is designed from the beginning to support compiling multiple 
> > > targets in multiple projects in a workspace (as you have in an IDE 
> > > like Flash Builder). By contrast, asc was designed to compile a 
> > > single AS file, and then mxmlc was built on top of that.
> > > 
> > > Falcon uses multiple threads to compile multiple files at the same 
> > > time. The more cores you have, the faster it goes.
> > > 
> > > Critical data structures such as the symbol table (which stores 
> > > information about which classes are known, what methods they have,
> > > etc.) are shared across the entire workspace, to minimize memory 
> > > usage.
> > > 
> > > Critical data structures are maintained in memory to support both 
> > > compilation and IDS code intelligence in an efficient and consistent 
> > > way. For example: If you open a file in the IDE, Falcon builds a 
> > > syntax tree and symbol table for it to support intelligent editing.
> > > Compiling the file requires just one additional code generation step.
> > > By contrast, in the current Flash Builder which uses the compiler in 
> > > the SDK, Flash Builder builds its own parse trees and symbol tables 
> > > to support editing, and then when you compile the compiler in the SDK 
> > > builds another set of parse trees and symbol tables. This is slow and 
> > > a waste of memory.
> > > 
> > > Falcon understands .as, .mxml, .css, and .properties files.
> > > 
> > > The parse trees for AS consist of nodes from about 100 classes, such 
> > > as LiteralNode, BinaryOperatorNode, FunctionNode, ClassNode. The 
> > > parse trees for MXML consist of nodes from about 50 classes, such as 
> > > MXMLDocumentNode, MXMLInstanceNode, MXMLScriptNode, etc. The 
> > > ActionScript-y parts of MXML are represented by AS nodes inside of 
> > > MXML nodes.
> > > 
> > > The symbol table consists of objects representing the things your 
> > > code defines, such as ClassDefiniition, FunctionDefinition, and 
> > > VariableDefinition, arranged into a hierarchy of scope objects.
> > > 
> > > Falcon uses 3rd-party grammars like JFlex, ANTLR, and JBurg to 
> > > generate various lexers, parsers, and code generators.
> > > 
> > > MXML is compiled directly to ABC, not to ActionScript source code or 
> > > an ActionScript parse tree.
> > > 
> > > - Gordon Smith, Adobe
> > > 
> > > P.S. After working on the Flex framework since its inception for 
> > > about
> > > 8 years, I joined the Falcon team 18 months ago.
> > > 
> > > 
> > > 
> > > -----Original Message-----
> > > From: Raju Bitter [mailto:rajubit...@googlemail.com]
> > > Sent: Thursday, January 19, 2012 2:10 AM
> > > To: flex-dev@incubator.apache.org (mailto:flex-dev@incubator.apache.org)
> > > Subject: Re: Falcon compiler source code / Falcon architecture
> > > 
> > > 2012/1/19 Alex Harui <aha...@adobe.com (mailto:aha...@adobe.com)>:
> > > > I was in the Falcon code in November.  It was way easier to figure 
> > > > out how to make changes than with MXMLC.  Even if it is not 
> > > > documented, I think it will be easier to make progress that with the 
> > > > Falcon code base.
> > > > 
> > > 
> > > I agree, that sounds like it would be much better to use the Falcon 
> > > code base. There are normally fewer community members with much 
> > > experience in language/compiler design, and the cleaner the 
> > > architecture is, the better for the community.
> > > 
> > 
> > 
> 
> 
> 


Reply via email to