Very interesting topic.

As it seems there are people around with knowledge of AST and source
parsing, I would like to ask if someone knows how I can get the java source
AST (property in a Document?) and how I can listen when it is updated? I am
currently working on a plugin that will handle color preview in the Java
source code.

Cheers.

JMB


On Wed, Nov 7, 2018 at 4:32 PM Mario Schroeder <[email protected]>
wrote:

> Hello NetBeaners,
>
> I finished my grammar based on ANTLR. The current version satisfies me.
> However since it is my first attempt I would highly appreciate if someone
> from this thread could have a look and comment if something could be
> improved. I know that you guys might be busy with the new release, so I
> will be very thankful for a little bit of your time.
>
> The the grammar can be found here:
> https://github.com/mario-s/grammars-v4/tree/cto/cto
>
> Thanks in advance!
> -Mario
>
> Am So., 4. Nov. 2018 um 05:13 Uhr schrieb Tim Boudreau <
> [email protected]
> >:
>
> > I'd strongly recommend going with Antlr-4 - it is very nice.
> >
> > There is one impedance mismatch to be aware of, to save a few hours of
> > cursing both Antlr and NetBeans' lexer infrastructure: Antlr may give you
> > an EOF token that is non-empty - check it, or you won't consume all the
> > characters from the input, and if you don't, an exception will be thrown
> > saying you didn't consume all the characters. The LexerInput you get
> passed
> > has to get entirely consumed before you return a null to indicate you've
> > lexed the entire input. If it wasn't, the infrastructure assumes that's a
> > bug.
> >
> > One other non-obvious thing: If your grammar users channels to ignore
> > whitespace or comments when parsing, make sure:
> >  - that when you're lexing you use a stream that returns ALL the tokens
> on
> > ALL channels (if using CommonTokenStream pass -1 for the channel, if
> you're
> > wrappering LexerInput, you're all set)
> >  - conversely, when parsing, make sure you use a stream that only returns
> > channel 0 tokens, or you will think your parser is broken when it isn't)
> >
> > Having written several modules that add language support using Antlr,
> I've
> > considered factoring some of the always the same stuff (generating token
> > id's from a vocabulary, stuff like that) into a support module.
> >
> > Over the past few weeks I've been doing some heavy duty work on the
> > NetBeans Antlr plugin in github, which appears to be abandoned and was in
> > need of a few features - like being able to syntax highlight files in a
> > language under development and do error highlighting of them, and refresh
> > that when the grammar is edited (which involves a level of hackery
> > bordering in evil, since it means working around all of the declarative
> > mechanisms for languages, data loaders, mime resolvers and everything
> else
> > to be installed, to allow something to imperatively make languages appear
> > out of the ether with all their editor plumbing, then change, then
> vanish).
> > When there's something reasonably non fragile to test, I'll post here.
> >
> > I'd suggest using Maven for your plugin, as the Maven Antlr plugin is
> > pretty easy to set up, and results in a pretty easy to understand
> structure
> > for things.
> >
> > -Tim
> >
> > On Tue, Oct 30, 2018 at 3:37 PM Mario Schroeder <[email protected]>
> > wrote:
> >
> > > Hi,
> > >
> > > I would appreciate when someone could set me on the right track. I'm
> > > wondering what is the best way to write a plugin with a support for a
> new
> > > language.
> > >
> > > I have found this old tutorial:
> > > http://wiki.netbeans.org/How_to_create_support_for_a_new_language
> > > It uses JavaCC. The tutorial is linked to another one, which makes use
> of
> > > ANTLR. When I have a look at NetBeans source code, there are some
> > templates
> > > written with JFlex. So I'm confused. Which one should I use?
> > >
> > > I would prefer ANTLR, since there seems to be more documentation for
> it.
> > > Does anyone have a recommendation?
> > >
> > > Regards,
> > > Mario
> > >
> > --
> > http://timboudreau.com
> >
>

Reply via email to