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 > >>>>>>>>> > >>>>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>> > >>>> > >> > >> > >