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

Reply via email to