No, I am going on vacation. Hiking the MacLehose trail. Peter Cheung <mcheun...@hotmail.com> schrieb am Do., 10. Okt. 2019, 19:50:
> Hey Mario > Yes, i am from Hong Kong. Why come here? Business trip? > Thanks > From Peter > ________________________________ > From: Mario Schroeder <ma.schroe...@gmail.com> > Sent: Thursday, October 10, 2019 3:48 PM > To: dev@netbeans.apache.org <dev@netbeans.apache.org> > Subject: Re: Can anyone give me a help about developing antlr formatter > > Peter, you are from Hong Kong?! What a coincidence that I will be there > within a week. Despite all the issues, I'm looking forward. > Sorry for the off topic. > > Am Do., 10. Okt. 2019 um 08:35 Uhr schrieb Peter Cheung < > mcheun...@hotmail.com>: > > > Dear Tim > > You are a great people and full of passion. In my home town (Hong > > Kong), people just "use" open source, not contributing it. > > Thanks > > From Peter > > ________________________________ > > From: Tim Boudreau <niftin...@gmail.com> > > Sent: Wednesday, October 9, 2019 1:42 PM > > To: dev@netbeans.apache.org <dev@netbeans.apache.org> > > Subject: Re: Can anyone give me a help about developing antlr formatter > > > > Okay. If you'd like to try some stuff, I could hook you up with some > > modules. Antlr support - syntax highlighting, navigator panels, syntax > > tree views, has been working for a while; formatting is pretty solid > now. > > I've spent the last week stabilizing the "live preview" functionality, > > which actually generates NetBeans language support with syntax > highlighting > > for *the grammar you are currently editing* - so you can have a syntax > > highlighted preview, and associate a file extension with that grammar and > > open those files and interact with them with full IDE support that is > > updated whenever you edit the grammar. > > > > Basically the PITA with developing Antlr grammars is when you break some > > rule that worked, change a whole bunch of other stuff before you know you > > broke it, and then have to figure out which thing you did caused the > > problem. So being able to visually, and instantly, see if something is > > broken seems like a basic thing that's needed to make grammar development > > much less painful. > > > > Here's a screen shot: > > https://timboudreau.com/files/screen/10-09-2019_01-39-44.png > > > > All that gets a bit complex: > > > > - User edits the grammar file > > - Listener on the grammar file notices and tells highlighters of > documents > > in the language of that grammar to request a reparse > > - They ask for a new parse from a parser which > > - Is actually going to run code in an isolated classloader that loads > > from an in-memory filesystem where the grammar and generated analyzer > code > > was compiled > > - Notices that the grammar file - whose document is mapped into that > > in-memory filesystem - has changed > > - Initiates a new run of Antlr generating parser and lexer > > - Compiles them into that memory filesystem > > - Generates the source for a thing that will call that parser with > > document contents, and retrieve the tokens, parse tree, etc. copied into > > proxy objects so the classloader does not leak types > > - Creates a new isolated classloader over the class output for all > that > > - Replaces that classloader in the proxy parser > > - Passes the document text into that parser, extracts the proxied > parse > > tree and wraps that in a NetBeans Parser.Result > > > > The good news is all that can happen in < 100ms. It works, but I've been > > chasing bugs in the choreography of that process to ensure the new parse > > runs against the right version of the grammar - each layer of that will > use > > the previous result if nothing has changed but the input text, and it > works > > out to being a big chain of lists of weakly referenced susbscribers to > > things that subscribe to other things (i.e. the parser subscribes to > > replacement of the classloader environment; the highlighters subscribe to > > changes on the parser). > > > > It requires a few hacks that will probably get turned into patches - > > there's no way via API to get the cache for Source objects for the > > in-language document to invalidate its cached parser results because > *some > > other document* changed, so that has to be done via reflection; and > > similarly, there is no direct way to force a Language instance to be > > discarded by its LanguageHierarchy, but if you don't, it will keep a > cache > > of token ids that will be completely wrong (particularly if the grammar > is > > unparseable and you get a lexer with a dummy set of token ids with one > > token, flip back to a valid language, and back again, which is the normal > > state of life in an IDE). > > > > But for basic doing-stuff-with-Antlr it's in decent shape, and it's all > > factored into many separate modules, so perhaps I could get some out > there. > > > > -Tim > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Oct 2, 2019 at 2:08 AM Peter Cheung <mcheun...@hotmail.com> > wrote: > > > > > Dear Tim > > > Sorry i am doing my own antlr plugin > > > https://gitlab.com/mcheung63/netbeans-antlr to support my compiler > > > development which using antlr. If you plugin can well format antlr, > then > > i > > > can focus my compiler rather than antlr in netbeans. > > > thanks > > > Peter > > > > > > > > > > -- > > http://timboudreau.com > > >