Hey man, I started with the European version of it [1] in 83, I new so well its processor :-) and I did the same school than you btw !
> So you could say it has been a mystical journey for me. :) haha :-) Frédéric THOMAS [1] https://en.wikipedia.org/wiki/Matra_Alice ---------------------------------------- > Date: Thu, 9 Jul 2015 14:02:34 -0400 > Subject: Re: [FalconJX] Collection Imports branch > From: teotigraphix...@gmail.com > To: dev@flex.apache.org > > My first programming experience was a TRS-80 and BASIC. I am also self > taught, no school. I went to college for land Surveying in the late 90's, > used AutoCAD extensively, and now I program, go figure. > > Why parsers? I think in 2008 or so I had a vision of just what a parser was > and how primal the concept really is, it's what our brain does. Lexers and > Parsers are a perfect mirror of how are brain receives, sorts and make > meaning out of the randomness of life. > > So you could say it has been a mystical journey for me. :) haha > > Mike > > On Thu, Jul 9, 2015 at 1:53 PM, Frédéric THOMAS <webdoubl...@hotmail.com> > wrote: > >>> Well not so much compilers, I am still a newbie when it comes to byte >> code >>> stuff and binary math/operations etc. >>> >>> But I know parsers/lexers/scanners/AST pretty freaking well. ;-) >> >> Hehe, except of the emitting part, that's all the compiler though, well >> done !! ;-) >> >> I'm only an autodidact coder lover who started as kid with Basic, ASM, DOS >> / Windows 3.0 programming, then, mainframe (Cobol / CICS), 12 years in >> Microsoft dev, PHP / JS and full stack Java / Flex with all the common >> testing / industrialisation tools around who is now interested in >> compilers, better late than never but I have a lot to learn, it is so >> different from all what I did before :-) >> >> Thanks again for your help. >> Frédéric THOMAS >> >> >> ---------------------------------------- >>> Date: Thu, 9 Jul 2015 13:25:28 -0400 >>> Subject: Re: [FalconJX] Collection Imports branch >>> From: teotigraphix...@gmail.com >>> To: dev@flex.apache.org >>> >>> On Thu, Jul 9, 2015 at 1:10 PM, Frédéric THOMAS <webdoubl...@hotmail.com >>> >>> wrote: >>> >>>>> It's antlr 3 grammar if I remember correctly, hah maybe even antlr 2. I >>>>> can't remember. >>>> >>>> I would guess 2 because I've seem ANTLR 3 examples and the grammar >> version >>>> was in, never seen it with previous ones, I could be wrong. >>>> >>>>> It can't be used in it's current state because of the LinkedList class >> I >>>>> used but the grammar could be the start of an antlr grammar Falcon >> could >>>>> use if that is your question. And yes, then it could replace JFlex >>>> because >>>>> we would then have an ASDocParser class generated from antlr. >>>> >>>> Cool, I'm happy you know and did so much things on compilers, I will >>>> probably come back to you and discuss it here when I will have get more >>>> knowledges and will have done my experiments. >>>> >>>> >>> Well not so much compilers, I am still a newbie when it comes to byte >> code >>> stuff and binary math/operations etc. >>> >>> But I know parsers/lexers/scanners/AST pretty freaking well. ;-) >>> >>> Mike >>> >>> >>> >>>> Cheers, >>>> Frédéric THOMAS >>>> >>>> >>>> ---------------------------------------- >>>>> Date: Thu, 9 Jul 2015 12:59:04 -0400 >>>>> Subject: Re: [FalconJX] Collection Imports branch >>>>> From: teotigraphix...@gmail.com >>>>> To: dev@flex.apache.org >>>>> >>>>> On Thu, Jul 9, 2015 at 12:54 PM, Frédéric THOMAS < >>>> webdoubl...@hotmail.com> >>>>> wrote: >>>>> >>>>>>> >>>>>> >>>>>> >>>> >> https://github.com/teotigraphix/as3-commons-jasblocks/blob/master/src/main/java/org/as3commons/asblocks/parser/antlr/asdoc/ASDoc.g >>>>>> >>>>>> Hum, I don't know how to read JFlex and ANTLR yet and then, I'm not >> sure >>>>>> what I'm seeing here, is that a ANTLR ASDoc grammar that could replace >>>> the >>>>>> JFlex one ? >>>>>> >>>>> >>>>> It's antlr 3 grammar if I remember correctly, hah maybe even antlr 2. I >>>>> can't remember. >>>>> >>>>> It can't be used in it's current state because of the LinkedList class >> I >>>>> used but the grammar could be the start of an antlr grammar Falcon >> could >>>>> use if that is your question. And yes, then it could replace JFlex >>>> because >>>>> we would then have an ASDocParser class generated from antlr. >>>>> >>>>> Mike >>>>> >>>>> >>>>> >>>>>> >>>>>> Frédéric THOMAS >>>>>> >>>>>> >>>>>> ---------------------------------------- >>>>>>> Date: Thu, 9 Jul 2015 12:19:16 -0400 >>>>>>> Subject: Re: [FalconJX] Collection Imports branch >>>>>>> From: teotigraphix...@gmail.com >>>>>>> To: dev@flex.apache.org >>>>>>> >>>>>>> FYI, I did this way back in 2010. :) >>>>>>> >>>>>>> >>>>>> >>>> >> https://github.com/teotigraphix/as3-commons-jasblocks/blob/master/src/main/java/org/as3commons/asblocks/parser/antlr/asdoc/ASDoc.g >>>>>>> >>>>>>> Mike >>>>>>> >>>>>>> On Thu, Jul 9, 2015 at 12:17 PM, Michael Schmalle < >>>>>> teotigraphix...@gmail.com >>>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jul 9, 2015 at 12:01 PM, Frédéric THOMAS < >>>>>> webdoubl...@hotmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>>> You're not traversing anything, it just happens that the base >> class >>>> is >>>>>>>>>> abstract and defines callbacks for recursion. In your case you >> just >>>>>>>>> want a >>>>>>>>>> "processing" compiler pass. >>>>>>>>>> >>>>>>>>>> A plain old compiler pass wouldn't require visiting all nodes, >> just >>>> a >>>>>>>>>> process(). >>>>>>>>>> >>>>>>>>>> Don't worry about it, the two you overrode are just stubs. >>>>>>>>> >>>>>>>>> Well, I got I did an override :-) I just was trying to understand >> the >>>>>>>>> base classes. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> The base class why my design and for all the passes I did, I needed >>>> the >>>>>>>> callbacks. See NodeTraversal.travese() I think it is, that is what >>>>>> actually >>>>>>>> calls the callbacks and shouldTravese(), it's in the GCC API. >>>>>>>> >>>>>>>> You could have just implemented Callback with process() and created >>>> your >>>>>>>> won constructor if that makes it more clear, it wasn't neccessary to >>>>>>>> subclass but, it was there so, ya know. :) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> Anyway, thanks again Mike for your explanations ! >>>>>>>>> >>>>>>>>> I will now go back on Falcon starting from the beginning trying to >>>>>>>>> understand the scan / parse phase, even if I understand >>>>>> approximatively how >>>>>>>>> theoretically it should work, it seems a huge thing to me in >> there, I >>>>>> see >>>>>>>>> JFlex, ANTLR, btw I thought it was possible to do the scan / parse >>>> with >>>>>>>>> ANTLR only, am I wrong ? if not why are we using JFlex too ? >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> JFlex is used to create the RawASDocTokenizer. So yes, if a grammar >>>> was >>>>>>>> created for asdoc parsing in antlr, we could get rid of JFlex >>>> dependency >>>>>>>> because I think that is the only place it's used. >>>>>>>> >>>>>>>> Mike >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> I will try to experiment, even with ANTLR4.x >>>>>>>>> >>>>>>>>> Frédéric THOMAS >>>>>>>>> >>>>>>>>> >>>>>>>>> ---------------------------------------- >>>>>>>>>> Date: Thu, 9 Jul 2015 11:25:09 -0400 >>>>>>>>>> Subject: Re: [FalconJX] Collection Imports branch >>>>>>>>>> From: teotigraphix...@gmail.com >>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>> >>>>>>>>>> You're not traversing anything, it just happens that the base >> class >>>> is >>>>>>>>>> abstract and defines callbacks for recursion. In your case you >> just >>>>>>>>> want a >>>>>>>>>> "processing" compiler pass. >>>>>>>>>> >>>>>>>>>> A plain old compiler pass wouldn't require visiting all nodes, >> just >>>> a >>>>>>>>>> process(). >>>>>>>>>> >>>>>>>>>> Don't worry about it, the two you overrode are just stubs. >>>>>>>>>> >>>>>>>>>> Mike >>>>>>>>>> >>>>>>>>>> On Thu, Jul 9, 2015 at 11:13 AM, Frédéric THOMAS < >>>>>>>>> webdoubl...@hotmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>>> Other than that, merge/commit it man! thanks, looks good to me, >> we >>>>>>>>> will >>>>>>>>>>> see >>>>>>>>>>>> if anything else comes up. >>>>>>>>>>> >>>>>>>>>>> Thanks, done ! >>>>>>>>>>> >>>>>>>>>>> But I'm still confuse with the pattern: >>>>>>>>>>> >>>>>>>>>>> I didn't get well this thing about pre / post order in the >> Callback >>>>>>>>>>> interface maybe I didn't get what it means, isn't supposed to be >>>>>>>>> recursive >>>>>>>>>>> descendant only, how does it work ? >>>>>>>>>>> I used process() which traverseRoots of both externs (the most >> out >>>> of >>>>>>>>>>> parent) and the given node, why 2 nodes have to be traversed in >> the >>>>>>>>> same >>>>>>>>>>> function ? >>>>>>>>>>> >>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>> Date: Wed, 8 Jul 2015 16:46:34 -0400 >>>>>>>>>>>> Subject: [FalconJX] Collection Imports branch >>>>>>>>>>>> From: teotigraphix...@gmail.com >>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>> >>>>>>>>>>>> Hey Fred, >>>>>>>>>>>> >>>>>>>>>>>> Couple things; >>>>>>>>>>>> >>>>>>>>>>>> 1. CollectImportsPass >>>>>>>>>>>> >>>>>>>>>>>> Should probably be; (process() only gets called once) >>>>>>>>>>>> >>>>>>>>>>>> @Override >>>>>>>>>>>> public void process(Node externs, Node root) >>>>>>>>>>>> { >>>>>>>>>>>> for (ClassReference reference : model.getClasses()) >>>>>>>>>>>> { >>>>>>>>>>>> collectClassImports(reference); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> for (FunctionReference reference : model.getFunctions()) >>>>>>>>>>>> { >>>>>>>>>>>> collectFunctionImports(reference); >>>>>>>>>>>> } >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> @Override >>>>>>>>>>>> public boolean shouldTraverse(final NodeTraversal nodeTraversal, >>>>>> final >>>>>>>>>>>> Node n, final Node parent) >>>>>>>>>>>> { >>>>>>>>>>>> return false; >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> @Override >>>>>>>>>>>> public void visit(final NodeTraversal t, final Node n, final >> Node >>>>>>>>>>>> parent) >>>>>>>>>>>> { >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Other than that, merge/commit it man! thanks, looks good to me, >> we >>>>>>>>> will >>>>>>>>>>> see >>>>>>>>>>>> if anything else comes up. >>>>>>>>>>>> >>>>>>>>>>>> Mike >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >> >>